Loading packages/SystemUI/src/com/android/systemui/doze/AlwaysOnDisplayPolicy.java +72 −28 Original line number Diff line number Diff line Loading @@ -16,8 +16,13 @@ package com.android.systemui.doze; import android.content.ContentResolver; import android.content.Context; import android.content.res.Resources; import android.database.ContentObserver; import android.net.Uri; import android.os.Handler; import android.os.UserHandle; import android.provider.Settings; import android.text.format.DateUtils; import android.util.KeyValueListParser; Loading @@ -34,6 +39,10 @@ import java.util.Arrays; public class AlwaysOnDisplayPolicy { public static final String TAG = "AlwaysOnDisplayPolicy"; private static final long DEFAULT_PROX_SCREEN_OFF_DELAY_MS = 10 * DateUtils.SECOND_IN_MILLIS; private static final long DEFAULT_PROX_COOLDOWN_TRIGGER_MS = 2 * DateUtils.SECOND_IN_MILLIS; private static final long DEFAULT_PROX_COOLDOWN_PERIOD_MS = 5 * DateUtils.SECOND_IN_MILLIS; static final String KEY_SCREEN_BRIGHTNESS_ARRAY = "screen_brightness_array"; static final String KEY_DIMMING_SCRIM_ARRAY = "dimming_scrim_array"; static final String KEY_PROX_SCREEN_OFF_DELAY_MS = "prox_screen_off_delay"; Loading @@ -46,7 +55,7 @@ public class AlwaysOnDisplayPolicy { * @see Settings.Global#ALWAYS_ON_DISPLAY_CONSTANTS * @see #KEY_SCREEN_BRIGHTNESS_ARRAY */ public final int[] screenBrightnessArray; public int[] screenBrightnessArray; /** * Integer array to map ambient brightness type to dimming scrim. Loading @@ -54,7 +63,7 @@ public class AlwaysOnDisplayPolicy { * @see Settings.Global#ALWAYS_ON_DISPLAY_CONSTANTS * @see #KEY_DIMMING_SCRIM_ARRAY */ public final int[] dimmingScrimArray; public int[] dimmingScrimArray; /** * Delay time(ms) from covering the prox to turning off the screen. Loading @@ -62,7 +71,7 @@ public class AlwaysOnDisplayPolicy { * @see Settings.Global#ALWAYS_ON_DISPLAY_CONSTANTS * @see #KEY_PROX_SCREEN_OFF_DELAY_MS */ public final long proxScreenOffDelayMs; public long proxScreenOffDelayMs; /** * The threshold time(ms) to trigger the cooldown timer, which will Loading @@ -71,7 +80,7 @@ public class AlwaysOnDisplayPolicy { * @see Settings.Global#ALWAYS_ON_DISPLAY_CONSTANTS * @see #KEY_PROX_COOLDOWN_TRIGGER_MS */ public final long proxCooldownTriggerMs; public long proxCooldownTriggerMs; /** * The period(ms) to turning off the prox sensor if Loading @@ -80,15 +89,57 @@ public class AlwaysOnDisplayPolicy { * @see Settings.Global#ALWAYS_ON_DISPLAY_CONSTANTS * @see #KEY_PROX_COOLDOWN_PERIOD_MS */ public final long proxCooldownPeriodMs; public long proxCooldownPeriodMs; private final KeyValueListParser mParser; private final Context mContext; private SettingsObserver mSettingsObserver; public AlwaysOnDisplayPolicy(Context context) { final Resources resources = context.getResources(); mContext = context; mParser = new KeyValueListParser(','); mSettingsObserver = new SettingsObserver(context.getMainThreadHandler()); mSettingsObserver.observe(); } private int[] parseIntArray(final String key, final int[] defaultArray) { final String value = mParser.getString(key, null); if (value != null) { try { return Arrays.stream(value.split(":")).map(String::trim).mapToInt( Integer::parseInt).toArray(); } catch (NumberFormatException e) { return defaultArray; } } else { return defaultArray; } } private final class SettingsObserver extends ContentObserver { private final Uri ALWAYS_ON_DISPLAY_CONSTANTS_URI = Settings.Global.getUriFor(Settings.Global.ALWAYS_ON_DISPLAY_CONSTANTS); final String value = Settings.Global.getString(context.getContentResolver(), SettingsObserver(Handler handler) { super(handler); } void observe() { ContentResolver resolver = mContext.getContentResolver(); resolver.registerContentObserver(ALWAYS_ON_DISPLAY_CONSTANTS_URI, false, this, UserHandle.USER_ALL); update(null); } @Override public void onChange(boolean selfChange, Uri uri) { update(uri); } public void update(Uri uri) { if (uri == null || ALWAYS_ON_DISPLAY_CONSTANTS_URI.equals(uri)) { final Resources resources = mContext.getResources(); final String value = Settings.Global.getString(mContext.getContentResolver(), Settings.Global.ALWAYS_ON_DISPLAY_CONSTANTS); try { Loading @@ -98,25 +149,18 @@ public class AlwaysOnDisplayPolicy { } proxScreenOffDelayMs = mParser.getLong(KEY_PROX_SCREEN_OFF_DELAY_MS, 10 * DateUtils.SECOND_IN_MILLIS); DEFAULT_PROX_SCREEN_OFF_DELAY_MS); proxCooldownTriggerMs = mParser.getLong(KEY_PROX_COOLDOWN_TRIGGER_MS, 2 * DateUtils.SECOND_IN_MILLIS); DEFAULT_PROX_COOLDOWN_TRIGGER_MS); proxCooldownPeriodMs = mParser.getLong(KEY_PROX_COOLDOWN_PERIOD_MS, 5 * DateUtils.SECOND_IN_MILLIS); DEFAULT_PROX_COOLDOWN_PERIOD_MS); screenBrightnessArray = parseIntArray(KEY_SCREEN_BRIGHTNESS_ARRAY, resources.getIntArray(R.array.config_doze_brightness_sensor_to_brightness)); resources.getIntArray( R.array.config_doze_brightness_sensor_to_brightness)); dimmingScrimArray = parseIntArray(KEY_DIMMING_SCRIM_ARRAY, resources.getIntArray(R.array.config_doze_brightness_sensor_to_scrim_opacity)); resources.getIntArray( R.array.config_doze_brightness_sensor_to_scrim_opacity)); } private int[] parseIntArray(final String key, final int[] defaultArray) { final String value = mParser.getString(key, null); if (value != null) { return Arrays.stream(value.split(":")).map(String::trim).mapToInt( Integer::parseInt).toArray(); } else { return defaultArray; } } } packages/SystemUI/src/com/android/systemui/doze/DozePauser.java +4 −3 Original line number Diff line number Diff line Loading @@ -28,20 +28,21 @@ public class DozePauser implements DozeMachine.Part { public static final String TAG = DozePauser.class.getSimpleName(); private final AlarmTimeout mPauseTimeout; private final DozeMachine mMachine; private final long mTimeoutMs; private final AlwaysOnDisplayPolicy mPolicy; public DozePauser(Handler handler, DozeMachine machine, AlarmManager alarmManager, AlwaysOnDisplayPolicy policy) { mMachine = machine; mPauseTimeout = new AlarmTimeout(alarmManager, this::onTimeout, TAG, handler); mTimeoutMs = policy.proxScreenOffDelayMs; mPolicy = policy; } @Override public void transitionTo(DozeMachine.State oldState, DozeMachine.State newState) { switch (newState) { case DOZE_AOD_PAUSING: mPauseTimeout.schedule(mTimeoutMs, AlarmTimeout.MODE_IGNORE_IF_SCHEDULED); mPauseTimeout.schedule(mPolicy.proxScreenOffDelayMs, AlarmTimeout.MODE_IGNORE_IF_SCHEDULED); break; default: mPauseTimeout.cancel(); Loading Loading
packages/SystemUI/src/com/android/systemui/doze/AlwaysOnDisplayPolicy.java +72 −28 Original line number Diff line number Diff line Loading @@ -16,8 +16,13 @@ package com.android.systemui.doze; import android.content.ContentResolver; import android.content.Context; import android.content.res.Resources; import android.database.ContentObserver; import android.net.Uri; import android.os.Handler; import android.os.UserHandle; import android.provider.Settings; import android.text.format.DateUtils; import android.util.KeyValueListParser; Loading @@ -34,6 +39,10 @@ import java.util.Arrays; public class AlwaysOnDisplayPolicy { public static final String TAG = "AlwaysOnDisplayPolicy"; private static final long DEFAULT_PROX_SCREEN_OFF_DELAY_MS = 10 * DateUtils.SECOND_IN_MILLIS; private static final long DEFAULT_PROX_COOLDOWN_TRIGGER_MS = 2 * DateUtils.SECOND_IN_MILLIS; private static final long DEFAULT_PROX_COOLDOWN_PERIOD_MS = 5 * DateUtils.SECOND_IN_MILLIS; static final String KEY_SCREEN_BRIGHTNESS_ARRAY = "screen_brightness_array"; static final String KEY_DIMMING_SCRIM_ARRAY = "dimming_scrim_array"; static final String KEY_PROX_SCREEN_OFF_DELAY_MS = "prox_screen_off_delay"; Loading @@ -46,7 +55,7 @@ public class AlwaysOnDisplayPolicy { * @see Settings.Global#ALWAYS_ON_DISPLAY_CONSTANTS * @see #KEY_SCREEN_BRIGHTNESS_ARRAY */ public final int[] screenBrightnessArray; public int[] screenBrightnessArray; /** * Integer array to map ambient brightness type to dimming scrim. Loading @@ -54,7 +63,7 @@ public class AlwaysOnDisplayPolicy { * @see Settings.Global#ALWAYS_ON_DISPLAY_CONSTANTS * @see #KEY_DIMMING_SCRIM_ARRAY */ public final int[] dimmingScrimArray; public int[] dimmingScrimArray; /** * Delay time(ms) from covering the prox to turning off the screen. Loading @@ -62,7 +71,7 @@ public class AlwaysOnDisplayPolicy { * @see Settings.Global#ALWAYS_ON_DISPLAY_CONSTANTS * @see #KEY_PROX_SCREEN_OFF_DELAY_MS */ public final long proxScreenOffDelayMs; public long proxScreenOffDelayMs; /** * The threshold time(ms) to trigger the cooldown timer, which will Loading @@ -71,7 +80,7 @@ public class AlwaysOnDisplayPolicy { * @see Settings.Global#ALWAYS_ON_DISPLAY_CONSTANTS * @see #KEY_PROX_COOLDOWN_TRIGGER_MS */ public final long proxCooldownTriggerMs; public long proxCooldownTriggerMs; /** * The period(ms) to turning off the prox sensor if Loading @@ -80,15 +89,57 @@ public class AlwaysOnDisplayPolicy { * @see Settings.Global#ALWAYS_ON_DISPLAY_CONSTANTS * @see #KEY_PROX_COOLDOWN_PERIOD_MS */ public final long proxCooldownPeriodMs; public long proxCooldownPeriodMs; private final KeyValueListParser mParser; private final Context mContext; private SettingsObserver mSettingsObserver; public AlwaysOnDisplayPolicy(Context context) { final Resources resources = context.getResources(); mContext = context; mParser = new KeyValueListParser(','); mSettingsObserver = new SettingsObserver(context.getMainThreadHandler()); mSettingsObserver.observe(); } private int[] parseIntArray(final String key, final int[] defaultArray) { final String value = mParser.getString(key, null); if (value != null) { try { return Arrays.stream(value.split(":")).map(String::trim).mapToInt( Integer::parseInt).toArray(); } catch (NumberFormatException e) { return defaultArray; } } else { return defaultArray; } } private final class SettingsObserver extends ContentObserver { private final Uri ALWAYS_ON_DISPLAY_CONSTANTS_URI = Settings.Global.getUriFor(Settings.Global.ALWAYS_ON_DISPLAY_CONSTANTS); final String value = Settings.Global.getString(context.getContentResolver(), SettingsObserver(Handler handler) { super(handler); } void observe() { ContentResolver resolver = mContext.getContentResolver(); resolver.registerContentObserver(ALWAYS_ON_DISPLAY_CONSTANTS_URI, false, this, UserHandle.USER_ALL); update(null); } @Override public void onChange(boolean selfChange, Uri uri) { update(uri); } public void update(Uri uri) { if (uri == null || ALWAYS_ON_DISPLAY_CONSTANTS_URI.equals(uri)) { final Resources resources = mContext.getResources(); final String value = Settings.Global.getString(mContext.getContentResolver(), Settings.Global.ALWAYS_ON_DISPLAY_CONSTANTS); try { Loading @@ -98,25 +149,18 @@ public class AlwaysOnDisplayPolicy { } proxScreenOffDelayMs = mParser.getLong(KEY_PROX_SCREEN_OFF_DELAY_MS, 10 * DateUtils.SECOND_IN_MILLIS); DEFAULT_PROX_SCREEN_OFF_DELAY_MS); proxCooldownTriggerMs = mParser.getLong(KEY_PROX_COOLDOWN_TRIGGER_MS, 2 * DateUtils.SECOND_IN_MILLIS); DEFAULT_PROX_COOLDOWN_TRIGGER_MS); proxCooldownPeriodMs = mParser.getLong(KEY_PROX_COOLDOWN_PERIOD_MS, 5 * DateUtils.SECOND_IN_MILLIS); DEFAULT_PROX_COOLDOWN_PERIOD_MS); screenBrightnessArray = parseIntArray(KEY_SCREEN_BRIGHTNESS_ARRAY, resources.getIntArray(R.array.config_doze_brightness_sensor_to_brightness)); resources.getIntArray( R.array.config_doze_brightness_sensor_to_brightness)); dimmingScrimArray = parseIntArray(KEY_DIMMING_SCRIM_ARRAY, resources.getIntArray(R.array.config_doze_brightness_sensor_to_scrim_opacity)); resources.getIntArray( R.array.config_doze_brightness_sensor_to_scrim_opacity)); } private int[] parseIntArray(final String key, final int[] defaultArray) { final String value = mParser.getString(key, null); if (value != null) { return Arrays.stream(value.split(":")).map(String::trim).mapToInt( Integer::parseInt).toArray(); } else { return defaultArray; } } }
packages/SystemUI/src/com/android/systemui/doze/DozePauser.java +4 −3 Original line number Diff line number Diff line Loading @@ -28,20 +28,21 @@ public class DozePauser implements DozeMachine.Part { public static final String TAG = DozePauser.class.getSimpleName(); private final AlarmTimeout mPauseTimeout; private final DozeMachine mMachine; private final long mTimeoutMs; private final AlwaysOnDisplayPolicy mPolicy; public DozePauser(Handler handler, DozeMachine machine, AlarmManager alarmManager, AlwaysOnDisplayPolicy policy) { mMachine = machine; mPauseTimeout = new AlarmTimeout(alarmManager, this::onTimeout, TAG, handler); mTimeoutMs = policy.proxScreenOffDelayMs; mPolicy = policy; } @Override public void transitionTo(DozeMachine.State oldState, DozeMachine.State newState) { switch (newState) { case DOZE_AOD_PAUSING: mPauseTimeout.schedule(mTimeoutMs, AlarmTimeout.MODE_IGNORE_IF_SCHEDULED); mPauseTimeout.schedule(mPolicy.proxScreenOffDelayMs, AlarmTimeout.MODE_IGNORE_IF_SCHEDULED); break; default: mPauseTimeout.cancel(); Loading