2016-12-13 8 views
2

Я слишком много искал здесь при переполнении стека, но я не могу найти решение моей проблемы.Ошибка MediaPlayer (1, -1004)

Я получаю сообщение Media Player с кодом 'MEDIA_ERROR_IO' -1004.

Я передаю аудио с сервера, все работает хорошо. песня подготовлена, а затем начинается с onPrepared() метод.

Теперь проблема возникает, когда происходит входящий звонок, и телефон начинает звонить, и я приостанавливаю песню, вызывая mediaPlayer.pause() из моего класса BroadcastReceiver.

, когда телефонный звонок заканчивается запустить звук снова, вызвав mediaPlayer.start()

аудио начинается, но через 2-3 секунды он останавливается с ошибкой, которая является MediaPlayer ошибки (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; 

Теперь Что я должен делать?

Для обработки ошибок, генерируемых медиаплеером во время выполнения, вы должны реализовать Слушатель ошибок. Вы можете справиться с ошибкой, в которой когда-либо, как вам нравится, например, перезапустите плеер.

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; 
      } 
     }); 
Смежные вопросы