新しい Google Barcode API のサンプル コードで遊んでいます。バーコードのライブ カメラ フィードにボックスとバーコード値を重ねます。(顔も)
バーコード値をアプリに返す方法がわかりません。A) 検出イベントがいつ発生したかを伝える方法、および B) アプリの他の部分で使用するために ravValue にアクセスする方法。誰でもこれを手伝ってもらえますか?
https://developers.google.com/vision/multi-tracker-tutorial
https://github.com/googlesamples/android-vision
更新: @ pm0733464 の回答に基づいて、Activity でアクセスできる Tracker クラスにコールバック インターフェイス (onFound と呼ばれる) を追加しました。Google マルチトラッカー サンプルの適応:
グラフィックトラッカー:
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);
}
}
主な活動:
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);