2013-08-24 98 views
0

定制相机应用程序和Samsung Galaxy S4手机有问题。有时,当应用程序拍摄照片时,S4手机可以一次拍摄多张照片。它偶尔会发生相同的代码为其他设备工作就好了。以下是拍摄图片的代码:Android Galaxy S4相机问题

Parameters params = camera.getParameters(); 
params.setRotation(rotation); 
camera.setParameters(params); 
camera.autoFocus(new Camera.AutoFocusCallback() { 

    @Override 
    public void onAutoFocus(boolean success, Camera camera) { 
     camera.takePicture(shutterCallback, null, PreviewCallback.this); 
    } 
}); 

@Override 
public void onPictureTaken(byte[] data, Camera camera) { 
    pictureCallback.onPictureTaken(previewData, data); 
    camera.startPreview(); 
    Parameters params = camera.getParameters(); 
    params.setRotation(rotationOrig); 
    camera.setParameters(params); 
} 

旋转仅用于正确的exif旋转标签。

回答

3

contract for Camera.AutoFocusCallback.onAutoFocus不认为它会在camera.autoFocus()调用后触发一次。所以,我会简单地添加一个布尔变量,例如

camera.autoFocus(new Camera.AutoFocusCallback() { 

    boolean once = true; 
    @Override 
    public void onAutoFocus(boolean success, Camera camera) { 
    if (once && success) { 
     camera.takePicture(shutterCallback, null, PreviewCallback.this); 
     once = false; 
     } 
    } 
}); 

BTW,你应该检查的第一个参数值 - 如果自动对焦失败,你可能不希望采取摆在首位的图片。

+0

谢谢,我会尝试 – nemezis

+1

这工作就像一个魅力! – nemezis