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