新手学习二维码相关开发,翻阅了许多博客及文档,看到好的就进行模仿编写,终有小成,不负众望。下面对自己写的Demo进行分享。
主要实现: zxing二维码生成扫描,识别二维码图片,长按识别二维码;
优点: 调用方便简洁,操作简单,UI嘛,自己感觉 very beautiful!
之前参考的一则博客许多代码就是用他的:感觉不错:http://blog.csdn.net/aaawqqq/article/details/24880209

主要实现: zxing二维码生成扫描,识别二维码图片,长按识别二维码;
优点: 调用方便简洁,操作简单,UI嘛,自己感觉 very beautiful!
之前参考的一则博客许多代码就是用他的:感觉不错:http://blog.csdn.net/aaawqqq/article/details/24880209
这里就直接讲怎么使用了:首先先看看包 有改变的不多,大多都是原生的class,camera、decoding
原生的不需要了解太多。
BarCodeTestActivity 是测试的入口界面
如何使用:
package com.ericssonlabs; import com.zxing.activity.CaptureActivity; import com.zxing.picture.PictureLongListener; import com.zxing.encoding.CreateQRBitmp; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; public class BarCodeTestActivity extends Activity { private TextView resultTextView; private EditText qrStrEditText; private ImageView qrImgImageView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); resultTextView = (TextView) this.findViewById(R.id.tv_scan_result); qrStrEditText = (EditText) this.findViewById(R.id.et_qr_string); qrImgImageView = (ImageView) this.findViewById(R.id.iv_qr_image); Button scanBarCodeButton = (Button) this.findViewById(R.id.btn_scan_barcode); scanBarCodeButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //打开扫描界面扫描条形码或二维码 Intent openCameraIntent = new Intent(BarCodeTestActivity.this, CaptureActivity.class); startActivityForResult(openCameraIntent, 0); } }); qrImgImageView.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View v) { // 长按识别二维码 OnLongClickReaderImage(); return true; } }); Button generateQRCodeButton = (Button) this.findViewById(R.id.btn_add_qrcode); generateQRCodeButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String contentString = qrStrEditText.getText().toString(); if (!contentString.equals("")) { /***方法 :可自行设置大小的二维码***/ /* // 这里添加一张图片(R.drawable.ic_launcher)生成bitmap Bitmap portrait = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); //portrait 放在二维码中间,当这个对象为空时,只有二维码图片,最后两个是二维码大小和中间图片大小 Bitmap qrCodeBitmap = CreateQRBitmp.createQRCodeBitmap(contentString, portrait,350,50); */ //这里是生成二维码图片的bitmap对象 Bitmap portrait = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); //两个方法,一个不传大小,使用默认 Bitmap qrCodeBitmap = CreateQRBitmp.createQRCodeBitmap(contentString, portrait); qrImgImageView.setImageBitmap(qrCodeBitmap); } else { //提示文本不能是空的 Toast.makeText(BarCodeTestActivity.this, "Text can not be empty", Toast.LENGTH_SHORT).show(); } } }); } private void OnLongClickReaderImage() { //获取当前屏幕的大小 int width = getWindow().getDecorView().getRootView().getWidth(); int height = getWindow().getDecorView().getRootView().getHeight(); //找到当前页面的根布局 View view = getWindow().getDecorView().getRootView(); //将view传给PictureLongListener解析,获取图片中的数据 String data = PictureLongListener.getQrViewPictureContent(width, height, view); if (data != null) { //显示数据 resultTextView.setText(data + ""); } else { Toast.makeText(BarCodeTestActivity.this, "无法识别", Toast.LENGTH_LONG).show(); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (data != null) { resultTextView.setText(data.getStringExtra("result")); } } }XML布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/white"
android:orientation="vertical" >
<Button
android:id="@+id/btn_scan_barcode"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:text="打开摄像机扫描" />
<LinearLayout
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/black"
android:textSize="18sp"
android:text="二维码解析结果:" />
<TextView
android:id="@+id/tv_scan_result"
android:layout_width="fill_parent"
android:textSize="18sp"
android:textColor="@android:color/black"
android:layout_height="wrap_content" />
</LinearLayout>
<EditText
android:id="@+id/et_qr_string"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:textColor="@color/contents_text"
android:hint="输入要生成的二维码"/>
<Button
android:id="@+id/btn_add_qrcode"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="点击生成二维码" />
<ImageView
android:id="@+id/iv_qr_image"
android:layout_width="250dp"
android:layout_height="250dp"
android:scaleType="fitXY"
android:layout_marginTop="10dp"
android:layout_gravity="center"/>
</LinearLayout>
效果呢:
主界面扫描界面
不说了,新手,不会,真的写不下去了,还望见谅!项目工程下载