From 9c50a409fb11737bc5922c03c240dbda85c27b82 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 5 Dec 2025 01:03:31 +0000 Subject: [PATCH 1/3] Initial plan From accc35021afff7981476875c2b96ec935e0b5c37 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 5 Dec 2025 01:09:00 +0000 Subject: [PATCH 2/3] Fix blurry camera during QR scanning by enabling continuous autofocus Co-authored-by: adbenitez <24558636+adbenitez@users.noreply.github.com> --- .../java/org/thoughtcrime/securesms/qr/QrScanFragment.java | 7 +++++++ .../thoughtcrime/securesms/qr/RegistrationQrActivity.java | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/src/main/java/org/thoughtcrime/securesms/qr/QrScanFragment.java b/src/main/java/org/thoughtcrime/securesms/qr/QrScanFragment.java index b86056aec..4980e8500 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.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..99dbf1efb 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.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(); From f132a18f3482205433d74aec754e83cbe4702cff Mon Sep 17 00:00:00 2001 From: adbenitez Date: Fri, 5 Dec 2025 20:35:01 +0100 Subject: [PATCH 3/3] fix import --- src/main/java/org/thoughtcrime/securesms/qr/QrScanFragment.java | 2 +- .../org/thoughtcrime/securesms/qr/RegistrationQrActivity.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/qr/QrScanFragment.java b/src/main/java/org/thoughtcrime/securesms/qr/QrScanFragment.java index 4980e8500..76e84b71d 100644 --- a/src/main/java/org/thoughtcrime/securesms/qr/QrScanFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/qr/QrScanFragment.java @@ -13,7 +13,7 @@ import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; -import com.journeyapps.barcodescanner.CameraSettings; +import com.journeyapps.barcodescanner.camera.CameraSettings; import com.journeyapps.barcodescanner.CaptureManager; import com.journeyapps.barcodescanner.CompoundBarcodeView; import com.journeyapps.barcodescanner.DecoratedBarcodeView; diff --git a/src/main/java/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java b/src/main/java/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java index 99dbf1efb..1f51bbe2c 100644 --- a/src/main/java/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java @@ -11,7 +11,7 @@ import androidx.annotation.NonNull; -import com.journeyapps.barcodescanner.CameraSettings; +import com.journeyapps.barcodescanner.camera.CameraSettings; import com.journeyapps.barcodescanner.CaptureManager; import com.journeyapps.barcodescanner.CompoundBarcodeView;