安卓app保持螢幕常亮

kuertian發表於2018-12-17

親測方法一有效

方法一:持有WakeLock
首先獲取WakeLock相關許可權:

<uses-permission android:name="android.permission.WAKE_LOCK" />

然後通過PowerManager獲取WakeLock後,在onResume以及onPause執行相應操作:    

import android.os.PowerManager;
import android.os.PowerManager.WakeLock;


	public WakeLock mWakeLock;
@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"

 

相關文章