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

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

Логическое столкновение Camera = 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 вызывается каждый раз, когда я пытаюсь сменить камеру)

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

1 ответ

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

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

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

Другие вопросы по тегам