2015-06-11 5 views
2

Я реализовал службу для MediaPlayer, чтобы продолжить игру даже после минимизации приложения. Проблема в том, когда MediaPlayer не удается воспроизвести песню (например, файл не существует или путь источник MediaPlayer неправильно) он выдает общую ошибку,Обработка исключений MediaPlayer от опрокидывания бесконечных ошибок

Error (-38,0) start called in state 0 

Это одна продолжает работать в бесконечном цикле и так ИТС фоновое обслуживание, поэтому трудно предотвратить это происшествие. В этом сценарии я хочу принудительно закрыть MediaPlayer и подождать, пока MediaPlayer не начнет играть другую песню.

Я уже пробовал,

if (mp! = null && mp.isPlaying()) { 
     mp.release(); 
} 

Но это не останавливает MediaPlayer бросать ошибки после того, как получаю исключение. Я хотел бы знать, какая была бы лучшая практика для предотвращения такого исключения. Любая помощь была бы весьма признательна.

ответ

2

Вы можете обрабатывать ошибку, используя onErrorListener на вашем MediaPlayer, как

mp.setOnErrorListener(new OnErrorListener() { 

    @Override 
    public boolean onError(MediaPlayer mp, int what, int extra) { 
     // handle your error here like exit media player or show message 
     or move to next song 

     return true; 
    } 
}); 

Здесь, главное, чтобы return true, если вы return false то ошибки не будет обрабатываться вами.

+1

Я отвечу на этот ответ. Возвращение «true» из OnErrorListener() делало трюк. Огромное спасибо. –

Смежные вопросы