2010-06-28 31 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(); 
} 
} 
相關問題