По сути, я пытаюсь изменить CONTROL_AE_MODE, нажав кнопку в приложении. Пользователь может использовать АВТОМАТИЧЕСКУЮ вспышку (ON_AUTO_FLASH), включить, если она включена (ON_ALWAYS_FLASH), или ВЫКЛ (CONTROL_AE_MODE_OFF).
Строка 818, они устанавливают flash один раз:
// Use the same AE and AF modes as the preview.
captureBuilder.set(CaptureRequest.CONTROL_AF_MODE,
CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
setAutoFlash(captureBuilder);
// Orientation
int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, ORIENTATIONS.get(rotation));
CameraCaptureSession.CaptureCallback CaptureCallback
= new CameraCaptureSession.CaptureCallback() {
@Override
public void onCaptureCompleted(@NonNull CameraCaptureSession session,
@NonNull CaptureRequest request,
@NonNull TotalCaptureResult result) {
showToast("Saved: " + mFile);
Log.d(TAG, mFile.toString());
unlockFocus();
}
};
mCaptureSession.stopRepeating();
mCaptureSession.capture(captureBuilder.build(), CaptureCallback, null);
А затем создает CaptureSession в строке 840.
Есть ли способ изменить CONTROL_AE_MODE после предварительного просмотра?
Я попытался переделать сеанс, который вроде как сработал:
if(flashMode == CameraView.CAMERA_FLASH_ON){
Log.e("CAMERA 2", "FLASH ON");
mPreviewCaptureRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_ALWAYS_FLASH);
}else if(flashMode == CameraView.CAMERA_FLASH_OFF){
Log.e("CAMERA 2", "FLASH OFF");
mPreviewCaptureRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_OFF);
}else if(flashMode == CameraView.CAMERA_FLASH_AUTO){
Log.e("CAMERA 2", "FLASH AUTO");
mPreviewCaptureRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);
}
mFlashMode = flashMode;
if (mCameraCaptureSession != null) {
mCameraCaptureSession.close();
mCameraCaptureSession = null;
}
createCameraPreviewSession();
По какой-то причине CONTROL_AE_MODE_OFF сделал бы весь предварительный просмотр черным. Я попытался найти в документах методы для обновления, но ничего не нашел.
Любые учебники или документы очень ценятся.
stillCapture()
илиonConfigurate()
илиunlockFocus()
медходе? потому что я не могу найти ничего, что могло бы заставить мой код работать... - person Aleksey Timoshchenko   schedule 10.11.2016