Android: Camera2 переключение между задней и передней камерой

Я делал фото с камеры, и вроде все хорошо, я использую Camera2Basic образец, этот код включает только заднюю камеру, поэтому я добавил кнопку для переключения между двумя камерами, например:

Логическое значение FaceCamera = true; // инициализация

onClick() {
    facingCamera = !facingCamera;
    closeCamera();
    openCamera(mTextureView.getWidth(), mTextureView.getHeight()); 
}

И я изменил код метода setUpCameraOutputs следующим образом:

if (facing != null && facing == CameraCharacteristics.LENS_FACING_FRONT ) {
    continue;
}

Кому

if (facing != null && facing == CameraCharacteristics.LENS_FACING_FRONT && !facingCamera 
|| facing != null && facing == CameraCharacteristics.LENS_FACING_BACK && facingCamera ) {
    continue;
}

Это отлично работает для Nexus 4, но для моего LG-D802 не работает нормально (onConfigureFailed вызывается каждый раз, когда я пытаюсь сменить камеру)

Как это исправить, чтобы он работал нормально на всех устройствах?


person Abdennacer Lachiheb    schedule 10.11.2016    source источник


Ответы (1)


Вы проверяли, предоставляет ли CameraManager 2 доступные камеры? Используйте cameraManager.getCameraIdList(), чтобы проверить это. Также не забудьте получить правильные размеры предварительного просмотра для каждой камеры с помощью CameraCharacteristics:

StreamConfigurationMap rearMap = rearCameraCharacteristics.get(
      CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
StreamConfigurationMap frontMap = frontCameraCharacteristics.get(
      CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);

После этого используйте одно из этих значений для инициализации предварительного просмотра, если вы используете одно и то же значение для передней и задней камеры, возможно, у вас возникли проблемы с этим, потому что ваша передняя камера не поддерживает этот размер разрешения.

person Francisco Durdin Garcia    schedule 02.12.2016
comment
Спасибо за ответ, я думаю, что проблема, журнал показывает, что иногда возникает проблема с поиском подходящего размера разрешения, а иногда превью растягивается. Я могу найти образец, в котором вы можете использовать переключатель между передней и задней камерой, есть ли? - person Abdennacer Lachiheb; 10.12.2016
comment
Я сталкиваюсь с той же проблемой, когда я переключаю камеру, предварительный просмотр иногда растягивается, вы нашли решение для этого? - person Andrey; 31.07.2017
comment
Великий! Я на несколько дней застрял в поиске нужного размера предварительного просмотра при переключении камеры. Спасибо! :) - person Debdeep; 24.08.2017