Android亮屏和熄屏控制


一.  前言
咱們的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

相關文章
相關標籤/搜索