基于Zxing的二维码、条形码的扫描以及二维码的生成(简洁高效)

效果图:

条形码扫描:

二维码扫描:

二维码生成:

项目结构:

这个项目很简单,就2个类,一个jar包和一些依赖,十分简洁。

主要代码:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private TextView resultTV;
    private ImageView resultIV;
    private EditText strET;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        resultTV = (TextView) findViewById(R.id.tv_scan_result);
        resultIV = (ImageView) findViewById(R.id.iv_qr_image);
        strET = (EditText) findViewById(R.id.et_qr_string);
    }

    @Override
    public void onClick(View v) {
        if (v.getId() == R.id.btn_scan_barcode) {

            IntentIntegrator integrator = new IntentIntegrator(this);

            //获取屏幕尺寸
            DisplayMetrics dm = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(dm);

            //条形码
            int width = dm.heightPixels / 2;
            int height = dm.widthPixels / 2;
            integrator.setScanningRectangle(width, height);//扫描框
            integrator.setPrompt("请对准条形码进行扫描");
            integrator.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES);//条形码

            //二维码
//            int len = dm.heightPixels / 2;
//            integrator.setScanningRectangle(len, len);//扫描框
//            integrator.setPrompt("请对准二维码进行扫描");
//            integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);//二维码

            integrator.setResultDisplayDuration(0);//扫描框内横线的时间
            integrator.setCameraId(0);
            integrator.initiateScan();

        } else {
            final String filePath = getFileRoot(this) + File.separator + "qr_" + System.currentTimeMillis() + ".jpg";
            //二维码图片较大时,生成图片、保存文件的时间可能较长,因此放在新线程中
            new Thread(new Runnable() {
                @Override
                public void run() {
                    boolean success = QRCodeUtil.createQRImage(strET.getText().toString().trim(), 800, 800, BitmapFactory.decodeResource(getResources(), R.drawable.c4),
                            filePath);

                    if (success) {
                        runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                resultIV.setImageBitmap(BitmapFactory.decodeFile(filePath));
                            }
                        });
                    }
                }
            }).start();
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        if (result != null) {
            if (result.getContents() == null) {
                resultTV.setText("扫描取消");
            } else {
                resultTV.setText(result.getContents());
            }
        } else {
            super.onActivityResult(requestCode, resultCode, data);
        }
    }

    //文件存储根目录
    private String getFileRoot(Context context) {
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
            File external = context.getExternalFilesDir(null);
            if (external != null) {
                return external.getAbsolutePath();
            }
        }
        return context.getFilesDir().getAbsolutePath();
    }
}

源码下载:

我在这里

参考链接:感谢这篇博客

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-15 07:05:32

基于Zxing的二维码、条形码的扫描以及二维码的生成(简洁高效)的相关文章

使用IOS7原生API进行二维码条形码的扫描

使用IOS7原生API进行二维码条形码的扫描 IOS7之前,开发者进行扫码编程时,一般会借助第三方库.常用的是ZBarSDK,IOS7之后,系统的AVMetadataObject类中,为我们提供了解析二维码的接口.经过测试,使用原生API扫描和处理的效率非常高,远远高于第三方库. 一.使用方法示例 官方提供的接口非常简单,代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Android基于Google Zxing实现二维码/条形码扫描、生成二维码/条形码

 二维码/条形码生成器 二维码/条形码扫描器 一.二维码与条形码工作原理 目前的很多应用上都有扫码功能,当时微信推出二维码扫码功能时,觉得imagine,通过一张简单的图片就能扫描添加还有,还有分享名片功能(也是一张二维码图片,识别扫描). 下面小编将通过文章主要介绍QRCode方面技术. QRCode是被广泛应用的一种二维码,解码速度快.二维码相对于条形码来说,二维码的存储数据量更大,空间利用率高,有一定的容错性. 二维码原理介绍: 二维码是用某种特定的几何图形按一定的规律在平面上分布的黑

IOS7使用原生API进行二维码和条形码的扫描

使用IOS7原生API进行二维码条形码的扫描 IOS7之前,开发者进行扫码编程时,一般会借助第三方库.常用的是ZBarSDK,IOS7之后,系统的AVMetadataObject类中,为我们提供了解析二维码的接口.经过测试,使用原生API扫描和处理的效率非常高,远远高于第三方库. 一.使用方法示例 官方提供的接口非常简单,代码如下: @interface ViewController ()<AVCaptureMetadataOutputObjectsDelegate>//用于处理采集信息的代理

基于zxing的彩色二维码生成与解析

最近正在封装一套基于H5的APP开发平台,而二维码是APP中必不可少的功能. 以前做WEB开发的时候采用的是JS生成条形码和二维码,虽然简洁易用,但是无法添加logo,彩色美化等功能, 由于以前没有接触过图像编程,只好查阅了大量的网络资料,在前人的经验和基础之上,封装了一个基于zxing的工具类, 该工具类目前比较简单,只是实现了普通二维码.logo二维码.彩色二维码和二维码条形码解析几个功能. 根据此工具类可扩展生成LOGO+文字的二维码,暂时不需要没有封装. 采用zxing生成的条形码,无法

修正Android基于ZXing的二维码扫描——横竖屏自由切换

概述: 此博客是基于开源的框架ZXing.ZXing用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口.ZXing可以实现使用手机的内置的摄像头完成条形码的扫描及解码.该项目可实现的条形码编码和解码. 资源下载: http://download.csdn.net/detail/u013761665/8853561 修改为竖屏显示: 第1步: 进入com.google.zxing.client.android包下的CaptureActivity类: 注释以下代码: i

ZXing生成二维码和带logo的二维码,模仿微信生成二维码效果

首先说下,QRCode是日本人开发的,ZXing是google开发,barcode4j也是老美开发的,barcode4j对一维条形码处理的很好,而且支持的格式很多,当然也可以对二维码进行处理,效果个人感觉没有前两种好;ZXing对j2me,j2se,还有Android等支持也比较好,如果你是搞Android的或以后准备走Android,建议还是用zxing的比较好,毕竟都一个母亲(goole)生的,QRCode就不用说了吧,虽说技术无国界,但是国人还是有点.... 好,言归正传,java用ZXi

(转)ZXing生成二维码和带logo的二维码,模仿微信生成二维码效果

场景:移动支付需要对二维码的生成与部署有所了解,掌握目前主流的二维码生成技术. 1 ZXing 生成二维码 首先说下,QRCode是日本人开发的,ZXing是google开发,barcode4j也是老美开发的,barcode4j对一维条形码处理的很好,而且支持的格式很多,当然也可以对二维码进行处理,效果个人感觉没有前两种好;ZXing对j2me,j2se,还有Android等支持也比较好,如果你是搞Android的或以后准备走Android,建议还是用zxing的比较好,毕竟都一个母亲(gool

ZXing拍码后区分扫描到的是一维码、二维码、其他码

以前没有怎么接触过二维码,最近遇到一个问题,如何判断条码扫描到的是一维码还是二维码,经过自己艰苦奋斗一下午,加上网上查询资料, 总结出两种方式可以解决该问题(推荐采用第二种方式): 1.修改源码(具体后面会提到) 2.通过返回的编码来判断 实现方式一: 源码的修改,关键涉及到三个类,CaptureActivity.DecodeThread.DecodeFormatManager 1.首先让我们来看下Zxing的源码,里面有一个DecodeFormatManager编码管理类:该来原本的final

iOS- 详解如何使用ZBarSDK集成扫描二维码/条形码,点我!

1.前言 目前市场主流APP里,二维码/条形码集成主要分两种表现形式来集成: a. 一种是调用手机摄像头并打开系统照相机全屏去拍摄 b. 一种是自定义照相机视图的frame,自己控制并添加相关扫码指南 今天我就用ZBarSDK来实现上诉两种主流集成方式,与大家共同交流学习/ 2.第一步导入ZBarSDK 可以从github上下载好ZBarSDK,导入项目,并且导入相关iOS.framework 如图: 3.集成扫描二维码/条形码 3.1.调用手机摄像头并打开系统照相机全屏去拍摄 实现效果图: 1