我正在制作一个应该以一秒的间隔拍照的 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_AUTO
or时那么好FOCUS_MODE_MACRO
。
EDOF
并且CONTINUOUS_PICTURE
不是选项,因为这款手机不支持它们。
如果有人知道原始问题的答案,我仍然会很高兴。