Android按Home键时停止后台音乐播放

4
我正在开发一个包含多个活动的应用程序。用户可以导航到任何一个活动。我从第一个主要活动开始播放背景音乐,并让它在整个应用程序中保持播放状态。现在,当用户按下HOME键时,我希望媒体播放器暂停播放,当用户回到应用程序时,它会再次开始播放。起初,我将媒体播放器设置为静态,并在onPause()中暂停音乐,在onResume()中播放音乐,但在切换活动时会出现抖动。我希望你能理解我的意思。有什么办法可以在按下HOME键时暂停播放,并在用户回来时重新开始播放吗?

关于onKeyPressed怎么样?并创建一个带有while循环和布尔开关检查“ifPressedHome”的异步任务->然后它将能够运行“stopPlay()”并禁用任务。 - deadfish
抱歉,我没有理解您的意思。您能详细说明一下吗? - Khawar Raza
这是关于编程的内容。翻译为:它位于应用程序的入口和出口点,也就是第一个活动中。 - Khawar Raza
我们无法使用KeyEvent.KEYCODE_HOME来预测它,但我有禁用主页按钮点击事件的代码。 - itsrajesh4uguys
尝试在此链接中使用被接受的答案。对我有效。 - Athena
2个回答

2

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

当活动由于用户选择而要进入后台时,此方法作为活动生命周期的一部分调用。例如,当用户按Home键时,将调用onUserLeaveHint(),但是当来电导致呼叫中的活动自动被带到前台时,在被打断的活动上不会调用 onUserLeaveHint()。在调用此方法的情况下,它会在活动的onPause()回调之前立即调用。


0

我曾经遇到过同样的问题,并用一种不太优雅的方式解决了它:有一个全局静态播放器。在活动的onPause中,它调用播放器停止(但实际上并没有停止),在onResume中调用开始。在播放器的onStart中,我将音乐标记为正在播放。在onStop中,我将音乐标记为已停止,但实际上并没有停止它。在停止被调用后的1秒钟内醒来,如果最近一秒钟没有“startPlaying”,则停止音乐。

希望有更好的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接