交叉活动背景音乐/检测应用程序是否处于活动状态

时间:2011-10-01 10:56:23

标签: android

我正在构建一个由几个活动组成的安卓游戏。当应用程序运行时,正在播放一些背景音乐。背景音乐由几个循环组成,一个接一个地播放。

所以我的问题是如何检测何时停止背景音乐。如果用户退出应用程序,关闭屏幕或切换到另一个应用程序,音乐应该停止,当用户返回我的游戏时应该重新打开它。

我目前的方法是通知一个跟踪活动活动的SoundManager类。每次新活动开始时(onResume)以及每次活动结束时(onStop),SoundManager都会增加内部计数器。如果计数器为0,则声音停止并且如果计数器> 0声音开始(如果它还没有播放)。

此外,SoundManager会侦听ACTION_SCREEN_OFF / ACTION_SCREEN_ON事件,以根据屏幕状态关闭/打开声音。 除了一种情况之外,这种方法效果很好:如果我有时会关闭屏幕(我说有50%的可能性)声音会再次开始,因为在关闭屏幕之前活动的活动显然会调用onResume。我想知道为什么会这样。

所以我的问题是: - 是否有一种不太脆弱的方法来知道何时停止背景声音? - 或是否有屏幕开/关问题的解决方法。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

当我试图在第20次激活应用程序时显示评级对话框时,我遇到了这样的问题。不幸的是,Android没有类似iOS的“applicationDidEnterBackground”,所以我试过这种方式。

我扩展了Application类并添加了onResume()和onPause()方法(用于应用程序) 在每个活动中,我都重写了onKeyDown()方法,当KeyEvent是“Home”时,我调用了自定义应用程序类的方法onPause()。在我检查的每个活动的onPostResume方法中,应用程序是否可见(通过标志),如果是,我调用自定义应用程序类的方法onResume()。

我可以看到,你的方法更好。但也许它会帮助你或提供任何线索。