aboutsummaryrefslogtreecommitdiff
path: root/doze/src
diff options
context:
space:
mode:
authorBruno Martins <bgcngm@gmail.com>2019-01-01 12:39:38 +0000
committerDavide Garberi <dade.garberi@gmail.com>2019-02-06 13:56:16 +0100
commitebd1b296486cd39491727d771a59b0516fe2d13f (patch)
tree2d240831453c664fdd580528b1065a9e3785e0b0 /doze/src
parentde3f782c0b1fe2a6b85cb848d435ebb126697ca4 (diff)
msm8996-common: doze: Add AOD support to Ambient Display
* This makes the always on display mode feature visible for those devices that explicitly set it as available via AOSP overlay. Should only be enabled on devices where the display has been tuned to be power efficient in DOZE and/or DOZE_SUSPEND states. Change-Id: If543936f9421dd7a6c0be594f7cb76afb227e34b Signed-off-by: Davide Garberi <dade.garberi@gmail.com>
Diffstat (limited to 'doze/src')
-rw-r--r--doze/src/org/lineageos/settings/doze/DozeSettingsFragment.java31
-rw-r--r--doze/src/org/lineageos/settings/doze/Utils.java24
2 files changed, 51 insertions, 4 deletions
diff --git a/doze/src/org/lineageos/settings/doze/DozeSettingsFragment.java b/doze/src/org/lineageos/settings/doze/DozeSettingsFragment.java
index fd1756e..507d287 100644
--- a/doze/src/org/lineageos/settings/doze/DozeSettingsFragment.java
+++ b/doze/src/org/lineageos/settings/doze/DozeSettingsFragment.java
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2015 The CyanogenMod Project
- * 2017-2018 The LineageOS Project
+ * 2017-2019 The LineageOS Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -45,6 +45,8 @@ public class DozeSettingsFragment extends PreferenceFragment implements OnPrefer
private TextView mTextView;
private View mSwitchBar;
+ private SwitchPreference mAlwaysOnDisplayPreference;
+
private SwitchPreference mPickUpPreference;
private SwitchPreference mHandwavePreference;
private SwitchPreference mPocketPreference;
@@ -63,6 +65,12 @@ public class DozeSettingsFragment extends PreferenceFragment implements OnPrefer
boolean dozeEnabled = Utils.isDozeEnabled(getActivity());
+ mAlwaysOnDisplayPreference = (SwitchPreference) findPreference(Utils.ALWAYS_ON_DISPLAY);
+ mAlwaysOnDisplayPreference.setEnabled(dozeEnabled);
+ mAlwaysOnDisplayPreference.setOnPreferenceChangeListener(this);
+
+ PreferenceCategory tiltSensorCategory =
+ (PreferenceCategory) getPreferenceScreen().findPreference(Utils.CATEG_TILT_SENSOR);
PreferenceCategory proximitySensorCategory =
(PreferenceCategory) getPreferenceScreen().findPreference(Utils.CATEG_PROX_SENSOR);
@@ -82,6 +90,14 @@ public class DozeSettingsFragment extends PreferenceFragment implements OnPrefer
if (!Utils.getProxCheckBeforePulse(getActivity())) {
getPreferenceScreen().removePreference(proximitySensorCategory);
}
+
+ // Hide AOD if not supported and set all its dependents otherwise
+ if (!Utils.alwaysOnDisplayAvailable(getActivity())) {
+ getPreferenceScreen().removePreference(mAlwaysOnDisplayPreference);
+ } else {
+ tiltSensorCategory.setDependency(Utils.ALWAYS_ON_DISPLAY);
+ proximitySensorCategory.setDependency(Utils.ALWAYS_ON_DISPLAY);
+ }
}
@Override
@@ -115,8 +131,13 @@ public class DozeSettingsFragment extends PreferenceFragment implements OnPrefer
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
- Utils.enableGesture(getActivity(), preference.getKey(), (Boolean) newValue);
+ if (Utils.ALWAYS_ON_DISPLAY.equals(preference.getKey())) {
+ Utils.enableAlwaysOn(getActivity(), (Boolean) newValue);
+ } else {
+ Utils.enableGesture(getActivity(), preference.getKey(), (Boolean) newValue);
+ }
Utils.checkDozeService(getActivity());
+
return true;
}
@@ -128,6 +149,12 @@ public class DozeSettingsFragment extends PreferenceFragment implements OnPrefer
mTextView.setText(getString(isChecked ? R.string.switch_bar_on : R.string.switch_bar_off));
mSwitchBar.setActivated(isChecked);
+ if (!isChecked) {
+ Utils.enableAlwaysOn(getActivity(), false);
+ mAlwaysOnDisplayPreference.setChecked(false);
+ }
+ mAlwaysOnDisplayPreference.setEnabled(isChecked);
+
mPickUpPreference.setEnabled(isChecked);
mHandwavePreference.setEnabled(isChecked);
mPocketPreference.setEnabled(isChecked);
diff --git a/doze/src/org/lineageos/settings/doze/Utils.java b/doze/src/org/lineageos/settings/doze/Utils.java
index 9cd7fdd..72a7477 100644
--- a/doze/src/org/lineageos/settings/doze/Utils.java
+++ b/doze/src/org/lineageos/settings/doze/Utils.java
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2015 The CyanogenMod Project
- * 2017-2018 The LineageOS Project
+ * 2017-2019 The LineageOS Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -25,6 +25,9 @@ import android.support.v7.preference.PreferenceManager;
import android.provider.Settings;
import android.util.Log;
+import com.android.internal.hardware.AmbientDisplayConfiguration;
+
+import static android.provider.Settings.Secure.DOZE_ALWAYS_ON;
import static android.provider.Settings.Secure.DOZE_ENABLED;
public final class Utils {
@@ -34,6 +37,9 @@ public final class Utils {
private static final String DOZE_INTENT = "com.android.systemui.doze.pulse";
+ protected static final String ALWAYS_ON_DISPLAY = "always_on_display";
+
+ protected static final String CATEG_TILT_SENSOR = "tilt_sensor";
protected static final String CATEG_PROX_SENSOR = "proximity_sensor";
protected static final String GESTURE_PICK_UP_KEY = "gesture_pick_up";
@@ -53,7 +59,7 @@ public final class Utils {
}
protected static void checkDozeService(Context context) {
- if (isDozeEnabled(context) && sensorsEnabled(context)) {
+ if (isDozeEnabled(context) && !isAlwaysOnEnabled(context) && sensorsEnabled(context)) {
startService(context);
} else {
stopService(context);
@@ -87,6 +93,20 @@ public final class Utils {
new UserHandle(UserHandle.USER_CURRENT));
}
+ protected static boolean enableAlwaysOn(Context context, boolean enable) {
+ return Settings.Secure.putIntForUser(context.getContentResolver(),
+ DOZE_ALWAYS_ON, enable ? 1 : 0, UserHandle.USER_CURRENT);
+ }
+
+ private static boolean isAlwaysOnEnabled(Context context) {
+ return Settings.Secure.getIntForUser(context.getContentResolver(),
+ DOZE_ALWAYS_ON, 1, UserHandle.USER_CURRENT) != 0;
+ }
+
+ protected static boolean alwaysOnDisplayAvailable(Context context) {
+ return new AmbientDisplayConfiguration(context).alwaysOnAvailable();
+ }
+
protected static void enableGesture(Context context, String gesture, boolean enable) {
PreferenceManager.getDefaultSharedPreferences(context).edit()
.putBoolean(gesture, enable).apply();