介绍
本篇文章为大家展示了如何在Android应用中实现一个二维码生成功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
1。Android有自带的jar包可以生成二维码core-3.0.0.jar,其中的com.google.zxing包
2。写一个二维码生成的工具类,网上搜的话应该一大堆。
<>强实例代码:强>
包com.example.administrator.twocodedemo; 进口android.content.Context; 进口android.graphics.Bitmap; 进口android.graphics.Bitmap.Config; 进口android.graphics.Canvas; 进口android.graphics.Color; 进口android.graphics.PointF; 进口android.view.Gravity; 进口android.view.View.MeasureSpec; 进口android.widget.LinearLayout; 进口android.widget.LinearLayout.LayoutParams; 进口android.widget.TextView; 进口com.google.zxing.BarcodeFormat; 进口com.google.zxing.EncodeHintType; 进口com.google.zxing.MultiFormatWriter; 进口com.google.zxing.WriterException; 进口com.google.zxing.common.BitMatrix; 进口com.google.zxing.qrcode.QRCodeWriter; 进口java.util.Hashtable;/* * * *生成条形码和二维码的工具 */公开课ZXingUtils {/* * *生成二维码要转换的地址或字符串,可以是中文 * * @param url * @param宽度 * @param高度 * @return */公共静态位图createQRImage(字符串url,最后int宽度,最终int高度){ 尝试{//判断URL合法性 如果(url==null | |““.equals (url) | | url.length () & lt;1){ 返回null; } Hashtable提示=new Hashtable (); hints.put (EncodeHintType。CHARACTER_SET,“utf-8");//图像数据转换,使用了矩阵转换 BitMatrix BitMatrix=new QRCodeWriter () .encode (url, BarcodeFormat。QR_CODE、宽度、高度、提示); int[]像素=new int(宽*高);//下面这里按照二维码的算法,逐个生成二维码的图片,//两个为循环是图片横列扫描的结果 for (int y=0;y & lt;高度;y + +) { for (int x=0;x & lt;宽度;x + +) { 如果(bitMatrix。get (x, y)) { 像素(y *宽度+ x)=0 xff000000; 其他}{ 像素(y *宽度+ x)=0 xffffffff; } } }//生成二维码图片的格式,使用ARGB_8888 位图的位图=位图。createBitmap(宽度、高度, Bitmap.Config.ARGB_8888); 位图。setPixels(宽度像素,0,0,0,宽度、高度); 返回位图; }捕捉(WriterException e) { e.printStackTrace (); } 返回null; }/* * *生成条形码 * * @param上下文 * @param内容 *需要生成的内容 * @param desiredWidth *生成条形码的宽带 * @param desiredHeight *生成条形码的高度 * @param displayCode *是否在条形码下方显示内容 * @return */公共静态位图creatBarcode(上下文语境、字符串内容 int desiredWidth, int desiredHeight,布尔displayCode) { 位图ruseltBitmap=零;/* * *图片两端所保留的空白的宽度 */int marginW=20;/* * *条形码的编码类型 */BarcodeFormat BarcodeFormat=BarcodeFormat.CODE_128; 如果(displayCode) { 位图barcodeBitmap=encodeAsBitmap(内容、barcodeFormat desiredWidth desiredHeight); 位图codeBitmap=creatCodeBitmap(内容、desiredWidth + 2 * marginW desiredHeight、上下文); ruseltBitmap=mixtureBitmap (barcodeBitmap codeBitmap,新的PointF ( 0,desiredHeight)); 其他}{ ruseltBitmap=encodeAsBitmap(内容、barcodeFormat desiredWidth desiredHeight); } 返回ruseltBitmap; }/* * *生成条形码的位图 * * @param内容 *需要生成的内容 * @param格式 *编码格式 * @param desiredWidth * @param desiredHeight * @return * @throws WriterException */保护静态位图encodeAsBitmap(字符串内容, BarcodeFormat格式、int desiredWidth int desiredHeight) { 最后一个int白色=0 xffffffff; 最后一个int黑=0 xff000000; MultiFormatWriter作家=new MultiFormatWriter (); BitMatrix结果=零; 尝试{ 结果=作家。编码(内容、格式、desiredWidth desiredHeight, null); }捕捉(WriterException e) {//TODO自动生成的catch块 e.printStackTrace (); } int宽度=result.getWidth (); int高度=result.getHeight (); int[]像素=new int(宽*高);//都是0,或黑色,默认情况下 for (int y=0;y & lt;高度;y + +) { int抵消=y *宽度; for (int x=0;x & lt;宽度;x + +) { 像素(抵消+ x)=结果。get (x, y)和# 63;黑色:白色; } } 位图的位图=位图。createBitmap(宽度、高度, Bitmap.Config.ARGB_8888); 位图。setPixels(宽度像素,0,0,0,宽度、高度); 返回位图; }/* * *生成显示编码的位图 * * @param内容 * @param宽度 * @param高度 * @param上下文 * @return */保护静态位图creatCodeBitmap(字符串内容,int宽度, int高度,上下文语境){ TextView电视=new TextView(上下文); LinearLayout。LayoutParams LayoutParams=new LinearLayout.LayoutParams ( LayoutParams。MATCH_PARENT LayoutParams.WRAP_CONTENT); tv.setLayoutParams (layoutParams); tv.setText(内容); tv.setHeight(高度); tv.setGravity (Gravity.CENTER_HORIZONTAL); tv.setWidth(宽度); tv.setDrawingCacheEnabled(真正的); tv.setTextColor (Color.BLACK); tv.measure (MeasureSpec。MeasureSpec.UNSPECIFIED makeMeasureSpec (0), MeasureSpec。MeasureSpec.UNSPECIFIED makeMeasureSpec (0)); 电视。布局(0,0,tv.getMeasuredWidth (), tv.getMeasuredHeight ()); tv.buildDrawingCache (); 位图bitmapCode=tv.getDrawingCache (); 返回bitmapCode; }/* * *将两个位图合并成一个 * * @param第一 * @param第二 * @param fromPoint *第二个图开始绘制的起始位置(相对于第一个位图) * @return */首先保护静态位图mixtureBitmap(位图,位图第二, PointF fromPoint) { 如果(第一次==null | |第二==null | | fromPoint==null) { 返回null; } int marginW=20; null null null null null null null null null null null null null null null null null null null null null null null null 如何在Android应用中实现一个二维码生成功能