improve sensor and VoiceRouter settings setup
This commit is contained in:
parent
2dd1f801ae
commit
fd5d0c5697
7 changed files with 52 additions and 45 deletions
|
@ -11,9 +11,10 @@
|
|||
Thx - Hardy
|
||||
|
||||
-->
|
||||
<string name="wake_on_voice_time_descr">Set the time for which the screen will turn on.</string>
|
||||
<string name="wake_on_voice_sensor">Use proximity sensor</string>
|
||||
<string name="wake_on_voice_sensor_descr">Wave your hand over the top of the screen to turn on the screen while navigating.</string>
|
||||
<string name="turn_screen_on_router">Wake on turn</string>
|
||||
<string name="turn_screen_on_time_descr">Set the time for which the screen will turn on.</string>
|
||||
<string name="turn_screen_on_sensor">Use proximity sensor</string>
|
||||
<string name="turn_screen_on_sensor_descr">Wave your hand over the top of the screen to turn on the screen while navigating.</string>
|
||||
<string name="app_profile_custom_nav_subtitle"></string>
|
||||
<string name="rate_dialog_descr">Please give us 30 seconds, share feedback and rate our work on Google Play.</string>
|
||||
<string name="button_rate">Rate</string>
|
||||
|
|
|
@ -74,18 +74,20 @@
|
|||
|
||||
<PreferenceCategory
|
||||
android:key="turn_screen_on"
|
||||
android:layout="@layout/preference_category_summary"
|
||||
android:title="@string/wake_on_voice"
|
||||
android:summary="@string/wake_on_voice_descr">
|
||||
android:title="@string/wake_on_voice">
|
||||
|
||||
<ListPreference
|
||||
android:key="wake_on_voice_time_int"
|
||||
android:summary="@string/wake_on_voice_time_descr"
|
||||
android:key="turn_screen_on_time_int"
|
||||
android:summary="@string/turn_screen_on_time_descr"
|
||||
android:title="@string/shared_string_time"/>
|
||||
<CheckBoxPreference
|
||||
android:key="wake_on_voice_sensor"
|
||||
android:summary="@string/wake_on_voice_sensor_descr"
|
||||
android:title="@string/wake_on_voice_sensor"/>
|
||||
android:key="turn_screen_on_router"
|
||||
android:summary="@string/wake_on_voice_descr"
|
||||
android:title="@string/turn_screen_on_router"/>
|
||||
<CheckBoxPreference
|
||||
android:key="turn_screen_on_sensor"
|
||||
android:summary="@string/turn_screen_on_sensor_descr"
|
||||
android:title="@string/turn_screen_on_sensor"/>
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory
|
||||
|
|
|
@ -1387,21 +1387,17 @@ public class OsmandSettings {
|
|||
KEEP_INFORMING.setModeDefaultValue(ApplicationMode.PEDESTRIAN, 0);
|
||||
}
|
||||
|
||||
public final CommonPreference<Integer> WAKE_ON_VOICE_TIME_INT = new IntPreference("wake_on_voice_time_int", 0).makeProfile();
|
||||
public final CommonPreference<Integer> TURN_SCREEN_ON_TIME_INT = new IntPreference("turn_screen_on_time_int", 0).makeGlobal();
|
||||
|
||||
public final CommonPreference<Boolean> TURN_SCREEN_ON_ROUTER = new BooleanPreference("turn_screen_on_router", false).makeProfile();
|
||||
|
||||
{
|
||||
WAKE_ON_VOICE_TIME_INT.setModeDefaultValue(ApplicationMode.CAR, 0);
|
||||
WAKE_ON_VOICE_TIME_INT.setModeDefaultValue(ApplicationMode.BICYCLE, 0);
|
||||
WAKE_ON_VOICE_TIME_INT.setModeDefaultValue(ApplicationMode.PEDESTRIAN, 0);
|
||||
TURN_SCREEN_ON_ROUTER.setModeDefaultValue(ApplicationMode.CAR, false);
|
||||
TURN_SCREEN_ON_ROUTER.setModeDefaultValue(ApplicationMode.BICYCLE, false);
|
||||
TURN_SCREEN_ON_ROUTER.setModeDefaultValue(ApplicationMode.PEDESTRIAN, false);
|
||||
}
|
||||
|
||||
public final CommonPreference<Boolean> WAKE_ON_VOICE_SENSOR = new BooleanPreference("wake_on_voice_sensor", false).makeProfile();
|
||||
|
||||
{
|
||||
WAKE_ON_VOICE_SENSOR.setModeDefaultValue(ApplicationMode.CAR, false);
|
||||
WAKE_ON_VOICE_SENSOR.setModeDefaultValue(ApplicationMode.BICYCLE, false);
|
||||
WAKE_ON_VOICE_SENSOR.setModeDefaultValue(ApplicationMode.PEDESTRIAN, false);
|
||||
}
|
||||
public final CommonPreference<Boolean> TURN_SCREEN_ON_SENSOR = new BooleanPreference("turn_screen_on_sensor", false).makeGlobal();
|
||||
|
||||
// this value string is synchronized with settings_pref.xml preference name
|
||||
// try without AUTO_FOLLOW_ROUTE_NAV (see forum discussion 'Simplify our navigation preference menu')
|
||||
|
|
|
@ -1415,6 +1415,7 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
|
|||
getMapView().refreshMap(true);
|
||||
}
|
||||
});
|
||||
lockHelper.refreshProfilesSettings();
|
||||
getMapView().refreshMap(true);
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,6 @@ package net.osmand.plus.activities;
|
|||
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.DialogInterface.OnClickListener;
|
||||
import android.content.DialogInterface.OnMultiChoiceClickListener;
|
||||
import android.content.Intent;
|
||||
import android.media.AudioManager;
|
||||
|
@ -17,19 +16,14 @@ import android.preference.PreferenceScreen;
|
|||
import android.support.annotation.NonNull;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.util.TypedValue;
|
||||
import android.view.ContextThemeWrapper;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.SeekBar;
|
||||
import android.widget.SeekBar.OnSeekBarChangeListener;
|
||||
import android.widget.TextView;
|
||||
|
||||
import net.osmand.plus.ApplicationMode;
|
||||
import net.osmand.plus.ContextMenuAdapter;
|
||||
import net.osmand.plus.ContextMenuItem;
|
||||
import net.osmand.plus.OsmAndFormatter;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.OsmandSettings;
|
||||
import net.osmand.plus.OsmandSettings.AutoZoomMap;
|
||||
|
@ -44,7 +38,6 @@ import net.osmand.plus.routepreparationmenu.RoutingOptionsHelper;
|
|||
import net.osmand.plus.routing.RouteProvider.RouteService;
|
||||
import net.osmand.plus.voice.CommandPlayer;
|
||||
import net.osmand.router.GeneralRouter;
|
||||
import net.osmand.router.GeneralRouter.GeneralRouterProfile;
|
||||
import net.osmand.router.GeneralRouter.RoutingParameter;
|
||||
import net.osmand.router.GeneralRouter.RoutingParameterType;
|
||||
import net.osmand.util.Algorithms;
|
||||
|
@ -186,12 +179,12 @@ public class SettingsNavigationActivity extends SettingsBaseActivity {
|
|||
selectAppModeDialog().show();
|
||||
}
|
||||
|
||||
addWakeOnVoice((PreferenceGroup) screen.findPreference("turn_screen_on"));
|
||||
addTurnScreenOn((PreferenceGroup) screen.findPreference("turn_screen_on"));
|
||||
|
||||
addVoicePrefs((PreferenceGroup) screen.findPreference("voice"));
|
||||
}
|
||||
|
||||
private void addWakeOnVoice(PreferenceGroup screen) {
|
||||
private void addTurnScreenOn(PreferenceGroup screen) {
|
||||
Integer[] screenPowerSaveValues = new Integer[] { 0, 5, 10, 15, 20, 30, 45, 60 };
|
||||
String[] screenPowerSaveNames = new String[screenPowerSaveValues.length];
|
||||
screenPowerSaveNames[0] = getString(R.string.shared_string_never);
|
||||
|
@ -199,8 +192,9 @@ public class SettingsNavigationActivity extends SettingsBaseActivity {
|
|||
screenPowerSaveNames[i] = screenPowerSaveValues[i] + " "
|
||||
+ getString(R.string.int_seconds);
|
||||
}
|
||||
registerListPreference(settings.WAKE_ON_VOICE_TIME_INT, screen, screenPowerSaveNames, screenPowerSaveValues);
|
||||
registerBooleanPreference(settings.WAKE_ON_VOICE_SENSOR, screen);
|
||||
registerListPreference(settings.TURN_SCREEN_ON_TIME_INT, screen, screenPowerSaveNames, screenPowerSaveValues);
|
||||
registerBooleanPreference(settings.TURN_SCREEN_ON_ROUTER, screen);
|
||||
registerBooleanPreference(settings.TURN_SCREEN_ON_SENSOR, screen);
|
||||
}
|
||||
|
||||
private void reloadVoiceListPreference(PreferenceScreen screen) {
|
||||
|
@ -402,6 +396,13 @@ public class SettingsNavigationActivity extends SettingsBaseActivity {
|
|||
return true;
|
||||
}
|
||||
super.onPreferenceChange(preference, newValue);
|
||||
if (id.equals(settings.TURN_SCREEN_ON_ROUTER.getId())) {
|
||||
boolean isRoutingListnerEnabled = Boolean.valueOf(newValue.toString());
|
||||
getMyApplication().getLockHelper().setVoiceRouterListener(isRoutingListnerEnabled);
|
||||
} else if (id.equals(settings.TURN_SCREEN_ON_SENSOR.getId())) {
|
||||
boolean isSensorEnabled = Boolean.valueOf(newValue.toString());
|
||||
getMyApplication().getLockHelper().setSensor(isSensorEnabled);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -204,7 +204,7 @@ public class MapViewTrackingUtilities implements OsmAndLocationListener, IMapLoc
|
|||
}
|
||||
registerUnregisterSensor(location, smallSpeedForDirectionOfMovement);
|
||||
if (settings.ANIMATE_MY_LOCATION.get() && !smallSpeedForAnimation && !movingToMyLocation &&
|
||||
settings.WAKE_ON_VOICE_TIME_INT.get() == 0) {
|
||||
settings.TURN_SCREEN_ON_TIME_INT.get() == 0) {
|
||||
mapView.getAnimatedDraggingThread().startMoving(
|
||||
location.getLatitude(), location.getLongitude(), zoom, rotation, false);
|
||||
} else {
|
||||
|
|
|
@ -11,6 +11,7 @@ import android.os.PowerManager;
|
|||
import net.osmand.AndroidUtils;
|
||||
import net.osmand.PlatformUtil;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.OsmandSettings;
|
||||
import net.osmand.plus.routing.VoiceRouter;
|
||||
|
||||
public class LockHelper implements SensorEventListener {
|
||||
|
@ -25,6 +26,7 @@ public class LockHelper implements SensorEventListener {
|
|||
private OsmandApplication app;
|
||||
private LockRunnable lockRunnable;
|
||||
private LockUIAdapter lockUIAdapter;
|
||||
private OsmandSettings settings;
|
||||
|
||||
private VoiceRouter.VoiceMessageListener voiceMessageListener;
|
||||
|
||||
|
@ -46,6 +48,7 @@ public class LockHelper implements SensorEventListener {
|
|||
this.app = app;
|
||||
uiHandler = new Handler();
|
||||
lockRunnable = new LockRunnable();
|
||||
settings = app.getSettings();
|
||||
|
||||
mSensorManager = (SensorManager) app.getSystemService(Context.SENSOR_SERVICE);
|
||||
mProximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
|
||||
|
@ -56,9 +59,8 @@ public class LockHelper implements SensorEventListener {
|
|||
unlockEvent();
|
||||
}
|
||||
};
|
||||
|
||||
setVoiceRouterListener(true);
|
||||
setSensor(true);
|
||||
|
||||
refreshGlobalSettings();
|
||||
}
|
||||
|
||||
private void releaseWakeLocks() {
|
||||
|
@ -99,7 +101,7 @@ public class LockHelper implements SensorEventListener {
|
|||
boolean isScreenOn = AndroidUtils.isScreenOn(app);
|
||||
boolean isScreenLocked = AndroidUtils.isScreenLocked(app);
|
||||
|
||||
Integer screenPowerSave = app.getSettings().WAKE_ON_VOICE_TIME_INT.get();
|
||||
Integer screenPowerSave = app.getSettings().TURN_SCREEN_ON_TIME_INT.get();
|
||||
|
||||
if ((isScreenOn || isScreenLocked) && screenPowerSave > 0) {
|
||||
timedUnlock(screenPowerSave * 1000L);
|
||||
|
@ -113,11 +115,9 @@ public class LockHelper implements SensorEventListener {
|
|||
|
||||
@Override
|
||||
public void onSensorChanged(SensorEvent event) {
|
||||
if (isSensorEnabled()) {
|
||||
if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
|
||||
if (event.values[0] >= -SENSOR_SENSITIVITY && event.values[0] <= SENSOR_SENSITIVITY) {
|
||||
unlockEvent();
|
||||
}
|
||||
if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
|
||||
if (event.values[0] >= -SENSOR_SENSITIVITY && event.values[0] <= SENSOR_SENSITIVITY) {
|
||||
unlockEvent();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -139,8 +139,14 @@ public class LockHelper implements SensorEventListener {
|
|||
}
|
||||
}
|
||||
|
||||
private boolean isSensorEnabled() {
|
||||
return app.getSettings().WAKE_ON_VOICE_SENSOR.get();
|
||||
public void refreshProfilesSettings() {
|
||||
boolean isVRListenerEnabled = settings.TURN_SCREEN_ON_ROUTER.get();
|
||||
setVoiceRouterListener(isVRListenerEnabled);
|
||||
}
|
||||
|
||||
public void refreshGlobalSettings() {
|
||||
boolean isSensorEnabled = settings.TURN_SCREEN_ON_SENSOR.get();
|
||||
setSensor(isSensorEnabled);
|
||||
}
|
||||
|
||||
public void setLockUIAdapter(LockUIAdapter adapter) {
|
||||
|
|
Loading…
Reference in a new issue