0

自定义相机应用程序和三星 Galaxy S4 手机存在问题。有时,当应用程序拍照时,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 旋转标签。

4

1 回答 1

3

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;
        }
    }
});

顺便说一句,您应该检查第一个参数值 - 如果自动对焦失败,您可能一开始就不想拍照。

于 2013-08-25T04:11:21.033 回答