フルスクリーンを使用するアクティビティがあり、プレビュー用にカメラを開きます(コードSurfaceHolder
に基づく)。zxing
このアクティビティの開始が遅い (1.x 秒) のは、カメラ マネージャーの負担が大きいためだと思います。onResume
メソッドを使用しています。内にコードを移動するのは良い考えAsyncTask
ですか?
すぐにレイアウトをレンダリングしてからカメラを待ちたいと思います (ユーザー エクスペリエンスが向上すると思います)。どうすればこれを処理できますか?
アクティビティ
private class CameraTask extends AsyncTask<Void, Void, Void> {
SurfaceHolder.Callback callback;
public CameraTask(SurfaceHolder.Callback callback) {
this.callback = callback;
}
protected void doInBackground() {
cameraManager = new CameraManager(getApplication());
viewfinderView = (ViewFinderView) findViewById(R.id.viewfinder_view);
viewfinderView.setCameraManager(cameraManager);
SurfaceView surfaceView = (SurfaceView) findViewById(R.id.preview_view);
SurfaceHolder surfaceHolder = surfaceView.getHolder();
if (hasSurface) {
initCamera(surfaceHolder);
} else {
surfaceHolder.addCallback(callback);
}
}
}
このコードにはエラーはありませんが、レイアウト レンダリングはカメラが開くまで待機します。AsyncTask
inの execute メソッドを呼び出しonResume
ていますが、正しい場所ですか?