2016-06-04 12 views
0

Ich versuche eine App zu entwickeln, die die Zbar-Bibliothek für SmartEyeGlass verwendet, die QR-Codes scannt. Die App basiert auf Beispielkamera-Erweiterung. Aber es funktioniert nicht und ich kann nicht sehen, was das Problem ist. Hier ist mein Code;Wie verwende ich Sony SmartEyeGlass zum Scannen von QR-Code?

private void cameraEventOperation(CameraEvent event) { 
    if (event.getErrorStatus() != 0) { 
     Log.d(Constants.LOG_TAG, "error code = " + event.getErrorStatus()); 
     return; 
    } 

    if(event.getIndex() != 0){ 
     Log.d(Constants.LOG_TAG, "not oparate this event"); 
     return; 
    } 

    Bitmap bitmap = null; 
    byte[] data = null; 


    if ((event.getData() != null) && ((event.getData().length) > 0)) { 
     data = event.getData(); 
     bitmap = BitmapFactory.decodeByteArray(data, 0, data.length); 



     data1= data; 
     /* Instance barcode scanner */ 
     scanner = new ImageScanner(); 
     scanner.setConfig(Symbol.QRCODE, Config.X_DENSITY, 2); 
     scanner.setConfig(Symbol.QRCODE, Config.Y_DENSITY, 2); 
     Image barcode = new Image(width, height, "Y800"); 
     barcode.setData(data1); 
     QRCodeStatus= scanner.scanImage(barcode); 


     if (QRCodeStatus != 0) { 
     SymbolSet syms = scanner.getResults(); 

      for (Symbol kasa : syms) { 
        strValueOfScannedQR = String.valueOf(kasa.getData()); 
       intValueOfScannedQR = Integer.valueOf(kasa.getData()); 
      } 

     } 
    } 

    if (bitmap == null) { 
     Log.d(Constants.LOG_TAG, "bitmap == null"); 
     return; 
    } 

    if (saveToSdcard == true) { 
     String fileName = saveFilePrefix + String.format("%04d", saveFileIndex) + ".jpg"; 
     new SavePhotoTask(saveFolder,fileName).execute(data); 
     saveFileIndex++; 
    } 

    if (recordingMode == SmartEyeglassControl.Intents.CAMERA_MODE_STILL) { 
     Bitmap basebitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 
     basebitmap.setDensity(DisplayMetrics.DENSITY_DEFAULT); 
     Canvas canvas = new Canvas(basebitmap); 
     Rect rect = new Rect(0, 0, width, height); 
     Paint paint = new Paint(); 
     paint.setStyle(Paint.Style.FILL); 
     canvas.drawBitmap(bitmap, rect, rect, paint); 

     utils.showBitmap(basebitmap); 
     return; 
    } 

    Log.d(Constants.LOG_TAG, "Camera frame was received : #" + saveFileIndex); 
    updateDisplay(); 
} 

private void updateDisplay() 
{ 
    Bitmap displayBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 
    displayBitmap.setDensity(DisplayMetrics.DENSITY_DEFAULT); 
    Canvas canvas = new Canvas(displayBitmap); 
    Paint paint = new Paint(); 
    paint.setStyle(Paint.Style.FILL); 
    paint.setTextSize(16); 
    paint.setColor(Color.WHITE); 
    // Update layout according to the camera mode 
    switch (recordingMode) { 
     case SmartEyeglassControl.Intents.CAMERA_MODE_STILL: 
      canvas.drawText("Tap to capture : STILL", pointX, pointY, paint); 
      break; 
     case SmartEyeglassControl.Intents.CAMERA_MODE_STILL_TO_FILE: 
      canvas.drawText("Tap to capture : STILL TO FILE", pointX, pointY, paint); 
      break; 



     case SmartEyeglassControl.Intents.CAMERA_MODE_JPG_STREAM_HIGH_RATE: 
      if (cameraStarted) { 
       canvas.drawText("Frame Number: " + Integer.toString(saveFileIndex), pointBaseX, (pointY * 1), paint); 
       canvas.drawText("Value of QR: " + strValueOfScannedQR, pointBaseX, (pointY * 2), paint); 
       canvas.drawText("Data1=" + data1, pointBaseX, (pointY * 3), paint); 
       canvas.drawText("QR status " + QRCodeStatus, pointBaseX, (pointY * 4), paint); 


      } 
      else { 
       canvas.drawText("Tap to start JPEG Stream.", pointBaseX, pointY, paint); 
      } 
      break; 



     case SmartEyeglassControl.Intents.CAMERA_MODE_JPG_STREAM_LOW_RATE: 
      if (cameraStarted) { 
       canvas.drawText("JPEG Streaming...", pointBaseX, pointY, paint); 
       canvas.drawText("Tap to stop.", pointBaseX, (pointY * 2), paint); 
       canvas.drawText("Frame Number: " + Integer.toString(saveFileIndex), pointBaseX, (pointY * 3), paint); 
      } else { 
       canvas.drawText("Tap to start JPEG Stream.", pointBaseX, pointY, paint); 
      } 
      break; 
     default: 
      canvas.drawText("wrong recording type.", pointBaseX, pointY, paint); 
    } 

    utils.showBitmap(displayBitmap); 
} 

}

Antwort

0

Problem scheint zu sein, dass Sie data1 als Parameter barcode.setData Verfahren sind vorbei. barcode.setData (Bitmap)

Diese Frage ist eher im Zusammenhang mit QR-Code-Scan-Bibliothek, die Sie verwenden:

Sie sollten wahrscheinlich die Bitmap übergeben. Bitte markieren Sie sie auch mit dem entsprechenden Tag für diese Bibliothek. Sie können also Unterstützung für diese Bibliothek erhalten. Bitte überprüfen Sie auch, welche Voraussetzungen für den in der setData-Methode in API-Referenzen Ihrer QR-Code-Scannbibliothek erwarteten Parameter erfüllt sein müssen.