【问题标题】:Manual focusing using Seekbar for Camera2 API使用 Seekbar for Camera2 API 手动对焦
【发布时间】:2018-10-05 16:50:05
【问题描述】:

我正在使用 Camera2 API 开发自定义相机应用程序,并尝试通过搜索栏启用手动对焦。我参考了几篇文章,但面临可能来自我的 java 编码的错误。

我从“CameraCharacteristics features = manager.getCameraCharacteristics(cameraDevice.getId());”那行看到一条消息“错误:未报告的异常CameraAccessException;必须被捕获或声明为抛出”

你们中有人有想法吗?

       public void onStartTrackingTouch(SeekBar seekBar) {

            previewBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_OFF);

        }


        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            progressChangedValue = progress;


            CameraManager manager = (CameraManager)getSystemService(CAMERA_SERVICE);
            CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraDevice.getId());

            float minimumLens = characteristics.get(CameraCharacteristics.LENS_INFO_MINIMUM_FOCUS_DISTANCE);
            float num = (((float)progress) * minimumLens / 100);
            previewBuilder.set(CaptureRequest.LENS_FOCUS_DISTANCE, num);

        }

【问题讨论】:

  • 您是否有权访问清单中启用的摄像头?这听起来好像访问冲突倾向于权限问题。

标签: android focus android-camera2 manual


【解决方案1】:

这是普通的 Java 编程,与相机 API 无关。

getCameraCharacteristics 方法可以抛出已检查的 CameraAccessException 异常。 Java 语言要求所有已检查的异常要么由调用可能抛出已检查异常的方法的函数处理,要么该函数还必须声明它可能会抛出已检查的异常。

因此,您可以将 getCameraCharacteristics 调用包含在捕获 CameraAccessException 的“try...catch”块中,也可以将“throws CameraAccessException”添加到“public void onProgressChanged...”的末尾。

你可能想要前一种情况:

CameraCharacteristics characteristics;
try {
    characteristics = manager.getCameraCharacteristics(cameraDevice.getId());
} catch (CameraAccessException e) {
    // Code ends up here if getCameraCharacteristics can't get the information.
    // The getReason method on CameraAccessException will tell you why
    switch (e.getReason()) {
        case CameraAccessException.CAMERA_DISABLED:
          ....
        case CameraAccessException.CAMERA_DISCONNECTED:
           ...
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多