2016-06-04 2 views
0

Я пытаюсь разработать приложение, используя библиотеку Zbar для SmartEyeGlass, которая сканирует QR-коды. Приложение основано на выборочном расширении камеры. Но оно не работает, и я не вижу, в чем проблема. Вот мой код;Как использовать Sony SmartEyeGlass для сканирования QR-кода?

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); 
} 

}

ответ

0

Проблема, кажется, что вы передаете data1 в качестве параметра метода barcode.setData.

Вы, вероятно, следует передать растровое изображение: barcode.setData (растровый)

Этот вопрос относится скорее к библиотеке QR-код сканирования, который вы используете. Также отметьте его соответствующим тегом для этой библиотеки. Таким образом, вы можете получить поддержку об этой библиотеке. Также проверьте, что требуется для параметра, ожидаемого в методе setData, в ссылках API вашей библиотеки сканирования QR-кода.