Add aidl interface to lock and unlock the screen.
For instance it call allow a service to wake up the navigation using media buttons
This commit is contained in:
parent
28edfaa695
commit
440ad5828b
8 changed files with 108 additions and 4 deletions
|
@ -95,6 +95,7 @@ import net.osmand.aidlapi.mapmarker.RemoveMapMarkersParams;
|
||||||
|
|
||||||
import net.osmand.aidlapi.quickaction.QuickActionParams;
|
import net.osmand.aidlapi.quickaction.QuickActionParams;
|
||||||
import net.osmand.aidlapi.quickaction.QuickActionInfoParams;
|
import net.osmand.aidlapi.quickaction.QuickActionInfoParams;
|
||||||
|
import net.osmand.aidlapi.lock.SetLockStateParams;
|
||||||
|
|
||||||
// NOTE: Add new methods at the end of file!!!
|
// NOTE: Add new methods at the end of file!!!
|
||||||
|
|
||||||
|
@ -841,4 +842,9 @@ interface IOsmAndAidlInterface {
|
||||||
boolean executeQuickAction(in QuickActionParams params);
|
boolean executeQuickAction(in QuickActionParams params);
|
||||||
|
|
||||||
boolean getQuickActionsInfo(out List<QuickActionInfoParams> quickActions);
|
boolean getQuickActionsInfo(out List<QuickActionInfoParams> quickActions);
|
||||||
|
/**
|
||||||
|
* Toggle Lock/Unlock screen.
|
||||||
|
*/
|
||||||
|
|
||||||
|
boolean setLockState(in SetLockStateParams params);
|
||||||
}
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
package net.osmand.aidlapi.lock;
|
||||||
|
|
||||||
|
parcelable SetLockStateParams;
|
|
@ -0,0 +1,41 @@
|
||||||
|
package net.osmand.aidlapi.lock;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.Parcel;
|
||||||
|
|
||||||
|
import net.osmand.aidlapi.AidlParams;
|
||||||
|
|
||||||
|
public class SetLockStateParams extends AidlParams {
|
||||||
|
private boolean lock;
|
||||||
|
public SetLockStateParams(boolean lock) {
|
||||||
|
this.lock = lock;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SetLockStateParams(Parcel in) {
|
||||||
|
readFromParcel(in);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static final Creator<SetLockStateParams> CREATOR = new Creator<SetLockStateParams>() {
|
||||||
|
@Override
|
||||||
|
public SetLockStateParams createFromParcel(Parcel in) {
|
||||||
|
return new SetLockStateParams(in);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SetLockStateParams[] newArray(int size) {
|
||||||
|
return new SetLockStateParams[size];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
public boolean getLockState(){
|
||||||
|
return lock;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void writeToBundle(Bundle bundle) {
|
||||||
|
bundle.putBoolean("lock", this.lock);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void readFromBundle(Bundle bundle) {
|
||||||
|
lock = bundle.getBoolean("lock");
|
||||||
|
}
|
||||||
|
}
|
|
@ -96,6 +96,7 @@ import net.osmand.aidl.mapmarker.RemoveMapMarkersParams;
|
||||||
|
|
||||||
import net.osmand.aidl.quickaction.QuickActionParams;
|
import net.osmand.aidl.quickaction.QuickActionParams;
|
||||||
import net.osmand.aidl.quickaction.QuickActionInfoParams;
|
import net.osmand.aidl.quickaction.QuickActionInfoParams;
|
||||||
|
import net.osmand.aidlapi.lock.SetLockStateParams;
|
||||||
|
|
||||||
// NOTE: Add new methods at the end of file!!!
|
// NOTE: Add new methods at the end of file!!!
|
||||||
|
|
||||||
|
@ -856,4 +857,8 @@ interface IOsmAndAidlInterface {
|
||||||
boolean executeQuickAction(in QuickActionParams params);
|
boolean executeQuickAction(in QuickActionParams params);
|
||||||
|
|
||||||
boolean getQuickActionsInfo(out List<QuickActionInfoParams> quickActions);
|
boolean getQuickActionsInfo(out List<QuickActionInfoParams> quickActions);
|
||||||
|
/**
|
||||||
|
* Toggle Lock/Unlock screen.
|
||||||
|
*/
|
||||||
|
boolean setLockState(in SetLockStateParams params);
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,6 +44,7 @@ import net.osmand.plus.AppInitializer;
|
||||||
import net.osmand.plus.AppInitializer.AppInitializeListener;
|
import net.osmand.plus.AppInitializer.AppInitializeListener;
|
||||||
import net.osmand.plus.AppInitializer.InitEvents;
|
import net.osmand.plus.AppInitializer.InitEvents;
|
||||||
import net.osmand.plus.dialogs.GpxAppearanceAdapter;
|
import net.osmand.plus.dialogs.GpxAppearanceAdapter;
|
||||||
|
import net.osmand.plus.helpers.LockHelper;
|
||||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||||
import net.osmand.plus.ContextMenuAdapter;
|
import net.osmand.plus.ContextMenuAdapter;
|
||||||
import net.osmand.plus.ContextMenuItem;
|
import net.osmand.plus.ContextMenuItem;
|
||||||
|
@ -177,6 +178,7 @@ public class OsmandAidlApi {
|
||||||
|
|
||||||
private static final String AIDL_EXECUTE_QUICK_ACTION = "aidl_execute_quick_action";
|
private static final String AIDL_EXECUTE_QUICK_ACTION = "aidl_execute_quick_action";
|
||||||
private static final String AIDL_QUICK_ACTION_NUMBER = "aidl_quick_action_number";
|
private static final String AIDL_QUICK_ACTION_NUMBER = "aidl_quick_action_number";
|
||||||
|
private static final String AIDL_LOCK_STATE = "lock_state";
|
||||||
|
|
||||||
|
|
||||||
private static final ApplicationMode DEFAULT_PROFILE = ApplicationMode.CAR;
|
private static final ApplicationMode DEFAULT_PROFILE = ApplicationMode.CAR;
|
||||||
|
@ -228,6 +230,7 @@ public class OsmandAidlApi {
|
||||||
registerShowSqliteDbFileReceiver(mapActivity);
|
registerShowSqliteDbFileReceiver(mapActivity);
|
||||||
registerHideSqliteDbFileReceiver(mapActivity);
|
registerHideSqliteDbFileReceiver(mapActivity);
|
||||||
registerExecuteQuickActionReceiver(mapActivity);
|
registerExecuteQuickActionReceiver(mapActivity);
|
||||||
|
registerLockStateReceiver(mapActivity);
|
||||||
initOsmandTelegram();
|
initOsmandTelegram();
|
||||||
app.getAppCustomization().addListener(mapActivity);
|
app.getAppCustomization().addListener(mapActivity);
|
||||||
aMapPointUpdateListener = mapActivity;
|
aMapPointUpdateListener = mapActivity;
|
||||||
|
@ -853,7 +856,24 @@ public class OsmandAidlApi {
|
||||||
};
|
};
|
||||||
registerReceiver(executeQuickActionReceiver, mapActivity, AIDL_EXECUTE_QUICK_ACTION);
|
registerReceiver(executeQuickActionReceiver, mapActivity, AIDL_EXECUTE_QUICK_ACTION);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void registerLockStateReceiver(MapActivity mapActivity) {
|
||||||
|
BroadcastReceiver lockStateReceiver = new BroadcastReceiver() {
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
boolean lock = intent.getBooleanExtra(AIDL_LOCK_STATE,false);
|
||||||
|
LockHelper lh = app.getLockHelper();
|
||||||
|
if(lock) {
|
||||||
|
lh.lock();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
lh.unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
registerReceiver(lockStateReceiver, mapActivity, AIDL_LOCK_STATE);
|
||||||
|
}
|
||||||
|
|
||||||
public void registerMapLayers(@NonNull MapActivity mapActivity) {
|
public void registerMapLayers(@NonNull MapActivity mapActivity) {
|
||||||
for (ConnectedApp connectedApp : connectedApps.values()) {
|
for (ConnectedApp connectedApp : connectedApps.values()) {
|
||||||
connectedApp.registerMapLayers(mapActivity);
|
connectedApp.registerMapLayers(mapActivity);
|
||||||
|
@ -1691,7 +1711,13 @@ public class OsmandAidlApi {
|
||||||
app.sendBroadcast(intent);
|
app.sendBroadcast(intent);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
boolean setLockState(boolean lock) {
|
||||||
|
Intent intent = new Intent();
|
||||||
|
intent.setAction(AIDL_LOCK_STATE);
|
||||||
|
intent.putExtra(AIDL_LOCK_STATE, lock);
|
||||||
|
app.sendBroadcast(intent);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
boolean search(final String searchQuery, final int searchType, final double latitude, final double longitude,
|
boolean search(final String searchQuery, final int searchType, final double latitude, final double longitude,
|
||||||
final int radiusLevel, final int totalLimit, final SearchCompleteCallback callback) {
|
final int radiusLevel, final int totalLimit, final SearchCompleteCallback callback) {
|
||||||
if (Algorithms.isEmpty(searchQuery) || latitude == 0 || longitude == 0 || callback == null) {
|
if (Algorithms.isEmpty(searchQuery) || latitude == 0 || longitude == 0 || callback == null) {
|
||||||
|
|
|
@ -85,6 +85,7 @@ import net.osmand.aidl.quickaction.QuickActionParams;
|
||||||
import net.osmand.aidl.search.SearchParams;
|
import net.osmand.aidl.search.SearchParams;
|
||||||
import net.osmand.aidl.search.SearchResult;
|
import net.osmand.aidl.search.SearchResult;
|
||||||
import net.osmand.aidl.tiles.ASqliteDbFile;
|
import net.osmand.aidl.tiles.ASqliteDbFile;
|
||||||
|
import net.osmand.aidlapi.lock.SetLockStateParams;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
import net.osmand.plus.settings.backend.OsmAndAppCustomization;
|
import net.osmand.plus.settings.backend.OsmAndAppCustomization;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
|
@ -1326,6 +1327,16 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
public boolean setLockState(SetLockStateParams params) {
|
||||||
|
try {
|
||||||
|
OsmandAidlApi api = getApi("setLockState");
|
||||||
|
return api != null && api.setLockState(params.getLockState());
|
||||||
|
} catch (Exception e) {
|
||||||
|
handleException(e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private void setCustomization(OsmandAidlApi api, CustomizationInfoParams params) {
|
private void setCustomization(OsmandAidlApi api, CustomizationInfoParams params) {
|
||||||
|
|
|
@ -15,6 +15,7 @@ import net.osmand.PlatformUtil;
|
||||||
import net.osmand.aidl.OsmandAidlApi.GpxBitmapCreatedCallback;
|
import net.osmand.aidl.OsmandAidlApi.GpxBitmapCreatedCallback;
|
||||||
import net.osmand.aidl.OsmandAidlApi.OsmandAppInitCallback;
|
import net.osmand.aidl.OsmandAidlApi.OsmandAppInitCallback;
|
||||||
import net.osmand.aidl.OsmandAidlApi.SearchCompleteCallback;
|
import net.osmand.aidl.OsmandAidlApi.SearchCompleteCallback;
|
||||||
|
import net.osmand.aidlapi.lock.SetLockStateParams;
|
||||||
import net.osmand.aidlapi.IOsmAndAidlCallback;
|
import net.osmand.aidlapi.IOsmAndAidlCallback;
|
||||||
import net.osmand.aidlapi.IOsmAndAidlInterface;
|
import net.osmand.aidlapi.IOsmAndAidlInterface;
|
||||||
import net.osmand.aidlapi.calculateroute.CalculateRouteParams;
|
import net.osmand.aidlapi.calculateroute.CalculateRouteParams;
|
||||||
|
@ -1259,6 +1260,17 @@ public class OsmandAidlServiceV2 extends Service implements AidlCallbackListener
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean setLockState(SetLockStateParams params) {
|
||||||
|
try {
|
||||||
|
OsmandAidlApi api = getApi("setLockState");
|
||||||
|
return api != null && api.setLockState(params.getLockState());
|
||||||
|
} catch (Exception e) {
|
||||||
|
handleException(e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private void setCustomization(OsmandAidlApi api, CustomizationInfoParams params) {
|
private void setCustomization(OsmandAidlApi api, CustomizationInfoParams params) {
|
||||||
|
|
|
@ -104,7 +104,7 @@ public class LockHelper implements SensorEventListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("WakelockTimeout")
|
@SuppressLint("WakelockTimeout")
|
||||||
private void unlock() {
|
public void unlock() {
|
||||||
if (lockUIAdapter != null) {
|
if (lockUIAdapter != null) {
|
||||||
lockUIAdapter.unlock();
|
lockUIAdapter.unlock();
|
||||||
}
|
}
|
||||||
|
@ -116,7 +116,7 @@ public class LockHelper implements SensorEventListener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void lock() {
|
public void lock() {
|
||||||
releaseWakeLocks();
|
releaseWakeLocks();
|
||||||
if (lockUIAdapter != null) {
|
if (lockUIAdapter != null) {
|
||||||
boolean useSystemTimeout = useSystemScreenTimeout.get();
|
boolean useSystemTimeout = useSystemScreenTimeout.get();
|
||||||
|
|
Loading…
Reference in a new issue