2012-10-28 63 views
0

我實施了一個wakelock以避免在屏幕熄滅時停止MediaPlayer(僅播放本地文件)。由於我不想耗盡電池,我嘗試了PARTIAL_WAKE_LOCK。但它沒有效果:屏幕殺死我的玩家。 FULL_WAKE_LOCK工作正常,但屏幕保持,如預期的那樣,耗盡電池......PARTIAL_WAKE_LOCK殺死我的媒體播放器

我在做什麼錯?

謝謝! L.

+0

你運行你的Wi-Fi或應用程序?如果在WiFi上,您需要獲得WifiLock。 –

+0

沒有WiFi和我的應用程序不需要數據連接。它是100%離線運行。 –

回答

-1

喚醒鎖定是爲了確保設備不會進入待機狀態。

你想要的是偵聽Intent.ACTION_SCREEN_OFF,告訴你,現在的屏幕是關閉

+0

不是真的(也許我還不夠清楚?)。我正好想要阻止設備進入待機狀態,以便繼續播放音樂。 –

+0

你應該檢查你的onPause和onStop,因爲那是唯一發生的事情,如果你持有部分喚醒鎖並且某人按下電源按鈕 – NikkyD

+0

我不明白。我只想防止設備待機,但不是屏幕。我希望音樂能夠繼續播放,但屏幕會在平時超時後關閉(我並不真正關心電源按鈕,那很好)。我不想到達onPause方法,因爲我不想讓電話暫停。這是一個喚醒(如你所說)。換句話說:爲什麼即使使用PARTIAL_WAKE_LOCK,手機也會癱瘓?根據http://developer.android.com/reference/android/os/PowerManager.html這不應該發生,不? –

3

看起來你正在使用錯誤的目的之後鎖定。根據您的解釋,我可以理解:您需要在屏幕熄滅時繼續播放:

要做到這一點 - 我會建議您嘗試以下邏輯。

  • 嘗試在服務運行(不活動)玩家
  • 開始startForeground方法的服務(這需要你有一個通知,以及)
  • 使用Messenger的溝通你的活動和服務之間。

但是喚醒鎖可能會得心應手;因爲這可能有助於未來處理音頻口吃問題。我不太確定這部分,因爲我自己還沒有嘗試將喚醒鎖作爲解決問題的解決方案。我不是一個專業/商業程序員,而是一個需要設計解決方案,開發並自我使用的特殊開發人員,所以我的解決方案可能不是100%專業的方法,但我是確保它的工作)

好運和快樂編碼 - S.Mani

+0

是的,我正在嘗試將該播放器作爲服務實現。比我想象的更難,但對學習很有幫助。不過,我不明白爲什麼部分喚醒鎖不起作用......謝謝! –

+0

局部喚醒鎖最適合於服務。據我所知,一個活動不能保持部分喚醒鎖,並且您肯定不希望屏幕上保持一個音頻應用程序,只是爲了保持喚醒鎖。目前還不清楚startForeground是否有必要,如果您確實使用了startForeground,爲什麼還需要一個喚醒鎖? – iHearGeoff