Как я могу обнаружить прерывание в воспроизведении Android VideoView? - PullRequest
0 голосов
/ 05 августа 2011

У меня есть VideoView со всеми определенными прослушивателями, и я пытаюсь отследить, что делать, если сетевое соединение прерывается во время воспроизведения.

В настоящее время видео просто зависает, и OnErrorListener не вызывается.Единственный способ восстановиться - нажать кнопку «назад».

Есть идеи?

Ответы [ 2 ]

1 голос
/ 05 августа 2011

Обходной путь может заключаться в загрузке видеофайла на SD-карту (например: с URLConnection и InputStream). Я точно знаю, что вы могли обнаружить ошибку сетевого подключения во время этой загрузки. Затем, когда загрузка будет завершена, VideoView может воспроизвести видеофайл непосредственно с вашей локальной SD-карты. Единственная проблема с этим - VideoView должен ждать загрузки всего видео перед воспроизведением.

0 голосов
/ 25 августа 2011

Я решил эту проблему, настроив таймер, который проверяет подключение.

открытый класс CheckNetworkConnection расширяет AsyncTask {

private boolean networkIsAvailable() {
    ConnectivityManager connectivityManager 
          = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null;
}

@Override
protected String doInBackground(String... params) {
    while (vv.isPlaying()) {
        try {
            Thread.sleep(4000);
        } catch (InterruptedException e) {
            e.printStackTrace();
            return "";
        }
        if ( !networkIsAvailable()) {
            vv.stopPlayback();
            VideoTime.this.finish();                
        }
    }
    return "";
}

}

...