问题描述
|
我正在用相机做一个项目,在拍摄完一张照片后,相机冻结了,您必须完成该活动并再次调用它才能拍摄另一张照片,如何冻结照片仅1-2秒,然后进行表面观察再次拍照。与我使用媒体记录器的视频相同,按视频按钮停止视频保存,并且屏幕仍然有效,但是我不能再次拍摄视频我必须重新启动活动吗?
有人有解决办法吗?
解决方法
在背景
AsyncTask
中进行任何图像处理。这将允许您的UI活动继续并拍摄另一张照片。
编辑:我无法删除一个可接受的答案,因此请在下面查看stoefin的答案。在拍下张照片之前叫camera.startPreview()
对他有效。
,我找到了解决方案:拍照后,预览显示将停止。要拍摄更多照片,请先再次致电ѭ1。
,捕获图像后,您应该停止预览并重新开始。
mCamera.stopPreview();
mCamera.startPreview();
会很好的。
,camera.startpreview();答案对我的情况不起作用,但是下面的代码对我来说解决了这个问题,希望对其他人也有所帮助。我使用了一个线程,在照片被500ms捕获后延迟了相机的关闭和打开。
private void start_camera() {
try {
camera = Camera.open();
// camera.lock();
} catch (RuntimeException e) {
Log.e(tag,\"init_camera: \" + e);
return;
}
Camera.Parameters param = camera.getParameters();
param = camera.getParameters();
Camera.Size size = param.getSupportedPreviewSizes().get(0);
param.setPreviewSize(size.width,size.height);
camera.setParameters(param);
try {
camera.setPreviewDisplay(surfaceHolder);
camera.startPreview();
previewRunning = true;
} catch (Exception e) {
Log.e(tag,\"init_camera: \" + e);
return;
}}
private void captureImage() {
camera.takePicture(shutterCallback,null,jpegCallback);
Thread restart_preview=new Thread(){public void run(){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
camera.release();
camera=null;
start_camera();
}};
restart_preview.start();}
,您可以编写自己的直接使用Camera API来完成您描述的功能的Activity,而不必使用电话上现有的Camera应用程序定义的活动。 Camera类记录在这里:http://developer.android.com/reference/android/hardware/Camera.html
,相机冻结,因为您没有重新启动相机的预览,因此请致电ѭ5重启相机