2010-06-28 62 views
2

我有一个音频播放器应用程序,其中有一项主要活动显示3个音频样本网址。点击其中一个,它将进入一个具有播放和暂停按钮的细节活动,以启动和暂停音频。Android MediaPlayer - 在任何特定时间只有一个实例?

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

有没有一种方法可以让我在任何时候只有一个MediaPlayer实例?

感谢 克里斯

回答

1

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

0

Singleton类

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(); 
} 
} 
相关问题