samsung: doze: add proximity wake

Change-Id: Ib02f4611e7b8bc09d540ca5c49aab68ef27f188b
tirimbino
Dave Daynard 10 years ago committed by Jan Altensen
parent 78fa4868ed
commit e798b625a7
No known key found for this signature in database
GPG Key ID: 3E45BB95F7AD33DA
  1. 1
      doze/AndroidManifest.xml
  2. 5
      doze/res/values/strings.xml
  3. 11
      doze/res/xml/gesture_panel.xml
  4. 21
      doze/src/com/cyanogenmod/settings/device/SamsungDozeService.java
  5. 21
      doze/src/com/cyanogenmod/settings/device/TouchscreenGestureSettings.java

@ -5,6 +5,7 @@
android:versionName="1.0" android:versionName="1.0"
android:sharedUserId="android.uid.system"> 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.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WAKE_LOCK" />

@ -28,4 +28,9 @@
<string name="pocket_gesture_title">Pocket</string> <string name="pocket_gesture_title">Pocket</string>
<string name="pocket_gesture_summary">Pulse notifications on removal from 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> </resources>

@ -39,4 +39,15 @@
android:summary="@string/pocket_gesture_summary" /> android:summary="@string/pocket_gesture_summary" />
</PreferenceCategory> </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> </PreferenceScreen>

@ -33,6 +33,7 @@ import android.provider.Settings;
import android.util.Log; import android.util.Log;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.concurrent.TimeUnit;
import java.util.List; import java.util.List;
public class SamsungDozeService extends Service { 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_HAND_WAVE_KEY = "gesture_hand_wave";
private static final String GESTURE_POCKET_KEY = "gesture_pocket"; 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; 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 mHandwaveGestureEnabled = false;
private boolean mPocketGestureEnabled = false; private boolean mPocketGestureEnabled = false;
private boolean mProximityWakeEnabled = false;
class SamsungProximitySensor implements SensorEventListener { class SamsungProximitySensor implements SensorEventListener {
private SensorManager mSensorManager; private SensorManager mSensorManager;
@ -88,6 +91,9 @@ public class SamsungDozeService extends Service {
if (mHandwaveGestureEnabled && mPocketGestureEnabled) { if (mHandwaveGestureEnabled && mPocketGestureEnabled) {
return true; return true;
} else if (mProximityWakeEnabled && (delta < POCKET_DELTA_NS)) {
mPowerManager.wakeUp(TimeUnit.NANOSECONDS.toMillis(timestamp));
return false;
} else if (mHandwaveGestureEnabled && !mPocketGestureEnabled) { } else if (mHandwaveGestureEnabled && !mPocketGestureEnabled) {
return delta < POCKET_DELTA_NS; return delta < POCKET_DELTA_NS;
} else if (!mHandwaveGestureEnabled && mPocketGestureEnabled) { } else if (!mHandwaveGestureEnabled && mPocketGestureEnabled) {
@ -96,8 +102,9 @@ public class SamsungDozeService extends Service {
return false; return false;
} }
public void enable() { public void testAndEnable() {
if (mHandwaveGestureEnabled || mPocketGestureEnabled) { if ((isDozeEnabled() && (mHandwaveGestureEnabled || mPocketGestureEnabled)) ||
mProximityWakeEnabled) {
mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL); mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL);
} }
} }
@ -116,8 +123,8 @@ public class SamsungDozeService extends Service {
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(mContext); SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(mContext);
loadPreferences(sharedPrefs); loadPreferences(sharedPrefs);
sharedPrefs.registerOnSharedPreferenceChangeListener(mPrefListener); sharedPrefs.registerOnSharedPreferenceChangeListener(mPrefListener);
if (!isInteractive() && isDozeEnabled()) { if (!isInteractive()) {
mSensor.enable(); mSensor.testAndEnable();
} }
} }
@ -155,9 +162,7 @@ public class SamsungDozeService extends Service {
private void onDisplayOff() { private void onDisplayOff() {
if (DEBUG) Log.d(TAG, "Display off"); if (DEBUG) Log.d(TAG, "Display off");
if (isDozeEnabled()) { mSensor.testAndEnable();
mSensor.enable();
}
} }
private void loadPreferences(SharedPreferences sharedPreferences) { private void loadPreferences(SharedPreferences sharedPreferences) {
@ -184,6 +189,8 @@ public class SamsungDozeService extends Service {
mHandwaveGestureEnabled = sharedPreferences.getBoolean(GESTURE_HAND_WAVE_KEY, false); mHandwaveGestureEnabled = sharedPreferences.getBoolean(GESTURE_HAND_WAVE_KEY, false);
} else if (GESTURE_POCKET_KEY.equals(key)) { } else if (GESTURE_POCKET_KEY.equals(key)) {
mPocketGestureEnabled = sharedPreferences.getBoolean(GESTURE_POCKET_KEY, false); mPocketGestureEnabled = sharedPreferences.getBoolean(GESTURE_POCKET_KEY, false);
} else if (PROXIMITY_WAKE_KEY.equals(key)) {
mProximityWakeEnabled = sharedPreferences.getBoolean(PROXIMITY_WAKE_KEY, false);
} }
} }
}; };

@ -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_AMBIENT_DISPLAY_ENABLE = "ambient_display_enable";
private static final String KEY_HAND_WAVE = "gesture_hand_wave"; private static final String KEY_HAND_WAVE = "gesture_hand_wave";
private static final String KEY_GESTURE_POCKET = "gesture_pocket"; private static final String KEY_GESTURE_POCKET = "gesture_pocket";
private static final String KEY_PROXIMITY_WAKE = "proximity_wake_enable";
private SwitchPreference mAmbientDisplayPreference; private SwitchPreference mAmbientDisplayPreference;
private SwitchPreference mHandwavePreference; private SwitchPreference mHandwavePreference;
private SwitchPreference mPocketPreference; private SwitchPreference mPocketPreference;
private SwitchPreference mProximityWakePreference;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@ -50,9 +52,13 @@ public class TouchscreenGestureSettings extends PreferenceActivity {
mHandwavePreference = mHandwavePreference =
(SwitchPreference) findPreference(KEY_HAND_WAVE); (SwitchPreference) findPreference(KEY_HAND_WAVE);
mHandwavePreference.setEnabled(dozeEnabled); mHandwavePreference.setEnabled(dozeEnabled);
mHandwavePreference.setOnPreferenceChangeListener(mProximityListener);
mPocketPreference = mPocketPreference =
(SwitchPreference) findPreference(KEY_GESTURE_POCKET); (SwitchPreference) findPreference(KEY_GESTURE_POCKET);
mPocketPreference.setEnabled(dozeEnabled); mPocketPreference.setEnabled(dozeEnabled);
mProximityWakePreference =
(SwitchPreference) findPreference(KEY_PROXIMITY_WAKE);
mProximityWakePreference.setOnPreferenceChangeListener(mProximityListener);
final ActionBar actionBar = getActionBar(); final ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true);
@ -100,4 +106,19 @@ public class TouchscreenGestureSettings extends PreferenceActivity {
return ret; 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;
}
};
} }

Loading…
Cancel
Save