2017-09-21 4 views
1

J'essaie d'intégrer l'API Google Vision dans mon code, mais j'ai du mal à convertir la valeur en mode texte. De plus, la vue de la surface de la caméra n'est pas détruite.L'API Google VISION lit le code à barres dans la vue texte

Manifest méta-données -

<meta-data 
     android:name="com.google.android.gms.vision.DEPENDENCIES" 
     android:value="barcode" /> 

Valeur actuelle readed par le code ci-dessous:

[email protected] 

prévue Texte Code-barres: 047754732276

code:

barcodeDetector = 
       new BarcodeDetector.Builder(transactionActivity) 
         .setBarcodeFormats(Barcode.ALL_FORMATS) 
         .build(); 
     cameraSource = new CameraSource.Builder(transactionActivity, barcodeDetector) 
       .setAutoFocusEnabled(true) 
       .setRequestedPreviewSize(1600, 1024) 
       .build(); 

     cameraView.getHolder().addCallback(new SurfaceHolder.Callback() { 
      @Override 
      public void surfaceCreated(SurfaceHolder holder) { 
       try { 
        //noinspection MissingPermission 
        if(ContextCompat.checkSelfPermission(transactionActivity, android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){ 
         ActivityCompat.requestPermissions(transactionActivity, new String[]{Manifest.permission.CAMERA}, PERMISSION_REQUEST); 
        } 
        cameraSource.start(cameraView.getHolder()); 
       } catch (IOException ex) { 
        ex.printStackTrace(); 
       } 
      } 

      @Override 
      public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 
      } 

      @Override 
      public void surfaceDestroyed(SurfaceHolder holder) { 
       cameraSource.stop(); 
      } 
     }); 
     barcodeDetector.setProcessor(new Detector.Processor() { 
      @Override 
      public void release() { 
      } 

      @Override 
      public void receiveDetections(Detector.Detections detections) { 
       final SparseArray barcodes = detections.getDetectedItems(); 
       if (barcodes.size() != 0) { 
        imei.post(new Runnable() { 
         @Override 
         public void run() { 
          cameraSource.stop(); 
          //Update barcode value to TextView 
          imei.setText(String.valueOf((barcodes.valueAt(0).displayValue))); 
         } 
        }); 
       } 
      } 
     }); 
+0

Pouvez-vous poster la balise méta-données du fichier manifeste pour le gms.vision. – ADimaano

+0

@ADimaano voici meta deta tag du manifeste, j'ai également mettre à jour mon message avec des métadonnées. Akshay

Répondre

0

Finalement trouvé réponse, nous devons lancer SparseArray avec SparseArray <Barcode> pour obtenir displayValue.

Code ci-dessous est mis à jour ..

barcodeDetector = 
      new BarcodeDetector.Builder(transactionActivity) 
        .setBarcodeFormats(Barcode.ALL_FORMATS) 
        .build(); 
    cameraSource = new CameraSource.Builder(transactionActivity, barcodeDetector) 
      .setAutoFocusEnabled(true) 
      .setRequestedPreviewSize(1600, 1024) 
      .build(); 

    cameraView.getHolder().addCallback(new SurfaceHolder.Callback() { 
     @Override 
     public void surfaceCreated(SurfaceHolder holder) { 
      try { 
       //noinspection MissingPermission 
       if(ContextCompat.checkSelfPermission(transactionActivity, android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){ 
        ActivityCompat.requestPermissions(transactionActivity, new String[]{Manifest.permission.CAMERA}, PERMISSION_REQUEST); 
       } 
       cameraSource.start(cameraView.getHolder()); 
      } catch (IOException ex) { 
       ex.printStackTrace(); 
      } 
     } 

     @Override 
     public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 
     } 

     @Override 
     public void surfaceDestroyed(SurfaceHolder holder) { 
      cameraSource.stop(); 
     } 
    }); 
    barcodeDetector.setProcessor(new Detector.Processor() { 
     @Override 
     public void release() { 
     } 

     @Override 
     public void receiveDetections(Detector.Detections detections) { 
      final SparseArray<Barcode> barcodes = detections.getDetectedItems(); 
      if (barcodes.size() != 0) { 
       imei.post(new Runnable() { 
        @Override 
        public void run() { 
         cameraSource.stop(); 
         //Update barcode value to TextView 
         imei.setText(String.valueOf((barcodes.valueAt(0).displayValue))); 
        } 
       }); 
      } 
     } 
    });