一. 前言
咱們的Android應用程序不少須要和亮屏和熄屏打交道,好比鬧鐘的時候,須要保持亮屏,以後又須要熄屏。那麼今天,咱們來分析下這方面的功能。
二. 系統服務 --- PowerManager.java
顧名思義,PowerManager.java就是管理咱們電源方面的功能的,固然也包括咱們屏幕的亮和熄滅。沒錯,咱們的應用程序就是經過這個系統服務來實現亮屏和熄屏的功能的。
1. 應用程序獲取PowerManager服務, 咱們能夠這樣書寫:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
由於PowerManager是系統服務,因此它的生命週期不是應用程序所能控制的;應用程序只能經過系統,向系統請求獲取PowerManager服務,而後系統把這個服務的應用給咱們。
2. goToSleep()方法, 這個方法能夠強制咱們的屏幕熄屏。咱們能夠這樣調用:
在上面拿到pm對象以後,這樣調用 pm.goToSleep(SystemClock.uptimeMillis());
3. setBacklightBrightness()方法,這個方法能夠設置背光的亮度,從0-255
三. 定時熄滅屏幕
那麼這裏,還能夠介紹一個控制屏幕的方法就是PowerManager.WakeLock
顧名思義,WakeLock這個東西就是亮屏控制,這裏說的亮屏,它定義了幾種類型的亮屏。以下:
java
類型 | 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 |
因爲它定義了這麼多類型,每種類型能夠指定相對應的部件工做和不工做。那麼咱們就能夠利用這些類型,從最細粒度來控制咱們的屏幕,控制咱們的電源,從而讓 咱們的電源工做時間儘量的延長(你們都知道,智能手機的電池問題是一個硬傷, 天天一充電,有木有? 別人說用安卓手機的男人都是顧家好男人,由於他天天晚上都要回家充電。。^^).
好的,好的,閒話不扯,繼續。。。
怎麼使用這個WakeLock呢?咱們能夠這樣寫:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "TAG");
wakeLock.acquire();
//作咱們的工做,在這個階段,咱們的屏幕會持續點亮
//釋放鎖,屏幕熄滅。
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()要成對調用哦!也就是說,你申請了亮屏,過段時間,你要是釋放它。
一點小小分析,僅當拋磚引玉而已~ post