Ошибка MediaPlayer: пауза, вызванная в состоянии 64
Я использую MediaPlayer
в моем Activity
.
Когда я нажимаю кнопку "Назад", я получаю эту ошибку:
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)
Код
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);
}
Если я использую mp.pause()
, он работает нормально. Почему?
Ответы
Ответ 1
Неправильно приостановить остановку MediaPlayer
, и в соответствии с этим сообщением об ошибке, которое звучит точно так же, как то, что вы делаете.
Я предлагаю изменить ваш onPause
таким образом, чтобы он не пытался приостановить остановленный MediaPlayer
.
Может быть:
if(mp!= null) {
if(mp.isPlaying()) mp.pause();
}
удаp >
Собственно, не делайте этого, я просто нашел это в документах:
Обратите внимание, что переход из состояния Started в состояние Paused и наоборот происходит асинхронно в движке проигрывателя. Может потребоваться некоторое время, прежде чем состояние будет обновлено при вызове isPlaying(),
Вы должны поддерживать переменную локально, чтобы проверить, что вы уже остановили MediaPlayer
, а затем проверите это для того, нужно ли вызывать pause()
.
Ответ 2
Я использовал метод паузы и поиска для reset игрока.
player.pause();
player.seekTo(0);
Ответ 3
Я пришел сюда искать ответы, хотя ответы выше были полезны в других вещах, они не решили мою проблему...
НО... Мне удалось решить проблему:
изменение
mediaPlayer.stop();
к
mediaPlayer.reset();
помог мне избавиться от error( -38 , 0 )
еще раз спасибо за указание проблемы:)
Ответ 4
После возникновения проблемы при запуске медиаплеера после его остановки,
я получил исключение, и mp смог начать снова,
то при замене mp.stop()
на mp.reset()
он отлично работал.
Ответ 5
Даже я столкнулся с аналогичной проблемой с той же ошибкой.
Я использовал mplayer.pause()
вместо mplayer.stop()