diff --git a/src/main/java/org/thoughtcrime/securesms/qr/QrScanFragment.java b/src/main/java/org/thoughtcrime/securesms/qr/QrScanFragment.java index b86056aec..76e84b71d 100644 --- a/src/main/java/org/thoughtcrime/securesms/qr/QrScanFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/qr/QrScanFragment.java @@ -13,6 +13,7 @@ import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; +import com.journeyapps.barcodescanner.camera.CameraSettings; import com.journeyapps.barcodescanner.CaptureManager; import com.journeyapps.barcodescanner.CompoundBarcodeView; import com.journeyapps.barcodescanner.DecoratedBarcodeView; @@ -90,6 +91,12 @@ void handleQrScanWithPermissions(Activity activity) { private void init(CompoundBarcodeView barcodeScannerView, Activity activity, Bundle savedInstanceState) { try { + // Configure camera to use continuous autofocus mode which works better + // on devices with multiple cameras + CameraSettings settings = barcodeScannerView.getBarcodeView().getCameraSettings(); + settings.setFocusMode(CameraSettings.FocusMode.CONTINUOUS); + barcodeScannerView.getBarcodeView().setCameraSettings(settings); + capture = new MyCaptureManager(activity, barcodeScannerView); capture.initializeFromIntent(activity.getIntent(), savedInstanceState); capture.decode(); diff --git a/src/main/java/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java b/src/main/java/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java index fccf33d8d..1f51bbe2c 100644 --- a/src/main/java/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java @@ -11,6 +11,7 @@ import androidx.annotation.NonNull; +import com.journeyapps.barcodescanner.camera.CameraSettings; import com.journeyapps.barcodescanner.CaptureManager; import com.journeyapps.barcodescanner.CompoundBarcodeView; @@ -105,6 +106,12 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String permissi } private void init(CompoundBarcodeView barcodeScannerView, Intent intent, Bundle savedInstanceState) { + // Configure camera to use continuous autofocus mode which works better + // on devices with multiple cameras + CameraSettings settings = barcodeScannerView.getBarcodeView().getCameraSettings(); + settings.setFocusMode(CameraSettings.FocusMode.CONTINUOUS); + barcodeScannerView.getBarcodeView().setCameraSettings(settings); + capture = new CaptureManager(this, barcodeScannerView); capture.initializeFromIntent(intent, savedInstanceState); capture.decode();