Camera Focus mode 必須透過 setParameters() 設定,自動對焦則有三種模式,FOCUS_MODE_CONTINUOUS_PICTURE,FOCUS_MODE_CONTINUOUS_VIDEO,FOCUS_MODE_AUTO。

  • FOCUS_MODE_CONTINUOUS_PICTURE (API level 14)
    針對照相的連續自動對焦模式。The speed of focus change is more aggressive than FOCUS_MODE_CONTINUOUS_VIDEO.
  • FOCUS_MODE_CONTINUOUS_VIDEO (API level 9)
    針對錄影的連續自動對焦模式。APP 仍然可以呼叫 takePicture() 但不保證對焦已完成。
  • FOCUS_MODE_AUTO (API level 5)
    APP 需要自己呼叫 autoFocus(AutoFocusCallback) 才會執行自動對焦。

由於我是針對 Android 2.3 所寫的,所以不支援 FOCUS_MODE_CONTINUOUS_PICTURE。在 Android 4.0 以上的版本 FOCUS_MODE_CONTINUOUS_PICTURE, FOCUS_MODE_CONTINUOUS_VIDEO 模式下,APP 可以呼叫 autoFocus(AutoFocusCallback),藉此可以得知是否對焦已完成。

@Override public void surfaceCreated(SurfaceHolder arg0) { try { mCamera = Camera.open(); mCamera.setDisplayOrientation(90); mCamera.setPreviewDisplay(mSurfaceHolder); } catch (IOException e) { e.printStackTrace(); } // set auto focus mode Camera.Parameters parameters = mCamera.getParameters(); List<String> allFocus = parameters.getSupportedFocusModes(); if(allFocus.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO)){ parameters.setFocusMode( Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO); } else if(allFocus.contains(Camera.Parameters.FLASH_MODE_AUTO)){ parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); } mCamera.setParameters(parameters); mCamera.startPreview(); }

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()