Я работаю на камеру2, где пользователь может включить / выключить автоэкспозицию.Пользователь также может переключаться между различными режимами вспышки (Вкл, Выкл, Авто).Ниже приведен код для обработки того же
public void updateBuilder(@NonNull CaptureRequest.Builder requestBuilder) {
if (mIsFlashSupported) {
switch (mFlashMode) {
case FLASH_ON:
requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON_ALWAYS_FLASH);
requestBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_OFF);
break;
case FLASH_OFF:
requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON);
requestBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_OFF);
break;
case FLASH_AUTO:
requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON_AUTO_FLASH);
requestBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_OFF);
break;
case TORCH:
requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON);
requestBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_TORCH);
break;
}
} else {
requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON);
requestBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_OFF);
}
if (!mAutoExposure) {
requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_OFF);
requestBuilder.set(CaptureRequest.SENSOR_EXPOSURE_TIME, (long) (mShutterSpeed * 1000000000L));
requestBuilder.set(CaptureRequest.SENSOR_SENSITIVITY, mIso);
requestBuilder.set(CaptureRequest.SENSOR_FRAME_DURATION, mFrameDuration);
}
}
Проблема в том, что для mAutoExposure установлено значение False (когда автоматическая экспозиция отключена).Вспышка перестает работать, возможно, из-за этой строки во втором блоке if
requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_OFF);
Может кто-нибудь дать мне знать, как включить управление вспышкой даже при выключенной автоматической экспозиции