Android屏幕保持常亮的三種方法

一、界面佈局文件頂層添加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運轉,保持屏幕高亮顯示,鍵盤燈也保持亮度
發佈了40 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章