Android:如何阻止其他活跃的媒体播放器?

时间:2013-02-13 18:17:11

标签: android android-mediaplayer

我正在尝试创建一个音乐播放器。我的申请有2名球员 -

(a)播放内存中的歌曲

(b)使用网址播放在线音乐流

我的应用的主页/默认活动是(a)。对于玩家(b),有一项单独的活动。

问题是当用户按下活动(b)中的播放按钮播放URL流时,播放内存中的曲目。

似乎来自活动(a)的MediaPlayer仍处于活动状态。

所以我想:

  • 如果用户按下播放按钮,则所有其他媒体播放器都会停止。

    有没有办法获得其他媒体播放器的参考;检查它们是否有效;如果是,那就停止它们。

从模糊的角度来看,我认为这可以通过向broadcast活动(a)发送Service来完成,并在那里制作一个能够听取并停止播放器的功能。< / p>

但对我而言似乎有点粗野。我应该如何在(a)中获得玩家的参考。

希望我已经清除了我的怀疑。

请建议。

谢谢

1 个答案:

答案 0 :(得分:5)

您可以在项目中创建一个类,并将其命名为MediaPlayerRegistry,您可以在其中存储对当前使用的每个mediaPlayer对象的引用。并在您的应用中的任何位置访问它们以停止/释放/重播它们。它看起来像这样:

public class MediaPlayerRegistry {
      public static List<MediaPlayer> mList = new ArrayList<MediaPlayer>();
}

然后,您可以通过任何活动致电:

MediaPlayerRegistry.mList.put(MediaPlayer mPlayer);

将其添加到您的注册表中...当您想要释放它时,停止任何正在运行的对象。

for ( MediaPlayer player : MediaPlayerRegistry.mList) {
if (player != null && player.isplaying() {
      player.release();
}
}

将其视为您自己的MediaPlayer对象池