Android 在活动之间播放MediaPlayer音频,但在背景失去焦点并恢复时暂停/恢复?

Android 在活动之间播放MediaPlayer音频,但在背景失去焦点并恢复时暂停/恢复?,android,android-mediaplayer,Android,Android Mediaplayer,我花了几乎一整天的时间试图为一个特定的MediaPlayer问题找到解决方案。我希望当用户在我的应用程序中切换活动时,我的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();   
   }

这听起来很完美,我来查一查。非常感谢!