diff options
author | Dave Daynard <nardholio@gmail.com> | 2015-05-25 12:54:00 -0400 |
---|---|---|
committer | Jan Altensen <info@stricted.net> | 2020-03-20 14:56:31 +0100 |
commit | e798b625a75a665a989c5f0ace1f81a2a3e22b6b (patch) | |
tree | ea60e77c1a6c779435352d4ab59f1e9b933ef3c9 | |
parent | 78fa4868ed2f31c0c7c28d9a991a5ef8cc1af34e (diff) | |
download | android_hardware_samsung-e798b625a75a665a989c5f0ace1f81a2a3e22b6b.tar.gz android_hardware_samsung-e798b625a75a665a989c5f0ace1f81a2a3e22b6b.tar.bz2 android_hardware_samsung-e798b625a75a665a989c5f0ace1f81a2a3e22b6b.zip |
samsung: doze: add proximity wake
Change-Id: Ib02f4611e7b8bc09d540ca5c49aab68ef27f188b
-rw-r--r-- | doze/AndroidManifest.xml | 1 | ||||
-rw-r--r-- | doze/res/values/strings.xml | 5 | ||||
-rw-r--r-- | doze/res/xml/gesture_panel.xml | 11 | ||||
-rw-r--r-- | doze/src/com/cyanogenmod/settings/device/SamsungDozeService.java | 21 | ||||
-rw-r--r-- | doze/src/com/cyanogenmod/settings/device/TouchscreenGestureSettings.java | 21 |
5 files changed, 52 insertions, 7 deletions
diff --git a/doze/AndroidManifest.xml b/doze/AndroidManifest.xml index 804b80d..0bcc51f 100644 --- a/doze/AndroidManifest.xml +++ b/doze/AndroidManifest.xml @@ -5,6 +5,7 @@ android:versionName="1.0" android:sharedUserId="android.uid.system"> + <uses-permission android:name="android.permission.DEVICE_POWER" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.WAKE_LOCK" /> diff --git a/doze/res/values/strings.xml b/doze/res/values/strings.xml index 273a211..6c2d264 100644 --- a/doze/res/values/strings.xml +++ b/doze/res/values/strings.xml @@ -28,4 +28,9 @@ <string name="pocket_gesture_title">Pocket</string> <string name="pocket_gesture_summary">Pulse notifications on removal from pocket</string> + <string name="proximity_wake_title">Proximity wake</string> + + <string name="proximity_wake_enable_title">Proximity wake</string> + <string name="proximity_wake_enable_summary">Wake device on hand wave</string> + </resources> diff --git a/doze/res/xml/gesture_panel.xml b/doze/res/xml/gesture_panel.xml index ba48f9d..40a017c 100644 --- a/doze/res/xml/gesture_panel.xml +++ b/doze/res/xml/gesture_panel.xml @@ -39,4 +39,15 @@ android:summary="@string/pocket_gesture_summary" /> </PreferenceCategory> + <PreferenceCategory + android:key="proximity_wake_key" + android:title="@string/proximity_wake_title" > + + <SwitchPreference + android:key="proximity_wake_enable" + android:defaultValue="false" + android:title="@string/proximity_wake_enable_title" + android:summary="@string/proximity_wake_enable_summary" /> + </PreferenceCategory> + </PreferenceScreen>
\ No newline at end of file diff --git a/doze/src/com/cyanogenmod/settings/device/SamsungDozeService.java b/doze/src/com/cyanogenmod/settings/device/SamsungDozeService.java index f559544..6d40cf1 100644 --- a/doze/src/com/cyanogenmod/settings/device/SamsungDozeService.java +++ b/doze/src/com/cyanogenmod/settings/device/SamsungDozeService.java @@ -33,6 +33,7 @@ import android.provider.Settings; import android.util.Log; import java.util.ArrayList; +import java.util.concurrent.TimeUnit; import java.util.List; public class SamsungDozeService extends Service { @@ -43,6 +44,7 @@ public class SamsungDozeService extends Service { private static final String GESTURE_HAND_WAVE_KEY = "gesture_hand_wave"; private static final String GESTURE_POCKET_KEY = "gesture_pocket"; + private static final String PROXIMITY_WAKE_KEY = "proximity_wake_enable"; private static final int POCKET_DELTA_NS = 1000 * 1000 * 1000; @@ -52,6 +54,7 @@ public class SamsungDozeService extends Service { private boolean mHandwaveGestureEnabled = false; private boolean mPocketGestureEnabled = false; + private boolean mProximityWakeEnabled = false; class SamsungProximitySensor implements SensorEventListener { private SensorManager mSensorManager; @@ -88,6 +91,9 @@ public class SamsungDozeService extends Service { if (mHandwaveGestureEnabled && mPocketGestureEnabled) { return true; + } else if (mProximityWakeEnabled && (delta < POCKET_DELTA_NS)) { + mPowerManager.wakeUp(TimeUnit.NANOSECONDS.toMillis(timestamp)); + return false; } else if (mHandwaveGestureEnabled && !mPocketGestureEnabled) { return delta < POCKET_DELTA_NS; } else if (!mHandwaveGestureEnabled && mPocketGestureEnabled) { @@ -96,8 +102,9 @@ public class SamsungDozeService extends Service { return false; } - public void enable() { - if (mHandwaveGestureEnabled || mPocketGestureEnabled) { + public void testAndEnable() { + if ((isDozeEnabled() && (mHandwaveGestureEnabled || mPocketGestureEnabled)) || + mProximityWakeEnabled) { mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL); } } @@ -116,8 +123,8 @@ public class SamsungDozeService extends Service { SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(mContext); loadPreferences(sharedPrefs); sharedPrefs.registerOnSharedPreferenceChangeListener(mPrefListener); - if (!isInteractive() && isDozeEnabled()) { - mSensor.enable(); + if (!isInteractive()) { + mSensor.testAndEnable(); } } @@ -155,9 +162,7 @@ public class SamsungDozeService extends Service { private void onDisplayOff() { if (DEBUG) Log.d(TAG, "Display off"); - if (isDozeEnabled()) { - mSensor.enable(); - } + mSensor.testAndEnable(); } private void loadPreferences(SharedPreferences sharedPreferences) { @@ -184,6 +189,8 @@ public class SamsungDozeService extends Service { mHandwaveGestureEnabled = sharedPreferences.getBoolean(GESTURE_HAND_WAVE_KEY, false); } else if (GESTURE_POCKET_KEY.equals(key)) { mPocketGestureEnabled = sharedPreferences.getBoolean(GESTURE_POCKET_KEY, false); + } else if (PROXIMITY_WAKE_KEY.equals(key)) { + mProximityWakeEnabled = sharedPreferences.getBoolean(PROXIMITY_WAKE_KEY, false); } } }; diff --git a/doze/src/com/cyanogenmod/settings/device/TouchscreenGestureSettings.java b/doze/src/com/cyanogenmod/settings/device/TouchscreenGestureSettings.java index dc18422..5b69988 100644 --- a/doze/src/com/cyanogenmod/settings/device/TouchscreenGestureSettings.java +++ b/doze/src/com/cyanogenmod/settings/device/TouchscreenGestureSettings.java @@ -32,10 +32,12 @@ public class TouchscreenGestureSettings extends PreferenceActivity { private static final String KEY_AMBIENT_DISPLAY_ENABLE = "ambient_display_enable"; private static final String KEY_HAND_WAVE = "gesture_hand_wave"; private static final String KEY_GESTURE_POCKET = "gesture_pocket"; + private static final String KEY_PROXIMITY_WAKE = "proximity_wake_enable"; private SwitchPreference mAmbientDisplayPreference; private SwitchPreference mHandwavePreference; private SwitchPreference mPocketPreference; + private SwitchPreference mProximityWakePreference; @Override public void onCreate(Bundle savedInstanceState) { @@ -50,9 +52,13 @@ public class TouchscreenGestureSettings extends PreferenceActivity { mHandwavePreference = (SwitchPreference) findPreference(KEY_HAND_WAVE); mHandwavePreference.setEnabled(dozeEnabled); + mHandwavePreference.setOnPreferenceChangeListener(mProximityListener); mPocketPreference = (SwitchPreference) findPreference(KEY_GESTURE_POCKET); mPocketPreference.setEnabled(dozeEnabled); + mProximityWakePreference = + (SwitchPreference) findPreference(KEY_PROXIMITY_WAKE); + mProximityWakePreference.setOnPreferenceChangeListener(mProximityListener); final ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); @@ -100,4 +106,19 @@ public class TouchscreenGestureSettings extends PreferenceActivity { return ret; } }; + + private Preference.OnPreferenceChangeListener mProximityListener = + new Preference.OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + if ((boolean) newValue) { + if (preference.getKey().equals(KEY_HAND_WAVE)) { + mProximityWakePreference.setChecked(false); + } else if (preference.getKey().equals(KEY_PROXIMITY_WAKE)) { + mHandwavePreference.setChecked(false); + } + } + return true; + } + }; } |