方法一:Window设置flag
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
官方推荐使用。
方法二:界面顶层添加属性
android:keepScreenOn="true"
方法三:WakeLock权限
清单文件中新增权限
<uses-permission android:name="android.permission.WAKE_LOCK" />
在onResume以及onPause执行相应操作:
@Override
protected void onCreate(Bundle savedInstanceState) {
PowerManager powerManager = (PowerManager)getSystemService(POWER_SERVICE);
if (powerManager != null) {
mWakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "WakeLock");
}
}
@Override
protected void onResume() {
if (mWakeLock != null) mWakeLock.acquire();
}
@Override
protected void onPause() {
if (mWakeLock != null) mWakeLock.release();
}
WakeLock获取时相关的flag如下所示:
FLAG | 作用 |
---|---|
PARTIAL_WAKE_LOCK | 保持CPU 运转,屏幕和键盘灯有可能是关闭的 |
SCREEN_DIM_WAKE_LOCK | 保持CPU 运转,允许保持屏幕显示但有可能是灰的,允许关闭键盘灯 |
SCREEN_BRIGHT_WAKE_LOCK | 保持CPU 运转,允许保持屏幕高亮显示,允许关闭键盘灯 |
FULL_WAKE_LOCK | 保持CPU 运转,保持屏幕高亮显示,键盘灯也保持亮度 |
官方不推荐使用