android 屏幕待機(jī)時(shí)間

需求:實(shí)現(xiàn)動(dòng)態(tài)設(shè)置屏幕待機(jī)時(shí)間。


翻閱資料驶冒,網(wǎng)上有人使用直接獲取系統(tǒng)待機(jī)時(shí)間和設(shè)置系統(tǒng)待機(jī)時(shí)間來(lái)修改默認(rèn)的待機(jī)時(shí)間苟翻。

//獲取系統(tǒng)待機(jī)時(shí)間
float result  = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT);   
//設(shè)置系統(tǒng)待機(jī)時(shí)間
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, 10*60*1000);  
//權(quán)限
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

一開(kāi)始直接參考這個(gè)方法,進(jìn)行一些封裝骗污,然后在真機(jī)上進(jìn)行測(cè)試崇猫,基本實(shí)現(xiàn)了需求。其中設(shè)置常亮給對(duì)應(yīng)的window設(shè)置下面的flag就可以了

WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON

本來(lái)以為簡(jiǎn)單的需求就實(shí)現(xiàn)了需忿。诅炉。蜡歹。。
??Too Young Too Simple

前一天下班的時(shí)候把公司的測(cè)試機(jī)升級(jí)了涕烧,然后第二天再打開(kāi)程序季稳,崩潰了。澈魄。。仲翎。
??崩潰1陨取?打開(kāi)調(diào)試溯香,缺少權(quán)限WRITE_SETTINGS
??清單文件中有鲫构,那是不是動(dòng)態(tài)授權(quán)?不要吐槽我學(xué)藝不精玫坛。结笨。。湿镀。之前真的沒(méi)注意到這個(gè)特殊權(quán)限炕吸。不能動(dòng)態(tài)授權(quán),清單文件授權(quán)無(wú)效勉痴,只能通過(guò)intent隱式跳轉(zhuǎn)設(shè)置獲群漳!!U裘瀑罗!產(chǎn)品萬(wàn)萬(wàn)不能同意啊。再說(shuō)別人家軟件也都沒(méi)有問(wèn)題啊雏掠。
??so斩祭,別人肯定不是這么修改的系統(tǒng)休眠時(shí)間,只能另尋道路了乡话。


終于還是找到別的方法了
[android PowerManager分析](http://www.mobile-open.com/2016/922582.html
??通過(guò)這篇文章摧玫,然后自己去學(xué)習(xí)了powermanager的api,也實(shí)現(xiàn)了動(dòng)態(tài)修改屏幕待機(jī)時(shí)間的需求,并且不受權(quán)限限制蚊伞。
??通過(guò)系統(tǒng)的WakeLock去保持屏幕常亮席赂,在釋放的時(shí)候去影響屏幕。

PowerManager pm = (PowerManager) BaseApp.gContext.getSystemService(Context.POWER_SERVICE);
                    mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, wl_tag);
                    mWakeLock.setReferenceCounted(false);
  • setReferenceCounted()設(shè)置計(jì)數(shù)鎖和非計(jì)數(shù)鎖时迫;wakelock分為計(jì)數(shù)鎖和非計(jì)數(shù)鎖兩種:計(jì)數(shù)鎖是應(yīng)用調(diào)用一次acquire申請(qǐng)必定會(huì)對(duì)應(yīng)一個(gè)release來(lái)釋放颅停;非計(jì)數(shù)鎖應(yīng)用調(diào)用多次acquire,調(diào)用一次release就可釋放前面acquire的鎖掠拳。在申請(qǐng)wakelock時(shí)默認(rèn)申請(qǐng)的是計(jì)數(shù)鎖癞揉。
  • PowerManager.SCREEN_BRIGHT_WAKE_LOCK


  • PowerManager.ON_AFTER_RELEASE

暫時(shí)使用了這兩個(gè)flag,第一個(gè)實(shí)現(xiàn)在lock釋放的時(shí)候關(guān)閉屏幕,第二個(gè)實(shí)現(xiàn)在lock釋放的時(shí)候留出短暫的緩沖期喊熟,為了防止lock時(shí)間切換到時(shí)候屏幕閃爍柏肪。

      if (timeout != -1) {
            getWakeLock().acquire(timeout);
        } else {
            getWakeLock().acquire();
        }

PowerManagerService有加鎖和解鎖兩種狀態(tài),加鎖有兩種方式:

  • 第一種是永久的鎖住芥牌,這樣的鎖除非顯式的放開(kāi)烦味,否則是不會(huì)解鎖的,所以這種鎖用起來(lái)要非常的小心(默認(rèn))壁拉。
  • 第二種鎖是超時(shí)鎖谬俄,這種鎖會(huì)在鎖住后一段時(shí)間解鎖。
    ??對(duì)了弃理,還有權(quán)限:
 <uses-permission android:name="android.permission.WAKE_LOCK" />

需要注意的是溃论,這個(gè)鎖的時(shí)間不會(huì)自動(dòng)刷新,所以使用了很low的方法痘昌,在activity層攔截事件中手動(dòng)刷新了這個(gè)時(shí)間钥勋。。辆苔。算灸。。暫時(shí)是這樣的姑子,后續(xù)研究出更好的方法會(huì)更新文章乎婿。。街佑。谢翎。

現(xiàn)在只是為了實(shí)現(xiàn)需求,后續(xù)會(huì)繼續(xù)研究PowerManager沐旨。
最后森逮,粘一下代碼
項(xiàng)目地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市磁携,隨后出現(xiàn)的幾起案子褒侧,更是在濱河造成了極大的恐慌,老刑警劉巖谊迄,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闷供,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡统诺,警方通過(guò)查閱死者的電腦和手機(jī)歪脏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)粮呢,“玉大人婿失,你說(shuō)我怎么就攤上這事钞艇。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)染服。 經(jīng)常有香客問(wèn)我,道長(zhǎng)飘弧,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任砚著,我火速辦了婚禮眯牧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赖草。我一直安慰自己,他們只是感情好剪个,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布秧骑。 她就那樣靜靜地躺著,像睡著了一般扣囊。 火紅的嫁衣襯著肌膚如雪乎折。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,365評(píng)論 1 302
  • 那天侵歇,我揣著相機(jī)與錄音骂澄,去河邊找鬼。 笑死惕虑,一個(gè)胖子當(dāng)著我的面吹牛坟冲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播溃蔫,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼健提,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了伟叛?” 一聲冷哼從身側(cè)響起私痹,我...
    開(kāi)封第一講書(shū)人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎统刮,沒(méi)想到半個(gè)月后紊遵,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡侥蒙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年暗膜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辉哥。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡桦山,死狀恐怖攒射,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情恒水,我是刑警寧澤会放,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站钉凌,受9級(jí)特大地震影響咧最,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜御雕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一矢沿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酸纲,春花似錦捣鲸、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至疾嗅,卻和暖如春外厂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背代承。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工汁蝶, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人论悴。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓掖棉,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親膀估。 傳聞我的和親對(duì)象是個(gè)殘疾皇子啊片,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容