Android亮屏和熄屏控制

jopen 10年前發布 | 44K 次閱讀 Android 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這個東西就是亮屏控制,這里說的亮屏,它定義了幾種類型的亮屏。如下:

</tr>

</tr>

</tr>

</tr>

</tr> </tbody> </table>
由于它定義了這么多類型,每種類型可以指定相對應的部件工作和不工作。那么我們就可以利用這些類型,從最細粒度來控制我們的屏幕,控制我們 的電源,從而讓 我們的電源工作時間盡可能的延長(大家都知道,智能手機的電池問題是一個硬傷, 每天一充電,有木有? 別人說用安卓手機的男人都是顧家好男人,因為他每天晚上都要回家充電。。^^).
好的,好的,閑話不扯,繼續。。。
怎么使用這個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()要成對調用哦!也就是說,你申請了亮屏,過段時間,你要是釋放它。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
類型 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
  • sesese色