我司開發了一個APP, 叫「美樂時光」,簡單地說他是一個聽歌軟件; html
它有一個功能叫「定時啓動」,即早上(或你設定的時間)能夠定時啓動,而後放歌把你叫醒。 spa
這個功能中最麻煩的就是「點亮屏幕」和「解開屏幕鎖」。 orm
用GOOGLE一搜「」,文章一大堆,什麼PowerManager, KeyguardManager,代碼大同小異,可是我認真地試了,基本只能解開沒有鎖屏設置的手機(即按電源鍵就能夠解鎖的手機,連滑動解鎖都沒有的那種)。這有個屁用啊? htm
後來只得去研究Android鬧鐘的源碼?認認真真地讀啊讀,那個代碼寫得真是亂啊亂,我就一點一點地砍砍砍。。。 ci
一個上午過去了。。。 開發
最後終於找到了鬧鐘的祕密。 get
對於我這個APP的狀況,我只須要它定時放歌就行,不關心屏幕要不要解鎖。因此PowerManger && KeyguardManager什麼的,統統不須要。下面幾行代碼便可搞定: 源碼
1 | <b>// 要解鎖屏幕? |
2 | { |
3 | final Window win = getWindow(); |
4 | win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
5 | | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
6 | | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
7 | | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
8 | | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON); |
9 | }</b> |