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>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值