我需要拍摄几张相同焦距的照片。我有一段时间研究过,似乎不可能。
主要目的是进行简单的自动对焦,然后对所有下一张照片使用相同的距离,而不再调用自动对焦。
Android的API有一些有趣的方法,如:
但是,我无法设置固定焦点的值。它设置在超焦距。
还有一种方法:
getFocusDistances (float[] output).
但是没有“设定者”来设定所需的焦距。
我能实现目标还是不可能?
PD:一些代码解释我如何设置Camera.parameters我如何管理AF:
AutoFocusCallback aF = new AutoFocusCallback(){
@Override
public void onAutoFocus(boolean arg0, Camera arg1) {
if(arg0==true){
Log.d("preview", " Autofocus callback!");
parameters.setFocusMode("fixed");
updateParameters();
}
}};
public static void updateParameters(){
if(camera==null){}
else{
camera.setParameters(parameters);
}
点击focusAutoButton时:
@Override
public void onClick(View v) {
Preview.parameters.setFocusMode("auto");
Log.d("focus: ","auto");
Preview.updateParameters();
Preview.camera.autoFocus(preview.aF);
}});
答案 0 :(得分:3)
详细信息因设备而异,但您应该可以将对焦模式设置为FOCUS_MODE_AUTO
,然后拨打Camera.autoFocus()
一次以设置焦距。除非您再次明确地呼叫autoFocus()
,否则焦距不应改变。
请注意,某些设备不支持自动对焦,因此在请求时采取防御措施是个好习惯:
try {
Parameters params = camera.getParameters();
if (!Parameters.FOCUS_MODE_AUTO.equals(params.getFocusMode())) {
params.setFocusMode(Parameters.FOCUS_MODE_AUTO);
camera.setParameters(params);
}
camera.autoFocus(new Camera.AutoFocusCallback() {
public void onAutoFocus(boolean success, Camera camera) {
// if (success) { ... }
}
} );
} catch (RuntimeException e) {
// Can't use autofocus...
}