Как получить процент буферизации VideoView на Android

Мой код, как показано ниже:

Uri uri = Uri.parse(URL);
video.setVideoURI(uri);
video.start();

Я использую VideoView для воспроизведения потокового видео.
Видео — это VideoView.
И я хочу получить процент буферизации, например setOnBufferingUpdateListener в MediaPlayer.

MediaPlayer.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {
    @Override
    public void onBufferingUpdate(MediaPlayer mp, int percent) {
        //buffering is percent
    }
});

Как мне это сделать?


person brian    schedule 05.09.2012    source источник
comment
VideoView не предоставляет доступ к своему обернутому MediaPlayer или способу установки обратного вызова для буферизации прогресса, хотя внутри он использует и то, и другое. Как я это вижу, вы можете либо опросить значение, многократно вызывая getBufferPercentage() (не идеально), либо использовать отражение, чтобы получить экземпляр MediaPlayer и зарегистрировать свой собственный слушатель (тоже не идеально).   -  person MH.    schedule 05.09.2012
comment
Я добавил поток, который вызывает getBufferPercentage() каждую секунду, но возвращаемый процент действительно странный. Он не увеличивается, иногда уменьшается и никогда не превышает нескольких единиц %. Этот же поток работает на другом экзоплеере, так что вызовы правильные.   -  person ascallonisi    schedule 24.02.2015


Ответы (2)


Реализуйте этот метод для вашего VideoView:

public abstract void onBufferingUpdate (MediaPlayer mp, int percent)

mp — это MediaPlayer, к которому относится обновление.

Источник

Вы можете добавить индикатор выполнения перед тем, как начать загрузку видео, а затем продолжать обновлять его внутри этого метода. И как только буферизация будет завершена (в onPreparedListener), просто закройте индикатор выполнения.

person pixelscreen    schedule 05.09.2012
comment
Но мне не нужен индикатор прогресса, мне нужен только процент. - person brian; 05.09.2012
comment
Это неправильно. Реализация onBufferingUpdate в подклассе VideoView ничего не делает. - person pilcrowpipe; 09.12.2012

пусть ваша работа реализуется

Прослушиватель OnBufferingUpdate ...

и тогда вы получите:

  @Override
  public void onBufferingUpdate(MediaPlayer mp, int percent) {

  }

:=) удачи

person cV2    schedule 21.02.2013
comment
Я реализовал его в своей деятельности, но он больше не перезванивает. - person Rakki s; 13.03.2015
comment
Я задал отдельный вопрос по следующей ссылке stackoverflow.com/questions/29029597/ - person Rakki s; 18.03.2015
comment
хорошо, извините, в данный момент не в эту тему, возможно, есть какой-то способ настроить буфер для автоматического воспроизведения на каком-то %. удачи. - person cV2; 18.03.2015
comment
Нет, на самом деле я добавил функцию обратного вызова для прослушивателя буфера в этом коде, но она не вызывается, это мои проблемы ... я знаю, как начать воспроизведение после некоторого процента. - person Rakki s; 18.03.2015