Android MediaPlayer - 在任何给定时间只有一个实例?

时间:2010-06-28 00:10:28

标签: android audio android-activity media-player

我有一个音频播放器应用,其中有一个Main活动,显示3个音频样本网址。单击其中一个,它将转到详细信息活动,该活动具有播放和暂停按钮,以启动和暂停音频。

我的问题是,当我开始主要活动,然后点击音频1时,我点击播放详情活动。这将启动MediaPlayer并开始播放音频。当我回到主要活动时,音频仍在播放,这就是我想要的。现在,当我再次点击音频1,然后转到详细信息活动并再次点击播放时,似乎有一个新的MediaPlayer启动音频。所以我有两首曲目一起玩!

有没有办法在任何给定时间只能有一个MediaPlayer实例?

由于 克里斯

2 个答案:

答案 0 :(得分:1)

您应该考虑Singleton pattern。创建一个具有静态方法getMediaPlayer()的MyPlayer类,每次调用时返回相同的MediaPlayer实例。

答案 1 :(得分:0)

Singleton Class

public final class MySingleton extends Application {

     static MediaPlayer instance;

    public static MediaPlayer getInstance() {

        if (instance == null)
        {
            instance = new MediaPlayer();

        }


        return instance;
    }


}

适配器列表

在构造函数中初始化Singleton类一次

private static MediaPlayer mMediaPlayer = MySingleton.getInstance();

if (mMediaPlayer.isPlaying()) {
 try {
  mMediaPlayer.reset();
  mMediaPlayer.stop();

  mMediaPlayer.setDataSource(mainActivity, Uri.parse(songsarraylist.get(position).getPath()));
  mMediaPlayer.prepare();
  mMediaPlayer.start();




 } catch (Exception e) {
  Toast.makeText(mainActivity, "Catching", Toast.LENGTH_SHORT).show();
 }


} else {
 try {

  mMediaPlayer.setDataSource(mainActivity, Uri.parse(songsarraylist.get(position).getPath()));
  mMediaPlayer.prepare();
  mMediaPlayer.start();
 } catch (IOException e) {
  e.printStackTrace();
 }
}