1.二维码简介:
是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙的利用构成计算机内部逻辑基础的0和1比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图像输入设备或光电扫描设备自动识读以实现信息自动处理;二维码能够在横向和纵向两个方位同时表达信息,因此能在很小的面积内表达大量的信息;二维码相对于条形码的优势就是省空间;
2.zxing简介:
zxing是一个开放源码的,用java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的接口。
zxing可以实现使用手机的内置的摄像头完成条形码和二维码的扫描与解码。
zxing可以实现条形码和二维码的编码与解码。
zxing目前支持的的格式如下:
UPC-A,UPC-E
EAN-8, EAN-13
39码
93码
代码128
QR码
3.实现步骤:
步骤一:
implementation ‘cn.bingoogolapple:bga-qrcode-zxing:1.3.4’
步骤二:
布局里面加入一个ImageView控件,调整好大小
步骤三:
public class MainActivity extends Activity {
ImageView im1;
int w=40;
int h=40;
@Override
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Stringtemp=”{“UserName”:”user1″,”Id”:[“23″,”2″,”73″]}”;
im1=(ImageView)findViewById(R.id.imageView2);
createQRcodeImage(temp);
}
public voidcreateQRcodeImage(String url)
{
try
{
//判断URL合法性
if (url == null ||””.equals(url) || url.length() < 1)
{
return;
}
Hashtable <EncodeHintType, String> hints = newHashtable<EncodeHintType, String>();
hints.put(EncodeHintType.CHARACTER_SET, “utf-8”);
//图像数据转换,使用了矩阵转换
BitMatrixbitMatrix = new QRCodeWriter().encode(url, BarcodeFormat.QR_CODE, w, h, hints);
int[] pixels = newint[w * h];
//下面这里按照二维码的算法,逐个生成二维码的图片,
//两个for循环是图片横列扫描的结果
for (int y = 0; y < h; y++)
{
for (int x =0; x < w; x++)
{
if(bitMatrix.get(x, y))
{
pixels[y * w + x] = 0xff000000;
}
else
{
pixels[y * w + x] = 0xffffffff;
}
}
}
//生成二维码图片的格式,使用ARGB_8888
Bitmap bitmap =Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixels, 0, w, 0, 0, w, h);
//显示到我们的ImageView上面
im1.setImageBitmap(bitmap);
}
catch (WriterExceptione)
{
e.printStackTrace();
}
}
}
效果如下图:
