Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),

## [Unreleased]

- We patched react native vision camera library to fix the issue of barcodes not getting scanned correctly with patterned backgrounds on Android.

## [19.1.7] - 2026-09-23

- We removed some unused Android Permissions coming in from Manifest mergers.
Expand Down
37 changes: 37 additions & 0 deletions intermediary-patches/react-native-vision-camera+4.7.3.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
diff --git a/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/core/CameraSession+Configuration.kt b/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/core/CameraSession+Configuration.kt
index 1e9c0de..bbd8a91 100644
--- a/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/core/CameraSession+Configuration.kt
+++ b/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/core/CameraSession+Configuration.kt
@@ -2,6 +2,7 @@ package com.mrousavy.camera.core

import android.annotation.SuppressLint
import android.util.Log
+import android.util.Size
import androidx.annotation.OptIn
import androidx.camera.core.CameraSelector
import androidx.camera.core.CameraState
@@ -13,6 +14,7 @@ import androidx.camera.core.MirrorMode
import androidx.camera.core.Preview
import androidx.camera.core.TorchState
import androidx.camera.core.resolutionselector.ResolutionSelector
+import androidx.camera.core.resolutionselector.ResolutionStrategy
import androidx.camera.extensions.ExtensionMode
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.camera.video.Recorder
@@ -220,7 +222,15 @@ internal fun CameraSession.configureOutputs(configuration: CameraConfiguration)
val codeScannerConfig = configuration.codeScanner as? CameraConfiguration.Output.Enabled<CameraConfiguration.CodeScanner>
if (codeScannerConfig != null) {
Log.i(CameraSession.TAG, "Creating CodeScanner output...")
- val analyzer = ImageAnalysis.Builder().build()
+ // Request a higher analysis resolution than the CameraX default (640x480), so ML Kit can read
+ // barcodes on patterned backgrounds. Size is in sensor (landscape) orientation.
+ val analyzer = ImageAnalysis.Builder()
+ .setResolutionSelector(
+ ResolutionSelector.Builder()
+ .setResolutionStrategy(ResolutionStrategy(Size(1920, 1440), ResolutionStrategy.FALLBACK_RULE_CLOSEST_HIGHER_THEN_LOWER))
+ .build()
+ )
+ .build()
val pipeline = CodeScannerPipeline(codeScannerConfig.config, callback)
analyzer.setAnalyzer(CameraQueues.analyzerExecutor, pipeline)
codeScannerOutput = analyzer
4 changes: 4 additions & 0 deletions patches/apply-patches.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ const patchOperations = [
{
dependency: "react-native-geocoder",
patchFile: "react-native-geocoder+0.5.0.patch"
},
{
dependency: "react-native-vision-camera",
patchFile: "react-native-vision-camera+4.7.3.patch"
}
];

Expand Down
Loading