Подтвердить что ты не робот

Коды ошибок Android MediaPlayer?

Я борюсь за то, чтобы получить прямой радиопоток для работы на Android. Я использую класс MediaPlayer и просто устанавливаю URL-адрес и воспроизвожу его. Он отлично работает по большей части, но через 5-30 минут он неизбежно умирает. На 2.1 телефонах (точнее, герой) я получаю этот выход журнала

W/MediaPlayer( 7919): info/warning (1, 26)
I/MediaPlayer( 7919): Info (1,26)
I/MediaStreamService( 7919): mPlayer info code:1  extra:26
E/MediaPlayer( 7919): error (1, -11)
E/MediaPlayer( 7919): Error (1,-11)

Где MediaStreamService - моя служба, содержащая MediaPlayer, выход поступает из OnInfoListener

На телефонах 2.2 я не получаю обратный вызов OnInfoListener когда-либо, поток просто умирает. Но я вижу это в logcat

E/HTTPStream( 1020): recv failed, errno = 11 (Try again)
E/HTTPDataSource( 1020): retrying connection failed

Кажется, безупречно работает на моем телефоне 1.6, несмотря на постоянный спам logcat

E/PlayerDriver( 82): Invalid percentage value <big growing number>

Мой вопрос: что означают коды ошибок (1, 26)? Что вызывает сбой моего медиаплеера? Является ли проблема 2.1 проблемой, связанной с проблемой 2.2? Благодаря, Натан

Изменить: я искал исходный код OnInfoListener и нашел public static final int MEDIA_INFO_UNKNOWN = 1; Я не уверен, что это значит, и не может найти, где хранятся эти дополнения. Любое понимание того, что означает информация о медиа? или то, что это означает 26, будет очень оценено.

4b9b3361

Ответ 1

Мой вопрос в том, что означают коды ошибок (1, 26)?

  • 26 означает PVMFInfoErrorHandlingStart, только индикация ошибки

Ошибка равна -11, что означает PVMFErrTimeout. Вы можете проверить файлы определения здесь текст ссылки

Ответ 2

Возможно, данные RDS? Вы задаете размер буфера вручную?

Ответ 3

Чтобы начать воспроизведение, нужно вызвать start(). После успешного запуска start() объект MediaPlayer находится в состоянии Started. isPlaying() можно вызвать, чтобы проверить, находится ли объект MediaPlayer в состоянии Started.

В состоянии "Старт" внутренний движок игрока вызывает пользователя, который был вызван методом обратного вызова OnBufferingUpdateListener.onBufferingUpdate(), если ранее зарегистрированный OnBufferingUpdateListener был зарегистрирован через setOnBufferingUpdateListener (OnBufferingUpdateListener). Этот обратный вызов позволяет приложениям отслеживать состояние буферизации при потоковой передаче аудио/видео.

Вызов start() не влияет на объект MediaPlayer, который уже находится в состоянии Started.

Может быть, это часть ответа.