首先必须要导入依赖
compile 'cn.yipianfengye.android:zxing-library:2.2'
main方法里面
package com.bwie.qrcodedemo;
import android.content.ContentResolver;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import com.uuzuche.lib_zxing.activity.CaptureActivity;
import com.uuzuche.lib_zxing.activity.CodeUtils;
import com.uuzuche.lib_zxing.activity.CodeUtils;
public class MainActivity extends AppCompatActivity {
//定义处理返回的code
private static final int REQEUST_CODE = 111;
private static final int REQUEST_IMAGE = 112;
private ImageView ivIcon;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ivIcon = findViewById(R.id.ivIcon);
}
//扫描二维码
public void btnScannerQRCode(View view){
Intent intent = new Intent(this, CaptureActivity.class);
//startActivity(intent);
startActivityForResult(intent,REQEUST_CODE);
}
//选择图库里面的二维码图片进行识别
public void btnChoosePicAnalysy(View view){
//跳转手机相册的隐式意图
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
startActivityForResult(intent, REQUEST_IMAGE);
}
//生成一个不带logo的二维码
public void btnCreateQRCode(View view){
Bitmap bitmap = CodeUtils.createImage("李培你好,我是你大哥",400,400,null);
//设置图片对象
ivIcon.setImageBitmap(bitmap);
}
//生成一个带logo的二维码
public void btnCreateQRCodeLogo(View view){
Bitmap bitmap = CodeUtils.createImage("李培你好,我是你大哥",400,400, BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher));
//设置图片对象
ivIcon.setImageBitmap(bitmap);
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ivIcon = findViewById(R.id.ivIcon);
}
//扫描二维码
public void btnScannerQRCode(View view){
Intent intent = new Intent(this, CaptureActivity.class);
//startActivity(intent);
startActivityForResult(intent,REQEUST_CODE);
}
//选择图库里面的二维码图片进行识别
public void btnChoosePicAnalysy(View view){
//跳转手机相册的隐式意图
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/*");
startActivityForResult(intent, REQUEST_IMAGE);
}
//生成一个不带logo的二维码
public void btnCreateQRCode(View view){
Bitmap bitmap = CodeUtils.createImage("李培你好,我是你大哥",400,400,null);
//设置图片对象
ivIcon.setImageBitmap(bitmap);
}
//生成一个带logo的二维码
public void btnCreateQRCodeLogo(View view){
Bitmap bitmap = CodeUtils.createImage("李培你好,我是你大哥",400,400, BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher));
//设置图片对象
ivIcon.setImageBitmap(bitmap);
}
上面有点击事件,到这接收一下扫描到的是什么
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQEUST_CODE)
{
if(null != data){
//得到一个bundle
Bundle bundle = data.getExtras();
if(bundle == null){
return;
}
//判断扫描是否成功
if(bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS){
//获取扫描结果
String result = bundle.getString(CodeUtils.RESULT_STRING);
//吐司扫描结果
Toast.makeText(this, result, Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this, "解析失败", Toast.LENGTH_SHORT).show();
}
}
}else if(requestCode == REQUEST_IMAGE){//识别二维码图片结果的一个处理
if(null != data){
//处理扫描图片的结果
Uri uri = data.getData();
try {
//得到图片路劲进行解析
CodeUtils.analyzeBitmap(ImageUtil.getImageAbsolutePath(this, uri), new CodeUtils.AnalyzeCallback() {
@Override
public void onAnalyzeSuccess(Bitmap mBitmap, String result) {
Toast.makeText(MainActivity.this, "解析结果:" + result, Toast.LENGTH_LONG).show();
}
@Override
public void onAnalyzeFailed() {
Toast.makeText(MainActivity.this, "解析二维码失败", Toast.LENGTH_LONG).show();
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQEUST_CODE)
{
if(null != data){
//得到一个bundle
Bundle bundle = data.getExtras();
if(bundle == null){
return;
}
//判断扫描是否成功
if(bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS){
//获取扫描结果
String result = bundle.getString(CodeUtils.RESULT_STRING);
//吐司扫描结果
Toast.makeText(this, result, Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this, "解析失败", Toast.LENGTH_SHORT).show();
}
}
}else if(requestCode == REQUEST_IMAGE){//识别二维码图片结果的一个处理
if(null != data){
//处理扫描图片的结果
Uri uri = data.getData();
try {
//得到图片路劲进行解析
CodeUtils.analyzeBitmap(ImageUtil.getImageAbsolutePath(this, uri), new CodeUtils.AnalyzeCallback() {
@Override
public void onAnalyzeSuccess(Bitmap mBitmap, String result) {
Toast.makeText(MainActivity.this, "解析结果:" + result, Toast.LENGTH_LONG).show();
}
@Override
public void onAnalyzeFailed() {
Toast.makeText(MainActivity.this, "解析二维码失败", Toast.LENGTH_LONG).show();
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
最后就是要导入一个App包和ImageUtil类
在然后就只剩布局了
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.bwie.qrcodedemo.MainActivity">
<Button
android:onClick="btnScannerQRCode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="开启扫描二维码"/>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.bwie.qrcodedemo.MainActivity">
<Button
android:onClick="btnScannerQRCode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="开启扫描二维码"/>
<Button
android:onClick="btnChoosePicAnalysy"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="选择图库识别二维码"/>
android:onClick="btnChoosePicAnalysy"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="选择图库识别二维码"/>
<Button
android:onClick="btnCreateQRCode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="生成一个不带logo的二维码"/>
android:onClick="btnCreateQRCode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="生成一个不带logo的二维码"/>
<Button
android:onClick="btnCreateQRCodeLogo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="生成一个带Logo的二维码名片"/>
<ImageView
android:id="@+id/ivIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
android:id="@+id/ivIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>