我正在尝试创建一个音乐播放器。我的申请有2名球员 -
(a)播放内存中的歌曲
(b)使用网址播放在线音乐流
我的应用的主页/默认活动是(a)。对于玩家(b),有一项单独的活动。
问题是当用户按下活动(b)中的播放按钮播放URL流时,播放内存中的曲目。
似乎来自活动(a)的MediaPlayer仍处于活动状态。
所以我想:
如果用户按下播放按钮,则所有其他媒体播放器都会停止。
有没有办法获得其他媒体播放器的参考;检查它们是否有效;如果是,那就停止它们。
从模糊的角度来看,我认为这可以通过向broadcast
活动(a)发送Service
来完成,并在那里制作一个能够听取并停止播放器的功能。< / p>
但对我而言似乎有点粗野。我应该如何在(a)中获得玩家的参考。
希望我已经清除了我的怀疑。
请建议。
谢谢
答案 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对象池