私はインターネットからストリームを再生していますが、ネットワーク操作などの長いプロセスは UI スレッドで処理する必要がないため、AsyncTask を使用しています。メインスレッドでは、videoView のいくつかの仕様を設定しました。
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.videoview);
progressDialog = ProgressDialog.show(this, "Loading", "Please Wait", true, true);
videoView = (VideoView) findViewById(R.id.surface_view);
videoView.setVideoPath(ChannelPath);
videoView.setMediaController(new MediaController(this));
new LoadStream().execute("");
}
そして、AsyncTask でビデオを開始します。
private class LoadStream extends AsyncTask<String, Void, Void> {
protected Void doInBackground(String... urls) {
videoView.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
videoView.start();
progressDialog.dismiss();
}
});
return null;
}
}
AsyncTask に videoView に関連するすべてのパーツを配置しようとしましたが、AsyncTask に setVideoPath と setMediaController を設定できませんでした。どの部分が正確に時間のかかる部分なのか疑問に思っています。私のコードは大丈夫ですか?または、UI スレッドでまだ長いプロセスを実行していますか?