Loading core/java/android/provider/Settings.java +10 −0 Original line number Diff line number Diff line Loading @@ -7255,6 +7255,14 @@ public final class Settings { private static final Validator DOZE_REACH_GESTURE_VALIDATOR = BOOLEAN_VALIDATOR; /** * Gesture that wakes up the display, showing the ambient version of the status bar. * @hide */ public static final String DOZE_WAKE_SCREEN_GESTURE = "doze_wake_screen_gesture"; private static final Validator DOZE_WAKE_SCREEN_GESTURE_VALIDATOR = BOOLEAN_VALIDATOR; /** * The current night mode that has been selected by the user. Owned * and controlled by UiModeManagerService. Constants are as per Loading Loading @@ -8158,6 +8166,7 @@ public final class Settings { DOZE_PICK_UP_GESTURE, DOZE_DOUBLE_TAP_GESTURE, DOZE_REACH_GESTURE, DOZE_WAKE_SCREEN_GESTURE, NFC_PAYMENT_DEFAULT_COMPONENT, AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN, FACE_UNLOCK_KEYGUARD_ENABLED, Loading Loading @@ -8302,6 +8311,7 @@ public final class Settings { VALIDATORS.put(DOZE_PICK_UP_GESTURE, DOZE_PICK_UP_GESTURE_VALIDATOR); VALIDATORS.put(DOZE_DOUBLE_TAP_GESTURE, DOZE_DOUBLE_TAP_GESTURE_VALIDATOR); VALIDATORS.put(DOZE_REACH_GESTURE, DOZE_REACH_GESTURE_VALIDATOR); VALIDATORS.put(DOZE_WAKE_SCREEN_GESTURE, DOZE_WAKE_SCREEN_GESTURE_VALIDATOR); VALIDATORS.put(NFC_PAYMENT_DEFAULT_COMPONENT, NFC_PAYMENT_DEFAULT_COMPONENT_VALIDATOR); VALIDATORS.put(AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN, AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN_VALIDATOR); Loading core/java/com/android/internal/hardware/AmbientDisplayConfiguration.java +13 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,15 @@ public class AmbientDisplayConfiguration { return !TextUtils.isEmpty(reachSensorType()); } public boolean wakeScreenGestureEnabled(int user) { return boolSettingDefaultOn(Settings.Secure.DOZE_WAKE_SCREEN_GESTURE, user) && wakeScreenGestureAvailable(); } public boolean wakeScreenGestureAvailable() { return !TextUtils.isEmpty(wakeScreenSensorType()); } public String doubleTapSensorType() { return mContext.getResources().getString(R.string.config_dozeDoubleTapSensorType); } Loading @@ -87,6 +96,10 @@ public class AmbientDisplayConfiguration { return mContext.getResources().getString(R.string.config_dozeReachSensorType); } public String wakeScreenSensorType() { return mContext.getResources().getString(R.string.config_dozeWakeScreenSensorType); } public boolean pulseOnLongPressEnabled(int user) { return pulseOnLongPressAvailable() && boolSettingDefaultOff( Settings.Secure.DOZE_PULSE_ON_LONG_PRESS, user); Loading core/res/res/values/config.xml +3 −0 Original line number Diff line number Diff line Loading @@ -2116,6 +2116,9 @@ <!-- Type of the reach sensor. Empty if reach is not supported. --> <string name="config_dozeReachSensorType" translatable="false"></string> <!-- Type of the wake up sensor. Empty if not supported. --> <string name="config_dozeWakeScreenSensorType" translatable="false"></string> <!-- Control whether the always on display mode is available. This should only be enabled on devices where the display has been tuned to be power efficient in DOZE and/or DOZE_SUSPEND states. --> Loading core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -3462,4 +3462,5 @@ <java-symbol type="integer" name="db_wal_truncate_size" /> <java-symbol type="integer" name="config_wakeUpDelayDoze" /> <java-symbol type="string" name="config_dozeWakeScreenSensorType" /> </resources> packages/SystemUI/src/com/android/systemui/doze/DozeLog.java +14 −12 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ public class DozeLog { private static final int SIZE = Build.IS_DEBUGGABLE ? 400 : 50; static final SimpleDateFormat FORMAT = new SimpleDateFormat("MM-dd HH:mm:ss.SSS"); private static final int PULSE_REASONS = 7; private static final int REASONS = 8; public static final int PULSE_REASON_NONE = -1; public static final int PULSE_REASON_INTENT = 0; Loading @@ -45,6 +45,7 @@ public class DozeLog { public static final int PULSE_REASON_SENSOR_DOUBLE_TAP = 4; public static final int PULSE_REASON_SENSOR_LONG_PRESS = 5; public static final int PULSE_REASON_SENSOR_REACH = 6; public static final int REASON_SENSOR_WAKE_UP = 7; private static boolean sRegisterKeyguardCallback = true; Loading Loading @@ -74,7 +75,7 @@ public class DozeLog { public static void tracePulseStart(int reason) { if (!ENABLED) return; sPulsing = true; log("pulseStart reason=" + pulseReasonToString(reason)); log("pulseStart reason=" + reasonToString(reason)); } public static void tracePulseFinish() { Loading Loading @@ -102,8 +103,8 @@ public class DozeLog { sScreenOnPulsingStats = new SummaryStats(); sScreenOnNotPulsingStats = new SummaryStats(); sEmergencyCallStats = new SummaryStats(); sProxStats = new SummaryStats[PULSE_REASONS][2]; for (int i = 0; i < PULSE_REASONS; i++) { sProxStats = new SummaryStats[REASONS][2]; for (int i = 0; i < REASONS; i++) { sProxStats[i][0] = new SummaryStats(); sProxStats[i][1] = new SummaryStats(); } Loading Loading @@ -176,15 +177,15 @@ public class DozeLog { } public static void traceProximityResult(Context context, boolean near, long millis, int pulseReason) { int reason) { if (!ENABLED) return; init(context); log("proximityResult reason=" + pulseReasonToString(pulseReason) + " near=" + near log("proximityResult reason=" + reasonToString(reason) + " near=" + near + " millis=" + millis); sProxStats[pulseReason][near ? 0 : 1].append(); sProxStats[reason][near ? 0 : 1].append(); } public static String pulseReasonToString(int pulseReason) { public static String reasonToString(int pulseReason) { switch (pulseReason) { case PULSE_REASON_INTENT: return "intent"; case PULSE_REASON_NOTIFICATION: return "notification"; Loading @@ -193,6 +194,7 @@ public class DozeLog { case PULSE_REASON_SENSOR_DOUBLE_TAP: return "doubletap"; case PULSE_REASON_SENSOR_LONG_PRESS: return "longpress"; case PULSE_REASON_SENSOR_REACH: return "reach"; case REASON_SENSOR_WAKE_UP: return "wakeup"; default: throw new IllegalArgumentException("bad reason: " + pulseReason); } } Loading @@ -218,8 +220,8 @@ public class DozeLog { sScreenOnPulsingStats.dump(pw, "Screen on (pulsing)"); sScreenOnNotPulsingStats.dump(pw, "Screen on (not pulsing)"); sEmergencyCallStats.dump(pw, "Emergency call"); for (int i = 0; i < PULSE_REASONS; i++) { final String reason = pulseReasonToString(i); for (int i = 0; i < REASONS; i++) { final String reason = reasonToString(i); sProxStats[i][0].dump(pw, "Proximity near (" + reason + ")"); sProxStats[i][1].dump(pw, "Proximity far (" + reason + ")"); } Loading Loading @@ -262,10 +264,10 @@ public class DozeLog { } } public static void traceSensor(Context context, int pulseReason) { public static void traceSensor(Context context, int reason) { if (!ENABLED) return; init(context); log("sensor type=" + pulseReasonToString(pulseReason)); log("sensor type=" + reasonToString(reason)); } private static class SummaryStats { Loading Loading
core/java/android/provider/Settings.java +10 −0 Original line number Diff line number Diff line Loading @@ -7255,6 +7255,14 @@ public final class Settings { private static final Validator DOZE_REACH_GESTURE_VALIDATOR = BOOLEAN_VALIDATOR; /** * Gesture that wakes up the display, showing the ambient version of the status bar. * @hide */ public static final String DOZE_WAKE_SCREEN_GESTURE = "doze_wake_screen_gesture"; private static final Validator DOZE_WAKE_SCREEN_GESTURE_VALIDATOR = BOOLEAN_VALIDATOR; /** * The current night mode that has been selected by the user. Owned * and controlled by UiModeManagerService. Constants are as per Loading Loading @@ -8158,6 +8166,7 @@ public final class Settings { DOZE_PICK_UP_GESTURE, DOZE_DOUBLE_TAP_GESTURE, DOZE_REACH_GESTURE, DOZE_WAKE_SCREEN_GESTURE, NFC_PAYMENT_DEFAULT_COMPONENT, AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN, FACE_UNLOCK_KEYGUARD_ENABLED, Loading Loading @@ -8302,6 +8311,7 @@ public final class Settings { VALIDATORS.put(DOZE_PICK_UP_GESTURE, DOZE_PICK_UP_GESTURE_VALIDATOR); VALIDATORS.put(DOZE_DOUBLE_TAP_GESTURE, DOZE_DOUBLE_TAP_GESTURE_VALIDATOR); VALIDATORS.put(DOZE_REACH_GESTURE, DOZE_REACH_GESTURE_VALIDATOR); VALIDATORS.put(DOZE_WAKE_SCREEN_GESTURE, DOZE_WAKE_SCREEN_GESTURE_VALIDATOR); VALIDATORS.put(NFC_PAYMENT_DEFAULT_COMPONENT, NFC_PAYMENT_DEFAULT_COMPONENT_VALIDATOR); VALIDATORS.put(AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN, AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN_VALIDATOR); Loading
core/java/com/android/internal/hardware/AmbientDisplayConfiguration.java +13 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,15 @@ public class AmbientDisplayConfiguration { return !TextUtils.isEmpty(reachSensorType()); } public boolean wakeScreenGestureEnabled(int user) { return boolSettingDefaultOn(Settings.Secure.DOZE_WAKE_SCREEN_GESTURE, user) && wakeScreenGestureAvailable(); } public boolean wakeScreenGestureAvailable() { return !TextUtils.isEmpty(wakeScreenSensorType()); } public String doubleTapSensorType() { return mContext.getResources().getString(R.string.config_dozeDoubleTapSensorType); } Loading @@ -87,6 +96,10 @@ public class AmbientDisplayConfiguration { return mContext.getResources().getString(R.string.config_dozeReachSensorType); } public String wakeScreenSensorType() { return mContext.getResources().getString(R.string.config_dozeWakeScreenSensorType); } public boolean pulseOnLongPressEnabled(int user) { return pulseOnLongPressAvailable() && boolSettingDefaultOff( Settings.Secure.DOZE_PULSE_ON_LONG_PRESS, user); Loading
core/res/res/values/config.xml +3 −0 Original line number Diff line number Diff line Loading @@ -2116,6 +2116,9 @@ <!-- Type of the reach sensor. Empty if reach is not supported. --> <string name="config_dozeReachSensorType" translatable="false"></string> <!-- Type of the wake up sensor. Empty if not supported. --> <string name="config_dozeWakeScreenSensorType" translatable="false"></string> <!-- Control whether the always on display mode is available. This should only be enabled on devices where the display has been tuned to be power efficient in DOZE and/or DOZE_SUSPEND states. --> Loading
core/res/res/values/symbols.xml +1 −0 Original line number Diff line number Diff line Loading @@ -3462,4 +3462,5 @@ <java-symbol type="integer" name="db_wal_truncate_size" /> <java-symbol type="integer" name="config_wakeUpDelayDoze" /> <java-symbol type="string" name="config_dozeWakeScreenSensorType" /> </resources>
packages/SystemUI/src/com/android/systemui/doze/DozeLog.java +14 −12 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ public class DozeLog { private static final int SIZE = Build.IS_DEBUGGABLE ? 400 : 50; static final SimpleDateFormat FORMAT = new SimpleDateFormat("MM-dd HH:mm:ss.SSS"); private static final int PULSE_REASONS = 7; private static final int REASONS = 8; public static final int PULSE_REASON_NONE = -1; public static final int PULSE_REASON_INTENT = 0; Loading @@ -45,6 +45,7 @@ public class DozeLog { public static final int PULSE_REASON_SENSOR_DOUBLE_TAP = 4; public static final int PULSE_REASON_SENSOR_LONG_PRESS = 5; public static final int PULSE_REASON_SENSOR_REACH = 6; public static final int REASON_SENSOR_WAKE_UP = 7; private static boolean sRegisterKeyguardCallback = true; Loading Loading @@ -74,7 +75,7 @@ public class DozeLog { public static void tracePulseStart(int reason) { if (!ENABLED) return; sPulsing = true; log("pulseStart reason=" + pulseReasonToString(reason)); log("pulseStart reason=" + reasonToString(reason)); } public static void tracePulseFinish() { Loading Loading @@ -102,8 +103,8 @@ public class DozeLog { sScreenOnPulsingStats = new SummaryStats(); sScreenOnNotPulsingStats = new SummaryStats(); sEmergencyCallStats = new SummaryStats(); sProxStats = new SummaryStats[PULSE_REASONS][2]; for (int i = 0; i < PULSE_REASONS; i++) { sProxStats = new SummaryStats[REASONS][2]; for (int i = 0; i < REASONS; i++) { sProxStats[i][0] = new SummaryStats(); sProxStats[i][1] = new SummaryStats(); } Loading Loading @@ -176,15 +177,15 @@ public class DozeLog { } public static void traceProximityResult(Context context, boolean near, long millis, int pulseReason) { int reason) { if (!ENABLED) return; init(context); log("proximityResult reason=" + pulseReasonToString(pulseReason) + " near=" + near log("proximityResult reason=" + reasonToString(reason) + " near=" + near + " millis=" + millis); sProxStats[pulseReason][near ? 0 : 1].append(); sProxStats[reason][near ? 0 : 1].append(); } public static String pulseReasonToString(int pulseReason) { public static String reasonToString(int pulseReason) { switch (pulseReason) { case PULSE_REASON_INTENT: return "intent"; case PULSE_REASON_NOTIFICATION: return "notification"; Loading @@ -193,6 +194,7 @@ public class DozeLog { case PULSE_REASON_SENSOR_DOUBLE_TAP: return "doubletap"; case PULSE_REASON_SENSOR_LONG_PRESS: return "longpress"; case PULSE_REASON_SENSOR_REACH: return "reach"; case REASON_SENSOR_WAKE_UP: return "wakeup"; default: throw new IllegalArgumentException("bad reason: " + pulseReason); } } Loading @@ -218,8 +220,8 @@ public class DozeLog { sScreenOnPulsingStats.dump(pw, "Screen on (pulsing)"); sScreenOnNotPulsingStats.dump(pw, "Screen on (not pulsing)"); sEmergencyCallStats.dump(pw, "Emergency call"); for (int i = 0; i < PULSE_REASONS; i++) { final String reason = pulseReasonToString(i); for (int i = 0; i < REASONS; i++) { final String reason = reasonToString(i); sProxStats[i][0].dump(pw, "Proximity near (" + reason + ")"); sProxStats[i][1].dump(pw, "Proximity far (" + reason + ")"); } Loading Loading @@ -262,10 +264,10 @@ public class DozeLog { } } public static void traceSensor(Context context, int pulseReason) { public static void traceSensor(Context context, int reason) { if (!ENABLED) return; init(context); log("sensor type=" + pulseReasonToString(pulseReason)); log("sensor type=" + reasonToString(reason)); } private static class SummaryStats { Loading