1

使用以下代码,黑莓屏幕中的二维码显示为空白,我不知道我错过了什么。它显示了一个正确居中的正方形,但正方形本身是白色的,里面没有二维码。任何帮助表示赞赏。谢谢。

public QRCodeScreen(String qrCode) {
    this.qrCode = "Test String";
    qrImage = new BitmapField(new Bitmap(QRCODE_WIDTH, QRCODE_WIDTH),FIELD_HCENTER);
    qrImage.setBorder(BorderFactory.createBevelBorder(new XYEdges(2, 2, 2, 2)));

    Hashtable hintMap = new Hashtable();
    hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
    try {
        MultiFormatWriter barcodeWriter = new MultiFormatWriter();
        ByteMatrix byteMatrix = barcodeWriter.encode(this.qrCode, BarcodeFormat.QR_CODE, QRCODE_WIDTH, QRCODE_WIDTH,hintMap);

        Bitmap bitmap = BarcodeBitmap.createBitmap(byteMatrix, 256);

        qrImage.setBitmap(bitmap);
    }
    catch (Exception e) {

    }

    add(qrImage);
}

}

4

1 回答 1

1

查看BlackBerry 在线文档中的此示例

如果您只是修改它以适应上面的代码,您会得到:

public class QRCodeScreen extends MainScreen {

   private String qrCode;
   private static final int QRCODE_WIDTH = 100;
   private BitmapField qrImage;

   public QRCodeScreen(String qrCode) { 
      this.qrCode = "Test String"; 
      qrImage = new BitmapField(new Bitmap(QRCODE_WIDTH, QRCODE_WIDTH),FIELD_HCENTER); 
      qrImage.setBorder(BorderFactory.createBevelBorder(new XYEdges(2, 2, 2, 2))); 

      try { 
         QRCode code = new QRCode();
         Encoder.encode(qrCode, ErrorCorrectionLevel.L, code);
         ByteMatrix barcode = code.getMatrix();
         Bitmap bitmap = BarcodeBitmap.createBitmap(barcode, QRCODE_WIDTH);
         qrImage.setBitmap(bitmap);         
      } 
      catch (Exception e) { 
         e.printStackTrace();
      } 

      add(qrImage); 
   } 
}

这对我有用,在 6.0 9800 模拟器上(运行您的原始代码会产生您所描述的空白图像)。

于 2012-07-31T01:48:59.773 回答