MediaPlayer: состояние буфера для интернет-радио потока?
Я играю потоковое интернет-радио, используя MediaPlayer. Однако, похоже, буферизация занимает у меня около 10 секунд каждый раз, когда я начинаю воспроизводить поток. Есть ли способ, которым я могу показать:
- Прогресс, когда начинаешь играть? Например, индикатор в графическом интерфейсе
- Состояние буфера один раз проигрывается? (например, для предупреждения, когда буфер по какой-то причине работает всухую)
Я пытался с помощью setOnBufferingUpdateListener()
но, насколько я могу судить, это работает только для потоков, где продолжительность известна. (Так что неприменимо к интернет-радио, если я не ошибаюсь - его не уволили)
1 ответ
Реализует MediaPlayer.OnInfoListener, переопределяя метод onInfo, у вас есть действие для управления состоянием MediaPlayer следующим образом:
@Override
public boolean onInfo(MediaPlayer arg0, int what, int extra) {
Log.i(LOG_TAG, "MediaPlayer INFO code = " + what + " extra=" + extra);
if (what == MediaPlayer.MEDIA_INFO_BUFFERING_START) {
Log.d(LOG_TAG, "Start buffering...");
} else if (what == MediaPlayer.MEDIA_INFO_BUFFERING_END) {
Log.d(LOG_TAG, "End buffering...");
Log.d(LOG_TAG, "Start playing...");
}
return false;
}
Посмотрите на http://developer.android.com/reference/android/media/MediaPlayer.html другие действия;)