Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f57b5416 authored by Lucas Silva's avatar Lucas Silva
Browse files

Add postured dream setting

This adds a new entry into the dream settings for 'While stationary and upright'. When this is enabled, dreams will be activated when the device is stationary and upright.

Bug: 383208131
Test: locally - mp droid and verified entry shows up in settings UI and
writes to Settings.Secure correctly
Flag: android.service.dreams.allow_dream_when_postured

Change-Id: Id38d5a6fc121be36a16d4bdfc6c40fcc59e3c085
parent 8949f5c0
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -77,3 +77,10 @@ flag {
        purpose: PURPOSE_BUGFIX
        purpose: PURPOSE_BUGFIX
    }
    }
}
}

flag {
    name: "allow_dream_when_postured"
    namespace: "systemui"
    description: "Allow dreaming when device is stationary and upright"
    bug: "383208131"
}
+1 −0
Original line number Original line Diff line number Diff line
@@ -580,6 +580,7 @@ message SecureSettingsProto {
        optional SettingProto activate_on_dock = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto activate_on_dock = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto activate_on_sleep = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto activate_on_sleep = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto default_component = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto default_component = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto activate_on_postured = 6 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }
    }
    optional Screensaver screensaver = 47;
    optional Screensaver screensaver = 47;


+3 −0
Original line number Original line Diff line number Diff line
@@ -2766,6 +2766,9 @@
    <bool name="config_dreamsActivatedOnDockByDefault">true</bool>
    <bool name="config_dreamsActivatedOnDockByDefault">true</bool>
    <!-- If supported and enabled, are dreams activated when asleep and charging? (by default) -->
    <!-- If supported and enabled, are dreams activated when asleep and charging? (by default) -->
    <bool name="config_dreamsActivatedOnSleepByDefault">false</bool>
    <bool name="config_dreamsActivatedOnSleepByDefault">false</bool>
    <!-- If supported and enabled, are dreams enabled while device is stationary and upright?
         (by default) -->
    <bool name="config_dreamsActivatedOnPosturedByDefault">false</bool>
    <!-- ComponentName of the default dream (Settings.Secure.DEFAULT_SCREENSAVER_COMPONENT) -->
    <!-- ComponentName of the default dream (Settings.Secure.DEFAULT_SCREENSAVER_COMPONENT) -->
    <string name="config_dreamsDefaultComponent" translatable="false">com.android.deskclock/com.android.deskclock.Screensaver</string>
    <string name="config_dreamsDefaultComponent" translatable="false">com.android.deskclock/com.android.deskclock.Screensaver</string>
    <!-- ComponentNames of the dreams that we should hide -->
    <!-- ComponentNames of the dreams that we should hide -->
+1 −0
Original line number Original line Diff line number Diff line
@@ -2330,6 +2330,7 @@
  <java-symbol type="bool" name="config_dreamsEnabledOnBattery" />
  <java-symbol type="bool" name="config_dreamsEnabledOnBattery" />
  <java-symbol type="bool" name="config_dreamsActivatedOnDockByDefault" />
  <java-symbol type="bool" name="config_dreamsActivatedOnDockByDefault" />
  <java-symbol type="bool" name="config_dreamsActivatedOnSleepByDefault" />
  <java-symbol type="bool" name="config_dreamsActivatedOnSleepByDefault" />
  <java-symbol type="bool" name="config_dreamsActivatedOnPosturedByDefault" />
  <java-symbol type="integer" name="config_dreamsBatteryLevelMinimumWhenPowered" />
  <java-symbol type="integer" name="config_dreamsBatteryLevelMinimumWhenPowered" />
  <java-symbol type="integer" name="config_dreamsBatteryLevelMinimumWhenNotPowered" />
  <java-symbol type="integer" name="config_dreamsBatteryLevelMinimumWhenNotPowered" />
  <java-symbol type="integer" name="config_dreamsBatteryLevelDrainCutoff" />
  <java-symbol type="integer" name="config_dreamsBatteryLevelDrainCutoff" />
+50 −8
Original line number Original line Diff line number Diff line
@@ -16,6 +16,8 @@


package com.android.settingslib.dream;
package com.android.settingslib.dream;


import static android.service.dreams.Flags.allowDreamWhenPostured;

import android.annotation.IntDef;
import android.annotation.IntDef;
import android.content.ComponentName;
import android.content.ComponentName;
import android.content.Context;
import android.content.Context;
@@ -78,14 +80,21 @@ public class DreamBackend {
    }
    }


    @Retention(RetentionPolicy.SOURCE)
    @Retention(RetentionPolicy.SOURCE)
    @IntDef({WHILE_CHARGING, WHILE_DOCKED, EITHER, NEVER})
    @IntDef({
            WHILE_CHARGING,
            WHILE_DOCKED,
            WHILE_POSTURED,
            WHILE_CHARGING_OR_DOCKED,
            NEVER
    })
    public @interface WhenToDream {
    public @interface WhenToDream {
    }
    }


    public static final int WHILE_CHARGING = 0;
    public static final int WHILE_CHARGING = 0;
    public static final int WHILE_DOCKED = 1;
    public static final int WHILE_DOCKED = 1;
    public static final int EITHER = 2;
    public static final int WHILE_POSTURED = 2;
    public static final int NEVER = 3;
    public static final int WHILE_CHARGING_OR_DOCKED = 3;
    public static final int NEVER = 4;


    /**
    /**
     * The type of dream complications which can be provided by a
     * The type of dream complications which can be provided by a
@@ -134,6 +143,8 @@ public class DreamBackend {
            .DREAM_SETTING_CHANGED__WHEN_TO_DREAM__WHEN_TO_DREAM_WHILE_CHARGING_ONLY;
            .DREAM_SETTING_CHANGED__WHEN_TO_DREAM__WHEN_TO_DREAM_WHILE_CHARGING_ONLY;
    private static final int WHEN_TO_DREAM_DOCKED = FrameworkStatsLog
    private static final int WHEN_TO_DREAM_DOCKED = FrameworkStatsLog
            .DREAM_SETTING_CHANGED__WHEN_TO_DREAM__WHEN_TO_DREAM_WHILE_DOCKED_ONLY;
            .DREAM_SETTING_CHANGED__WHEN_TO_DREAM__WHEN_TO_DREAM_WHILE_DOCKED_ONLY;
    private static final int WHEN_TO_DREAM_POSTURED = FrameworkStatsLog
            .DREAM_SETTING_CHANGED__WHEN_TO_DREAM__WHEN_TO_DREAM_WHILE_POSTURED_ONLY;
    private static final int WHEN_TO_DREAM_CHARGING_OR_DOCKED = FrameworkStatsLog
    private static final int WHEN_TO_DREAM_CHARGING_OR_DOCKED = FrameworkStatsLog
            .DREAM_SETTING_CHANGED__WHEN_TO_DREAM__WHEN_TO_DREAM_EITHER_CHARGING_OR_DOCKED;
            .DREAM_SETTING_CHANGED__WHEN_TO_DREAM__WHEN_TO_DREAM_EITHER_CHARGING_OR_DOCKED;


@@ -143,6 +154,7 @@ public class DreamBackend {
    private final boolean mDreamsEnabledByDefault;
    private final boolean mDreamsEnabledByDefault;
    private final boolean mDreamsActivatedOnSleepByDefault;
    private final boolean mDreamsActivatedOnSleepByDefault;
    private final boolean mDreamsActivatedOnDockByDefault;
    private final boolean mDreamsActivatedOnDockByDefault;
    private final boolean mDreamsActivatedOnPosturedByDefault;
    private final Set<ComponentName> mDisabledDreams;
    private final Set<ComponentName> mDisabledDreams;
    private final List<String> mLoggableDreamPrefixes;
    private final List<String> mLoggableDreamPrefixes;
    private Set<Integer> mSupportedComplications;
    private Set<Integer> mSupportedComplications;
@@ -168,6 +180,8 @@ public class DreamBackend {
                com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault);
                com.android.internal.R.bool.config_dreamsActivatedOnSleepByDefault);
        mDreamsActivatedOnDockByDefault = resources.getBoolean(
        mDreamsActivatedOnDockByDefault = resources.getBoolean(
                com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault);
                com.android.internal.R.bool.config_dreamsActivatedOnDockByDefault);
        mDreamsActivatedOnPosturedByDefault = resources.getBoolean(
                com.android.internal.R.bool.config_dreamsActivatedOnPosturedByDefault);
        mDisabledDreams = Arrays.stream(resources.getStringArray(
        mDisabledDreams = Arrays.stream(resources.getStringArray(
                        com.android.internal.R.array.config_disabledDreamComponents))
                        com.android.internal.R.array.config_disabledDreamComponents))
                .map(ComponentName::unflattenFromString)
                .map(ComponentName::unflattenFromString)
@@ -280,8 +294,9 @@ public class DreamBackend {


    @WhenToDream
    @WhenToDream
    public int getWhenToDreamSetting() {
    public int getWhenToDreamSetting() {
        return isActivatedOnDock() && isActivatedOnSleep() ? EITHER
        return isActivatedOnDock() && isActivatedOnSleep() ? WHILE_CHARGING_OR_DOCKED
                : isActivatedOnDock() ? WHILE_DOCKED
                : isActivatedOnDock() ? WHILE_DOCKED
                        : isActivatedOnPostured() ? WHILE_POSTURED
                                : isActivatedOnSleep() ? WHILE_CHARGING
                                : isActivatedOnSleep() ? WHILE_CHARGING
                                        : NEVER;
                                        : NEVER;
    }
    }
@@ -293,16 +308,25 @@ public class DreamBackend {
            case WHILE_CHARGING:
            case WHILE_CHARGING:
                setActivatedOnDock(false);
                setActivatedOnDock(false);
                setActivatedOnSleep(true);
                setActivatedOnSleep(true);
                setActivatedOnPostured(false);
                break;
                break;


            case WHILE_DOCKED:
            case WHILE_DOCKED:
                setActivatedOnDock(true);
                setActivatedOnDock(true);
                setActivatedOnSleep(false);
                setActivatedOnSleep(false);
                setActivatedOnPostured(false);
                break;
                break;


            case EITHER:
            case WHILE_CHARGING_OR_DOCKED:
                setActivatedOnDock(true);
                setActivatedOnDock(true);
                setActivatedOnSleep(true);
                setActivatedOnSleep(true);
                setActivatedOnPostured(false);
                break;

            case WHILE_POSTURED:
                setActivatedOnPostured(true);
                setActivatedOnSleep(false);
                setActivatedOnDock(false);
                break;
                break;


            case NEVER:
            case NEVER:
@@ -407,6 +431,22 @@ public class DreamBackend {
        setBoolean(Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, value);
        setBoolean(Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP, value);
    }
    }


    public boolean isActivatedOnPostured() {
        return allowDreamWhenPostured()
                && getBoolean(Settings.Secure.SCREENSAVER_ACTIVATE_ON_POSTURED,
                        mDreamsActivatedOnPosturedByDefault);
    }

    /**
     * Sets whether dreams should be activated when the device is postured (stationary and upright)
     */
    public void setActivatedOnPostured(boolean value) {
        if (allowDreamWhenPostured()) {
            logd("setActivatedOnPostured(%s)", value);
            setBoolean(Settings.Secure.SCREENSAVER_ACTIVATE_ON_POSTURED, value);
        }
    }

    private boolean getBoolean(String key, boolean def) {
    private boolean getBoolean(String key, boolean def) {
        return Settings.Secure.getInt(mContext.getContentResolver(), key, def ? 1 : 0) == 1;
        return Settings.Secure.getInt(mContext.getContentResolver(), key, def ? 1 : 0) == 1;
    }
    }
@@ -548,7 +588,9 @@ public class DreamBackend {
                return WHEN_TO_DREAM_CHARGING;
                return WHEN_TO_DREAM_CHARGING;
            case WHILE_DOCKED:
            case WHILE_DOCKED:
                return WHEN_TO_DREAM_DOCKED;
                return WHEN_TO_DREAM_DOCKED;
            case EITHER:
            case WHILE_POSTURED:
                return WHEN_TO_DREAM_POSTURED;
            case WHILE_CHARGING_OR_DOCKED:
                return WHEN_TO_DREAM_CHARGING_OR_DOCKED;
                return WHEN_TO_DREAM_CHARGING_OR_DOCKED;
            case NEVER:
            case NEVER:
            default:
            default:
Loading