我有一个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