基于ZXing Android实现生成二维码图片和相机扫描二维码图片即时解码的功能

news/2024/7/3 7:39:09

NextQRCode ZXing开源库的精简版

基于ZXing Android实现生成二维码图片和相机扫描二维码图片即时解码的功能 原文博客 附源码下载地址

与原ZXingMini项目对比

NextQRCode做了重大架构修改,原ZXingMini项目与当前NextQRCode不兼容

dependencies {
    compile 'com.github.yoojia:next-qrcode:2.0-2'
    ...
}
复制代码

生成二维码图案

// 二维码中间图标
final Bitmap centerImage = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
// 生成的二维码图案
Bitmap qrCodeImage = new QRCodeEncoder.Builder()
        .width(size) // 二维码图案的宽度
        .height(size)
        .paddingPx(0) // 二维码的内边距
        .marginPt(3) // 二维码的外边距
        .centerImage(centerImage) // 二维码中间图标
        .build()
        .encode(content);
复制代码

二维码解码

final QRCodeDecoder mDecoder = new QRCodeDecoder.Builder().build();
// 传入二维码图案Bitmap对象然后解码成文本内容
String content = mDecoder.decode(bitmap);
复制代码

使用 LiveCameraView 自动扫描解码

public class QRCodeScanActivity extends AppCompatActivity {

    public static final String TAG = QRCodeScanActivity.class.getSimpleName();

    private LiveCameraView mLiveCameraView;
    private ImageView mCaptureImage;
    private TextView mContentView;

    private final CaptureCallback mCaptureCallback = new CaptureCallback() {
        @Override public void onCaptured(Bitmap bitmap) {
            Log.i(TAG, "-> Got bitmap, show to capture view");
            mCaptureImage.setImageBitmap(bitmap);
            Observable.just(bitmap)
                    .map(new Func1<Bitmap, String>() {
                        private final QRCodeDecoder mDecoder = new QRCodeDecoder.Builder().build();
                        @Override
                        public String call(Bitmap bitmap) {
                            return mDecoder.decode(bitmap);
                        }
                    })
                    .subscribeOn(Schedulers.computation())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new Action1<String>() {
                        @Override public void call(String content) {
                            mContentView.setText(content);
                        }
                    });
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Window window = getWindow();
        window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        setContentView(R.layout.activity_scan);
        mCaptureImage = (ImageView) findViewById(R.id.capture_image);
        mContentView = (TextView) findViewById(R.id.content);
        mLiveCameraView = (LiveCameraView) findViewById(R.id.capture_preview_view);
        mLiveCameraView.setPreviewReadyCallback(new CameraPreviewView.PreviewReadyCallback() {
            @Override
            public void onStarted(Camera camera) {
                Log.i(TAG, "-> Camera started, start to auto capture");
                mLiveCameraView.startAutoCapture(1500, mCaptureCallback);
            }

            @Override
            public void onStopped() {
                Log.i(TAG, "-> Camera stopped");
                mLiveCameraView.stopAutoCapture();
            }
        });
    }

}
复制代码

基于ZXing Android实现生成二维码图片和相机扫描二维码图片即时解码的功能 原文博客 附源码下载地址


http://www.niftyadmin.cn/n/4110989.html

相关文章

matlab-双摆仿真

matlab-双摆仿真 在物理学和数学中&#xff0c;在动力系统领域&#xff0c;双摆是一个摆锤&#xff0c;另一个摆锤连接在其末端&#xff0c;是一个简单的物理系统&#xff0c;具有丰富的动态特性&#xff0c;对初始条件具有很强的敏感性。双摆的运动由一组耦合的常微分方程控制…

怎么样快速修改HOSTS文件?让火绒等小工具来帮忙

在工作中我们经常会遇到修改HOSTS的情形。今天小编就告诉大家如何快速修改HOSTS文件。 先来看看&#xff0c;什么是HOSTS&#xff1f; 什么是HOSTS文件&#xff1f; Hosts是一个没有扩展名的系统文件&#xff0c;可以用记事本等工具打开&#xff0c;其作用就是将一些常用的网址…

Vue.js常用指令:v-show和v-if

一、v-show指令 v-show指令可以用来动态的控制DOM元素的显示或隐藏。v-show后面跟的是判断条件&#xff0c;语法如下&#xff1a; v-show"判断变量" 例如&#xff1a; v-show"true"&#xff0c;表示显示DOM元素。 v-show"false"&#xff0c; 表…

facebook文件系统_Facebook Messenger v4更新后在哪里可以找到请求文件夹

facebook文件系统When you get messages from non-friends on Facebook Messenger, they go to a “requests” folder. The thing is, this folder isn’t really easy to find, especially after Messenger’s recent update to version 4. 当您从Facebook Messenger上的非朋…

SQL SERVER 查询第一个数字和最后一个数字的位置

我们在实际开发中&#xff0c;有时候需要得到字符串中的数字位置&#xff0c;然后对字符串做处理。获取位置我们用PATINDEX方法&#xff0c;因为PATINDEX是支持正则表达式的&#xff0c;可以匹配数字&#xff0c;而类似CHARINDEX这种函数&#xff0c;只能查询匹配固定的字符串。…

php中 instanceof有什么作用

php中 instanceof有什么作用 作用&#xff1a;&#xff08;1&#xff09;判断一个对象是否是某个类的实例&#xff0c;&#xff08;2&#xff09;判断一个对象是否实现了某个接口。

学习Node.js笔记(一)

从最简单的一个node服务器开始说起 nodejs最常用的就是搭建服务器&#xff0c;今天就从0开始搭建自己的服务器&#xff0c;要想使用node来进行搭建服务器首先肯定是得下载node&#xff0c;直接百度一下node&#xff0c;从官网下载。下载完成后&#xff0c;直接安装软件就可以了…

SQL SERVER 90度行列互换

我们有时候在处理数据显示的时候&#xff0c;需要把之前的数据进行90度的行列互转&#xff08;注&#xff1a;不是行转列&#xff09;&#xff0c;数据处理起来比较麻烦&#xff0c;提供一个方法&#xff0c;测试数据&#xff1a; --测试数据 if not object_id(tab) is null d…