Определение буферизации VideoVIew

Кто-нибудь знает, можно ли определить, когда VideoView буферизуется?

Я хочу показать ProgressDialog, когда видео буферизуется.

До сих пор я пытался использовать OnPreparedListener, но это работает только при первой загрузке видео. Если видео проигрывается и пользователь перемещает полосу скраб-бара в другую точку, видео все еще "готово", хотя оно буферизуется.

Я также попробовал (я знаю, что это ужасно) AsyncThread, который просто занят ожиданием isPlaying():

private class BufferTask extends AsyncTask<Void, Void, Void> {

  protected Void doInBackground(Void...voids) {
    final VideoView videoView = (VideoView)findViewById(R.id.video);
    while (!videoView.isPlaying()) { }
    return null;
  }

 protected void onPostExecute(Void v) {
     // Hide the dialog here...
 }
}

Это не работает, потому что как только вы вызываете start(), VideoView, кажется, считается играющим, даже если он буферизован.

Единственное решение, о котором я могу думать, это создание пользовательского класса типа VideoView, чтобы я мог получить доступ к его экземпляру MediaPlayer.

Есть идеи? Спасибо, что прочитали.

15
задан tonyc 23 October 2011 в 15:53
поделиться