2011-10-01 77 views
0

我正在構建一個由多個活動組成的安卓遊戲。當應用程序運行時,一些背景音樂正在播放。背景音樂由多個循環組成,一個接一個播放。跨活動背景音樂/檢測應用程序是否活動

所以我的問題是如何檢測何時停止背景音樂。如果用戶退出應用程序,關閉屏幕或切換到另一個應用程序,並且應在用戶返回到遊戲時重新打開該應用程序,則音樂應該停止。

我目前的做法是通知一個SoundManager類,它跟蹤活動活動。每當新活動開始時(onResume)和每次活動結束時(onStop),SoundManager都會增加一個內部計數器。如果計數器爲0,則聲音停止,並且如果計數器> 0,則聲音開始(如果它尚未播放)。

此外,SoundManager監聽ACTION_SCREEN_OFF/ACTION_SCREEN_ON事件以根據屏幕狀態關閉/打開聲音。 除一種情況外,此方法運行良好:如果我有時會關閉屏幕(我有50%的機會說),聲音會再次啓動,因爲顯然onResume會在屏幕關閉之前激活的活動。我不知道爲什麼會發生。

所以我的問題是: - 是否有一種較脆弱的方法來知道何時停止背景聲音? - 或者是有解決屏幕開/關問題的解決方法。

感謝您的幫助!

回答

1

當我試圖在應用程序的第20次激活時顯示評級對話框時,我遇到過這樣的問題。不幸的是,Android沒有像iOS一樣的「applicationDidEnterBackground」,所以我嘗試過這種方式。 ()和onPause()(用於應用程序) 在每次活動中,我都忽略了方法onKeyDown(),當KeyEvent是「Home」時,我調用方法onPause()的自定義應用程序類。在我檢查過的每個活動的onPostResume方法中,應用程序是可見的(通過標誌),如果是的話,我已經調用了自定義應用程序類的onResume()方法。

正如我所看到的,你的方法更好。但也許它會幫助你或給出任何線索。

相關問題