Android讓手機主動亮屏的代碼

來源:互聯網
上載者:User

標籤:android   style   blog   http   io   ar   color   os   使用   

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

一、系統服務——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

Android讓手機主動亮屏的代碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.