我有一個ListView,當我點擊一行時,我會播放聲音。Android上的MediaPlayer啓動和停止
如果聲音在播放,我點擊另一行,第一個應該停止,第二個開始。
如果我不釋放MediaPlayer,應用程序會崩潰,但會延遲執行下一個聲音。
我在做什麼錯了?這是我的代碼:
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
if(!isPlaying){
mPlayer = MediaPlayer.create(this,soundid[position]);
mPlayer.start();
isPlaying = true; // reproducir es true
}else{
isPlaying = false;
mPlayer.stop();
mPlayer.reset();
mPlayer = MediaPlayer.create(this,soundid[position]);
mPlayer.start();
isPlaying = true;
}
mPlayer.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer mPlayer) {
mPlayer.release();
isPlaying = false;
}
});
}
爲什麼不在else分支中釋放它呢? –
我已更正了代碼。問題在於釋放需要很長時間並且會降低下一個聲音的重現。 – karse23
mPlayer在哪裏聲明?在活動水平? – RvdK