Skip to content

Commit fe42d73

Browse files
author
Adam Hurwitz
committed
Adding ability to consume barcodes in BarcodeCaptureAcitivity by adding interface too BarcodeGraphicTracker
1 parent dbf165a commit fe42d73

File tree

3 files changed

+40
-9
lines changed

3 files changed

+40
-9
lines changed

visionSamples/barcode-reader/app/src/main/java/com/google/android/gms/samples/vision/barcodereader/BarcodeCaptureActivity.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
* rear facing camera. During detection overlay graphics are drawn to indicate the position,
5858
* size, and ID of each barcode.
5959
*/
60-
public final class BarcodeCaptureActivity extends AppCompatActivity {
60+
public final class BarcodeCaptureActivity extends AppCompatActivity implements BarcodeGraphicTracker.BarcodeUpdateListener {
6161
private static final String TAG = "Barcode-reader";
6262

6363
// intent request code to handle updating play services if needed.
@@ -170,7 +170,7 @@ private void createCameraSource(boolean autoFocus, boolean useFlash) {
170170
// graphics for each barcode on screen. The factory is used by the multi-processor to
171171
// create a separate tracker instance for each barcode.
172172
BarcodeDetector barcodeDetector = new BarcodeDetector.Builder(context).build();
173-
BarcodeTrackerFactory barcodeFactory = new BarcodeTrackerFactory(mGraphicOverlay);
173+
BarcodeTrackerFactory barcodeFactory = new BarcodeTrackerFactory(mGraphicOverlay, this);
174174
barcodeDetector.setProcessor(
175175
new MultiProcessor.Builder<>(barcodeFactory).build());
176176

@@ -428,4 +428,9 @@ public void onScaleEnd(ScaleGestureDetector detector) {
428428
mCameraSource.doZoom(detector.getScaleFactor());
429429
}
430430
}
431+
432+
@Override
433+
public void onBarcodeDetected(Barcode barcode) {
434+
//do something with barcode data returned
435+
}
431436
}

visionSamples/barcode-reader/app/src/main/java/com/google/android/gms/samples/vision/barcodereader/BarcodeGraphicTracker.java

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
*/
1616
package com.google.android.gms.samples.vision.barcodereader;
1717

18+
import android.content.Context;
19+
import android.support.annotation.UiThread;
20+
1821
import com.google.android.gms.samples.vision.barcodereader.ui.camera.GraphicOverlay;
1922
import com.google.android.gms.vision.Detector;
2023
import com.google.android.gms.vision.Tracker;
@@ -26,13 +29,30 @@
2629
* to an overlay, update the graphics as the item changes, and remove the graphics when the item
2730
* goes away.
2831
*/
29-
class BarcodeGraphicTracker extends Tracker<Barcode> {
32+
public class BarcodeGraphicTracker extends Tracker<Barcode> {
3033
private GraphicOverlay<BarcodeGraphic> mOverlay;
3134
private BarcodeGraphic mGraphic;
3235

33-
BarcodeGraphicTracker(GraphicOverlay<BarcodeGraphic> overlay, BarcodeGraphic graphic) {
34-
mOverlay = overlay;
35-
mGraphic = graphic;
36+
private BarcodeUpdateListener mBarcodeUpdateListener;
37+
38+
/**
39+
* Consume the item instance detected from an Activity or Fragment level by implementing the
40+
* BarcodeUpdateListener interface method onBarcodeDetected.
41+
*/
42+
public interface BarcodeUpdateListener {
43+
@UiThread
44+
void onBarcodeDetected(Barcode barcode);
45+
}
46+
47+
BarcodeGraphicTracker(GraphicOverlay<BarcodeGraphic> mOverlay, BarcodeGraphic mGraphic,
48+
Context context) {
49+
this.mOverlay = mOverlay;
50+
this.mGraphic = mGraphic;
51+
if (context instanceof BarcodeUpdateListener) {
52+
this.mBarcodeUpdateListener = (BarcodeUpdateListener) context;
53+
} else {
54+
throw new RuntimeException("Hosting activity must implement BarcodeUpdateListener");
55+
}
3656
}
3757

3858
/**
@@ -41,6 +61,7 @@ class BarcodeGraphicTracker extends Tracker<Barcode> {
4161
@Override
4262
public void onNewItem(int id, Barcode item) {
4363
mGraphic.setId(id);
64+
mBarcodeUpdateListener.onBarcodeDetected(item);
4465
}
4566

4667
/**

visionSamples/barcode-reader/app/src/main/java/com/google/android/gms/samples/vision/barcodereader/BarcodeTrackerFactory.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
*/
1616
package com.google.android.gms.samples.vision.barcodereader;
1717

18+
import android.content.Context;
19+
1820
import com.google.android.gms.samples.vision.barcodereader.ui.camera.GraphicOverlay;
1921
import com.google.android.gms.vision.MultiProcessor;
2022
import com.google.android.gms.vision.Tracker;
@@ -26,15 +28,18 @@
2628
*/
2729
class BarcodeTrackerFactory implements MultiProcessor.Factory<Barcode> {
2830
private GraphicOverlay<BarcodeGraphic> mGraphicOverlay;
31+
private Context mContext;
2932

30-
BarcodeTrackerFactory(GraphicOverlay<BarcodeGraphic> barcodeGraphicOverlay) {
31-
mGraphicOverlay = barcodeGraphicOverlay;
33+
public BarcodeTrackerFactory(GraphicOverlay<BarcodeGraphic> mGraphicOverlay,
34+
Context mContext) {
35+
this.mGraphicOverlay = mGraphicOverlay;
36+
this.mContext = mContext;
3237
}
3338

3439
@Override
3540
public Tracker<Barcode> create(Barcode barcode) {
3641
BarcodeGraphic graphic = new BarcodeGraphic(mGraphicOverlay);
37-
return new BarcodeGraphicTracker(mGraphicOverlay, graphic);
42+
return new BarcodeGraphicTracker(mGraphicOverlay, graphic, mContext);
3843
}
3944

4045
}

0 commit comments

Comments
 (0)