一. 前言
我們的Android應用程序很多需要和亮屏和熄屏打交道澎迎,比如鬧鐘的時候,需要保持亮屏衅檀,之后又需要熄屏枕磁。那么今天,我們來分析下這方面的功能术吝。
二. 系統(tǒng)服務 --- PowerManager.java
顧名思義计济,PowerManager.java就是管理我們電源方面的功能的茸苇,當然也包括我們屏幕的亮和熄滅。沒錯沦寂,我們的應用程序就是通過這個系統(tǒng)服務來實現(xiàn)亮屏和熄屏的功能的学密。
- 應用程序獲取PowerManager服務, 我們可以這樣書寫:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
因為PowerManager是系統(tǒng)服務,所以它的生命周期不是應用程序所能控制的传藏;應用程序只能通過系統(tǒng)腻暮,向系統(tǒng)請求獲取PowerManager服務,然后系統(tǒng)把這個服務的應用給我們毯侦。 - goToSleep()方法炎咖, 這個方法可以強制我們的屏幕熄屏倦蚪。我們可以這樣調用:
在上面拿到pm對象之后贮庞,這樣調用 pm.goToSleep(SystemClock.uptimeMillis()); - setBacklightBrightness()方法萨脑,這個方法可以設置背光的亮度,從0-255
三. 定時熄滅屏幕
那么這里卦碾,還可以介紹一個控制屏幕的方法就是PowerManager.WakeLock
顧名思義铺坞,WakeLock這個東西就是亮屏控制,這里說的亮屏洲胖,它定義了幾種類型的亮屏济榨。如下:
類型 cpu 屏幕 鍵盤
PARTIAL_WAKE_LOCK on off off
SCREEN_DIM_WAKE_LOCK on dim off
SCREEN_BRIGHT_WAKE_LOCK on Bright off
FULL_WAKE_LOCK on Bright Bright
由于它定義了這么多類型,每種類型可以指定相對應的部件工作和不工作绿映。那么我們就可以利用這些類型擒滑,從最細粒度來控制我們的屏幕,控制我們 的電源叉弦,從而讓 我們的電源工作時間盡可能的延長(大家都知道丐一,智能手機的電池問題是一個硬傷, 每天一充電卸奉,有木有钝诚? 別人說用安卓手機的男人都是顧家好男人颖御,因為他每天晚上都要回家充電榄棵。。^^).
好的潘拱,好的疹鳄,閑話不扯,繼續(xù)芦岂。瘪弓。。
怎么使用這個WakeLock呢禽最?我們可以這樣寫:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "TAG");
wakeLock.acquire();
//做我們的工作腺怯,在這個階段袱饭,我們的屏幕會持續(xù)點亮
//釋放鎖,屏幕熄滅呛占。
wl.release();
那么這里我們也可以這樣使用虑乖,就是多少時間后熄滅屏幕
首先點亮屏幕
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "TAG");
wakeLock.acquire();
然后
mTimeHandler.postDelayed(new Runnable(){
public void run(){
wakeLock.release();
}
}, 10*1000);
嗯,延遲10s后熄滅屏幕晾虑。疹味。。帜篇。
那么糙捺,這里要注意的是acquire()和release()要成對調用哦!也就是說笙隙,你申請了亮屏洪灯,過段時間,你要是釋放它逃沿。