react-native-rectangle-doc-scanner 3.218.0 → 3.219.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -157,7 +157,7 @@ class CameraController(
157
157
 
158
158
  val rotation = previewView.display?.rotation ?: Surface.ROTATION_0
159
159
 
160
- // Build Preview with lower resolution to reduce HAL load
160
+ // Build Preview ONLY first
161
161
  preview = Preview.Builder()
162
162
  .setTargetResolution(Size(1280, 720))
163
163
  .setTargetRotation(rotation)
@@ -166,25 +166,48 @@ class CameraController(
166
166
  it.setSurfaceProvider(previewView.surfaceProvider)
167
167
  }
168
168
 
169
- // Build ImageAnalysis with lower resolution
170
- imageAnalysis = ImageAnalysis.Builder()
171
- .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
172
- .setTargetRotation(rotation)
173
- .setTargetResolution(Size(1280, 720))
174
- .setOutputImageFormat(ImageAnalysis.OUTPUT_IMAGE_FORMAT_YUV_420_888)
175
- .build()
176
- .also {
177
- it.setAnalyzer(cameraExecutor, DocumentAnalyzer())
178
- }
179
-
180
169
  val cameraSelector = if (useFrontCamera) {
181
170
  CameraSelector.DEFAULT_FRONT_CAMERA
182
171
  } else {
183
172
  CameraSelector.DEFAULT_BACK_CAMERA
184
173
  }
185
174
 
186
- // Bind both Preview and ImageAnalysis together in ONE call
175
+ // Step 1: Bind Preview ONLY first
187
176
  try {
177
+ camera = provider.bindToLifecycle(
178
+ lifecycleOwner,
179
+ cameraSelector,
180
+ preview
181
+ )
182
+ Log.d(TAG, "[CAMERAX-FIX-V4] Preview bound, waiting before adding analysis...")
183
+
184
+ // Step 2: Add ImageAnalysis after a delay to let Preview session stabilize
185
+ android.os.Handler(android.os.Looper.getMainLooper()).postDelayed({
186
+ bindImageAnalysis(provider, cameraSelector, rotation)
187
+ }, 500)
188
+
189
+ } catch (e: Exception) {
190
+ Log.e(TAG, "[CAMERAX-FIX-V4] Failed to bind preview", e)
191
+ analysisBound = false
192
+ }
193
+ }
194
+
195
+ private fun bindImageAnalysis(provider: ProcessCameraProvider, cameraSelector: CameraSelector, rotation: Int) {
196
+ if (analysisBound) return
197
+
198
+ try {
199
+ // Build ImageAnalysis
200
+ imageAnalysis = ImageAnalysis.Builder()
201
+ .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
202
+ .setTargetRotation(rotation)
203
+ .setTargetResolution(Size(640, 480))
204
+ .setOutputImageFormat(ImageAnalysis.OUTPUT_IMAGE_FORMAT_YUV_420_888)
205
+ .build()
206
+ .also {
207
+ it.setAnalyzer(cameraExecutor, DocumentAnalyzer())
208
+ }
209
+
210
+ // Rebind with both Preview and ImageAnalysis
188
211
  camera = provider.bindToLifecycle(
189
212
  lifecycleOwner,
190
213
  cameraSelector,
@@ -192,9 +215,9 @@ class CameraController(
192
215
  imageAnalysis
193
216
  )
194
217
  analysisBound = true
195
- Log.d(TAG, "[CAMERAX-FIX-V3] Camera bound with lower resolution")
218
+ Log.d(TAG, "[CAMERAX-FIX-V4] ImageAnalysis added successfully")
196
219
  } catch (e: Exception) {
197
- Log.e(TAG, "[CAMERAX-FIX-V3] Failed to bind camera use cases", e)
220
+ Log.e(TAG, "[CAMERAX-FIX-V4] Failed to add ImageAnalysis", e)
198
221
  analysisBound = false
199
222
  }
200
223
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-rectangle-doc-scanner",
3
- "version": "3.218.0",
3
+ "version": "3.219.0",
4
4
  "description": "Native-backed document scanner for React Native with customizable overlays.",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",