MediaPlayer: состояние буфера для интернет-радио потока?

Я играю потоковое интернет-радио, используя MediaPlayer. Однако, похоже, буферизация занимает у меня около 10 секунд каждый раз, когда я начинаю воспроизводить поток. Есть ли способ, которым я могу показать:

  1. Прогресс, когда начинаешь играть? Например, индикатор в графическом интерфейсе
  2. Состояние буфера один раз проигрывается? (например, для предупреждения, когда буфер по какой-то причине работает всухую)

Я пытался с помощью 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 другие действия;)

Другие вопросы по тегам