aboutsummaryrefslogtreecommitdiff
path: root/doze
diff options
context:
space:
mode:
Diffstat (limited to 'doze')
-rw-r--r--doze/res/xml/doze_settings.xml8
-rw-r--r--doze/src/org/lineageos/settings/doze/DozeSettingsFragment.java31
-rw-r--r--doze/src/org/lineageos/settings/doze/Utils.java24
3 files changed, 59 insertions, 4 deletions
diff --git a/doze/res/xml/doze_settings.xml b/doze/res/xml/doze_settings.xml
index 005c6ae..f213a97 100644
--- a/doze/res/xml/doze_settings.xml
+++ b/doze/res/xml/doze_settings.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2015 The CyanogenMod Project
+ 2018-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.
@@ -16,6 +17,13 @@
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+ <SwitchPreference
+ android:key="always_on_display"
+ android:defaultValue="false"
+ android:disableDependentsState="true"
+ android:title="@string/ambient_display_always_on_title"
+ android:summary="@string/ambient_display_always_on_summary" />
+
<PreferenceCategory
android:key="tilt_sensor"
android:title="@string/tilt_sensor_title">
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();