Android讓手機主動亮屏的代碼


我們在做電子閱讀器的時候可能會要求屏幕保持常亮,不希望它熄滅。它的原理也是利用系統服務,來操縱底層設備。

一、系統服務——PowerManager

PowerManager.java就是管理我們電源方面的功能的,當然也包括我們屏幕的亮和熄滅。

 PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);

PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);// init powerManager

因為PowerManager是系統服務,所以它的生命周期不是應用程序所能控制的;應用程序只能通過系統,向系統請求獲取PowerManager服務,然后系統把這個服務的應用給我們用。

 

二、PowerManager.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

由於它定義了這么多類型,每種類型可以指定相對應的部件工作和不工作。那么我們就可以利用這些類型,從最細粒度來控制我們的屏幕,控制我們的電源,從而讓我們的電源工作時間盡可能的延長。

 

三、實際運用

1. 首先加入權限

<uses-permissionandroid:name="android.permission.WAKE_LOCK" />

 

2. 進行初始化

    private PowerManager.WakeLock mWakelock;
PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);// init powerManager
        mWakelock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP|
                PowerManager.SCREEN_DIM_WAKE_LOCK,"target"); // this target for tell OS which app control screen

 

3. 強制亮屏

mWakelock.acquire(); // Wake up Screen and keep screen lighting

 

4. 取消強制亮屏,釋放控制

mWakelock.release(); // release control.stop to keep screen lighting

PS:這里需要注意的是acquire和release必須成對使用

 

5. 有一種情況是類似於來電顯示,我們不僅需要讓屏幕點亮,而且還想要取消鎖屏界面,該怎么做呢?

在AndroidManifest.xml中加上permission 權限:

<uses-permissionandroid:name="android.permission.DISABLE_KEYGUARD" />
    // 鍵盤鎖管理器對象
        KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
        // 這里參數”kale”作為調試時LogCat中的Tag
        KeyguardLock kl = km.newKeyguardLock("kale");
        if (km.inKeyguardRestrictedInputMode()) {  
             // 解鎖鍵盤  
             kl.disableKeyguard(); 
         }  

 

6. 在新版本中上面的代碼變得不推薦了,系統給在activity顯示時保持常亮提供了一個新的方法,使用方法也相當簡單,下面這句只需要加在activity中即可。

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

 

參考自:

http://blog.csdn.net/pku_android/article/details/7596968

http://bbs.51cto.com/thread-1018050-1.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM