项目中有播放视频的需求,但是视频播放时,一定时间之后会出现屏幕变暗(系统设置的锁屏时间),严重影响体验,所以我们需要在有些功能使用时,要求Android保持屏幕常亮。
第一种方法实现常亮功能
:
当你查看Android
PowerManagerAPI时,你就可看到一个简单实现。
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag"); wl.acquire(); ..screen will stay on during this section.. wl.release();这是Android中通过各种Lock锁对电源进行控制,需要注意的是加锁和解锁必须成对出现。同时API中说明,如果不是特殊情况不要经常使用,它会影响电池的寿命。
下面对几个参数进行说明
Flag Value | CPU | Screen | Keyboard |
---|---|---|---|
PARTIAL_WAKE_LOCK | On* | Off | Off |
SCREEN_DIM_WAKE_LOCK | On | Dim | Off |
SCREEN_BRIGHT_WAKE_LOCK | On | Bright | Off |
FULL_WAKE_LOCK | On | Bright |
Bright
|
参照解释
SCREEN_DIM_WAKE_LOCK :保持CPU 运转,允许保持屏幕显示但有可能是灰的,允许关闭键盘灯
需要注意的是,您需要在mainfest权限获取
要进行电源的操作需要在AndroidManifest.xml中声明该应用有设置电源管理的权限。
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DEVICE_POWER"/>
第二种方法是给window设置标识(Flag,如同设置全屏标识一样,这种实现简单,容易控制
onCreate(){
getWindow().addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
onStop(){
getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
同时这种方法也可以在xml布局文件中实现
<RelativeLayout
.......
android:keepScreenOn="true">