Android开发保持屏幕常亮和CPU不休眠唤醒状态

安卓手机 APP 开发,有的时候需要屏幕长时间亮着,也就是不锁屏,这时CPU会一直处于不休眠唤醒状态。下面介绍两种方法。


方法一:通过 PowerManager 实现。

此种方法会在软件安装时用户可以看到屏幕选项。

首先,在 AndroidManifest.xml 加入权限:

<uses-permission android:name="android.permission.WAKE_LOCK" />

然后,定义PowerManager 和 WakeLock:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
WakeLock wl = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "MyKeepScreen");

这样,就可以用以下代码来实现屏幕常量的切换了:

boolean keepScreen = true || false;
wl.acquire();
if (!keepScreen) {
  wl.release();
}

这里需要注意的是 WakeLock 有几种参数:

PowerManager.FULL_WAKE_LOCK (deprecated推荐使用第一种方式)
PowerManager.SCREEN_DIM_WAKE_LOCK (deprecated推荐使用第二种方式)
PowerManager.SCREEN_BRIGHT_WAKE_LOCK (deprecated推荐使用第三种方式)
PowerManager.PARTIAL_WAKE_LOCK 此参数可以保证CPU正常运行;屏幕和键盘灯可以关闭。即使用户按了电源键,CPU依然会运行


方法二:通过 LayoutParams 实现。

这种方法只需要直接在 Activity 的 onCreate() 方法里,添加以下代码:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

这种方法不需要添加权限,所以在 APP 安装权限列表是看不到改项。在 Activity 失效时,该功能也同时不起作用。


2