安卓手机 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 失效时,该功能也同时不起作用。