一般Camera调用open 以及startPreview需要确保不两次调用,如果Camera.open(); 或者camera.startPreview();连续调用了多次,将可能会发生 java.lang.RuntimeException: startPreview failed;一般可以使用boolean 全局变量来记录当前camera的状态。来保证这一点。如下函数所示:
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;
}
}