Ho giocato con il codice di esempio della nuova API di Google Barcode. Sovrappone una casella e il valore del codice a barre sul feed della telecamera live di un codice a barre. (Anche volti)Come acquisire i valori dei codici a barre utilizzando la nuova API per codici a barre in Google Play Services?
Non posso dire come restituire un valore di codice a barre alla mia app. A) Come sapere quando si è verificato un evento di rilevamento e B) come accedere a ravValue per l'uso in altre parti della mia app. Qualcuno può aiutare con questo?
https://developers.google.com/vision/multi-tracker-tutorial
https://github.com/googlesamples/android-vision
UPDATE: Sulla base di @ pm0733464 risposta, ho aggiunto un'interfaccia di callback (chiamata onFound) alla classe Tracker che ho potuto accedere in attività. Adattamento del campione Multi-tracker di Google:
GraphicTracker:
class GraphicTracker<T> extends Tracker<T> {
private GraphicOverlay mOverlay;
private TrackedGraphic<T> mGraphic;
private Callback mCallback;
GraphicTracker(GraphicOverlay overlay, TrackedGraphic<T> graphic, Callback callback) {
mOverlay = overlay;
mGraphic = graphic;
mCallback = callback;
}
public interface Callback {
void onFound(String barcodeValue);
}
@Override
public void onUpdate(Detector.Detections<T> detectionResults, T item) {
mCallback.onFound(((Barcode) item).rawValue);
mOverlay.add(mGraphic);
mGraphic.updateItem(item);
}
BarcodeTrackerFactory:
class BarcodeTrackerFactory implements MultiProcessor.Factory<Barcode> {
private GraphicOverlay mGraphicOverlay;
private GraphicTracker.Callback mCallback;
BarcodeTrackerFactory(GraphicOverlay graphicOverlay, GraphicTracker.Callback callback) {
mGraphicOverlay = graphicOverlay;
mCallback = callback;
}
@Override
public Tracker<Barcode> create(Barcode barcode) {
BarcodeGraphic graphic = new BarcodeGraphic(mGraphicOverlay);
return new GraphicTracker<>(mGraphicOverlay, graphic, mCallback);
}
}
attività principale:
BarcodeDetector barcodeDetector = new BarcodeDetector.Builder(context).build();
BarcodeTrackerFactory barcodeFactory = new BarcodeTrackerFactory(mGraphicOverlay, new GraphicTracker.Callback() {
@Override
public void onFound(String barcodeValue) {
Log.d(TAG, "Barcode in Multitracker = " + barcodeValue);
}
});
MultiProcessor<Barcode> barcodeMultiProcessor = new MultiProcessor.Builder<>(barcodeFactory).build();
barcodeDetector.setProcessor(barcodeMultiProcessor);
Sono interessato alla tua opinione finora. Quali sono le tue esperienze con l'API: quanto riconosce i codici a barre? Anche quando è un po 'buio? È veloce? Quindi nel complesso: è migliore di zxing? E infine, puoi fornire un esempio completo? – Dante
C'è una nuova app di esempio del lettore di codici a barre su GitHub: https://github.com/googlesamples/android-vision/tree/master/visionSamples/barcode-reader – pm0733464
@Dante Il codice che hai condiviso con 'callback' è stato molto utile per me. Molte grazie! –