4

我正在制作一个应该以一秒的间隔拍照的 Android 应用程序。问题是,如果您在每张照片之前聚焦照片,间隔会变得太长。Camera.autoFocus() 似乎最多需要一秒钟多一点,最坏的情况是三秒钟以上,具体取决于照明和其他因素。据我所知,没有办法在 Android 中手动控制焦距,而且 FOCUS_MODE_FIXED 不适合我的应用程序,因为我在很短的距离内拍照。

有没有办法一次对焦,然后以相同的焦点拍摄多张照片?

我一直在尝试这样做,但拍照后焦点总是消失。developer.android.com 说:

“使用 stopPreview() 停止预览,或使用 takePicture(Camera.ShutterCallback, Camera.PictureCallback, Camera.PictureCallback) 触发静态图像捕捉,不会改变焦点位置。应用程序必须调用 cancelAutoFocus 来重置焦点。”

这是我现在拍照的方式。我从中删除了一些不相关的行。这一切正常,但太慢了。我有索尼爱立信 Xperia Mini 和 Android 2.3.4。

AutoFocusCallback myAutoFocusCallback = new AutoFocusCallback(){

      public void onAutoFocus(boolean arg0, Camera arg1) {
                try {
                arg1.takePicture(null, null, mPicture);
                amountOfPictures++;
                arg1.startPreview();
            } catch (Exception e) {}
     }
};

private PictureCallback mPicture = new PictureCallback() {

    public void onPictureTaken(byte[] data, Camera camera) {
        mCamera.autoFocus(myAutoFocusCallback);
//write picture to file
//leave cameraActivity when enough pictures written
    }};

//this is run before the first picture
    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
        try {
            mCamera.setPreviewDisplay(mHolder);
            mCamera.startPreview();
            mCamera.autoFocus(myAutoFocusCallback);
            Thread.sleep(500);

        } catch (Exception e){}
    }
}

编辑:似乎现在使用FOCUS_MODE_CONTINUOUS_VIDEO解决了这个问题。意味着它一直在集中注意力。我想知道它以前怎么没有。但我认为对焦不如使用FOCUS_MODE_AUTOor时那么好FOCUS_MODE_MACROEDOF并且CONTINUOUS_PICTURE不是选项,因为这款手机不支持它们。

如果有人知道原始问题的答案,我仍然会很高兴。

4

0 回答 0