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.QuickActionInfoParams;
|
||||
import net.osmand.aidlapi.lock.SetLockStateParams;
|
||||
|
||||
// NOTE: Add new methods at the end of file!!!
|
||||
|
||||
|
@ -841,4 +842,9 @@ interface IOsmAndAidlInterface {
|
|||
boolean executeQuickAction(in QuickActionParams params);
|
||||
|
||||
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.QuickActionInfoParams;
|
||||
import net.osmand.aidlapi.lock.SetLockStateParams;
|
||||
|
||||
// NOTE: Add new methods at the end of file!!!
|
||||
|
||||
|
@ -856,4 +857,8 @@ interface IOsmAndAidlInterface {
|
|||
boolean executeQuickAction(in QuickActionParams params);
|
||||
|
||||
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.InitEvents;
|
||||
import net.osmand.plus.dialogs.GpxAppearanceAdapter;
|
||||
import net.osmand.plus.helpers.LockHelper;
|
||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||
import net.osmand.plus.ContextMenuAdapter;
|
||||
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_QUICK_ACTION_NUMBER = "aidl_quick_action_number";
|
||||
private static final String AIDL_LOCK_STATE = "lock_state";
|
||||
|
||||
|
||||
private static final ApplicationMode DEFAULT_PROFILE = ApplicationMode.CAR;
|
||||
|
@ -228,6 +230,7 @@ public class OsmandAidlApi {
|
|||
registerShowSqliteDbFileReceiver(mapActivity);
|
||||
registerHideSqliteDbFileReceiver(mapActivity);
|
||||
registerExecuteQuickActionReceiver(mapActivity);
|
||||
registerLockStateReceiver(mapActivity);
|
||||
initOsmandTelegram();
|
||||
app.getAppCustomization().addListener(mapActivity);
|
||||
aMapPointUpdateListener = mapActivity;
|
||||
|
@ -854,6 +857,23 @@ public class OsmandAidlApi {
|
|||
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) {
|
||||
for (ConnectedApp connectedApp : connectedApps.values()) {
|
||||
connectedApp.registerMapLayers(mapActivity);
|
||||
|
@ -1691,7 +1711,13 @@ public class OsmandAidlApi {
|
|||
app.sendBroadcast(intent);
|
||||
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,
|
||||
final int radiusLevel, final int totalLimit, final SearchCompleteCallback callback) {
|
||||
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.SearchResult;
|
||||
import net.osmand.aidl.tiles.ASqliteDbFile;
|
||||
import net.osmand.aidlapi.lock.SetLockStateParams;
|
||||
import net.osmand.data.LatLon;
|
||||
import net.osmand.plus.settings.backend.OsmAndAppCustomization;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
|
@ -1326,6 +1327,16 @@ public class OsmandAidlService extends Service implements AidlCallbackListener {
|
|||
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) {
|
||||
|
|
|
@ -15,6 +15,7 @@ import net.osmand.PlatformUtil;
|
|||
import net.osmand.aidl.OsmandAidlApi.GpxBitmapCreatedCallback;
|
||||
import net.osmand.aidl.OsmandAidlApi.OsmandAppInitCallback;
|
||||
import net.osmand.aidl.OsmandAidlApi.SearchCompleteCallback;
|
||||
import net.osmand.aidlapi.lock.SetLockStateParams;
|
||||
import net.osmand.aidlapi.IOsmAndAidlCallback;
|
||||
import net.osmand.aidlapi.IOsmAndAidlInterface;
|
||||
import net.osmand.aidlapi.calculateroute.CalculateRouteParams;
|
||||
|
@ -1259,6 +1260,17 @@ public class OsmandAidlServiceV2 extends Service implements AidlCallbackListener
|
|||
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) {
|
||||
|
|
|
@ -104,7 +104,7 @@ public class LockHelper implements SensorEventListener {
|
|||
}
|
||||
|
||||
@SuppressLint("WakelockTimeout")
|
||||
private void unlock() {
|
||||
public void unlock() {
|
||||
if (lockUIAdapter != null) {
|
||||
lockUIAdapter.unlock();
|
||||
}
|
||||
|
@ -116,7 +116,7 @@ public class LockHelper implements SensorEventListener {
|
|||
}
|
||||
}
|
||||
|
||||
private void lock() {
|
||||
public void lock() {
|
||||
releaseWakeLocks();
|
||||
if (lockUIAdapter != null) {
|
||||
boolean useSystemTimeout = useSystemScreenTimeout.get();
|
||||
|
|
Loading…
Reference in a new issue