2015-07-15 6 views
2

Я пытаюсь создать приложение для Android, которое собирает множество удаленных ссылок на песни и воспроизводит их для пользователей. Приложение использует MediaPlayer от Android, и каждая ссылка на одну песню перенаправляется на URL-адрес Stream, который MediaPlayer обрабатывает и в конечном итоге проигрывает.Android - Обработка ошибок в MediaPlayer HTTP

Однако некоторые из этих ссылок на ссылки фактически перенаправляют и предоставляют ошибку HTTP 40, поскольку они недоступны, и я хочу знать, есть ли способ напрямую обрабатывать/улавливать эти ошибки HTTP мгновенно. В настоящее время, что MediaPlayer делает сигнал оттуда:

error (1, -2147483648)

... после того, как он пытается соединиться с источником данных 10 раз, что я могу затем поймать, чтобы уведомить пользователя о том, что песня недоступна.

Конечно, если пользователю ждать 10 повторений, требуется слишком много времени, и поэтому я хочу знать, есть ли способ поймать самый первый момент, когда ошибка HTTP возникает из MediaPlayer, без необходимости проверять URL перед отправкой на MediaPlayer или с необходимостью взломать и управлять исключениями с помощью сетевого прокси, подключенного к MediaPlayer.

Исключение дается MediaPlayer 10 раз:

07-16 05:16:30.549: E/MediaHTTPConnection(16698): IOException: java.io.IOException: Http Response: 404

+0

Этот список из 10 исключений отображается только в logcat, но приложение получает только одно исключение в обратном вызове MediaPlayer.OnErrorListener? Или все они доставляются слушателю с ошибкой? – Whome

+0

Этот список из 10 исключений отображается только в Logcat, и само приложение уведомляется только о 10-м (последнем) исключении через MediaPlayer.OnErrorListener. – Dranithix

ответ

0

Если ошибка появляется в 10 раз, и каждый раз, когда ошибка потушить, то я не понимаю, почему простой пытаясь угадать петля улов не будет работать:

try { 
    // download URL 
} catch (IOException e) { 
    // presumably an exception is thrown the first time it gets 404 so put the error handling code here 
} 

Кроме того, возможно, я предлагаю использовать многопоточность для загрузки из URL-адресов, используя что-то вроде ExectutorService, который позволяет представить Runnable и запускать их одновременно (т. загружать задания для каждого видео, чтобы они загружались одновременно)

+1

Исключения, приведенные в Logcat, взяты из MediaHTTPConnection, который работает под платформой Android MediaPlayer. Только 10-е исключение появляется как обратный вызов из MediaPlayer.OnErrorListener, который затем я могу использовать, чтобы уведомить пользователя о том, что эта песня недоступна. – Dranithix

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