@@ -2,26 +2,22 @@ package at.shockbytes.dante.camera.analyzer
22
33import android.annotation.SuppressLint
44import android.util.Size
5- import android.view.Surface.ROTATION_180
6- import android.view.Surface.ROTATION_270
7- import android.view.Surface.ROTATION_90
85import androidx.camera.core.ImageAnalysis
96import androidx.camera.core.ImageProxy
107import at.shockbytes.dante.camera.IsbnVisionBarcode
11- import com.google.firebase.ml.vision.FirebaseVision
12- import com.google.firebase.ml.vision.barcode.FirebaseVisionBarcode
13- import com.google.firebase.ml.vision.barcode.FirebaseVisionBarcodeDetector
14- import com.google.firebase.ml.vision.barcode.FirebaseVisionBarcodeDetectorOptions
15- import com.google.firebase.ml.vision.common.FirebaseVisionImage
16- import com.google.firebase.ml.vision.common.FirebaseVisionImageMetadata
8+ import com.google.mlkit.vision.barcode.Barcode
9+ import com.google.mlkit.vision.barcode.BarcodeScanner
10+ import com.google.mlkit.vision.barcode.BarcodeScannerOptions
11+ import com.google.mlkit.vision.barcode.BarcodeScanning
12+ import com.google.mlkit.vision.common.InputImage
1713import io.reactivex.Observable
1814import io.reactivex.subjects.PublishSubject
1915import timber.log.Timber
2016import java.util.concurrent.TimeUnit
2117
2218class BarcodeAnalyzer (private val rotationDegrees : Int ) : ImageAnalysis.Analyzer {
2319
24- private val detector: FirebaseVisionBarcodeDetector
20+ private val detector: BarcodeScanner
2521
2622 private var lastAnalyzedTimestamp = 0L
2723
@@ -33,16 +29,14 @@ class BarcodeAnalyzer(private val rotationDegrees: Int) : ImageAnalysis.Analyzer
3329
3430 init {
3531
36- val options = FirebaseVisionBarcodeDetectorOptions .Builder ()
32+ val options = BarcodeScannerOptions .Builder ()
3733 .setBarcodeFormats(
38- FirebaseVisionBarcode .FORMAT_EAN_13 ,
39- FirebaseVisionBarcode .FORMAT_EAN_8
34+ Barcode .FORMAT_EAN_13 ,
35+ Barcode .FORMAT_EAN_8
4036 )
4137 .build()
4238
43- detector = FirebaseVision
44- .getInstance()
45- .getVisionBarcodeDetector(options)
39+ detector = BarcodeScanning .getClient(options)
4640 }
4741
4842 @SuppressLint(" UnsafeExperimentalUsageError" )
@@ -52,16 +46,15 @@ class BarcodeAnalyzer(private val rotationDegrees: Int) : ImageAnalysis.Analyzer
5246
5347 val size = Size (imageProxy.width, imageProxy.height)
5448
55- val proxImage = imageProxy.image
56- if (proxImage == null ) {
49+ val proxyImage = imageProxy.image
50+ if (proxyImage == null ) {
5751 Timber .e(" CAM: Image is null" )
5852 return
5953 }
6054
61- val rotationCompensation = getRotation(rotationDegrees)
62- val image = FirebaseVisionImage .fromMediaImage(proxImage, rotationCompensation)
55+ val image = InputImage .fromMediaImage(proxyImage, imageProxy.imageInfo.rotationDegrees)
6356
64- detector.detectInImage (image)
57+ detector.process (image)
6558 .addOnSuccessListener { codes ->
6659 if (codes.isNotEmpty()) {
6760
@@ -94,13 +87,4 @@ class BarcodeAnalyzer(private val rotationDegrees: Int) : ImageAnalysis.Analyzer
9487 // Close proxy at the end
9588 imageProxy.close()
9689 }
97-
98- private fun getRotation (rotationCompensation : Int ): Int {
99- return when (rotationCompensation) {
100- ROTATION_90 -> FirebaseVisionImageMetadata .ROTATION_90
101- ROTATION_180 -> FirebaseVisionImageMetadata .ROTATION_180
102- ROTATION_270 -> FirebaseVisionImageMetadata .ROTATION_270
103- else -> FirebaseVisionImageMetadata .ROTATION_0
104- }
105- }
10690}
0 commit comments