Android 在活动之间播放MediaPlayer音频,但在背景失去焦点并恢复时暂停/恢复?
我花了几乎一整天的时间试图为一个特定的MediaPlayer问题找到解决方案。我希望当用户在我的应用程序中切换活动时,我的MediaPlayer的音频保持播放,但在切换到另一个应用程序(主页按钮、最近的应用程序按钮等)时停止播放,并在应用程序再次聚焦时恢复播放。不过,我似乎找不到这样的解决方案。并不是说我不知道从哪里开始,而是我尝试过的每一个解决方案都很复杂,最终都不起作用。看起来我只需要应用程序能够告诉我什么时候活动停止了,什么时候活动停止了,什么时候活动停止了,什么时候应用程序失去了焦点Android 在活动之间播放MediaPlayer音频,但在背景失去焦点并恢复时暂停/恢复?,android,android-mediaplayer,Android,Android Mediaplayer,我花了几乎一整天的时间试图为一个特定的MediaPlayer问题找到解决方案。我希望当用户在我的应用程序中切换活动时,我的MediaPlayer的音频保持播放,但在切换到另一个应用程序(主页按钮、最近的应用程序按钮等)时停止播放,并在应用程序再次聚焦时恢复播放。不过,我似乎找不到这样的解决方案。并不是说我不知道从哪里开始,而是我尝试过的每一个解决方案都很复杂,最终都不起作用。看起来我只需要应用程序能够告诉我什么时候活动停止了,什么时候活动停止了,什么时候活动停止了,什么时候应用程序失去了焦点 我
我无法想象这样的情况是如此罕见,以至于没有一个简洁、优雅的解决方案来解决它。谁能帮我弄清楚吗?谢谢大家! 我认为在活动之间共享MediaPleer的最佳方式是android服务。 创建一个服务来容纳MediaPlayer。您的活动在onResume中绑定到服务,并在onPause中解除绑定。服务总是知道是否有人绑定到它。因此,如果没有人绑定(没有你的跑步活动),它将停止播放。
谷歌“android MediaPlayer from Service”您需要实现一个和一个监听所需操作和/或按键(主页按钮等)的意图过滤器。Android media player源代码可从下载。您要查看的两个类是和。一个服务可能是最好的选择。不管是否有服务,这通常表明您设计的程序没有它应有的健壮性。即使您确实创建了一个服务,您仍然需要知道何时暂停和何时恢复 我实现了一个简单的解决方案,它似乎适合我,但没有正确地重构整个应用程序以获得更好的应用程序引擎: 在您希望音乐开始的初始活动中启动mediaPlayer后: 在初始活动和每个后续活动中,创建一个成员变量: 私有布尔值mStopTheMusic=true 然后,在您希望音乐继续播放和/或停止的每个活动中,适当覆盖以下内容:(注意:当任何其他应用程序而不是您的应用程序出现在前台时,将正确停止。这些是停止音乐的适当时间) 无论何时,只要您以编程方式在当前活动的基础上启动新活动,请将mStopTheMusic设置为false,这样您的背景音乐就不会停止
@Override
public void onResume()
{
super.onResume();
mStopTheMusic = true;
if (!MusicPlayer.IsMusicPlaying())
MusicPlayer.StartMusic();
}
@Override
public void onPause()
{
super.onPause();
if (mStopTheMusic)
MusicPlayer.PauseMusic();
}
@Override
public void onBackPressed()
{
mStopTheMusic = false;
super.onBackPressed();
}
这听起来很完美,我来查一查。非常感谢!