android studio 利用zxing精简版实现二维码生成/扫描(附demo)

实验项目需要二维码,在网上查了许多资料都讲的模糊不清,可能是第一次接触,各种bug,经过一番折腾终于自己捣鼓出来了。

主要步骤如下:

1.创建Android Studio工程项目,本文项目见:链接:https://pan.baidu.com/s/1LWUZ76vxBWhibObl3RvuIw 密码:5ite

2.在自建项目中集成ZXingBar包,下载地址:链接:https://pan.baidu.com/s/1NLcHP0XIaclL3BSo-a8wlw 密码:vf78

3.解压下载的ZXingBar压缩包,复制zxing.jar到Android Studio项目的libs文件夹,然后右键“zxing.jar”选择“Add As Library”添加其为库文件。



4.复制zxing文件夹到如下所示的Android studio包中



5.分别复制navbar.9.png(复制到Android studio中后删除文件名中的'.9')、camera.xml、raw文件夹、ids.xml文件到Android studio工程





以上文件粘贴位置如下:


6.构建编译Android studio工程,将提示R文件找不到。替换所有报错文件中的导入的R文件为自己项目包中R文件,直到编译无误。

 


7.在AndroidManifest.xml文件中添加声明权限和Activity

    

8.调用集成库实现自定义功能

package com.example.john.qrcode;

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

import com.google.zxing.WriterException;
import com.zxing.activity.CaptureActivity;
import com.zxing.encoding.EncodingHandler;

public class MainActivity extends Activity {

    private Button ScanBtn;
    private TextView textView;
    private Button GenBtn;
    private EditText editText;
    ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ScanBtn = findViewById(R.id.Scan);
        textView = findViewById(R.id.textView);

        GenBtn = findViewById(R.id.GenBtn);
        imageView = findViewById(R.id.img);
        editText = findViewById(R.id.input);

        ScanBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
                startActivityForResult(intent,0);
            }
        });

        GenBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String string = editText.getText().toString();
                if (string.equalsIgnoreCase(""))
                {
                    Toast.makeText(MainActivity.this,"请输入文本",Toast.LENGTH_SHORT).show();
                }
                else
                {
                    try {
                        //生成二维码图片
                        Bitmap qrcode = EncodingHandler.createQRCode(string,600);
                        imageView.setImageBitmap(qrcode);
                    } catch (WriterException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK)
        {
            //获取二维码扫描结果
            String string = data.getExtras().getString("result");
            textView.setText(string);

            Intent intent1 = new Intent(MainActivity.this, SendActivity.class);
            startActivity(intent1);
        }
    }
}

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页