一般Camera调用open以及startPreview需要确保不多次调用,
如果Camera.open(); 或者camera.startPreview();连续调用了多次,将可能会发生 java.lang.RuntimeException: startPreview failed;
可以使用boolean 全局变量来记录当前camera的状态。来保证这一点。
个人尝试多次后,了解到,注意isrecording的状态变化就好了。
private void initCamera() {
if (!isView) {
camera = Camera.open();
}
if (camera != null && !isView) {
try {
Camera.Parameters myParameters = camera.getParameters();
myParameters.setPictureFormat(ImageFormat.JPEG);
camera.setParameters(myParameters);
camera.setPreviewDisplay(holder);
camera.startPreview();
} catch (IOException e) {
e.printStackTrace();
}
isView = true;
}
}