BGAQRCode-Android的简单使用

三分钟实现Android扫码识别功能 技术交流群:励志程序员 392602799 注意,扫码的这个库会更新版本的,不要直接复制粘贴了事,写博客是为了帮助需要的人,不是为你服务的,有问题认真看博客的内容,以及关注github下的更新和issue和解释: bingoogolapple/BGAQRCode-Android 扫码实现可以使用ZXing,Phonegap和ZBar,这里封装了ZXing的操作,使用简便,节约时间 阅读详情

[url]https://github.com/bingoogolapple/BGAQRCode-Android

依赖文件(demo中用到的有些可根据需求改变)

    compile 'com.google.zxing:core:3.2.1'
    compile 'cn.bingoogolapple:bga-qrcodecore:1.1.7@aar'
    compile 'cn.bingoogolapple:bga-zxing:1.1.7@aar'

根据需求加入对应的权限(动态获取权限请根据easyPermission文档操作)

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    //这句是使用图片选择器框架时用到的
    xmlns:tools="http://schemas.android.com/tools"
    package="com.huaqiang.zxingdemo">
    //图片选择框架用到
    <uses-sdk tools:overrideLibrary="cn.bingoogolapple.photopicker,cn.bingoogolapple.androidcommon.adapter" />

    <uses-permission android:name="android.permission.CAMERA" />
    <!--android.permission.VIBRATE允许访问震动权限-->
    <uses-permission android:name="android.permission.VIBRATE" />
    <!--android.permission.FLASHLIGHT允许访问闪光灯的权限-->
    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

布局中使用

<!--app:qrcv_barcodeRectHeight条码扫描框的宽度
        qrcv_borderSize扫描框的宽度
        qrcv_cornerColor扫描框的颜色
        qrcv_cornerLength扫描框边角线的长度
        qrcv_cornerSize扫描框边角线的宽度
        qrcv_customScanLineDrawable扫描线的图片资源「默认的扫描线图片样式不能满足你的需求时使用,设置该属性后 qrcv_isShowDefaultScanLineDrawable、qrcv_scanLineSize、qrcv_scanLineColor 将失效」
        qrcv_isBarcode是否是扫条形码
        qrcv_isCenterVertical扫描框是否垂直居中,该属性为true时会忽略 qrcv_topOffset 属性
        qrcv_isOnlyDecodeScanBoxArea    是否只识别扫描框区域的二维码
        qrcv_isScanLineReverse扫描线是否来回移动
        qrcv_isShowDefaultGridScanLineDrawable是否显示默认的网格图片扫描线
        qrcv_isShowTipBackground是否显示提示文案的背景
        qrcv_isShowTipTextAsSingleLine是否把提示文案作为单行显示
        qrcv_isTipTextBelowRect提示文案是否在扫描框的底部
        qrcv_maskColor除去扫描框,其余部分阴影颜色
        qrcv_qrCodeTipText
        qrcv_rectWidth  扫描框的宽度
        qrcv_scanLineColor扫描线的颜色「扫描线和默认的扫描线图片的颜色」
        qrcv_scanLineMargin扫描线距离上下或者左右边框的间距
        qrcv_scanLineSize扫描线的宽度
        qrcv_toolbarHeight   Toolbar 的高度,通过该属性来修正由 Toolbar 导致扫描框在垂直方向上的偏差
        qrcv_topOffset扫描框距离 toolbar 底部的距离-->
    <cn.bingoogolapple.qrcode.zxing.ZXingView
        android:id="@+id/zxingview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:qrcv_animTime="1000"
        app:qrcv_barCodeTipText="将条码放入框内,即可自动扫描"
        app:qrcv_barcodeRectHeight="140dp"
        app:qrcv_borderColor="@android:color/white"
        app:qrcv_borderSize="1dp"
        app:qrcv_cornerColor="@color/colorPrimaryDark"
        app:qrcv_cornerLength="20dp"
        app:qrcv_cornerSize="3dp"
        app:qrcv_customScanLineDrawable="@drawable/scan_icon_scanline"
        app:qrcv_isBarcode="false"
        app:qrcv_isCenterVertical="false"
        app:qrcv_isOnlyDecodeScanBoxArea="false"
        app:qrcv_isScanLineReverse="true"
        app:qrcv_isShowDefaultGridScanLineDrawable="false"
        app:qrcv_isShowDefaultScanLineDrawable="true"
        app:qrcv_isShowTipBackground="true"
        app:qrcv_isShowTipTextAsSingleLine="false"
        app:qrcv_isTipTextBelowRect="false"
        app:qrcv_maskColor="#33FFFFFF"
        app:qrcv_qrCodeTipText="将二维码/条码放入框内,即可自动扫描"
        app:qrcv_rectWidth="200dp"
        app:qrcv_scanLineColor="@color/colorPrimaryDark"
        app:qrcv_scanLineMargin="0dp"
        app:qrcv_scanLineSize="0.5dp"
        app:qrcv_tipTextColor="@android:color/white"
        app:qrcv_tipTextSize="12sp"
        app:qrcv_toolbarHeight="56dp"
        app:qrcv_topOffset="90dp"/>

代码中应用实现QRCodeView.Delegate接口

public class ScannerActivity extends AppCompatActivity implements QRCodeView.Delegate {

    @BindView(R.id.zxingview)
    ZXingView zxingview;
    @BindView(R.id.scanner)
    ImageView scanner;
    @BindView(R.id.btn_photo)
    Button btnPhoto;

    private static final int REQUEST_CODE_CHOOSE_QRCODE_FROM_GALLERY = 666;
    @BindView(R.id.btn_openligtht)
    Button btnOpenligtht;
    @BindView(R.id.btn_closeligtht)
    Button btnCloseligtht;
    @BindView(R.id.toolbar)
    Toolbar toolbar;
    @BindView(R.id.btn_openBarcode)
    Button btnOpenBarcode;
    @BindView(R.id.btn_openQRcode)
    Button btnOpenQRcode;
    @BindView(R.id.activity_scanner)
    RelativeLayout activityScanner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_scanner);
        ButterKnife.bind(this);
        initView();

    }

    @Override
    protected void onStart() {
        super.onStart();
        //打开后置摄像头预览,但并没有开始扫描
        zxingview.startCamera();
        //开启扫描框
        zxingview.showScanRect();
        zxingview.startSpot();
    }

    @Override
    protected void onStop() {
        zxingview.stopCamera();
        super.onStop();
    }

    @Override
    protected void onDestroy() {
        zxingview.onDestroy();
        super.onDestroy();
    }

    private void initView() {
        //隐藏toolbar上面的二维码图标
        scanner.setVisibility(View.GONE);
        btnPhoto.setVisibility(View.VISIBLE);
        //设置二维码的代理
        zxingview.setDelegate(this);
    }
    //扫描成功解析二维码成功后调用,可做对应的操作
    @Override
    public void onScanQRCodeSuccess(String result) {
        //扫描成功后调用震动器
        vibrator();
        //显示扫描结果
        Toast.makeText(this, result, Toast.LENGTH_SHORT).show();
        //再次延时1.5秒后启动
        zxingview.startSpot();
    }

    private void vibrator() {
        //获取系统震动服务
        Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
        vibrator.vibrate(200);
    }

    //扫描失败后调用的方法
    @Override
    public void onScanQRCodeOpenCameraError() {
        Toast.makeText(this, "相机打开失败", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        zxingview.showScanRect();
        if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_CODE_CHOOSE_QRCODE_FROM_GALLERY) {
            final String picturePath = BGAPhotoPickerActivity.getSelectedImages(data).get(0);

            /*
            这里为了偷懒,就没有处理匿名 AsyncTask 内部类导致 Activity 泄漏的问题
            请开发在使用时自行处理匿名内部类导致Activity内存泄漏的问题,处理方式可参考 https://github.com/GeniusVJR/LearningNotes/blob/master/Part1/Android/Android%E5%86%85%E5%AD%98%E6%B3%84%E6%BC%8F%E6%80%BB%E7%BB%93.md
             */
            new AsyncTask<Void, Void, String>() {
                @Override
                protected String doInBackground(Void... params) {
                    return QRCodeDecoder.syncDecodeQRCode(picturePath);
                }

                @Override
                protected void onPostExecute(String result) {
                    if (TextUtils.isEmpty(result)) {
                        Toast.makeText(ScannerActivity.this, "未发现二维码", Toast.LENGTH_SHORT).show();
                    } else {
                        Toast.makeText(ScannerActivity.this, result, Toast.LENGTH_SHORT).show();
                    }
                }
            }.execute();
        }
    }


    @OnClick({R.id.btn_openligtht, R.id.btn_closeligtht, R.id.btn_photo,R.id.btn_openBarcode, R.id.btn_openQRcode})
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btn_openligtht:
                //打开闪关灯
                zxingview.openFlashlight();
                break;
            case R.id.btn_closeligtht:
                //关闭闪光灯
                zxingview.closeFlashlight();
                break;
            case R.id.btn_photo:
                //参数1 应用程序上下文
                //参数2 拍照后图片保存的目录。如果传null表示没有拍照功能,如果不为null则具有拍照功能,
                //参数3 图片选择张数的最大值
                //参数4 当前已选中的图片路径集合,可以传null
                //参数5 滚动列表时是否暂停加载图片
                startActivityForResult(BGAPhotoPickerActivity.newIntent(this, null, 1, null, false), REQUEST_CODE_CHOOSE_QRCODE_FROM_GALLERY);
                break;
            case R.id.btn_openBarcode:
                //切换到条形码扫描
                zxingview.changeToScanBarcodeStyle();
                break;
            case R.id.btn_openQRcode:
                //切换到二维码扫描
                zxingview.changeToScanQRCodeStyle();
                break;

        }
    }

}
Android直播带货系统中如何实现二维码扫描功能 自李佳琦的出现将直播带货成功的引向了“巅峰”,为了响应众平台和用户的需求,开发Android直播带货系统成为当下的开发热潮。那么在平时的直播软件中,登录、分享、支付等场景中经常出现扫描二维码的需求。接下来就以云豹直播app中的二维码扫描功能为例,跟大家简单分享下怎样搞笑、快捷、稳定的实现这个功能。 目前github上关于Android直播带货系统实现二维码的库最有名的是Google的Zxing,但... 阅读详情

相关推荐

BGAQRCode-Android:QRCode扫描二维码,扫描条形码,相册获取图片后识别,生成带Logo二维码,支持微博微信QQ二维码扫描样式

:person_running: BGAQRCode-Android :person_running: 目录 功能介绍 根据的产品需求,参考扫描仪改版,希望能帮助到生成二维码,扫描二维码,识别图片二维码等需求的猿友。修改幅度,也就没准备针对扫描仪库提交PR。 可定制各式各样的扫描框 可定制全屏扫描或只识别扫描框区域内码 可定制要识别的代码的格式(详细用法查看TestScanActivity中的onClick方法) 可以控制闪光灯,方便夜间使用 可以设置用前置摄像头扫描 可以二指缩放预览 可以监听环境亮度,提示用户打开,关闭闪光灯 识别到比较小的码时自动放大 ZXing生成可自定义颜色,带徽标的二维码 ZXing生成一维码 ZXing扫描条码,二维码 ZXing识别图库中的条码,二维码图片 ZBar扫描条码,二维码「已解决中文乱码问题」 ZBar识别图库中的条码,二维码图片 常见问题 1.部分手机无法扫描出结果,扫描预览界面二维码被压缩

Android二维码扫描开源库 - BGAQRCode-Android

在自己项目里集成时记得在 onDestroy 方法中调用 mQRCodeView.onDestroy(),在 onStop 方法中调用 mQRCodeView.stopCamera(),否则会出现黑屏。根据之前公司的产品需求,参考 barcodescanner 改的,希望能帮助到有生成二维码、扫描二维码、识别图片二维码等需求的猿友。* 同步创建指定前景色、白色背景色、带logo的二维码图片。* 同步创建指定前景色、指定背景色、带logo的二维码图片。* 同步创建指定前景色、白色背景色的二维码图片。

轻描时光 1854

BGAQRCode-Android:QRCode 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式

:person_running:BGAQRCode-Android:person_running: 目录 功能介绍 根据的产品需求,参考 改的,希望能帮助到有生成二维码、扫描二维码、识别图片二维码等需求的猿友。修改幅度较大,也就没准备针对 库提交PR。 可定制各式各样的扫描框 可定制全屏扫描或只识别扫描框区域内码 可定制要识别的码的格式(详细用法查看 TestScanActivity 中的 onClick 方法) 可以控制闪光灯,方便夜间使用 可以设置用前置摄像头扫描 可以二指缩放预览 可以监听环境亮度,提示用户打开、关闭闪光灯 识别到比较小的码时自动放大 ZXing 生成可自定义颜色、带 logo 的二维码 ZXing 生成一维码 ZXing 扫描条码、二维码 ZXing 识别图库中的条码、二维码图片 ZBar 扫描条码、二维码「已解决中文乱码问题」 ZBar 识别图库中的条码、二维码图片 常见问题 1.部分手机无

Android - BGAQRCode 扫描二维码生成二维码

说明: 最新有二维码扫描需求,就研究了一下二维码扫描:找了很多项目目前觉得这个还是蛮好用的:https://github.com/bingoogolapple/BGAQRCode-Android 这里只是用到了ZXingDemo的代码二维码扫描功能 效果图: 自己的代码: 具体看git的Demo代码,下面是自

Beluga_白鲸 1万+

利用gprMax与Matlab实现SFCW雷达信号的高效仿真与优化

本文详细介绍了如何结合gprMax与Matlab实现SFCW雷达信号的高效仿真与优化。通过利用gprMax获取地下场景的冲激响应,并在Matlab中运用卷积与信号处理技术,可大幅提升SFCW雷达系统仿真的效率与灵活性,为探地雷达研究与设计提供强大工具。

book8的博客 705

Transformers 中的 Softmax 可以并行加速么?

通过融合前两个计算步骤,降低执行Reduce_max和Reduce_sum等操作的通信开销。利用共享内存来存储临时数据,以减少对全局内存的访问成本。

stephen147的博客 1234

Android二维码扫码ZXing,barcodescanner和BGAQRCode-Android技术比较

 Android二维码扫码ZXing,barcodescanner和BGAQRCode-Android技术比较 Android二维码扫描是一种常见的功能开发,但是技术选型不当会造成初期开发难度大、后期维护成本高。常见的Android二维码扫码解决方案很多,比如ZXing,bar...

weixin_33826268的博客 239

分享一些基于微信小程序开发的小游戏源码

小游戏小程序是运行在微信生态系统(或其他支持小程序的平台)中的轻量级应用程序,专为休闲游戏体验而设计的小程序子类别,小游戏小程序通常体积较小,加载速度快,用户无需等待长时间即可开始游戏。用户无需下载或安装单独的游戏应用程序,即可通过小程序入口直接进入游戏,同时小游戏小程序通常包含排行榜、分享功能等社交元素,可以增强游戏体验并促进用户参与。game.js:游戏页面的逻辑文件,包含页面数据、生命周期函数、事件处理函数等。game.wxml:游戏页面的结构文件,定义了页面的布局和组件。

xinshangdian的博客 6222

Android 9 实现二维码扫描处理(BGAQRCode-Android) 笔记

首先声明,本笔记是在下面这位大佬的代码基础上改的,本人会将实现过程中出现的问题和经验写在下面,本笔记可以结合github上作者的readme一起看: https://github.com/bingoogolapple/BGAQRCode-Android 上述项目可以实现二维码和条形码的扫描,以及扫描界面的定制,经过个人实验,二维码的部分全部可以实现,条形码的部分个人没有实验过,没有发言权。 项目结构 该项目使用两种库同时实现了二维码和条形码的扫描,分别是ZXing和ZBar,本人只实验了ZXing,所有后面

neu_ZZM的博客 3039

complier lab2

只需支持定义 main 函数即可不带参数 int main(){...}带参数 int main(int argc, int argv){...}

qq_43581843的博客 904

【自然语言处理】【聚类】TELL:可解释神经聚类

超越分类的XAI:可解释神经聚类 《XAI Beyond Classification: Interpretable Neural Clustering》 论文地址:https://www.jmlr.org/papers/volume23/19-497/19-497.pdf 一、简介 ​ 本文研究了可解释AI(XAI\text{XAI}XAI)和数据聚类这两个挑战性问题。第一个问题是如何设计一种具有固定可解释性的神经网络,而不是给出一个黑盒模型的事后解释。第二个问题是,使用可微分神经网络来实现离散的k-me

bqw的博客 4136

基于Zxing的BGAQRCode-Android开源库的集成与使用

BGAQRCod开源地址 使用步骤: 步骤1:  app.gradle中引入 implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.2.1' 步骤2: 申请运行时权限,主要是: Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE 我这边用的是P...

crazyZhangxl的博客 2237

HX711重量传感器原理图设计,已量产(压力传感器)

最近调通了一款针对家用、物联网场景的重量传感套件,核心用了 HX711 这颗经典的称重 AD 芯片,还加了用户最需要的 “一键校准” 功能 —— 之前帮朋友做家用米桶余量报警时,用户总吐槽校准步骤太繁琐,这次的方案把操作简化到只按一个键,试下来体验好了不少。正好拆解下这套硬件的设计逻辑,供做同类产品的朋友参考。

不脱发的程序猿 365

Android二维码开源库—BGAQRCode-Android的使用

Android二维码开源库—BGAQRCode-Android的使用 QRCode 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信、QQ 二维码扫描样式。他把Zbar和Zxing,都做了优化,扫描速度非常快,用户体验很好,用起来也非常方便 添加依赖 implementation 'cn.bingoogolapple:bga-qrcode-zbar:1.3.7' 或者 implementation 'cn.bingoogolapple:bga-qrcode-zxing:1

TI_ZJW的博客 3810

8155源码编译DSP(ubuntu环境下)

一.设置环境变量 -users:/$ sudo gedit ~/.bashrc #set adsp cdsp tools path #export ARMLMD_LICENSE_FILE=<LICENSE FILE INFO> #export ARMTOOLS=RVCT221 #export ARMROOT=/pkg/asw/compilers/arm/ADS1.2 #export ARM_COMPILER_PATH=/pkg/qct/software/arm/RVDS/2.2BLD593

Johnny2004的专栏 1676

地图自定义编码CSV转换成ini文件

创 建 schema.ini 文件:有时,当您尝试使用 .csv 文件将自定义地理信息导入 Tableau 时,您可能会看到“无法使用.csv,因为它不包含唯一列”错误消息。这是因为您的 .csv 文件可能包含数值数据,例如数值邮政编码。对于新的地理角色,Tableau 将只接受文本字段。但是,您可以创建一个 schema.ini 文件,以指示 Tableau 应将您要导入的数值字段视为文本字段。...

wenyusuran的专栏 1975

安卓二维码使用小结

现在二维码几乎在我们身边无处不在了,而在安卓 APP 上使用二维码就不能少了,网上二维码的教程一搜一大堆,我这就小结一下。 前言 提到二维码的使用,首先想到的就是谷歌开发的 Zxing 了,网上有很多基于Zxing 的二维码扫描方案,大致有两类,一个是封装成开源库,另一个就是将 Zxing 的 demo 作为 module 导入使用。前者使用简单,而且有人维护和优化,二维码的扫描精度和速度都有保证,后者就是可以自行修改源码,根据需要裁剪功能,虽然麻烦一些,但是自由度高点。 我这里还是推荐使用开源的库,毕竟稳

silencefly的博客 600

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

BGAQRCode-Android

原文地址:http://p.codekk.com/detail/Android/bingoogolapple/BGAQRCode-Android BGAQRCode-Android 项目地址:bingoogolapple/BGAQRCode-Android 简介:ZXing 生成二维码 ZXing 扫描二维码 ZXing 识别图库中的二维码图片 可以控制闪光灯,

chenhuakang的博客 2565

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Android之条形码、二维码扫描框架(非原创)

文章大纲 一、条形码、二维码扫描框架介绍二、条形码、二维码的区别和组成结构介绍三、条形码、二维码扫描框架应用场景四、BGAQRCode-Android框架实战五、项目源码下载六、参考文章 一、条形码、二维码扫描框架介绍 Android二维码扫描是一种常见的功能开发,但是技术选型不当会造成初期开发难度大、后期维护成本高。常见的Android二维码扫码解决方案很多,比如ZXing,b...

weixin_30402343的博客 965

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Android 二维码扫描与生成 可选颜色 logo 控制闪光灯使用Demo

BGAQRCode-Android的使用Demo感谢作者https://github.com/louisgeek/LouisQRCodeDemo

Keep Learning , Keep Improving ! 977

Android 好用的二维码识别

https://blog.csdn.net/u012246458/article/details/52901254

qq_23911165的博客 494
下一篇: GreenDAO的简单使用
码小六
博客等级 码龄10年 1粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值