</pre><pre name="code" class="java">生成二维码
public static Bitmap toBitmapImage(BitMatrix matrix) {
int width = matrix.getWidth();
int height = matrix.getHeight();
Bitmap image = Bitmap.createBitmap(width, height,
Bitmap.Config.ARGB_8888);
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
image.setPixel(x, y, matrix.get(x, y) == true ? BLACK : WHITE);
}
}
return image;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public static Bitmap encode(String contents) {
Bitmap bitmap = null;
try {
Hashtable hints = new Hashtable();
// //解码设置编码方式为:utf-8
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
BitMatrix bitMatrix = new MultiFormatWriter().encode(contents,
BarcodeFormat.QR_CODE, WIDTH, HEIGHT,hints);
bitmap = toBitmapImage(bitMatrix);
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
二维码解析
public static String decode(Bitmap bit) {
int[] array = new int[bit.getWidth() * bit.getHeight()];
bit.getPixels(array, 0, bit.getWidth(), 0, 0, bit.getWidth(),
bit.getHeight());
LuminanceSource source = new RGBLuminanceSource(bit.getWidth(),
bit.getHeight(), array);
//
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
Result result = null;
try {
result = new MultiFormatReader().decode(bitmap);
} catch (NotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (result == null) {
return null;
}
String resultStr = result.getText();
return resultStr;
}
这里需要用到Google的zxing架包