すべてのリスナーが定義されたVideoViewを持っており、再生中にネットワーク接続が終了した場合の対処方法を追跡しようとしています。Android VideoView再生の中断を検出するにはどうすればよいですか?
現在、ビデオはフリーズし、OnErrorListenerは呼び出されません。回復する唯一の方法は、戻るボタンを押すことです。
アイデア?
すべてのリスナーが定義されたVideoViewを持っており、再生中にネットワーク接続が終了した場合の対処方法を追跡しようとしています。Android VideoView再生の中断を検出するにはどうすればよいですか?
現在、ビデオはフリーズし、OnErrorListenerは呼び出されません。回復する唯一の方法は、戻るボタンを押すことです。
アイデア?
これは、接続性をチェックするタイマーを設定することでこれを解決しました。
パブリッククラスCheckNetworkConnectionは{
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 "";
}
}
AsyncTaskを拡張しますビデオファイルをsdcard(例:URLConnectionおよびInputStreamを使用)にダウンロードすることで回避できます。このダウンロード中にネットワーク接続エラーが検出されたことを確認しています。その後、ダウンロードが完了すると、VideoViewはローカルのSDカードからビデオファイルを直接再生できます。これに関する唯一の問題は、VideoViewは再生前にビデオ全体がダウンロードされるまで待つ必要があることです。