У меня проблемы с получением MediaPlayer
устойчивости при потоковой передаче с HTTP-адреса.
Если я начинаю проигрывать файл, но затем теряю соединение (например, режим полета), MediaPlayer#OnErrorListener
генерирует what=1, extra=-17
, а вскоре после этого what=-38, extra=0
.
Нет никакой документации, которую я могу видеть в API, что это означает, кроме extra "Как правило, зависит от реализации". Я использую HTC Hero (ну, это G2 Touch от T-Mobile Великобритании).
Получают ли другие люди такие же значения, и безопасно ли перехватывать эти значения как означающие, что соединение разорвано?
Как я могу возобновить работу, когда снова появится соединение? (сохранить текущий поиск в настройках и повторять каждые 5 секунд?)
Как узнать, когда устройство решило начать воспроизведение того, что оно буферизировало - есть ли обратный вызов (кроме опроса isPlaying()
)?
Кроме того, я не совсем уверен, что предоставляет onBufferingUpdate
. Я использую 40-минутный подкаст MP3 (64kbps bitrate)
- буферизация идет 1%, 2%, 3%. Когда я стремлюсь к 30 минутам, он показывает 75%, затем, когда я возвращаюсь к началу, к 5% - какой смысл в этом обратном вызове, кроме того, что он показывает приблизительно то, что кэшируется?
Наконец - есть ли способ передать то, что передается в MP3
?