diff options
| -rw-r--r-- | doze/res/xml/doze_settings.xml | 8 | ||||
| -rw-r--r-- | doze/src/org/lineageos/settings/doze/DozeSettingsFragment.java | 31 | ||||
| -rw-r--r-- | doze/src/org/lineageos/settings/doze/Utils.java | 24 | 
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(); | 
