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程序设计有所帮助。