如何检测Android VideoView播放中断?

时间:2011-08-05 16:33:19

标签: android networking interrupt android-videoview

我有一个VideoView,其中定义了所有监听器,我正在尝试跟踪在播放期间网络连接终止时该怎么做。

目前视频已冻结,并且未调用OnErrorListener。恢复的唯一方法是按后退按钮。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

解决方法可能是将视频文件下载到SD卡上(例如:使用URLConnection和InputStream)。我确信您可以在下载过程中检测到网络连接错误。下载完成后,VideoView可以直接从您的本地SD卡播放视频文件。唯一的问题是VideoView必须等待整个视频下载才能播放。

答案 1 :(得分:0)

我通过设置一个检查连接的计时器来解决这个问题。

公共类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 "";
}

}