I am using a MediaPlayer
in my Activity
.
When I hit the back button, I get this error:
09-20 19:44:16.540: E/MediaPlayer(1822): pause called in state 64
09-20 19:44:16.540: E/MediaPlayer(1822): error (-38, 0)
Code
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
if (mp!= null && mp.isPlaying()) {
mp.stop();
}
Intent intentstart = new Intent(X.this, Y.class);
intentstart.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intentstart);
}
return super.onKeyDown(keyCode, event);
}
If I use mp.pause()
, it's working fine. Why?
It's illegal to pause a stopped MediaPlayer
, and according to that error message that sounds exactly like what you're doing.
I suggest changing your onPause
such that it does not try to pause the stopped MediaPlayer
.
Perhaps:
if(mp!= null) {
if(mp.isPlaying()) mp.pause();
}
Actually don't do this, I just found this in the docs:
Note that the transition from the Started state to the Paused state and vice versa happens asynchronously in the player engine. It may take some time before the state is updated in calls to isPlaying(),
You should maintain a variable locally to check if you've already stopped the MediaPlayer
, and then test that for whether or not you should call pause()
.
I used pause and seekto method to reset the player.
player.pause();
player.seekTo(0);
I have come here looking for answers, though the responses above were useful in other things, they did not solve my problem...
BUT ... I managed to fix the problem:
changing
mediaPlayer.stop();
to
mediaPlayer.reset();
helped me get rid off the error( -38 , 0 )
thanks again for pointing out the problem :)
After facing an issue in starting the media player after stopping it,
i got an exception and mp was an able to start again,
then when replacing mp.stop()
with mp.reset()
it worked perfectly.
Even I've faced the similar problem with same error.
I used mplayer.pause()
instead of mplayer.stop()