一、界面佈局文件頂層添加keepScreenOn屬性
android:keepScreenOn="true"
二、Window中設置flag
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
以上兩種方法均不需要申請權限,也是Android官方推薦的做法。
三、持有WakeLock(已經不推薦的做法)
先申請權限:
<uses-permission android:name="android.permission.WAKE_LOCK"/>
通過PowerManager獲取WakeLock後,在onResume以及onPause執行響應操作:
package com.example.note4xtest;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.os.Bundle;
import android.os.PowerManager;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.WindowManager;
public class MainActivity extends Activity {
private static final String TAG = MainActivity.class.getSimpleName();
private PowerManager.WakeLock mWakeLock;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
if (powerManager != null) {
mWakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, TAG);
}
}
@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運轉,保持屏幕高亮顯示,鍵盤燈也保持亮度