Loading core/java/android/os/BatteryStats.java +2 −11 Original line number Diff line number Diff line Loading @@ -956,16 +956,7 @@ public abstract class BatteryStats implements Parcelable { public static final int NUM_WIFI_BATCHED_SCAN_BINS = 5; /** * Note that these must match the constants in android.os.PowerManager. * Also, if the user activity types change, the BatteryStatsImpl.VERSION must * also be bumped. */ static final String[] USER_ACTIVITY_TYPES = { "other", "button", "touch", "accessibility", "attention" }; public static final int NUM_USER_ACTIVITY_TYPES = USER_ACTIVITY_TYPES.length; public static final int NUM_USER_ACTIVITY_TYPES = PowerManager.USER_ACTIVITY_EVENT_MAX + 1; public abstract void noteUserActivityLocked(int type); public abstract boolean hasUserActivity(); Loading Loading @@ -6177,7 +6168,7 @@ public abstract class BatteryStats implements Parcelable { } sb.append(val); sb.append(" "); sb.append(Uid.USER_ACTIVITY_TYPES[i]); sb.append(PowerManager.userActivityEventToString(i)); } } if (hasData) { Loading core/java/android/os/PowerManager.java +38 −0 Original line number Diff line number Diff line Loading @@ -344,6 +344,44 @@ public final class PowerManager { */ public static final int USER_ACTIVITY_EVENT_DEVICE_STATE = 6; /** * @hide */ public static final int USER_ACTIVITY_EVENT_MAX = USER_ACTIVITY_EVENT_DEVICE_STATE; /** * @hide */ @IntDef(prefix = { "USER_ACTIVITY_EVENT_" }, value = { USER_ACTIVITY_EVENT_OTHER, USER_ACTIVITY_EVENT_BUTTON, USER_ACTIVITY_EVENT_TOUCH, USER_ACTIVITY_EVENT_ACCESSIBILITY, USER_ACTIVITY_EVENT_ATTENTION, USER_ACTIVITY_EVENT_FACE_DOWN, USER_ACTIVITY_EVENT_DEVICE_STATE, }) @Retention(RetentionPolicy.SOURCE) public @interface UserActivityEvent{} /** * * Convert the user activity event to a string for debugging purposes. * @hide */ public static String userActivityEventToString(@UserActivityEvent int userActivityEvent) { switch (userActivityEvent) { case USER_ACTIVITY_EVENT_OTHER: return "other"; case USER_ACTIVITY_EVENT_BUTTON: return "button"; case USER_ACTIVITY_EVENT_TOUCH: return "touch"; case USER_ACTIVITY_EVENT_ACCESSIBILITY: return "accessibility"; case USER_ACTIVITY_EVENT_ATTENTION: return "attention"; case USER_ACTIVITY_EVENT_FACE_DOWN: return "faceDown"; case USER_ACTIVITY_EVENT_DEVICE_STATE: return "deviceState"; default: return Integer.toString(userActivityEvent); } } /** * User activity flag: If already dimmed, extend the dim timeout * but do not brighten. This flag is useful for keeping the screen on Loading core/java/com/android/internal/os/BatteryStatsImpl.java +6 −5 Original line number Diff line number Diff line Loading @@ -6144,7 +6144,8 @@ public class BatteryStatsImpl extends BatteryStats { } @GuardedBy("this") public void noteUserActivityLocked(int uid, int event, long elapsedRealtimeMs, long uptimeMs) { public void noteUserActivityLocked(int uid, @PowerManager.UserActivityEvent int event, long elapsedRealtimeMs, long uptimeMs) { if (mOnBatteryInternal) { uid = mapUid(uid); getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs).noteUserActivityLocked(event); Loading Loading @@ -9956,14 +9957,14 @@ public class BatteryStatsImpl extends BatteryStats { } @Override public void noteUserActivityLocked(int type) { public void noteUserActivityLocked(@PowerManager.UserActivityEvent int event) { if (mUserActivityCounters == null) { initUserActivityLocked(); } if (type >= 0 && type < NUM_USER_ACTIVITY_TYPES) { mUserActivityCounters[type].stepAtomic(); if (event >= 0 && event < NUM_USER_ACTIVITY_TYPES) { mUserActivityCounters[event].stepAtomic(); } else { Slog.w(TAG, "Unknown user activity type " + type + " was specified.", Slog.w(TAG, "Unknown user activity event " + event + " was specified.", new Throwable()); } } Loading services/core/java/com/android/server/power/Notifier.java +2 −1 Original line number Diff line number Diff line Loading @@ -571,7 +571,8 @@ public class Notifier { /** * Called when there has been user activity. */ public void onUserActivity(int displayGroupId, int event, int uid) { public void onUserActivity(int displayGroupId, @PowerManager.UserActivityEvent int event, int uid) { if (DEBUG) { Slog.d(TAG, "onUserActivity: event=" + event + ", uid=" + uid); } Loading services/core/java/com/android/server/power/PowerGroup.java +20 −7 Original line number Diff line number Diff line Loading @@ -74,6 +74,8 @@ public class PowerGroup { private long mLastPowerOnTime; private long mLastUserActivityTime; private long mLastUserActivityTimeNoChangeLights; @PowerManager.UserActivityEvent private int mLastUserActivityEvent; /** Timestamp (milliseconds since boot) of the last time the power group was awoken.*/ private long mLastWakeTime; /** Timestamp (milliseconds since boot) of the last time the power group was put to sleep. */ Loading Loading @@ -244,7 +246,7 @@ public class PowerGroup { return true; } boolean dozeLocked(long eventTime, int uid, int reason) { boolean dozeLocked(long eventTime, int uid, @PowerManager.GoToSleepReason int reason) { if (eventTime < getLastWakeTimeLocked() || !isInteractive(mWakefulness)) { return false; } Loading @@ -253,9 +255,14 @@ public class PowerGroup { try { reason = Math.min(PowerManager.GO_TO_SLEEP_REASON_MAX, Math.max(reason, PowerManager.GO_TO_SLEEP_REASON_MIN)); long millisSinceLastUserActivity = eventTime - Math.max( mLastUserActivityTimeNoChangeLights, mLastUserActivityTime); Slog.i(TAG, "Powering off display group due to " + PowerManager.sleepReasonToString(reason) + " (groupId= " + getGroupId() + ", uid= " + uid + ")..."); + PowerManager.sleepReasonToString(reason) + " (groupId= " + getGroupId() + ", uid= " + uid + ", millisSinceLastUserActivity=" + millisSinceLastUserActivity + ", lastUserActivityEvent=" + PowerManager.userActivityEventToString( mLastUserActivityEvent) + ")..."); setSandmanSummonedLocked(/* isSandmanSummoned= */ true); setWakefulnessLocked(WAKEFULNESS_DOZING, eventTime, uid, reason, /* opUid= */ 0, Loading @@ -266,14 +273,16 @@ public class PowerGroup { return true; } boolean sleepLocked(long eventTime, int uid, int reason) { boolean sleepLocked(long eventTime, int uid, @PowerManager.GoToSleepReason int reason) { if (eventTime < mLastWakeTime || getWakefulnessLocked() == WAKEFULNESS_ASLEEP) { return false; } Trace.traceBegin(Trace.TRACE_TAG_POWER, "sleepPowerGroup"); try { Slog.i(TAG, "Sleeping power group (groupId=" + getGroupId() + ", uid=" + uid + ")..."); Slog.i(TAG, "Sleeping power group (groupId=" + getGroupId() + ", uid=" + uid + ", reason=" + PowerManager.sleepReasonToString(reason) + ")..."); setSandmanSummonedLocked(/* isSandmanSummoned= */ true); setWakefulnessLocked(WAKEFULNESS_ASLEEP, eventTime, uid, reason, /* opUid= */0, /* opPackageName= */ null, /* details= */ null); Loading @@ -287,16 +296,20 @@ public class PowerGroup { return mLastUserActivityTime; } void setLastUserActivityTimeLocked(long lastUserActivityTime) { void setLastUserActivityTimeLocked(long lastUserActivityTime, @PowerManager.UserActivityEvent int event) { mLastUserActivityTime = lastUserActivityTime; mLastUserActivityEvent = event; } public long getLastUserActivityTimeNoChangeLightsLocked() { return mLastUserActivityTimeNoChangeLights; } public void setLastUserActivityTimeNoChangeLightsLocked(long time) { public void setLastUserActivityTimeNoChangeLightsLocked(long time, @PowerManager.UserActivityEvent int event) { mLastUserActivityTimeNoChangeLights = time; mLastUserActivityEvent = event; } public int getUserActivitySummaryLocked() { Loading Loading
core/java/android/os/BatteryStats.java +2 −11 Original line number Diff line number Diff line Loading @@ -956,16 +956,7 @@ public abstract class BatteryStats implements Parcelable { public static final int NUM_WIFI_BATCHED_SCAN_BINS = 5; /** * Note that these must match the constants in android.os.PowerManager. * Also, if the user activity types change, the BatteryStatsImpl.VERSION must * also be bumped. */ static final String[] USER_ACTIVITY_TYPES = { "other", "button", "touch", "accessibility", "attention" }; public static final int NUM_USER_ACTIVITY_TYPES = USER_ACTIVITY_TYPES.length; public static final int NUM_USER_ACTIVITY_TYPES = PowerManager.USER_ACTIVITY_EVENT_MAX + 1; public abstract void noteUserActivityLocked(int type); public abstract boolean hasUserActivity(); Loading Loading @@ -6177,7 +6168,7 @@ public abstract class BatteryStats implements Parcelable { } sb.append(val); sb.append(" "); sb.append(Uid.USER_ACTIVITY_TYPES[i]); sb.append(PowerManager.userActivityEventToString(i)); } } if (hasData) { Loading
core/java/android/os/PowerManager.java +38 −0 Original line number Diff line number Diff line Loading @@ -344,6 +344,44 @@ public final class PowerManager { */ public static final int USER_ACTIVITY_EVENT_DEVICE_STATE = 6; /** * @hide */ public static final int USER_ACTIVITY_EVENT_MAX = USER_ACTIVITY_EVENT_DEVICE_STATE; /** * @hide */ @IntDef(prefix = { "USER_ACTIVITY_EVENT_" }, value = { USER_ACTIVITY_EVENT_OTHER, USER_ACTIVITY_EVENT_BUTTON, USER_ACTIVITY_EVENT_TOUCH, USER_ACTIVITY_EVENT_ACCESSIBILITY, USER_ACTIVITY_EVENT_ATTENTION, USER_ACTIVITY_EVENT_FACE_DOWN, USER_ACTIVITY_EVENT_DEVICE_STATE, }) @Retention(RetentionPolicy.SOURCE) public @interface UserActivityEvent{} /** * * Convert the user activity event to a string for debugging purposes. * @hide */ public static String userActivityEventToString(@UserActivityEvent int userActivityEvent) { switch (userActivityEvent) { case USER_ACTIVITY_EVENT_OTHER: return "other"; case USER_ACTIVITY_EVENT_BUTTON: return "button"; case USER_ACTIVITY_EVENT_TOUCH: return "touch"; case USER_ACTIVITY_EVENT_ACCESSIBILITY: return "accessibility"; case USER_ACTIVITY_EVENT_ATTENTION: return "attention"; case USER_ACTIVITY_EVENT_FACE_DOWN: return "faceDown"; case USER_ACTIVITY_EVENT_DEVICE_STATE: return "deviceState"; default: return Integer.toString(userActivityEvent); } } /** * User activity flag: If already dimmed, extend the dim timeout * but do not brighten. This flag is useful for keeping the screen on Loading
core/java/com/android/internal/os/BatteryStatsImpl.java +6 −5 Original line number Diff line number Diff line Loading @@ -6144,7 +6144,8 @@ public class BatteryStatsImpl extends BatteryStats { } @GuardedBy("this") public void noteUserActivityLocked(int uid, int event, long elapsedRealtimeMs, long uptimeMs) { public void noteUserActivityLocked(int uid, @PowerManager.UserActivityEvent int event, long elapsedRealtimeMs, long uptimeMs) { if (mOnBatteryInternal) { uid = mapUid(uid); getUidStatsLocked(uid, elapsedRealtimeMs, uptimeMs).noteUserActivityLocked(event); Loading Loading @@ -9956,14 +9957,14 @@ public class BatteryStatsImpl extends BatteryStats { } @Override public void noteUserActivityLocked(int type) { public void noteUserActivityLocked(@PowerManager.UserActivityEvent int event) { if (mUserActivityCounters == null) { initUserActivityLocked(); } if (type >= 0 && type < NUM_USER_ACTIVITY_TYPES) { mUserActivityCounters[type].stepAtomic(); if (event >= 0 && event < NUM_USER_ACTIVITY_TYPES) { mUserActivityCounters[event].stepAtomic(); } else { Slog.w(TAG, "Unknown user activity type " + type + " was specified.", Slog.w(TAG, "Unknown user activity event " + event + " was specified.", new Throwable()); } } Loading
services/core/java/com/android/server/power/Notifier.java +2 −1 Original line number Diff line number Diff line Loading @@ -571,7 +571,8 @@ public class Notifier { /** * Called when there has been user activity. */ public void onUserActivity(int displayGroupId, int event, int uid) { public void onUserActivity(int displayGroupId, @PowerManager.UserActivityEvent int event, int uid) { if (DEBUG) { Slog.d(TAG, "onUserActivity: event=" + event + ", uid=" + uid); } Loading
services/core/java/com/android/server/power/PowerGroup.java +20 −7 Original line number Diff line number Diff line Loading @@ -74,6 +74,8 @@ public class PowerGroup { private long mLastPowerOnTime; private long mLastUserActivityTime; private long mLastUserActivityTimeNoChangeLights; @PowerManager.UserActivityEvent private int mLastUserActivityEvent; /** Timestamp (milliseconds since boot) of the last time the power group was awoken.*/ private long mLastWakeTime; /** Timestamp (milliseconds since boot) of the last time the power group was put to sleep. */ Loading Loading @@ -244,7 +246,7 @@ public class PowerGroup { return true; } boolean dozeLocked(long eventTime, int uid, int reason) { boolean dozeLocked(long eventTime, int uid, @PowerManager.GoToSleepReason int reason) { if (eventTime < getLastWakeTimeLocked() || !isInteractive(mWakefulness)) { return false; } Loading @@ -253,9 +255,14 @@ public class PowerGroup { try { reason = Math.min(PowerManager.GO_TO_SLEEP_REASON_MAX, Math.max(reason, PowerManager.GO_TO_SLEEP_REASON_MIN)); long millisSinceLastUserActivity = eventTime - Math.max( mLastUserActivityTimeNoChangeLights, mLastUserActivityTime); Slog.i(TAG, "Powering off display group due to " + PowerManager.sleepReasonToString(reason) + " (groupId= " + getGroupId() + ", uid= " + uid + ")..."); + PowerManager.sleepReasonToString(reason) + " (groupId= " + getGroupId() + ", uid= " + uid + ", millisSinceLastUserActivity=" + millisSinceLastUserActivity + ", lastUserActivityEvent=" + PowerManager.userActivityEventToString( mLastUserActivityEvent) + ")..."); setSandmanSummonedLocked(/* isSandmanSummoned= */ true); setWakefulnessLocked(WAKEFULNESS_DOZING, eventTime, uid, reason, /* opUid= */ 0, Loading @@ -266,14 +273,16 @@ public class PowerGroup { return true; } boolean sleepLocked(long eventTime, int uid, int reason) { boolean sleepLocked(long eventTime, int uid, @PowerManager.GoToSleepReason int reason) { if (eventTime < mLastWakeTime || getWakefulnessLocked() == WAKEFULNESS_ASLEEP) { return false; } Trace.traceBegin(Trace.TRACE_TAG_POWER, "sleepPowerGroup"); try { Slog.i(TAG, "Sleeping power group (groupId=" + getGroupId() + ", uid=" + uid + ")..."); Slog.i(TAG, "Sleeping power group (groupId=" + getGroupId() + ", uid=" + uid + ", reason=" + PowerManager.sleepReasonToString(reason) + ")..."); setSandmanSummonedLocked(/* isSandmanSummoned= */ true); setWakefulnessLocked(WAKEFULNESS_ASLEEP, eventTime, uid, reason, /* opUid= */0, /* opPackageName= */ null, /* details= */ null); Loading @@ -287,16 +296,20 @@ public class PowerGroup { return mLastUserActivityTime; } void setLastUserActivityTimeLocked(long lastUserActivityTime) { void setLastUserActivityTimeLocked(long lastUserActivityTime, @PowerManager.UserActivityEvent int event) { mLastUserActivityTime = lastUserActivityTime; mLastUserActivityEvent = event; } public long getLastUserActivityTimeNoChangeLightsLocked() { return mLastUserActivityTimeNoChangeLights; } public void setLastUserActivityTimeNoChangeLightsLocked(long time) { public void setLastUserActivityTimeNoChangeLightsLocked(long time, @PowerManager.UserActivityEvent int event) { mLastUserActivityTimeNoChangeLights = time; mLastUserActivityEvent = event; } public int getUserActivitySummaryLocked() { Loading