Skip to content

Commit 9d36240

Browse files
committed
Migrate to new ML Barcode recognition library
1 parent 9a9603e commit 9d36240

4 files changed

Lines changed: 16 additions & 34 deletions

File tree

app/build.gradle

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,13 +97,11 @@ dependencies {
9797
implementation "androidx.lifecycle:lifecycle-extensions:$archXVersion"
9898
implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$archXVersion"
9999
implementation "androidx.lifecycle:lifecycle-common-java8:$archXVersion"
100-
implementation "com.google.android.gms:play-services-vision:$playServicesVersionVision"
101100
implementation "com.google.android.gms:play-services-auth:$playServicesVersionAuth"
102101
implementation "com.google.firebase:firebase-crashlytics:$firebaseCrashlyticsVersion"
103102
implementation "com.google.firebase:firebase-core:$firebaseVersionCore"
104103
implementation "com.google.firebase:firebase-config:$firebaseVersionConfig"
105104
implementation "com.google.firebase:firebase-auth:$firebaseVersionAuth"
106-
implementation "com.google.firebase:firebase-ml-vision:$firebaseMLVision"
107105

108106

109107
implementation ('com.google.http-client:google-http-client-gson:1.36.0') {

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,12 @@ ext {
5050
firebaseVersionCore = "18.0.0"
5151
firebaseVersionConfig = "20.0.0"
5252
firebaseVersionAuth = "20.0.0"
53-
firebaseMLVision = "24.1.0"
5453
firebaseAnalyticsVersion = "17.6.0"
5554
firebaseCrashlyticsVersion = "17.2.2"
5655

5756
playServicesVersionVision = "20.1.2"
5857
playServicesVersionAuth = "19.0.0"
58+
mlBarcodeVersion = "16.0.3"
5959

6060
daggerVersion = "2.27"
6161
retrofitVersion = "2.9.0"

camera/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,5 +56,5 @@ dependencies {
5656
implementation "androidx.camera:camera-extensions:${rootProject.cameraXExtensionVersion}"
5757

5858
implementation "com.jakewharton.timber:timber:$timberVersion"
59-
implementation "com.google.firebase:firebase-ml-vision:$firebaseMLVision"
59+
implementation "com.google.mlkit:barcode-scanning:$mlBarcodeVersion"
6060
}

camera/src/main/java/at/shockbytes/dante/camera/analyzer/BarcodeAnalyzer.kt

Lines changed: 14 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,22 @@ package at.shockbytes.dante.camera.analyzer
22

33
import android.annotation.SuppressLint
44
import android.util.Size
5-
import android.view.Surface.ROTATION_180
6-
import android.view.Surface.ROTATION_270
7-
import android.view.Surface.ROTATION_90
85
import androidx.camera.core.ImageAnalysis
96
import androidx.camera.core.ImageProxy
107
import 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
1713
import io.reactivex.Observable
1814
import io.reactivex.subjects.PublishSubject
1915
import timber.log.Timber
2016
import java.util.concurrent.TimeUnit
2117

2218
class 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

Comments
 (0)