轉載自https://blog.csdn.net/superxlcr/article/details/78822544
方法一:持有WakeLock
首先獲取WakeLock相關權限:
<uses-permission android:name="android.permission.WAKE_LOCK" />
然后通過PowerManager獲取WakeLock后,在onResume以及onPause執行相應操作:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
PowerManager powerManager = (PowerManager)getSystemService(POWER_SERVICE);
if (powerManager != null) {
mWakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "WakeLock");
}
}
@Override
protected void onResume() {
super.onResume();
if (mWakeLock != null) {
mWakeLock.acquire();
}
}
@Override
protected void onPause() {
super.onPause();
if (mWakeLock != null) {
mWakeLock.release();
}
}
WakeLock獲取時相關的flag如下所示:
PARTIAL_WAKE_LOCK :保持CPU 運轉,屏幕和鍵盤燈有可能是關閉的。
SCREEN_DIM_WAKE_LOCK :保持CPU 運轉,允許保持屏幕顯示但有可能是灰的,允許關閉鍵盤燈
SCREEN_BRIGHT_WAKE_LOCK :保持CPU 運轉,允許保持屏幕高亮顯示,允許關閉鍵盤燈
FULL_WAKE_LOCK :保持CPU 運轉,保持屏幕高亮顯示,鍵盤燈也保持亮度
PS:現在官方已經不推薦使用這種方式保持亮屏了,推薦改為以下兩種方式
方式二:在Window設置flag
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
這種方式不需要申請權限,也是官方推薦的做法
方式三:在界面布局xml中頂層添加屬性
可以再界面xml文件中的頂層布局添加屬性即可:
android:keepScreenOn="true"