我正在制作一个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
或FOCUS_MODE_MACRO
时那么好。
<{1}}和EDOF
不是选项,因为这款手机不支持它们。
如果有人知道对原始问题的回答,我仍然会很高兴。