Doze: Add missing preference listeners

* Otherwise, it resulted in Doze service not being activated
   when enabling one of the features for the first time after
   a clean installation.

Change-Id: I625d9109fb85c970f0e59b1cbcabba7d4375d2f3
This commit is contained in:
Bruno Martins 2018-09-16 00:53:38 +01:00 committed by SamarV-121
parent 764f507c35
commit e817d534a0
4 changed files with 40 additions and 29 deletions

View file

@ -65,22 +65,22 @@ public class DozeService extends Service {
private void onDisplayOn() { private void onDisplayOn() {
if (DEBUG) Log.d(TAG, "Display on"); if (DEBUG) Log.d(TAG, "Display on");
if (Utils.pickUpEnabled(this)) { if (Utils.isPickUpEnabled(this)) {
mPickupSensor.disable(); mPickupSensor.disable();
} }
if (Utils.handwaveGestureEnabled(this) || if (Utils.isHandwaveGestureEnabled(this) ||
Utils.pocketGestureEnabled(this)) { Utils.isPocketGestureEnabled(this)) {
mProximitySensor.disable(); mProximitySensor.disable();
} }
} }
private void onDisplayOff() { private void onDisplayOff() {
if (DEBUG) Log.d(TAG, "Display off"); if (DEBUG) Log.d(TAG, "Display off");
if (Utils.pickUpEnabled(this)) { if (Utils.isPickUpEnabled(this)) {
mPickupSensor.enable(); mPickupSensor.enable();
} }
if (Utils.handwaveGestureEnabled(this) || if (Utils.isHandwaveGestureEnabled(this) ||
Utils.pocketGestureEnabled(this)) { Utils.isPocketGestureEnabled(this)) {
mProximitySensor.enable(); mProximitySensor.enable();
} }
} }

View file

@ -67,12 +67,15 @@ public class DozeSettingsFragment extends PreferenceFragment implements OnPrefer
mPickUpPreference = (SwitchPreference) findPreference(Utils.GESTURE_PICK_UP_KEY); mPickUpPreference = (SwitchPreference) findPreference(Utils.GESTURE_PICK_UP_KEY);
mPickUpPreference.setEnabled(dozeEnabled); mPickUpPreference.setEnabled(dozeEnabled);
mPickUpPreference.setOnPreferenceChangeListener(this);
mHandwavePreference = (SwitchPreference) findPreference(Utils.GESTURE_HAND_WAVE_KEY); mHandwavePreference = (SwitchPreference) findPreference(Utils.GESTURE_HAND_WAVE_KEY);
mHandwavePreference.setEnabled(dozeEnabled); mHandwavePreference.setEnabled(dozeEnabled);
mHandwavePreference.setOnPreferenceChangeListener(this);
mPocketPreference = (SwitchPreference) findPreference(Utils.GESTURE_POCKET_KEY); mPocketPreference = (SwitchPreference) findPreference(Utils.GESTURE_POCKET_KEY);
mPocketPreference.setEnabled(dozeEnabled); mPocketPreference.setEnabled(dozeEnabled);
mPocketPreference.setOnPreferenceChangeListener(this);
// Hide proximity sensor related features if the device doesn't support them // Hide proximity sensor related features if the device doesn't support them
if (!Utils.getProxCheckBeforePulse(getActivity())) { if (!Utils.getProxCheckBeforePulse(getActivity())) {
@ -107,20 +110,21 @@ public class DozeSettingsFragment extends PreferenceFragment implements OnPrefer
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
Utils.enableGesture(getActivity(), preference.getKey(), (Boolean) newValue);
Utils.checkDozeService(getActivity()); Utils.checkDozeService(getActivity());
return true; return true;
} }
@Override @Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) { public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
Utils.enableDoze(b, getActivity()); Utils.enableDoze(getActivity(), isChecked);
Utils.checkDozeService(getActivity()); Utils.checkDozeService(getActivity());
mTextView.setText(getString(b ? R.string.switch_bar_on : R.string.switch_bar_off)); mTextView.setText(getString(isChecked ? R.string.switch_bar_on : R.string.switch_bar_off));
mPickUpPreference.setEnabled(b); mPickUpPreference.setEnabled(isChecked);
mHandwavePreference.setEnabled(b); mHandwavePreference.setEnabled(isChecked);
mPocketPreference.setEnabled(b); mPocketPreference.setEnabled(isChecked);
} }
@Override @Override

View file

@ -74,11 +74,11 @@ public class ProximitySensor implements SensorEventListener {
private boolean shouldPulse(long timestamp) { private boolean shouldPulse(long timestamp) {
long delta = timestamp - mInPocketTime; long delta = timestamp - mInPocketTime;
if (Utils.handwaveGestureEnabled(mContext) && Utils.pocketGestureEnabled(mContext)) { if (Utils.isHandwaveGestureEnabled(mContext) && Utils.isPocketGestureEnabled(mContext)) {
return true; return true;
} else if (Utils.handwaveGestureEnabled(mContext)) { } else if (Utils.isHandwaveGestureEnabled(mContext)) {
return delta < HANDWAVE_MAX_DELTA_NS; return delta < HANDWAVE_MAX_DELTA_NS;
} else if (Utils.pocketGestureEnabled(mContext)) { } else if (Utils.isPocketGestureEnabled(mContext)) {
return delta >= POCKET_MIN_DELTA_NS; return delta >= POCKET_MIN_DELTA_NS;
} }
return false; return false;

View file

@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2015 The CyanogenMod Project * Copyright (C) 2015 The CyanogenMod Project
* 2017 The LineageOS Project * 2017-2018 The LineageOS Project
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -78,7 +78,7 @@ public final class Utils {
DOZE_ENABLED, 1) != 0; DOZE_ENABLED, 1) != 0;
} }
protected static boolean enableDoze(boolean enable, Context context) { protected static boolean enableDoze(Context context, boolean enable) {
return Settings.Secure.putInt(context.getContentResolver(), return Settings.Secure.putInt(context.getContentResolver(),
DOZE_ENABLED, enable ? 1 : 0); DOZE_ENABLED, enable ? 1 : 0);
} }
@ -89,24 +89,31 @@ public final class Utils {
new UserHandle(UserHandle.USER_CURRENT)); new UserHandle(UserHandle.USER_CURRENT));
} }
protected static boolean pickUpEnabled(Context context) { protected static void enableGesture(Context context, String gesture, boolean enable) {
return PreferenceManager.getDefaultSharedPreferences(context) PreferenceManager.getDefaultSharedPreferences(context).edit()
.getBoolean(GESTURE_PICK_UP_KEY, false); .putBoolean(gesture, enable).apply();
} }
protected static boolean handwaveGestureEnabled(Context context) { protected static boolean isGestureEnabled(Context context, String gesture) {
return PreferenceManager.getDefaultSharedPreferences(context) return PreferenceManager.getDefaultSharedPreferences(context)
.getBoolean(GESTURE_HAND_WAVE_KEY, false); .getBoolean(gesture, false);
} }
protected static boolean pocketGestureEnabled(Context context) { protected static boolean isPickUpEnabled(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context) return isGestureEnabled(context, GESTURE_PICK_UP_KEY);
.getBoolean(GESTURE_POCKET_KEY, false); }
protected static boolean isHandwaveGestureEnabled(Context context) {
return isGestureEnabled(context, GESTURE_HAND_WAVE_KEY);
}
protected static boolean isPocketGestureEnabled(Context context) {
return isGestureEnabled(context, GESTURE_POCKET_KEY);
} }
protected static boolean sensorsEnabled(Context context) { protected static boolean sensorsEnabled(Context context) {
return pickUpEnabled(context) || handwaveGestureEnabled(context) return isPickUpEnabled(context) || isHandwaveGestureEnabled(context)
|| pocketGestureEnabled(context); || isPocketGestureEnabled(context);
} }
protected static Sensor getSensor(SensorManager sm, String type) { protected static Sensor getSensor(SensorManager sm, String type) {