我有一个活动,使用全屏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