媒体播放器在广播意图停止之后不会停止播放音频文件



我正在使用Android MediaPlayer类来从运行服务类播放MP3文件。如果用户停止查看五个活动中的任何一个,我想阻止音乐播放器播放。

我通过在此处使用代码将广播意图发送给拥有MediaPlayer的服务。这样,当服务内部的广播接收器接收到此意图时,它将调用player.pape()方法以阻止音乐播放。

但是它不起作用。我在查看其中一项活动时启动了玩家,然后接下来我离开了应用程序,并查看了其他应用程序,例如Android日历应用程序。音乐不会停止并继续播放。

关于如何解决此问题的任何想法?

   public class Monitor extends Application {
  @Override
   public void onCreate(){
   super.onCreate();
   if(activityVisible==false){
        Intent intent = new Intent();
        intent.setAction("com.sample.test");
        sendBroadcast(intent);
   }
   }

 public static boolean isActivityVisible() {
        return activityVisible;
      }  
      public static void activityResumed() {
        activityVisible = true;
      }
      public static void activityPaused() {
        activityVisible = false;
      }
      private static boolean activityVisible;
   }

这是我在其他5个活动中投入的;

  @Override
  protected void onResume() {
    super.onResume();
    Monitior.activityResumed();
  }
  @Override
  protected void onPause() {
     super.onPause();
    Monitor.activityPaused();
  }

Application类中的onCreate在创建每个活动时未调用。这是您的意图吗?

因此,您的监视器会将activityVisible更改为false,但是从代码中,您没有在此boolean上发挥任何作用。

一种解决方案是创建一个MonitorActivity并使您的所有活动扩展了这一点。然后,在MonitorActivityonCreate中,您将发送广播以启动服务,并在onPause中停止服务。是的,这将在活动之间暂停,因此您可以将服务是否应真正停止,可以进行3秒的保险丝。

最新更新