Ошибка MediaPlayer (1, -1004)
Я слишком много искал здесь из-за переполнения стека, но не могу найти решение своей проблемы.
Я получаю ошибку медиаплеера с именем "MEDIA_ERROR_IO" с кодом -1004.
Я потоковое аудио с сервера все работает хорошо. Песня подготовлена и затем запускается в методе onPrepared().
Теперь проблема возникает, когда поступает входящий звонок, и телефон начинает звонить, и я приостанавливаю песню, вызывая mediaPlayer.pause() из моего класса BroadcastReceiver.
когда телефонный звонок заканчивается, снова запустите аудио, вызвав mediaPlayer.start()
звук начинается, но через 2-3 секунды он останавливается с ошибкой, которая является ошибкой Media Player (1, -1004).
Что мне теперь делать?
Любая Помощь заметна.
Спасибо.
1 ответ
звук начинается, но через 2-3 секунды он останавливается с ошибкой, которая является ошибкой MediaPlayer (1, -1004).
Во-первых, давайте поймем, что означает ошибка (1, -1004). -1004 - код ошибки ввода-вывода. Ниже ссылка из исходного кода MediaPlayer.java.
/** File or network related operation errors. */
public static final int MEDIA_ERROR_IO = -1004;
Этот тип ошибки возникает, если по какой-либо причине медиаплеер не может подключиться к серверу из-за проблем с сетью. В этом случае это может быть плохое подключение к Интернету или какая-либо другая причина, связанная с сетью, из-за которой медиаплеер не смог подключиться к серверу. Есть несколько других похожих кодов ошибок, которые медиаплеер может выдать как тайм-ауты или сервер умер:
/** Some operation takes too long to complete, usually more than 3-5 seconds. */
public static final int MEDIA_ERROR_TIMED_OUT = -110;
/** Media server died.*/
public static final int MEDIA_ERROR_SERVER_DIED = 100;
Что мне теперь делать?
Для обработки ошибок, сгенерированных медиаплеером во время выполнения, вы должны реализовать Error Listener. Вы можете обработать ошибку любым способом, например, перезапустить плеер.
mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
switch(extra){
case MediaPlayer.MEDIA_ERROR_SERVER_DIED:
// Do Something
// eg. reset the media player and restart
break;
case MediaPlayer.MEDIA_ERROR_IO:
// Do Something
// eg. Show dialog to user indicating bad connectivity
// or attempt to restart the player
break;
case MediaPlayer.MEDIA_ERROR_TIMED_OUT:
//Do Something
//eg. Show dialog that there was error in connecting to the server
// or attempt some retries
break;
}
//You must always return true if you want the error listener to work
return true;
}
});