2013-01-02 84 views
4

我正在開發一個具有多個活動的應用程序。用戶可以導航到任何活動。我從第一主要活動開始播放背景音樂,並在整個應用程序中繼續播放。現在我希望每當用戶按HOME鍵時,媒體播放器應該暫停播放,當用戶回到應用程序時,它會再次開始播放。首先,我將媒體播放器設置爲靜態,並在onPause()中暫停音樂並在onResume()中播放,但在活動之間切換時會創建一個混亂。我希望你明白我的觀點。任何想法如何當HOME鍵被按下時暫停播放並在用戶回來時再次播放?Android按住Home鍵時停止背景音樂

+0

onKeyPressed呢?並使用while循環和布爾開關檢查'ifPressedHome'創建異步任務 - >然後它將能夠運行'stopPlay()'並禁用任務 – deadfish

+0

對不起,我沒有明白你的觀點。你能否詳細說明一下? –

+0

沒有它的第一個活動,這是應用程序的入口和出口點。 –

回答

2

看看Activity.onUserLeaveHint() http://developer.android.com/reference/android/app/Activity.html#onUserLeaveHint()

調用作爲活動週期的一部分,當活動即將 去到後臺,成爲用戶選擇的結果。例如,當 用戶按Home鍵時,onUserLeaveHint()將被調用,但 當來電呼叫導致呼叫中的Activity被自動帶到前臺 時,onUserLeaveHint()將不會被呼叫 活動被中斷。在被調用的情況下, 在活動的onPause()回調之前調用此方法。

0

我有同樣的問題,並以醜陋的方式解決它:有一個全球性的靜態球員。在一個活動的onPause中,它會調用玩家停止(但實際上並不停止),並在onResume調用中開始。 在播放器onStart中,我將音樂標記爲正在播放。在onStop中,我將音樂標記爲已停止,但並未實際停止。在停下來之後我醒來1秒鐘,如果在最後一秒沒有「startPlaying」,我會停止播放音樂。

我希望有更好的辦法。

+0

你是怎麼編碼的?我有同樣的問題 – Si8