我快速加载视频时能够很好地观看视频。但是当视频加载太长时,特别是当互联网连接太慢时,它会停止响应,其中按钮根本不起作用,按下后退按钮也不起作用。有时候,当我长时间观看视频时也会发生这种情况,例如大约25分钟。我的Logcat上没有消息。那么我应该做些什么来避免这种情况呢?谢谢你的帮助。
顺便说一句,我正在使用videoview播放视频。应用程序的最小targetVersion为11。 以下是我的代码
public class MyClass extends Fragment implements OnCompletionListener, OnErrorListener{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.movie, container, false);
myVideo = (VideoView)view.findViewById(R.id.myVideo);
myVideo.setOnErrorListener(this);
myVideo.setOnCompletionListener(this);
Thread background = new Thread(new Runnable() {
@Override
public void run() {
jsonReturn = Helpertool.GetValueFromWeb(parse_the_video_link_with_corresponding_video_id);
Message msgObj = handler.obtainMessage();
handler.sendMessage(msgObj);
}
@SuppressLint("HandlerLeak")
private final Handler handler = new Handler() {
public void handleMessage(Message msg) {
try {
JSONObject jObject = new JSONObject(jsonReturn);
id_of_video = jsonObject.getString("video_ID");
the_url_of_video_file = jsonObject.getString("video_file");
PlayVideo(the_url_of_video_file);
}
catch (JSONException e1) {
e1.printStackTrace();
}
}
};
});
background.start();
return view;
}
private void PlayVideo(String url) {
Uri video = Uri.parse(url);
myVideo.setVideoURI(video);
myVideo.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
myVideo.start();
}
}
}
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
Log.i("TAG", "END");
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
if (what == 100){
myVideo.stopPlayback();
PlayVideo(the_url_of_video_file);
}
return true;
}
}
我看过这个,但我没有回答。 MediaPlayer making APP not responding