Ошибка 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()