Android二维码ZXing开源框架的学习总结

Android二维码ZXing开源框架的学习总结

一、概述


1QRCode简介

QRCode全称Quick Response Code,通过在一个矩形区域内使用黑白像素来进行编码,高纠错性、高可用性、高识别性。


2ZXing的简介

ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码。该项目可实现的条形码编码和解码。目前支持以下格式:UPC-AUPC-EEAN-8EAN-1339码、93码。ZXing是个很经典的条码/二维码识别的开源类库,以前在功能机上,就有开发者使用J2ME运用ZXing了,不过要支持JSR-234规范(自动对焦)的手机才能发挥其威力。


二、下载开源ZXing project

1、下载地址:https://github.com/zxing/zxing

          

2、下载之后



然而当我们点击了ZXing之后会发现这个项目有许多文件,而且比较复杂。所以我们应该到网上搜索其他开发者整理过的关于AndroidZXing代码。


3、下载其他开发者整理过的ZXing代码

1)下载地址:http://download.csdn.net/detail/xiaanming/5990219 他的工程如下图:



2)下载完成后解压,把该开发者的zxing包下的内容复制到自己的工程里面(可能需要修改一些提示的错误)。

 

3)打开他的AndroidManifest.xml文件,要复制一些代码到自己的AndroidManifest.xml里面。

4、重新新建自己的工程,并且复制他的包和配置信息之后的工程如下图:


1)扫描识别二维码的代码

<span style="font-size:18px;"><span style="white-space:pre">	</span>//扫描二维码
	public void scanQRCode(View view){
		Intent intent = new Intent();
		intent.setClass(MainActivity.this, MipcaActivityCapture.class);
		intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
		startActivityForResult(intent, 888);
	}
<span style="white-space:pre">	</span>//接收并处理扫描结果
	@Override
    <span style="white-space:pre">	</span>protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        <span style="white-space:pre">	</span>super.onActivityResult(requestCode, resultCode, data);
      <span style="white-space:pre">		</span>switch (requestCode) {
		<span style="white-space:pre">	</span>case 888:
				if(resultCode == RESULT_OK){
<span style="white-space:pre">					</span>Bundle bundle = data.getExtras();
	<span style="white-space:pre">				</span>String resultStr = bundle.getString("result");
<span style="white-space:pre">				</span>}
				break;
		}
    <span style="white-space:pre">	</span>}	</span>

2)生成二维码的代码

<span style="font-size:18px;"><span style="white-space:pre">	</span>//要转换的地址或字符串,可以是中文
	public void createQRImage(String url)
	{
		try
		{
			//判断URL合法性
			if (url == null || "".equals(url) || url.length() < 1)
			{
				return;
			}
			Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
			hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
			//图像数据转换,使用了矩阵转换
			BitMatrix bitMatrix = new QRCodeWriter().encode(url, BarcodeFormat.QR_CODE, QR_WIDTH, QR_HEIGHT, hints);
			int[] pixels = new int[QR_WIDTH * QR_HEIGHT];
			//下面这里按照二维码的算法,逐个生成二维码的图片,
			//两个for循环是图片横列扫描的结果
			for (int y = 0; y < QR_HEIGHT; y++)
			{
				for (int x = 0; x < QR_WIDTH; x++)
				{
					if (bitMatrix.get(x, y))
					{
						pixels[y * QR_WIDTH + x] = 0xff000000;
					}
					else
					{
						pixels[y * QR_WIDTH + x] = 0xffffffff;
					}
				}
			}
			//生成二维码图片的格式,使用ARGB_8888
			Bitmap bitmap = Bitmap.createBitmap(QR_WIDTH, QR_HEIGHT, Bitmap.Config.ARGB_8888);
			bitmap.setPixels(pixels, 0, QR_WIDTH, 0, 0, QR_WIDTH, QR_HEIGHT);
			//显示到一个ImageView上面
			sweepIV.setImageBitmap(bitmap);
		}
		catch (WriterException e)
		{
			e.printStackTrace();
		}
	}</span>

参考资料:

ZXing相关的技术博客:http://blog.csdn.net/xiaanming/article/details/10163203


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用zxingAndroid中生成和扫描二维码,您需要按照以下步骤操作: 1. 添加依赖项 将以下依赖项添加到您的项目中的build.gradle文件中: ``` implementation 'com.google.zxing:core:3.4.0' implementation 'com.journeyapps:zxing-android-embedded:3.6.0' ``` 2. 生成二维码 使用以下代码在应用程序中生成二维码: ``` String data = "Hello, World!"; int width = 500; int height = 500; BitMatrix bitMatrix = new MultiFormatWriter().encode(data, BarcodeFormat.QR_CODE, width, height); BarcodeEncoder barcodeEncoder = new BarcodeEncoder(); Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix); ``` 3. 扫描二维码 要在Android应用程序中扫描二维码,您需要使用zxing提供的IntentIntegrator类。使用以下代码启动扫描器: ``` IntentIntegrator integrator = new IntentIntegrator(this); integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES); integrator.setPrompt("Scan a QR code"); integrator.setCameraId(0); integrator.setBeepEnabled(false); integrator.setBarcodeImageEnabled(true); integrator.initiateScan(); ``` 然后在onActivityResult()方法中处理扫描结果: ``` @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); if (result != null) { if (result.getContents() == null) { Log.d(TAG, "Cancelled scan"); } else { Log.d(TAG, "Scanned: " + result.getContents()); } } else { super.onActivityResult(requestCode, resultCode, data); } } ``` 这就是使用zxingAndroid中生成和扫描二维码的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值