我正在做一个与相机相关的项目,在拍照后,相机会冻结,您必须完成该活动并重新调用它以拍摄另一张照片。如何使拍照仅冻结1-2秒钟,然后使用SurfaceView再次打开相机呢?对于视频也是同样的问题,我正在使用MediaRecorder,录制视频按停止按钮保存视频,屏幕仍然处于活动状态,但我无法再次录制视频,必须重启该活动。
有人有解决方法吗?
我正在做一个与相机相关的项目,在拍照后,相机会冻结,您必须完成该活动并重新调用它以拍摄另一张照片。如何使拍照仅冻结1-2秒钟,然后使用SurfaceView再次打开相机呢?对于视频也是同样的问题,我正在使用MediaRecorder,录制视频按停止按钮保存视频,屏幕仍然处于活动状态,但我无法再次录制视频,必须重启该活动。
有人有解决方法吗?
camera.startPreview()
。startPreview()
,相机也无法打开。如果你能帮我解决问题,我将不胜感激!https://stackoverflow.com/questions/47483990/can-only-open-camera-once - Ruchir Baronia拍摄照片后,您应该停止预览并重新启动预览。
mCamera.stopPreview();
mCamera.startPreview();
它将正常运行。
AsyncTask
进行任何图像处理。这将允许您的UI活动继续并拍摄另一张照片。camera.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();}
不必使用手机上现有相机应用程序定义的活动,您可以编写自己的活动,直接使用相机API来实现所描述的功能。相机类在此处有文档:http://developer.android.com/reference/android/hardware/Camera.html
camera.startpreview()
来重新启动它。