Navaron Bracke

handle errors from start() in callback

@@ -165,7 +165,6 @@ class MobileScannerHandler( @@ -165,7 +165,6 @@ class MobileScannerHandler(
165 165
166 val detectionSpeed: DetectionSpeed = DetectionSpeed.values().first { it.intValue == speed} 166 val detectionSpeed: DetectionSpeed = DetectionSpeed.values().first { it.intValue == speed}
167 167
168 - try {  
169 mobileScanner!!.start( 168 mobileScanner!!.start(
170 barcodeScannerOptions, 169 barcodeScannerOptions,
171 returnImage, 170 returnImage,
@@ -183,41 +182,44 @@ class MobileScannerHandler( @@ -183,41 +182,44 @@ class MobileScannerHandler(
183 )) 182 ))
184 } 183 }
185 }, 184 },
186 - timeout.toLong(),  
187 - cameraResolution,  
188 - )  
189 - } catch (e: AlreadyStarted) { 185 + mobileScannerErrorCallback = {
  186 + Handler(Looper.getMainLooper()).post {
  187 + when (it) {
  188 + is AlreadyStarted -> {
190 result.error( 189 result.error(
191 "MobileScanner", 190 "MobileScanner",
192 "Called start() while already started", 191 "Called start() while already started",
193 null 192 null
194 ) 193 )
195 - } catch (e: NoCamera) {  
196 - result.error(  
197 - "MobileScanner",  
198 - "No camera found or failed to open camera!",  
199 - null  
200 - )  
201 - } catch (e: TorchError) { 194 + }
  195 + is CameraError -> {
202 result.error( 196 result.error(
203 "MobileScanner", 197 "MobileScanner",
204 - "Error occurred when setting torch!", 198 + "Error occurred when setting up camera!",
205 null 199 null
206 ) 200 )
207 - } catch (e: CameraError) { 201 + }
  202 + is NoCamera -> {
208 result.error( 203 result.error(
209 "MobileScanner", 204 "MobileScanner",
210 - "Error occurred when setting up camera!", 205 + "No camera found or failed to open camera!",
211 null 206 null
212 ) 207 )
213 - } catch (e: Exception) { 208 + }
  209 + else -> {
214 result.error( 210 result.error(
215 "MobileScanner", 211 "MobileScanner",
216 - "Unknown error occurred..", 212 + "Unknown error occurred.",
217 null 213 null
218 ) 214 )
219 } 215 }
220 } 216 }
  217 + }
  218 + },
  219 + timeout.toLong(),
  220 + cameraResolution,
  221 + )
  222 + }
221 223
222 private fun stop(result: MethodChannel.Result) { 224 private fun stop(result: MethodChannel.Result) {
223 try { 225 try {