Android之电源管理 PowerManager解决远程拍照手机黑屏问题
解決的問(wèn)題:
這次使用PowerManager是因?yàn)槲覀兒笈_(tái)遠(yuǎn)程拍照的時(shí)候,不支持手機(jī)黑屏情況拍照,如果手機(jī)黑屏,然后用PowerManager進(jìn)行臨時(shí)運(yùn)行CPU
功能介紹:
PowerManager這個(gè)類主要是用來(lái)控制電源狀態(tài)的. 通過(guò)使用該類提供的api可以控制電池的待機(jī)時(shí)間,一般情況下不要使用。如果確實(shí)需要使用,那么盡可能的使用最低級(jí)別的WakeLocks鎖。并且確保使用完后釋放它。你可以通過(guò)context.getSystemService(Context.POWER_SERVICE)的方式獲得PowerManager的實(shí)例。在PowerManager中,最主要的newWakeLock方法,如下:
??? public WakeLock newWakeLock(int flags, String tag)
??? {
??????? return new WakeLock(flags, tag);
??? }
??? 這個(gè)方法將創(chuàng)建WakeLock對(duì)象,通過(guò)調(diào)用此對(duì)象的方法你就可以方便的去控制電源的狀態(tài)。方法如下:
????
??? PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
??? PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
??? wl.acquire();
????? 屏幕將停留在設(shè)定的狀態(tài),一般為亮、暗狀態(tài)
??? wl.release();
????? 釋放掉正在運(yùn)行的cpu或關(guān)閉屏幕。
?
下面定義的flag是在newWakeLock方法中要接收的參數(shù),通過(guò)該flag,你可以定義系統(tǒng)的電源的展示效果。比如:
?*???????????????????????? ? ? ? ? ? ? ? ? ? ? ? cpu?????? screen?????? keyboard
?* 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
?
? 這些flag是相互排斥的,一次只能定義一個(gè)。
?
如果你持有PARTIAL_WAKE_LOCK鎖,不論任何定時(shí)器甚至是按下電源按鈕,cpu都將繼續(xù)運(yùn)行,無(wú)法進(jìn)入休眠狀態(tài)。除非你釋放掉它。
其他鎖的話,雖然cpu也在運(yùn)行,但是當(dāng)用戶按下電源按鈕時(shí),設(shè)備將立刻進(jìn)入休眠狀態(tài)。
?
?正常情況下wakelocks實(shí)際上是沒(méi)有被打開(kāi)的,當(dāng)需要時(shí),它將通過(guò)特定的flag啟動(dòng)屏幕和鍵盤。 比如在應(yīng)用中,涉及到向用戶發(fā)送消息時(shí),需要讓用戶立刻看到。此時(shí)會(huì)點(diǎn)亮屏幕。當(dāng)WakeLock鎖被釋放的時(shí)候,activity的定時(shí)器將被重設(shè),這將導(dǎo)致屏幕亮更長(zhǎng)的時(shí)間。
總結(jié)
以上是生活随笔為你收集整理的Android之电源管理 PowerManager解决远程拍照手机黑屏问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 简单密码破解
- 下一篇: Android之TrafficStats