Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 相同焦距的各种照片_Android_Camera - Fatal编程技术网

Android 相同焦距的各种照片

Android 相同焦距的各种照片,android,camera,Android,Camera,我需要用相同的焦距拍几张照片。我已经研究了一段时间,这似乎是不可能的 主要目的是做一个简单的自动对焦,然后在不调用自动对焦的情况下对所有后续照片使用相同的距离 Android的API有一些有趣的方法,如: 但是,我无法设置固定焦点的值。它设置为超焦距 还有一种方法: 但是没有“设置器”来设置所需的焦距 我能实现我的目标吗?还是不可能 PD:一些代码解释如何设置摄像头。参数和如何管理AF: AutoFocusCallback aF = new AutoFocusCallback(){

我需要用相同的焦距拍几张照片。我已经研究了一段时间,这似乎是不可能的

主要目的是做一个简单的自动对焦,然后在不调用自动对焦的情况下对所有后续照片使用相同的距离

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

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

还有一种方法:

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

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

PD:一些代码解释如何设置摄像头。参数和如何管理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);

}
单击FocusAuto按钮时:

    @Override
        public void onClick(View v) {

             Preview.parameters.setFocusMode("auto");
             Log.d("focus: ","auto");
             Preview.updateParameters();
             Preview.camera.autoFocus(preview.aF);

        }});

不同设备的详细信息会有所不同,但您应该能够将焦点模式设置为
focus\u mode\u AUTO
,然后调用一次以设置焦距。除非再次显式调用
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...
  }

你能告诉我们你用来设置相机参数和管理焦距的代码吗?谢谢你的快速回复!然而,该代码在我的案例中不起作用。当我调用Camera.autofocus()时,预览的焦距很好,我可以拍一张好的照片,但是当我拍摄第二张时(没有调用autofocus()),焦距似乎在超焦距上移动(如focus\u mode\u fixed)。很有趣。您是否尝试过在其他设备上运行代码?不同制造商的相机硬件可能会有很大差异。现在我已经用另一个设备进行了尝试,并且具有相同的行为。谢谢您的尝试。另一个选项可能是调用
autoFocus()
,然后如果自动对焦成功,则在回调中将模式更改为
FOCUS\u mode\u FIXED
。这是我的第一个想法,但FOCUS\u mode\u FIXED不会将焦距设置在原来的位置,它只会将焦距设置为无穷远,而不考虑以前的焦距。