2011-10-01 104 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()方法。

正如我所看到的,你的方法更好。但也许它会帮助你或给出任何线索。