2017-09-21 4 views
1

私のコードにGoogle Vision APIを統合しようとしていますが、値をテキストビューに変換するのが苦労しています。また、カメラの表面図が破壊されることもありません。Google VISION APIがテキストビューのバーコードを読み取る

マニフェストメタデータ -

<meta-data 
     android:name="com.google.android.gms.vision.DEPENDENCIES" 
     android:value="barcode" /> 
以下のコードでreaded

現在値:

[email protected] 

予想されるバーコードのテキスト:047754732276

コード:

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

あなたはgms.visionのマニフェストファイルのメタデータタグを投稿することができます。 – ADimaano

+0

ここで@ADimaanoはマニフェストのメタデタタグです。私はメタデータを使って投稿を更新しています。 Akshay

答えて

0

最後に答えが見つかったので、SparseArraySparseArray <Barcode>にキャストしてdisplayValueを取得する必要があります。

以下は更新されたコード..

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))); 
        } 
       }); 
      } 
     } 
    }); 
関連する問題