我有一個活動,使用全屏SurfaceHolder
,打開相機預覽(基於zxing
代碼)。AsyncTask打開相機
開始此活動的結果很慢(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);
}
}
}
此代碼有沒有錯誤,但佈局渲染還是等到相機開啓。 我在onResume
調用AsyncTask
的執行方法,它是正確的位置嗎?
相機在AndroidManifest上有沒有必要的許可? – bofredo
請將您的onResume()方法以及任何相關方法(如initCamera() – user1132959
)中的代碼發佈出去。要找出它正在等待什麼,您應該在任何地方放置日誌消息。這將讓你看到延遲的地方,從那裏你可以找出原因。 – user1132959