2

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

我尝试使用此处的代码向拥有 MediaPlayer 的服务发送广播意图。这样,当服务内部的广播接收器接收到这个意图时,它将调用 player.pause() 方法来停止播放音乐。

但是它不起作用。我在查看其中一项活动时启动了播放器,然后我离开了应用程序并查看了其他一些应用程序,例如 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();
  }
4

1 回答 1

1

onCreateApplication创建每个活动时,不会调用类中的。这是你想要的吗?

因此,您的 Monitor 会将 更改activityVisible为 false,但是从您发布的代码中,没有任何事情发生在 this 上boolean

一种解决方案是创建一个MonitorActivity并让您的所有活动扩展它。然后,onCreateMonitorActivity将发送广播以启动服务并onPause停止服务。是的,这将在活动之间暂停,因此您可以在 3 秒内确定服务是否应该实际停止。

于 2012-12-19T11:24:27.510 回答