Ошибка 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;
            }
        });
Другие вопросы по тегам