ZXing二维码

ZXing简介:

ZXing是谷歌的一个开源项目,用Java实现多种格式的ID/2D条码图像处理库,它包含了联系到其他语言的端口。

Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码。

其实ZXing项目里的Android实现太过复杂多余东西太多,好多用不到,可以对其进行简化。简化过程可以参看:http://www.oschina.net/question/54100_28521

自己需要新建一个项目,把需要的类,包抽取出来放到这个新项目中

在修改的过程中,有很多是关于R 资源的问题,在此我们需要将Values  里面的两个xml资源文件拷入项目中:colos.xml
和ids.xml 。 现在看看error 是不是少了很多。 剩下的就是包名问题了。

使用的时候可以把这个抽取好的项目作为一个Library导入需要实现二维码功能的项目中。

在新项目中需要声明权限:

 <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.VIBRATE" />

同时声明使用到的Activity:

 <activity
            android:name="com.xys.libzxing.zxing.activity.CaptureActivity"
            android:label="@string/app_name" >
        </activity>

MainActivity

package com.example.zxing_test;

import javax.crypto.spec.IvParameterSpec;

import com.xys.libzxing.zxing.activity.CaptureActivity;
import com.xys.libzxing.zxing.encoding.EncodingUtils;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

	private Button bt_Scran;
	private TextView tv_result;
	private Button bt_QRcode;
	private EditText et_mstring;
	private CheckBox mCheckBox;
	private ImageView iv_QRCode;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		bt_Scran = (Button) findViewById(R.id.bt_scran);
		tv_result = (TextView) findViewById(R.id.tv_result);

		et_mstring = (EditText) findViewById(R.id.et_mstring);
		bt_QRcode = (Button) findViewById(R.id.bt_QRcode);
		mCheckBox = (CheckBox) findViewById(R.id.cb_logo);
		iv_QRCode = (ImageView) findViewById(R.id.iv_mQRcode);

		/**
		 * 扫描解析二维码
		 */

		bt_Scran.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				startActivityForResult(new Intent(MainActivity.this, CaptureActivity.class), 0);
			}
		});
		/**
		 * 生成二维码
		 */

		bt_QRcode.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				String mString = et_mstring.getText().toString();
				if(mString.equals("")){
					Toast.makeText(MainActivity.this, "不能为空", 0).show();
				}else{
					Bitmap bitmap = EncodingUtils.createQRCode(mString, 500, 500, mCheckBox.isChecked()?BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher):null);
					iv_QRCode.setImageBitmap(bitmap);
				}
			}
		});

	}
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		super.onActivityResult(requestCode, resultCode, data);
		if(resultCode == RESULT_OK){
			Bundle bundle = data.getExtras();
			String result = bundle.getString("result");
			tv_result.setText(result);
		}
	}

}

布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.zxing_test.MainActivity" >

    <Button
        android:id="@+id/bt_scran"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:text="scran" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="扫描结果" />

    <TextView
        android:id="@+id/tv_result"
        android:layout_width="wrap_content"
        android:layout_height="50dp" />

    <EditText
        android:id="@+id/et_mstring"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:maxLines="2" >
    </EditText>

    <CheckBox
        android:id="@+id/cb_logo"
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:text="  logo" >
    </CheckBox>

    <Button
        android:id="@+id/bt_QRcode"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:text="生成二维码" />

    <ImageView
        android:id="@+id/iv_mQRcode"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>
时间: 2024-11-13 06:54:47

ZXing二维码的相关文章

Android项目实战(二十八):Zxing二维码实现及优化

原文:Android项目实战(二十八):Zxing二维码实现及优化 前言: 多年之前接触过zxing实现二维码,没想到今日项目中再此使用竟然使用的还是zxing,百度之,竟是如此牛的玩意. 当然,项目中我们也许只会用到二维码的扫描和生成两个功能,所以不必下载完整的jar包,使用简化版的即可,下文可见. 这篇文章讲述:1.如果快速在项目中集成zxing,实现扫描和生成二维码功能 2.根据项目需求去修改源码实现我们的要求并进行优化 一.快速集成zxing二维码 1.下载库文件 : http://do

Android项目实战(四十四):Zxing二维码切换横屏扫描

原文:Android项目实战(四十四):Zxing二维码切换横屏扫描 Demo链接 默认是竖屏扫描,但是当我们在清单文件中配置横屏显示的时候: <activity android:name=".CaptureActivity" android:screenOrientation="landscape" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" /> 这时候扫描

自定义ZXing二维码扫描界面并解决取景框拉伸等问题

先看效果 扫描内容是下面这张,二维码是用zxing库生成的 由于改了好几个类,还是去年的事都忘得差不多了,所以只能上这个类的代码了,主要就是改了这个CaptureActivity.java 1 package com.zxing.activity; 2 3 import java.io.IOException; 4 import java.util.Vector; 5 6 import android.app.Activity; 7 import android.content.Intent;

Atitit zxing二维码qr码识别解析

1.1. qr码识别解析 by zxing1 1.2. 解码lib:qrcode.jar  2 1.3. atitit.二维码生成总结java zxing 2 1.1. qr码识别解析 by zxing /AtiPlatf_ee/src/com/attilax/qrcode/qrcodex.java public static String decode(String imagePath) { String contents = null; MultiFormatReader formatRea

Zxing二维码扫描

网络上关于zxing的扫描解码这块儿的东西大多都是 基于zxing自带项目修改过来的, 而且项目里面代码太多且繁杂. 索性自己基于zxing开发了个demo代码量瞬间就少了下来,  如果要基于横屏,自己修改下代码应该会很快 项目源码 http://download.csdn.net/detail/nie312122330/8136373 自定义扫描区域如图 1.ZxingBarCodeActivity扫描界面 package com.xiaoqiang.zxing; import java.ut

ZXing 二维码应用

1.导入zxing代码和包 2.下面的类是解析二维码的主要类. package com.gaint.nebula.interaction.ui.zxing; import java.io.IOException; import java.util.Vector; import android.app.Activity; import android.content.Intent; import android.content.res.AssetFileDescriptor; import and

运行Google 官方zxing二维码扫描器

首先,要去下载Zxing的源码,由于Zxing 的服务内容比较广,我们先把所有的源码都下载下来,使用的时候根据需要加载. 或者从开源中国下载https://www.oschina.net/question/tag/zxing 下载好的zip 提取里面的文件之后是 我们需要的文件已经被标出来了,其中core文件需要打包成jar,但是由于Android studio 打包jar比较麻烦,所以我们可以直接从网上下载别人打包好的,但是需要注意版本 这里我们给出一个下载core jar 包的地址http:

ZXing二维码生成在Unity3D中出错,数组超出界限的解决办法

错误截图: IndexOutOfRangeException: Array index is out of range.ZXing.Color32Renderer.Render (ZXing.Common.BitMatrix matrix, BarcodeFormat format, System.String content, ZXing.Common.EncodingOptions options)ZXing.BarcodeWriterGeneric`1[TOutput].Write (Sy

zxing二维码生成工具类

图片生成工具生成 1.支持多中形式的图片,二维码,条形码 2.支持一张图片多个二维码 3.支持二维码图片上加logo 4.支持图片头部底部添加文字描述 public class ZxingEncoderUtil { private static final String CHARSET = "utf-8"; private static final String FORMAT = "JPG"; private static Font font = null; /**

Android之zxing二维码生成与识别

二维码: 是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的: 在代码编制上巧妙的利用构成计算机内部逻辑基础的0和1比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图像输入设备或光电扫描设备自动识读以实现信息自动处理: 二维码能够在横向和纵向两个方位同时表达信息,因此能在很小的面积内表达大量的信息: 二维码相对于条形码的优势就是省空间:   zxing简介: zxing是一个开放源码的,用java实现的多种格式的1D/2D条码图像处