ZXingを使ってQRコードを表示する
ZXingとは
zxing - Project Hosting on Google Code
googleさんが作ったバーコードのエンコード/デコードライブラリです。
Androidでバーコードリーダはほとんどがこれを採用しています。
対応しているバーコードの種類も豊富です。
さらにjava以外にもいろんな言語をサポートしているみたいですね。
今回はQRコードの表示のみです。
意外と探しても見つからなかったのでメモります。*1
ZXingのビルド
ここを見ながらやりました。分かりやすいです。
Android ZXingを使ったバーコードリーダのコーディング 電脳羊(Android Dream)/ウェブリブログ
WindowsならCドライブルートとかでやったほうがいいですね。失敗する場合があります。
ソース
public Bitmap createQRCodeByZxing(String contents,int size) throws WriterException { //QRコードをエンコードするクラス QRCodeWriter writer = new QRCodeWriter(); //異なる型の値を入れるためgenericは使えない Hashtable encodeHint = new Hashtable(); //日本語を扱うためにシフトJISを指定 encodeHint.put(EncodeHintType.CHARACTER_SET, "shiftjis"); //エラー修復レベルを指定 //L 7%が復元可能 //M 15%が復元可能 //Q 25%が復元可能 //H 30%が復元可能 encodeHint.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L); ByteMatrix qrCodeData = writer.encode(contents, BarcodeFormat.QR_CODE, size, size, encodeHint); //QRコードのbitmap画像を作成 Bitmap bitmap = Bitmap.createBitmap(size, size, Config.ARGB_8888); bitmap.eraseColor(Color.argb(255, 255, 255, 255)); //いらないかも for (int x = 0; x < qrCodeData.getWidth(); x++) { for (int y = 0; y < qrCodeData.getHeight(); y++) { if (qrCodeData.get(x, y) == 0) { //0はBlack bitmap.setPixel(x, y, Color.argb(255, 0, 0, 0)); } else { //-1はWhite bitmap.setPixel(x, y, Color.argb(255, 255, 255, 255)); } } } return bitmap; }
*1:簡単すぎて?