Android 安卓:如何阻止其他活动媒体播放器?

Android 安卓:如何阻止其他活动媒体播放器?,android,android-mediaplayer,Android,Android Mediaplayer,我正在尝试创建一个音乐播放器。我的应用程序有2个玩家- (a)播放记忆中的歌曲 (b)使用URL播放在线音乐流 我的应用程序的主/默认活动是(a)。对于玩家(b)有一个单独的活动 问题是当用户按下活动(b)中的播放按钮来播放URL流时,内存中的曲目会被播放 活动(a)中的MediaPlayer似乎仍处于活动状态 所以我想: 如果用户按下播放按钮,所有其他媒体播放器都会停止 有没有办法获得其他媒体播放器的参考资料;检查它们是否处于活动状态;如果是,那么阻止他们 从一个模糊的角度来看,我认为这可

我正在尝试创建一个音乐播放器。我的应用程序有2个玩家-

(a)播放记忆中的歌曲

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

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

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

活动(a)中的MediaPlayer似乎仍处于活动状态

所以我想:

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

    有没有办法获得其他媒体播放器的参考资料;检查它们是否处于活动状态;如果是,那么阻止他们

从一个模糊的角度来看,我认为这可以通过向活动(a)的
服务发送
广播
来实现,并在那里创建一个函数来收听并停止播放器

但这对我来说似乎有点残忍&我应该如何获得(a)中玩家的参考

希望我已经澄清了我的疑问

请建议


谢谢

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

public class MediaPlayerRegistry {
      public static List<MediaPlayer> mList = new ArrayList<MediaPlayer>();
}
要将其添加到您的注册表。。。当您想要释放它时,请停止任何正在运行的对象

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

只需将其视为您自己的MediaPlayer对象池即可

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

public class MediaPlayerRegistry {
      public static List<MediaPlayer> mList = new ArrayList<MediaPlayer>();
}
要将其添加到您的注册表。。。当您想要释放它时,请停止任何正在运行的对象

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

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

谢谢,这是一个简单的解决方案。但是mediaPlayer可能没有播放,因此isplay()将返回false。如何解决?我做了一些回溯,发现了这个问题。谢谢你,这是一个简单的解决办法。但是mediaPlayer可能没有播放,因此isplay()将返回false。如何解决?我做了一些回溯,发现了这个问题。()