1. 程式人生 > >Android 控制螢幕喚醒常亮或熄滅

Android 控制螢幕喚醒常亮或熄滅

需求:在詩詞曲文專案中,詩詞整篇朗讀的時候,文章沒有讀完會因為螢幕熄滅停止朗讀。要求:在文章沒有朗讀完畢之前螢幕常亮,讀完以後螢幕常亮關閉;

1.許可權配置:設定電源管理的許可權。

   <uses-permission android:name="android.permission.WAKE_LOCK"/>
   <uses-permission android:name="android.permission.DEVICE_POWER"
                     tools:ignore="ProtectedPermissions"/>

2.保持螢幕喚醒邏輯

private static PowerManager.WakeLock wakeLock; 
public static void keepScreenOn(Context context, boolean on) {
   if (on) {
           PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
           wakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,TAG);
            wakeLock.acquire();
        } else
{ if (wakeLock != null) { wakeLock.release(); wakeLock = null; } } }

3.newWakeLock引數說明:

根據flags不同的值,實現不同級別的電源管理。 關於int flags 各種鎖的型別對CPU 、螢幕、鍵盤的影響:
PARTIAL_WAKE_LOCK :保持CPU 運轉,螢幕和鍵盤燈有可能是關閉的。
SCREEN_DIM_WAKE_LOCK :保持CPU運轉,允許保持螢幕顯示但有可能是灰的,允許關閉鍵盤燈 SCREEN_BRIGHT_WAKE_LOCK :保持CPU 運轉,允許保持螢幕高亮顯示,允許關閉鍵盤燈 FULL_WAKE_LOCK :保持CPU 運轉,保持螢幕高亮顯示,鍵盤燈也保持亮度.

4.在專案結束【本專案中播放完畢】在Destory中將wakeLock給release掉:

@Override  
  protected void onDestroy() {  
      super.onDestroy();  
      keepScreenOn(Main.this, false);  
  }

【wakelock喚醒鎖被release後不會直接熄屏,而是在系統指定的梁平時間結束之後熄屏】

5.注意:Android中通過各種Lock鎖對電源進行控制,需要注意的是加鎖和解鎖必須成對出現。