Ручная фокусировка с использованием Seekbar для Camera2 API - PullRequest
0 голосов
/ 05 октября 2018

Я занимаюсь разработкой пользовательского приложения для камеры с использованием Camera2 API и попытался включить ручную фокусировку с помощью панели поиска.Я ссылался на несколько статей, но столкнулся с ошибкой, которая может возникнуть из-за моего java-кода.

Я увидел сообщение «error: незарегистрированное исключение CameraAccessException; должно быть перехвачено или объявлено как выброшенное« со строки »Характеристики CameraCharacteristics = manager.getCameraCharacteristics (cameraDevice.getId ()); "

У кого-нибудь из вас есть идея?

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

        }

1 Ответ

0 голосов
/ 05 октября 2018

Это нормальное Java-программирование, не относящееся конкретно к API-интерфейсам камеры.

Метод getCameraCharacteristics может выдавать исключение проверенного исключения CameraAccessException.Язык Java требует, чтобы все проверенные исключения обрабатывались либо функцией, вызывающей метод, который может выдать проверенное исключение, либо функция должна также объявить, что может выдать это проверенное исключение.

Таким образом, вы можете окружитьВызов getCameraCharacteristics в блоке «try ... catch», который перехватывает исключение CameraAccessException, или вы можете добавить «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:
           ...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...