Кто-нибудь знает, можно ли определить, когда 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.
Есть идеи? Спасибо, что прочитали.