Loading core/java/android/os/IPowerManager.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ interface IPowerManager @UnsupportedAppUsage void releaseWakeLock(IBinder lock, int flags); void updateWakeLockUids(IBinder lock, in int[] uids); oneway void powerHint(int hintId, int data); oneway void setPowerBoost(int boost, int durationMs); oneway void setPowerMode(int mode, boolean enabled); Loading core/java/android/os/PowerManagerInternal.java +6 −0 Original line number Diff line number Diff line Loading @@ -195,6 +195,12 @@ public abstract class PowerManagerInternal { public abstract void uidIdle(int uid); /** * The hintId sent through this method should be in-line with the * PowerHint defined in android/hardware/power/<version 1.0 & up>/IPower.h */ public abstract void powerHint(int hintId, int data); /** * Boost: It is sent when user interacting with the device, for example, * touchscreen events are incoming. Loading services/core/java/com/android/server/power/PowerManagerService.java +58 −8 Original line number Diff line number Diff line Loading @@ -44,8 +44,8 @@ import android.hardware.SystemSensorManager; import android.hardware.display.AmbientDisplayConfiguration; import android.hardware.display.DisplayManagerInternal; import android.hardware.display.DisplayManagerInternal.DisplayPowerRequest; import android.hardware.power.Boost; import android.hardware.power.Mode; import android.hardware.power.V1_0.PowerHint; import android.net.Uri; import android.os.BatteryManager; import android.os.BatteryManagerInternal; Loading Loading @@ -203,6 +203,9 @@ public final class PowerManagerService extends SystemService // How long a partial wake lock must be held until we consider it a long wake lock. static final long MIN_LONG_WAKE_CHECK_INTERVAL = 60*1000; // Power features defined in hardware/libhardware/include/hardware/power.h. private static final int POWER_FEATURE_DOUBLE_TAP_TO_WAKE = 1; // Default setting for double tap to wake. private static final int DEFAULT_DOUBLE_TAP_TO_WAKE = 0; Loading Loading @@ -322,7 +325,7 @@ public final class PowerManagerService extends SystemService private long mLastUserActivityTime; private long mLastUserActivityTimeNoChangeLights; // Timestamp of last time power boost interaction was sent. // Timestamp of last interactive power hint. private long mLastInteractivePowerHintTime; // Timestamp of the last screen brightness boost. Loading Loading @@ -716,11 +719,21 @@ public final class PowerManagerService extends SystemService PowerManagerService.nativeReleaseSuspendBlocker(name); } /** Wrapper for PowerManager.nativeSetInteractive */ public void nativeSetInteractive(boolean enable) { PowerManagerService.nativeSetInteractive(enable); } /** Wrapper for PowerManager.nativeSetAutoSuspend */ public void nativeSetAutoSuspend(boolean enable) { PowerManagerService.nativeSetAutoSuspend(enable); } /** Wrapper for PowerManager.nativeSendPowerHint */ public void nativeSendPowerHint(int hintId, int data) { PowerManagerService.nativeSendPowerHint(hintId, data); } /** Wrapper for PowerManager.nativeSetPowerBoost */ public void nativeSetPowerBoost(int boost, int durationMs) { PowerManagerService.nativeSetPowerBoost(boost, durationMs); Loading @@ -731,6 +744,11 @@ public final class PowerManagerService extends SystemService return PowerManagerService.nativeSetPowerMode(mode, enabled); } /** Wrapper for PowerManager.nativeSetFeature */ public void nativeSetFeature(int featureId, int data) { PowerManagerService.nativeSetFeature(featureId, data); } /** Wrapper for PowerManager.nativeForceSuspend */ public boolean nativeForceSuspend() { return PowerManagerService.nativeForceSuspend(); Loading Loading @@ -833,9 +851,12 @@ public final class PowerManagerService extends SystemService private native void nativeInit(); private static native void nativeAcquireSuspendBlocker(String name); private static native void nativeReleaseSuspendBlocker(String name); private static native void nativeSetInteractive(boolean enable); private static native void nativeSetAutoSuspend(boolean enable); private static native void nativeSendPowerHint(int hintId, int data); private static native void nativeSetPowerBoost(int boost, int durationMs); private static native boolean nativeSetPowerMode(int mode, boolean enabled); private static native void nativeSetFeature(int featureId, int data); private static native boolean nativeForceSuspend(); public PowerManagerService(Context context) { Loading Loading @@ -979,8 +1000,8 @@ public final class PowerManagerService extends SystemService mNativeWrapper.nativeInit(this); mNativeWrapper.nativeSetAutoSuspend(false); mNativeWrapper.nativeSetPowerMode(Mode.INTERACTIVE, true); mNativeWrapper.nativeSetPowerMode(Mode.DOUBLE_TAP_TO_WAKE, false); mNativeWrapper.nativeSetInteractive(true); mNativeWrapper.nativeSetFeature(POWER_FEATURE_DOUBLE_TAP_TO_WAKE, 0); mInjector.invalidateIsInteractiveCaches(); } } Loading Loading @@ -1231,7 +1252,8 @@ public final class PowerManagerService extends SystemService UserHandle.USER_CURRENT) != 0; if (doubleTapWakeEnabled != mDoubleTapWakeEnabled) { mDoubleTapWakeEnabled = doubleTapWakeEnabled; mNativeWrapper.nativeSetPowerMode(Mode.DOUBLE_TAP_TO_WAKE, mDoubleTapWakeEnabled); mNativeWrapper.nativeSetFeature( POWER_FEATURE_DOUBLE_TAP_TO_WAKE, mDoubleTapWakeEnabled ? 1 : 0); } } Loading Loading @@ -1590,7 +1612,7 @@ public final class PowerManagerService extends SystemService Trace.traceBegin(Trace.TRACE_TAG_POWER, "userActivity"); try { if (eventTime > mLastInteractivePowerHintTime) { setPowerBoostInternal(Boost.INTERACTION, 0); powerHintInternal(PowerHint.INTERACTION, 0); mLastInteractivePowerHintTime = eventTime; } Loading Loading @@ -3149,7 +3171,7 @@ public final class PowerManagerService extends SystemService mHalInteractiveModeEnabled = enable; Trace.traceBegin(Trace.TRACE_TAG_POWER, "setHalInteractive(" + enable + ")"); try { mNativeWrapper.nativeSetPowerMode(Mode.INTERACTIVE, enable); mNativeWrapper.nativeSetInteractive(enable); } finally { Trace.traceEnd(Trace.TRACE_TAG_POWER); } Loading Loading @@ -3623,6 +3645,19 @@ public final class PowerManagerService extends SystemService mIsVrModeEnabled = enabled; } private void powerHintInternal(int hintId, int data) { // Maybe filter the event. switch (hintId) { case PowerHint.LAUNCH: // 1: activate launch boost 0: deactivate. if (data == 1 && mBatterySaverController.isLaunchBoostDisabled()) { return; } break; } mNativeWrapper.nativeSendPowerHint(hintId, data); } private void setPowerBoostInternal(int boost, int durationMs) { // Maybe filter the event. mNativeWrapper.nativeSetPowerBoost(boost, durationMs); Loading Loading @@ -4369,7 +4404,7 @@ public final class PowerManagerService extends SystemService private final IVrStateCallbacks mVrStateCallbacks = new IVrStateCallbacks.Stub() { @Override public void onVrStateChanged(boolean enabled) { setPowerModeInternal(Mode.VR, enabled); powerHintInternal(PowerHint.VR_MODE, enabled ? 1 : 0); synchronized (mLock) { if (mIsVrModeEnabled != enabled) { Loading Loading @@ -4679,6 +4714,16 @@ public final class PowerManagerService extends SystemService acquireWakeLock(lock, flags, tag, packageName, new WorkSource(uid), null); } @Override // Binder call public void powerHint(int hintId, int data) { if (!mSystemReady) { // Service not ready yet, so who the heck cares about power hints, bah. return; } mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null); powerHintInternal(hintId, data); } @Override // Binder call public void setPowerBoost(int boost, int durationMs) { if (!mSystemReady) { Loading Loading @@ -5513,6 +5558,11 @@ public final class PowerManagerService extends SystemService uidIdleInternal(uid); } @Override public void powerHint(int hintId, int data) { powerHintInternal(hintId, data); } @Override public void setPowerBoost(int boost, int durationMs) { setPowerBoostInternal(boost, durationMs); Loading services/core/java/com/android/server/power/batterysaver/BatterySaverController.java +2 −2 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManagerInternal; import android.hardware.power.Mode; import android.hardware.power.V1_0.PowerHint; import android.os.BatteryManager; import android.os.BatterySaverPolicyConfig; import android.os.Handler; Loading Loading @@ -474,7 +474,7 @@ public class BatterySaverController implements BatterySaverPolicyListener { final PowerManagerInternal pmi = LocalServices.getService(PowerManagerInternal.class); if (pmi != null) { pmi.setPowerMode(Mode.LOW_POWER, isEnabled()); pmi.powerHint(PowerHint.LOW_POWER, isEnabled() ? 1 : 0); } updateBatterySavingStats(); Loading services/core/java/com/android/server/wm/DisplayPolicy.java +3 −3 Original line number Diff line number Diff line Loading @@ -139,7 +139,7 @@ import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.Region; import android.hardware.input.InputManager; import android.hardware.power.Boost; import android.hardware.power.V1_0.PowerHint; import android.os.Handler; import android.os.Looper; import android.os.Message; Loading Loading @@ -544,8 +544,8 @@ public class DisplayPolicy { @Override public void onFling(int duration) { if (mService.mPowerManagerInternal != null) { mService.mPowerManagerInternal.setPowerBoost( Boost.INTERACTION, duration); mService.mPowerManagerInternal.powerHint( PowerHint.INTERACTION, duration); } } Loading Loading
core/java/android/os/IPowerManager.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ interface IPowerManager @UnsupportedAppUsage void releaseWakeLock(IBinder lock, int flags); void updateWakeLockUids(IBinder lock, in int[] uids); oneway void powerHint(int hintId, int data); oneway void setPowerBoost(int boost, int durationMs); oneway void setPowerMode(int mode, boolean enabled); Loading
core/java/android/os/PowerManagerInternal.java +6 −0 Original line number Diff line number Diff line Loading @@ -195,6 +195,12 @@ public abstract class PowerManagerInternal { public abstract void uidIdle(int uid); /** * The hintId sent through this method should be in-line with the * PowerHint defined in android/hardware/power/<version 1.0 & up>/IPower.h */ public abstract void powerHint(int hintId, int data); /** * Boost: It is sent when user interacting with the device, for example, * touchscreen events are incoming. Loading
services/core/java/com/android/server/power/PowerManagerService.java +58 −8 Original line number Diff line number Diff line Loading @@ -44,8 +44,8 @@ import android.hardware.SystemSensorManager; import android.hardware.display.AmbientDisplayConfiguration; import android.hardware.display.DisplayManagerInternal; import android.hardware.display.DisplayManagerInternal.DisplayPowerRequest; import android.hardware.power.Boost; import android.hardware.power.Mode; import android.hardware.power.V1_0.PowerHint; import android.net.Uri; import android.os.BatteryManager; import android.os.BatteryManagerInternal; Loading Loading @@ -203,6 +203,9 @@ public final class PowerManagerService extends SystemService // How long a partial wake lock must be held until we consider it a long wake lock. static final long MIN_LONG_WAKE_CHECK_INTERVAL = 60*1000; // Power features defined in hardware/libhardware/include/hardware/power.h. private static final int POWER_FEATURE_DOUBLE_TAP_TO_WAKE = 1; // Default setting for double tap to wake. private static final int DEFAULT_DOUBLE_TAP_TO_WAKE = 0; Loading Loading @@ -322,7 +325,7 @@ public final class PowerManagerService extends SystemService private long mLastUserActivityTime; private long mLastUserActivityTimeNoChangeLights; // Timestamp of last time power boost interaction was sent. // Timestamp of last interactive power hint. private long mLastInteractivePowerHintTime; // Timestamp of the last screen brightness boost. Loading Loading @@ -716,11 +719,21 @@ public final class PowerManagerService extends SystemService PowerManagerService.nativeReleaseSuspendBlocker(name); } /** Wrapper for PowerManager.nativeSetInteractive */ public void nativeSetInteractive(boolean enable) { PowerManagerService.nativeSetInteractive(enable); } /** Wrapper for PowerManager.nativeSetAutoSuspend */ public void nativeSetAutoSuspend(boolean enable) { PowerManagerService.nativeSetAutoSuspend(enable); } /** Wrapper for PowerManager.nativeSendPowerHint */ public void nativeSendPowerHint(int hintId, int data) { PowerManagerService.nativeSendPowerHint(hintId, data); } /** Wrapper for PowerManager.nativeSetPowerBoost */ public void nativeSetPowerBoost(int boost, int durationMs) { PowerManagerService.nativeSetPowerBoost(boost, durationMs); Loading @@ -731,6 +744,11 @@ public final class PowerManagerService extends SystemService return PowerManagerService.nativeSetPowerMode(mode, enabled); } /** Wrapper for PowerManager.nativeSetFeature */ public void nativeSetFeature(int featureId, int data) { PowerManagerService.nativeSetFeature(featureId, data); } /** Wrapper for PowerManager.nativeForceSuspend */ public boolean nativeForceSuspend() { return PowerManagerService.nativeForceSuspend(); Loading Loading @@ -833,9 +851,12 @@ public final class PowerManagerService extends SystemService private native void nativeInit(); private static native void nativeAcquireSuspendBlocker(String name); private static native void nativeReleaseSuspendBlocker(String name); private static native void nativeSetInteractive(boolean enable); private static native void nativeSetAutoSuspend(boolean enable); private static native void nativeSendPowerHint(int hintId, int data); private static native void nativeSetPowerBoost(int boost, int durationMs); private static native boolean nativeSetPowerMode(int mode, boolean enabled); private static native void nativeSetFeature(int featureId, int data); private static native boolean nativeForceSuspend(); public PowerManagerService(Context context) { Loading Loading @@ -979,8 +1000,8 @@ public final class PowerManagerService extends SystemService mNativeWrapper.nativeInit(this); mNativeWrapper.nativeSetAutoSuspend(false); mNativeWrapper.nativeSetPowerMode(Mode.INTERACTIVE, true); mNativeWrapper.nativeSetPowerMode(Mode.DOUBLE_TAP_TO_WAKE, false); mNativeWrapper.nativeSetInteractive(true); mNativeWrapper.nativeSetFeature(POWER_FEATURE_DOUBLE_TAP_TO_WAKE, 0); mInjector.invalidateIsInteractiveCaches(); } } Loading Loading @@ -1231,7 +1252,8 @@ public final class PowerManagerService extends SystemService UserHandle.USER_CURRENT) != 0; if (doubleTapWakeEnabled != mDoubleTapWakeEnabled) { mDoubleTapWakeEnabled = doubleTapWakeEnabled; mNativeWrapper.nativeSetPowerMode(Mode.DOUBLE_TAP_TO_WAKE, mDoubleTapWakeEnabled); mNativeWrapper.nativeSetFeature( POWER_FEATURE_DOUBLE_TAP_TO_WAKE, mDoubleTapWakeEnabled ? 1 : 0); } } Loading Loading @@ -1590,7 +1612,7 @@ public final class PowerManagerService extends SystemService Trace.traceBegin(Trace.TRACE_TAG_POWER, "userActivity"); try { if (eventTime > mLastInteractivePowerHintTime) { setPowerBoostInternal(Boost.INTERACTION, 0); powerHintInternal(PowerHint.INTERACTION, 0); mLastInteractivePowerHintTime = eventTime; } Loading Loading @@ -3149,7 +3171,7 @@ public final class PowerManagerService extends SystemService mHalInteractiveModeEnabled = enable; Trace.traceBegin(Trace.TRACE_TAG_POWER, "setHalInteractive(" + enable + ")"); try { mNativeWrapper.nativeSetPowerMode(Mode.INTERACTIVE, enable); mNativeWrapper.nativeSetInteractive(enable); } finally { Trace.traceEnd(Trace.TRACE_TAG_POWER); } Loading Loading @@ -3623,6 +3645,19 @@ public final class PowerManagerService extends SystemService mIsVrModeEnabled = enabled; } private void powerHintInternal(int hintId, int data) { // Maybe filter the event. switch (hintId) { case PowerHint.LAUNCH: // 1: activate launch boost 0: deactivate. if (data == 1 && mBatterySaverController.isLaunchBoostDisabled()) { return; } break; } mNativeWrapper.nativeSendPowerHint(hintId, data); } private void setPowerBoostInternal(int boost, int durationMs) { // Maybe filter the event. mNativeWrapper.nativeSetPowerBoost(boost, durationMs); Loading Loading @@ -4369,7 +4404,7 @@ public final class PowerManagerService extends SystemService private final IVrStateCallbacks mVrStateCallbacks = new IVrStateCallbacks.Stub() { @Override public void onVrStateChanged(boolean enabled) { setPowerModeInternal(Mode.VR, enabled); powerHintInternal(PowerHint.VR_MODE, enabled ? 1 : 0); synchronized (mLock) { if (mIsVrModeEnabled != enabled) { Loading Loading @@ -4679,6 +4714,16 @@ public final class PowerManagerService extends SystemService acquireWakeLock(lock, flags, tag, packageName, new WorkSource(uid), null); } @Override // Binder call public void powerHint(int hintId, int data) { if (!mSystemReady) { // Service not ready yet, so who the heck cares about power hints, bah. return; } mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null); powerHintInternal(hintId, data); } @Override // Binder call public void setPowerBoost(int boost, int durationMs) { if (!mSystemReady) { Loading Loading @@ -5513,6 +5558,11 @@ public final class PowerManagerService extends SystemService uidIdleInternal(uid); } @Override public void powerHint(int hintId, int data) { powerHintInternal(hintId, data); } @Override public void setPowerBoost(int boost, int durationMs) { setPowerBoostInternal(boost, durationMs); Loading
services/core/java/com/android/server/power/batterysaver/BatterySaverController.java +2 −2 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManagerInternal; import android.hardware.power.Mode; import android.hardware.power.V1_0.PowerHint; import android.os.BatteryManager; import android.os.BatterySaverPolicyConfig; import android.os.Handler; Loading Loading @@ -474,7 +474,7 @@ public class BatterySaverController implements BatterySaverPolicyListener { final PowerManagerInternal pmi = LocalServices.getService(PowerManagerInternal.class); if (pmi != null) { pmi.setPowerMode(Mode.LOW_POWER, isEnabled()); pmi.powerHint(PowerHint.LOW_POWER, isEnabled() ? 1 : 0); } updateBatterySavingStats(); Loading
services/core/java/com/android/server/wm/DisplayPolicy.java +3 −3 Original line number Diff line number Diff line Loading @@ -139,7 +139,7 @@ import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.Region; import android.hardware.input.InputManager; import android.hardware.power.Boost; import android.hardware.power.V1_0.PowerHint; import android.os.Handler; import android.os.Looper; import android.os.Message; Loading Loading @@ -544,8 +544,8 @@ public class DisplayPolicy { @Override public void onFling(int duration) { if (mService.mPowerManagerInternal != null) { mService.mPowerManagerInternal.setPowerBoost( Boost.INTERACTION, duration); mService.mPowerManagerInternal.powerHint( PowerHint.INTERACTION, duration); } } Loading