設置FLAG_KEEP_SCREEN_ON
通過設置Activity的Window屬性,可以使屏幕保持常亮。具體步驟如下:
-
在Activity的onCreate方法中,調(diào)用getWindow方法獲取Window對象。
Window window = getWindow();
-
調(diào)用Window對象的addFlags方法設置屏幕常亮。
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
-
在不需要屏幕常亮時,調(diào)用Window對象的clearFlags方法取消屏幕常亮。
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
keepScreenOn屬性
在Activity的布局文件中添加keepScreenOn屬性,可以保持屏幕常亮。這個屬性會在Activity啟動時自動獲取一個WakeLock對象,并設置屏幕常亮的標志位。當Activity銷毀時,會自動釋放這個WakeLock對象。
-
在布局文件中的需要保持屏幕常亮的View中,添加keepScreenOn屬性。
Android:keepScreenOn="true"
-
當該View可見時,屏幕將保持常亮;當該View不可見時,屏幕將恢復正常。
WakeLock喚醒鎖定
WakeLock是Android中的一個類,可以用來控制設備的喚醒狀態(tài)。通過獲取一個WakeLock對象,并設置屏幕常亮的標志位,可以保持屏幕常亮。需要注意的是,在使用完WakeLock后,一定要記得釋放它,以免造成電池的過度消耗。
-
在AndroidManifest.xml文件中添加WAKE_LOCK權(quán)限。
<uses-permission android:name="android.permission.WAKE_LOCK" />
-
在代碼中獲取PowerManager對象,并使用其newWakeLock方法創(chuàng)建WakeLock對象。
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "KeepRunning");
-
調(diào)用WakeLock對象的acquire方法來保持屏幕常亮。
wakeLock.acquire();
-
在不需要屏幕常亮時,調(diào)用WakeLock對象的release方法釋放WakeLock。
wakeLock.release();
官方已經(jīng)不推薦使用這種方式保持亮屏,使用不當會讓應用耗電量增加,在開發(fā)中盡可能的避免使用WakeLock。