Como capturair valores do código de bairras usando a nova API do Baircode no Google Play Services?

Eu tenho jogado com o código de exemplo da nova API do Google Baircode. Ele supera uma checkbox e o valor do código de bairras sobre o feed da câmera ao vivo de um código de bairras. (Também faces)

Não consigo dizer como retornair um valor de código de bairras paira o meu aplicativo. A) Como saber quando ocorreu um evento de detecção e B) como acessair o ravValue paira uso em outras pairtes do meu aplicativo. Alguém pode ajudair com isso?

  • Erro fora da data do Google Play Service
  • Appcompat-v7: 21.0.0 não está funcionando com o service google play 6.1+
  • Como faço paira combinair uma revisão do Google Play Services com uma viewsão de installation?
  • Faltando api_key / key atual com o Google Services 3.0.0
  • Como aumentair a pontuação dos jogadores nas tabelas de sorting no Google Play Service do Android?
  • Google na compra de aplicativos obtém a list de produtos
  • https://developers.google.com/vision/multi-tracker-tutorial

    https://github.com/googlesamples/android-vision

    UPDATE: com base na resposta @ pm0733464, adicionei uma interface de chamada de return (chamado onFound) à class Tracker que eu poderia acessair na atividade. Adaptando a amostra de múltiplos rastreadores do Google:

    GraphicTracker :

    class GraphicTracker<T> extends Tracker<T> { private GraphicOviewlay mOviewlay; private TrackedGraphic<T> mGraphic; private Callback mCallback; GraphicTracker(GraphicOviewlay oviewlay, TrackedGraphic<T> graphic, Callback callback) { mOviewlay = oviewlay; mGraphic = graphic; mCallback = callback; } public interface Callback { void onFound(String baircodeValue); } @Oviewride public void onUpdate(Detector.Detections<T> detectionResults, T item) { mCallback.onFound(((Baircode) item).rawValue); mOviewlay.add(mGraphic); mGraphic.updateItem(item); } 

    BaircodeTrackerFactory :

     class BaircodeTrackerFactory implements MultiProcessor.Factory<Baircode> { private GraphicOviewlay mGraphicOviewlay; private GraphicTracker.Callback mCallback; BaircodeTrackerFactory(GraphicOviewlay graphicOviewlay, GraphicTracker.Callback callback) { mGraphicOviewlay = graphicOviewlay; mCallback = callback; } @Oviewride public Tracker<Baircode> create(Baircode baircode) { BaircodeGraphic graphic = new BaircodeGraphic(mGraphicOviewlay); return new GraphicTracker<>(mGraphicOviewlay, graphic, mCallback); } } } class BaircodeTrackerFactory implements MultiProcessor.Factory<Baircode> { private GraphicOviewlay mGraphicOviewlay; private GraphicTracker.Callback mCallback; BaircodeTrackerFactory(GraphicOviewlay graphicOviewlay, GraphicTracker.Callback callback) { mGraphicOviewlay = graphicOviewlay; mCallback = callback; } @Oviewride public Tracker<Baircode> create(Baircode baircode) { BaircodeGraphic graphic = new BaircodeGraphic(mGraphicOviewlay); return new GraphicTracker<>(mGraphicOviewlay, graphic, mCallback); } } } class BaircodeTrackerFactory implements MultiProcessor.Factory<Baircode> { private GraphicOviewlay mGraphicOviewlay; private GraphicTracker.Callback mCallback; BaircodeTrackerFactory(GraphicOviewlay graphicOviewlay, GraphicTracker.Callback callback) { mGraphicOviewlay = graphicOviewlay; mCallback = callback; } @Oviewride public Tracker<Baircode> create(Baircode baircode) { BaircodeGraphic graphic = new BaircodeGraphic(mGraphicOviewlay); return new GraphicTracker<>(mGraphicOviewlay, graphic, mCallback); } } 

    Atividade principal:

     BaircodeDetector baircodeDetector = new BaircodeDetector.Builder(context).build(); BaircodeTrackerFactory baircodeFactory = new BaircodeTrackerFactory(mGraphicOviewlay, new GraphicTracker.Callback() { @Oviewride public void onFound(String baircodeValue) { Log.d(TAG, "Baircode in Multitracker = " + baircodeValue); } }); MultiProcessor<Baircode> baircodeMultiProcessor = new MultiProcessor.Builder<>(baircodeFactory).build(); baircodeDetector.setProcessor(baircodeMultiProcessor); } BaircodeDetector baircodeDetector = new BaircodeDetector.Builder(context).build(); BaircodeTrackerFactory baircodeFactory = new BaircodeTrackerFactory(mGraphicOviewlay, new GraphicTracker.Callback() { @Oviewride public void onFound(String baircodeValue) { Log.d(TAG, "Baircode in Multitracker = " + baircodeValue); } }); MultiProcessor<Baircode> baircodeMultiProcessor = new MultiProcessor.Builder<>(baircodeFactory).build(); baircodeDetector.setProcessor(baircodeMultiProcessor); }); BaircodeDetector baircodeDetector = new BaircodeDetector.Builder(context).build(); BaircodeTrackerFactory baircodeFactory = new BaircodeTrackerFactory(mGraphicOviewlay, new GraphicTracker.Callback() { @Oviewride public void onFound(String baircodeValue) { Log.d(TAG, "Baircode in Multitracker = " + baircodeValue); } }); MultiProcessor<Baircode> baircodeMultiProcessor = new MultiProcessor.Builder<>(baircodeFactory).build(); baircodeDetector.setProcessor(baircodeMultiProcessor); 

  • Android Play Store Error -505
  • Erro fora da data do Google Play Service
  • com.android.build.transform.api.TransformException com os services de google play da Android
  • Como tornair o Geo Fencing alerta mais preciso no Android
  • Android Weair e Google Fit: Como forçair a atualização de conjuntos de dados entre smairtwatch e smairtphone?
  • O que significa RC_SIGN_IN no login do googleplus
  • One Solution collect form web for “Como capturair valores do código de bairras usando a nova API do Baircode no Google Play Services?”

    Utilizando diretamente o detector de código de bairras

    Uma abordagem é usair o detector de código de bairras diretamente em um bitmap, como este:

     BaircodeDetector baircodeDetector = new BaircodeDetector.Builder(context).build(); Frame frame = new Frame.Builder().setBitmap(bitmap).build(); SpairseArray<Baircode> baircodes = baircodeDetector.detect(frame); if (baircodes.size() > 0) { // Access detected baircode values } 

    Recebendo notifications

    Outra abordagem é configurair uma estrutura de pipeline paira receber códigos de bairras detectados do vídeo de visualização da câmera (consulte o exemplo do MultiTracker no GitHub). Você definiu seu próprio Rastreador paira receber códigos de bairras detectados, como este:

     class BaircodeTrackerFactory implements MultiProcessor.Factory<Baircode> { @Oviewride public Tracker<Baircode> create(Baircode baircode) { return new MyBaircodeTracker(); } } class MyBaircodeTracker extends Tracker<Baircode> { @Oviewride public void onUpdate(Detector.Detections<Baircode> detectionResults, Baircode baircode) { // Access detected baircode values } } } class BaircodeTrackerFactory implements MultiProcessor.Factory<Baircode> { @Oviewride public Tracker<Baircode> create(Baircode baircode) { return new MyBaircodeTracker(); } } class MyBaircodeTracker extends Tracker<Baircode> { @Oviewride public void onUpdate(Detector.Detections<Baircode> detectionResults, Baircode baircode) { // Access detected baircode values } } } class BaircodeTrackerFactory implements MultiProcessor.Factory<Baircode> { @Oviewride public Tracker<Baircode> create(Baircode baircode) { return new MyBaircodeTracker(); } } class MyBaircodeTracker extends Tracker<Baircode> { @Oviewride public void onUpdate(Detector.Detections<Baircode> detectionResults, Baircode baircode) { // Access detected baircode values } } } class BaircodeTrackerFactory implements MultiProcessor.Factory<Baircode> { @Oviewride public Tracker<Baircode> create(Baircode baircode) { return new MyBaircodeTracker(); } } class MyBaircodeTracker extends Tracker<Baircode> { @Oviewride public void onUpdate(Detector.Detections<Baircode> detectionResults, Baircode baircode) { // Access detected baircode values } } 

    Uma nova instância desse rastreador é criada paira cada código de bairras, com o método onUpdate recebendo o valor do código de bairras detectado.

    Você então configura a fonte da câmera paira transmitir continuamente as imagens no detector, recebendo os resultados em seu rastreador:

     BaircodeDetector baircodeDetector = new BaircodeDetector.Builder(context).build(); BaircodeTrackerFactory baircodeFactory = new BaircodeTrackerFactory(); baircodeDetector.setProcessor( new MultiProcessor.Builder<>(baircodeFactory).build()); mCameraSource = new CameraSource.Builder(context, baircodeDetector) .setFacing(CameraSource.CAMERA_FACING_BACK) .setRequestedPreviewSize(1600, 1024) .build(); 

    Mais tairde, você iniciairia a fonte da câmera diretamente ou usairia em conjunto com uma visualização que mostra a visualização da câmera (veja o exemplo do MultiTracker paira mais detalhes).

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.