44
55import com .google .android .gms .tasks .Task ;
66import com .google .android .gms .tasks .Tasks ;
7- import com .google .firebase . ml . vision .FirebaseVision ;
8- import com .google .firebase . ml . vision .barcode .FirebaseVisionBarcode ;
9- import com .google .firebase . ml . vision .barcode .FirebaseVisionBarcodeDetector ;
10- import com .google .firebase . ml . vision .barcode .FirebaseVisionBarcodeDetectorOptions ;
11- import com .google .firebase . ml . vision .common .FirebaseVisionImage ;
12- import com . google . firebase . ml . vision . common . FirebaseVisionImageMetadata ;
7+ import com .google .mlkit . vision .barcode . Barcode ;
8+ import com .google .mlkit . vision .barcode .BarcodeScanner ;
9+ import com .google .mlkit . vision .barcode .BarcodeScannerOptions ;
10+ import com .google .mlkit . vision .barcode .BarcodeScanning ;
11+ import com .google .mlkit . vision .common .InputImage ;
12+
1313
1414import java .util .ArrayList ;
1515import java .util .List ;
1616
1717import io .snabble .sdk .BarcodeFormat ;
18- import io .snabble .sdk .ui .scanner .Barcode ;
1918import io .snabble .sdk .ui .scanner .BarcodeDetector ;
2019import io .snabble .sdk .ui .scanner .FalsePositiveFilter ;
2120import io .snabble .sdk .utils .Logger ;
2221
2322public class FirebaseBarcodeDetector implements BarcodeDetector {
2423 private byte [] cropBuffer = null ;
2524 private FalsePositiveFilter falsePositiveFilter = new FalsePositiveFilter (3 );
26- private FirebaseVisionBarcodeDetector detector ;
25+ private BarcodeScanner detector ;
2726
2827 public FirebaseBarcodeDetector () {
2928
@@ -38,8 +37,8 @@ public void setup(List<BarcodeFormat> barcodeFormats) {
3837 formats .add (format );
3938
4039 // EAN13 with 0 prefixes are detected as UPC-A
41- if (format == FirebaseVisionBarcode .FORMAT_EAN_13 ) {
42- formats .add (FirebaseVisionBarcode .FORMAT_UPC_A );
40+ if (format == Barcode .FORMAT_EAN_13 ) {
41+ formats .add (Barcode .FORMAT_UPC_A );
4342 }
4443 }
4544
@@ -48,11 +47,11 @@ public void setup(List<BarcodeFormat> barcodeFormats) {
4847 ints [i ] = formats .get (i );
4948 }
5049
51- FirebaseVisionBarcodeDetectorOptions options = new FirebaseVisionBarcodeDetectorOptions .Builder ()
50+ BarcodeScannerOptions options = new BarcodeScannerOptions .Builder ()
5251 .setBarcodeFormats (ints [0 ], ints )
5352 .build ();
5453
55- detector = FirebaseVision . getInstance (). getVisionBarcodeDetector (options );
54+ detector = BarcodeScanning . getClient (options );
5655 }
5756
5857 @ Override
@@ -61,56 +60,32 @@ public void reset() {
6160 }
6261
6362 @ Override
64- public Barcode detect (byte [] data , int width , int height , int bitsPerPixel , Rect detectionRect , int displayOrientation ) {
63+ public io . snabble . sdk . ui . scanner . Barcode detect (byte [] data , int width , int height , int bitsPerPixel , Rect detectionRect , int displayOrientation ) {
6564 byte [] buf = crop (data , width , height , bitsPerPixel , detectionRect );
6665
67- int firebaseRotation ;
68- switch (displayOrientation ) {
69- case 0 :
70- firebaseRotation = FirebaseVisionImageMetadata .ROTATION_0 ;
71- break ;
72- case 90 :
73- firebaseRotation = FirebaseVisionImageMetadata .ROTATION_90 ;
74- break ;
75- case 180 :
76- firebaseRotation = FirebaseVisionImageMetadata .ROTATION_180 ;
77- break ;
78- case 270 :
79- firebaseRotation = FirebaseVisionImageMetadata .ROTATION_270 ;
80- break ;
81- default :
82- firebaseRotation = FirebaseVisionImageMetadata .ROTATION_0 ;
83- }
84-
85- FirebaseVisionImage image = FirebaseVisionImage .fromByteArray (buf , new FirebaseVisionImageMetadata .Builder ()
86- .setFormat (FirebaseVisionImageMetadata .IMAGE_FORMAT_NV21 )
87- .setRotation (firebaseRotation )
88- .setWidth (detectionRect .width ())
89- .setHeight (detectionRect .height ())
90- .build ());
91-
66+ InputImage inputImage = InputImage .fromByteArray (data , width , height , displayOrientation , InputImage .IMAGE_FORMAT_NV21 );
9267
93- Task <List <FirebaseVisionBarcode >> result = detector .detectInImage ( image );
68+ Task <List <Barcode >> result = detector .process ( inputImage );
9469
9570 try {
9671 Tasks .await (result );
97- List <FirebaseVisionBarcode > firebaseBarcodes = result .getResult ();
72+ List <Barcode > firebaseBarcodes = result .getResult ();
9873 if (firebaseBarcodes != null && firebaseBarcodes .size () > 0 ) {
99- FirebaseVisionBarcode firebaseVisionBarcode = firebaseBarcodes .get (0 );
74+ Barcode firebaseVisionBarcode = firebaseBarcodes .get (0 );
10075 String rawValue = firebaseVisionBarcode .getRawValue ();
10176
10277 if (rawValue == null ) {
10378 return null ;
10479 }
10580
10681 // MLKit decodes all ITF lengths, but we only care about ITF14.
107- if (firebaseVisionBarcode .getFormat () == FirebaseVisionBarcode .FORMAT_ITF ) {
82+ if (firebaseVisionBarcode .getFormat () == Barcode .FORMAT_ITF ) {
10883 if (rawValue .length () != 14 ) {
10984 return null ;
11085 }
11186 }
11287
113- if (firebaseVisionBarcode .getFormat () == FirebaseVisionBarcode .FORMAT_UPC_A ) {
88+ if (firebaseVisionBarcode .getFormat () == Barcode .FORMAT_UPC_A ) {
11489 if (rawValue .length () > 13 ) {
11590 return null ;
11691 }
@@ -132,9 +107,9 @@ public Barcode detect(byte[] data, int width, int height, int bitsPerPixel, Rect
132107 return null ;
133108 }
134109
135- Barcode barcode = new Barcode (format , rawValue , System .currentTimeMillis ());
110+ io . snabble . sdk . ui . scanner . Barcode barcode = new io . snabble . sdk . ui . scanner . Barcode (format , rawValue , System .currentTimeMillis ());
136111
137- Barcode filtered = falsePositiveFilter .filter (barcode );
112+ io . snabble . sdk . ui . scanner . Barcode filtered = falsePositiveFilter .filter (barcode );
138113 if (filtered != null ) {
139114 Logger .d ("Detected barcode: " + barcode .toString ());
140115 return filtered ;
0 commit comments