Android编程实现二维码的生成与解析
本文实例讲述了Android编程实现二维码的生成与解析。分享给大家供大家参考,具体如下:
直接上代码,代码上面有具体的解析,并且提供jar供下载:二维码Jar包.rar。
根据文本生成对应的二维码:
//生成QR图
privatevoidcreateImage(){
try{
//需要引入core包
QRCodeWriterwriter=newQRCodeWriter();
Stringtext=qr_text.getText().toString();
Log.i(TAG,"生成的文本:"+text);
if(text==null||"".equals(text)||text.length()<1){
return;
}
//把输入的文本转为二维码
BitMatrixmartix=writer.encode(text,BarcodeFormat.QR_CODE,
QR_WIDTH,QR_HEIGHT);
System.out.println("w:"+martix.getWidth()+"h:"
+martix.getHeight());
Hashtable<EncodeHintType,String>hints=newHashtable<EncodeHintType,String>();
hints.put(EncodeHintType.CHARACTER_SET,"utf-8");
BitMatrixbitMatrix=newQRCodeWriter().encode(text,
BarcodeFormat.QR_CODE,QR_WIDTH,QR_HEIGHT,hints);
int[]pixels=newint[QR_WIDTH*QR_HEIGHT];
for(inty=0;y<QR_HEIGHT;y++){
for(intx=0;x<QR_WIDTH;x++){
if(bitMatrix.get(x,y)){
pixels[y*QR_WIDTH+x]=0xff000000;
}else{
pixels[y*QR_WIDTH+x]=0xffffffff;
}
}
}
Bitmapbitmap=Bitmap.createBitmap(QR_WIDTH,QR_HEIGHT,
Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixels,0,QR_WIDTH,0,0,QR_WIDTH,QR_HEIGHT);
qr_image.setImageBitmap(bitmap);
}catch(WriterExceptione){
e.printStackTrace();
}
}
根据二维码图片读取内容:
//解析QR图片
privatevoidscanningImage(){
Map<DecodeHintType,String>hints=newHashMap<DecodeHintType,String>();
hints.put(DecodeHintType.CHARACTER_SET,"utf-8");
//获得待解析的图片
Bitmapbitmap=((BitmapDrawable)qr_image.getDrawable()).getBitmap();
RGBLuminanceSourcesource=newRGBLuminanceSource(bitmap);
BinaryBitmapbitmap1=newBinaryBitmap(newHybridBinarizer(source));
QRCodeReaderreader=newQRCodeReader();
Resultresult;
try{
result=reader.decode(bitmap1,hints);
//得到解析后的文字
qr_result.setText(result.getText());
}catch(NotFoundExceptione){
e.printStackTrace();
}catch(ChecksumExceptione){
e.printStackTrace();
}catch(FormatExceptione){
e.printStackTrace();
}
}
希望本文所述对大家Android程序设计有所帮助。