简述
该文章是简单记录下android电源管理的睡眠与唤醒的代码实现过程
流程
获取电源管理相关服务
PowerManager powerManager = (PowerManager) this.getSystemService(Context.POWER_SERVICE);
睡眠
private void testPowerManagerToSleep() {
Log.d(TAG, "testPowerManagerToSleep");
if (powerManager != null) {
boolean interactive = powerManager.isInteractive();
Log.d(TAG, "interactive =" + interactive);
if (interactive) {
// sleep screen
PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG + ".powerKeySleepLock");
if (!wakeLock.isHeld()) {
Log.d(TAG, "wakeLock.acquire()");
wakeLock.acquire();
}
powerManager.goToSleep(SystemClock.uptimeMillis());
if (wakeLock.isHeld()) {
Log.d(TAG, "wakeLock.release()");
wakeLock.release();
}
}
唤醒
private void testPowerManagerWakeUp() {
if (powerManager != null) {
boolean interactive = powerManager.isInteractive();
Log.d(TAG, "interactive =" + interactive);
PowerManager.WakeLock mPowerKeyWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
TAG + ".mPowerKeyWakeLock");
if (!mPowerKeyWakeLock.isHeld()) {
Log.d(TAG, "mPowerKeyWakeLock.acquire()");
mPowerKeyWakeLock.acquire();
}
powerManager.wakeUp(SystemClock.uptimeMillis(), PowerManager.WAKE_REASON_WAKE_KEY, "wakeUp");
if (mPowerKeyWakeLock.isHeld()) {
Log.d(TAG, "mPowerKeyWakeLock.release()");
mPowerKeyWakeLock.release();
}
}
}
权限配置
在清单文件中添加以下权限,否则调用上面的代码会报错
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!--only system apps granted-->
<uses-permission android:name="android.permission.DEVICE_POWER"/>