在Galaxy S5上遇到FOCUS_MODE_CONTINUOUS_PICTURE问题

时间:2014-08-15 06:10:38

标签: android camera android-camera

我正在开发一款使用相机预览和拍照的Android应用。我将FOCUS_MODE_CONTINUOUS_PICTURE与星系S4一起使用,发现聚焦效果非常好。

然而,在星系S5上,FOCUS_MODE_CONTINUOUS_PICTURE很少能够正确找到焦点。相机将变焦,但会反复缩小焦距。

有没有人知道为什么FOCUS_MODE_CONTINUOUS_PICTURE在S5上工作得这么差,或者有人能确认他们是否有同样的问题吗?

1 个答案:

答案 0 :(得分:11)

我也经历过同样的问题。

Galaxy S5以及可能的其他设备在连续图像对焦模式下似乎没有可靠的行为。作为开发人员,当代码在大多数设备上完美运行时,这是非常令人沮丧的,但随后是S5(一种非常受欢迎的设备),我们看起来非常糟糕。

经过多次努力之后,我认为我有一个解决方案(更多的解决方法)运行良好。

  1. 将相机设置为FOCUS_MODE_CONTINUOUS_PICTURE
  2. 用于拍照的手势处理程序(例如按钮点击,触摸事件),将相机切换到FOCUS_MODE_AUTO,然后以延迟方式调用Camera.autoFocus()
  3. 这在照片预览期间提供了漂亮的连续对焦UI,但在可靠的自动对焦模式下拍摄照片。

    以下是代码:

     protected void onTakePicture()
     {
    
      // mCamera is the Camera object
      // mAutoFocusCallback is a Camera.AutoFocusCallback handler
    
      try
      {
    
       // determine current focus mode
       Camera.Parameters params = mCamera.getParameters();
              if (params.getFocusMode().equals(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE))
       {
        mCamera.cancelAutoFocus();      // cancels continuous focus
    
        List<String> lModes = params.getSupportedFocusModes();
        if (lModes != null)
        {
         if (lModes.contains(Camera.Parameters.FOCUS_MODE_AUTO))
         {
          params.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); // auto-focus mode if supported
          mCamera.setParameters(params);        // set parameters on device
         }
        }
    
        // start an auto-focus after a slight (100ms) delay
        new Handler().postDelayed(new Runnable() {
    
         public void run()
         {
          mCamera.autoFocus(mAutoFocusCallback);    // auto-focus now
         }
    
        }, 100);
    
        return;
       }
    
       mCamera.autoFocus(mAutoFocusCallback);       // do the focus, callback is mAutoFocusCallback
    
      }
      catch (Exception e)
      {
       Log.e("myApp", e.getMessage());
      }
    }
    

    请试一试并报告您的结果