1

我需要以相同的焦距拍摄几张照片。我研究了一段时间,似乎不可能。

主要目的是进行简单的自动对焦,然后对所有下一张照片使用相同的距离,而不再调用自动对焦。

Android 的 API 有一些有趣的方法,例如:

FOCUS_MODE_FIXED

但是,我无法设置固定焦点的值。它设置在超焦距处。

还有一种方法:

getFocusDistances (float[] 输出)。

但是没有“设置器”来设置所需的焦距。

我可以实现我的目标还是不可能?

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

        }});
4

1 回答 1

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...
  }
于 2013-09-20T13:17:10.787 回答