0

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

(a)播放记忆中的歌曲

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

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

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

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

所以我想要:

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

    有什么办法可以参考其他媒体播放器;检查它们是否处于活动状态;如果是,则阻止他们。

从模糊的角度来看,我认为这可以通过将 a 发送broadcastService活动 (a) 来完成,并在那里创建一个函数来监听它并停止播放器。

但这对我来说似乎有点粗鲁,而且我应该如何获得(a)中玩家的参考。

希望我已经消除了我的疑问。

请建议。

谢谢你

4

1 回答 1

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 对象池

于 2013-02-13T18:27:24.970 回答