Android 如何修复Mediaplayer中的非法状态异常
我在McClick中创建了一个listview和MediaPlayerAndroid 如何修复Mediaplayer中的非法状态异常,android,android-mediaplayer,illegalstateexception,Android,Android Mediaplayer,Illegalstateexception,我在McClick中创建了一个listview和MediaPlayer listSongs.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Song s
listSongs.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Song song = mAdapter.getItem(position);
mPlayer = MediaPlayer.create(MainActivity.this, song.getmSongResourceId());
if (mPlayer != null) {
mPlayer.release();
}
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener () {
@Override
public void onCompletion(MediaPlayer mp) {
mPlayer.start();
mPlayer.pause();
controller.show(0);
}
});
mPlayer.start(); //error here
controller.show(0);
}
});
@Override
public void start() {
mPlayer.start();
}
@Override
protected void onStop() {
super.onStop();
mPlayer.pause();
controller.hide();
}
java:432是mPlayer.start()代码>。
什么是非法状态异常,如何修复?你可能会说我的帖子是重复的,但我不知道如何将it解决方案应用到我的代码中。试试看
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener () {
@Override
public void onCompletion(MediaPlayer mp) {
mp.start();
mp.pause();
controller.show(0);
}
});
您应该在完成后调用release()
,而不是在start()
@bwt之前,您的意思是在onCompletion方法中?一旦您知道您将不再使用它。基本上,一旦mediaplayer实例发布,您就无法对其执行任何操作。为什么要修复问题?同样的问题
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener () {
@Override
public void onCompletion(MediaPlayer mp) {
mp.start();
mp.pause();
controller.show(0);
}
});