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);
После этого используйте одно из этих значений для инициализации предварительного просмотра, если вы используете одно и то же значение для передней и задней камеры, возможно, у вас возникли проблемы с ним, потому что ваша фронтальная камера не поддерживает этот размер разрешения.