Skip to content

🔥 zbar扫描快,zxing可以生成和识别本地,So,我就把他们结合在了一起,这样Android二维码(条形码)功能就更便捷了

License

Notifications You must be signed in to change notification settings

nanchen2251/zBarLibary

 
 

Repository files navigation

zbar扫描快,zxing可以生成和识别本地,So,我就把他们结合在了一起,这样二维码识别就更便捷了(包含主要功能,二维码识别生成,条形码识别生成)

预览

!微信图片_20180226114319.jpg

更新日志

2018-11-15

1.修复无闪光灯机器打开手电筒闪退的BUG(感谢 DwayneZhang)

2018-10-23

1.提高从相册选择二维码识别的成功率

2018-09-10

1.修复从相册选择路径的bug
2.修复从相册选择对存储权限的申请
3.提高生成二维码的容错率

2018-08-13

1.加入内部权限处理

2018-03-13

1.修复生成条形码时下方文字的BUG(感谢simplepeng)
2.优化识别本地二维码(由zxing识别转为zbar识别,大幅提升复杂图片中二维码的识别)
3.新增识别本地条形码

2018-02-26

1.新增生成带logo的二维码
2.调整生成二维码的边框值
3.提升生成二维码的容错率

2018-02-09

1.修复了从相册选择二维码无结果返回的BUG

2018-02-08

1.修复中文"你好"扫描乱码的情况
2.修复生成二维码不能使用中文的问题
3.新增生成二维码指定大小的方法

2018-02-07

1.修复打开手电筒扫码成功无结果也不返回的问题

2018-02-06

1.修复不能隐藏扫描框下方描述的BUG
2.新增只识别扫描框中的内容
3.新增自定义扫码类型
4.新增自定义扫描框类型
5.新增自定义提示音

2018-02-02

1.修复二维码扫描的误识别,提高二维码扫描速度

2017-12-21:

1.修复了左上角返回按钮无效的问题

2017-10-13:

1.修复了识别二维码的一个BUG(感谢 穿越硝烟的迷彩)

2017-09-22:

1.重构了整个包,修改了包名
2.添加了全平台的so文件,其实看官们保留x86和v7a就够了
3.新增打开闪光灯
4.新增了从相册识别
5.修改了启动方法和结果回调
6.新增了一大波看官们可以配置的功能

引入

方式一(需要修改布局的):

GitHub下载库,使用File -> new -> Import Module方式

方式二(不需要修改布局):

最新版本(推荐):

 compile 'cn.bertsir.zbarLibary:zbarlibary:latest.release'

指定版本:

compile 'cn.bertsir.zbarLibary:zbarlibary:1.1.7'

关于包的大小问题

为了确保全平台的兼容,默认库中携带了arm64-v8a,armeabi,armeabi-v7a,mips,mips64,x86,x86_64,的so文件,可能会导致安装包体积大,和其他第三方SDK冲突的问题,可以使用以下代码解决大小和冲突

android {
    ......
    defaultConfig {
        ......
		......
		......
        ndk {
            abiFilters "armeabi-v7a"  // 指定要ndk需要兼容的架构(这样其他依赖包里mips,x86,armeabi,arm-v8之类的so会被过滤掉)
        }
    }
}

使用方法

1.识别二维码(条形码)

        QrConfig qrConfig = new QrConfig.Builder()
                .setDesText("(识别二维码)")//扫描框下文字
                .setShowDes(false)//是否显示扫描框下面文字
                .setShowLight(true)//显示手电筒按钮
                .setShowTitle(true)//显示Title
                .setShowAlbum(true)//显示从相册选择按钮
                .setCornerColor(Color.WHITE)//设置扫描框颜色
                .setLineColor(Color.WHITE)//设置扫描线颜色
                .setLineSpeed(QrConfig.LINE_MEDIUM)//设置扫描线速度
                .setScanType(QrConfig.TYPE_QRCODE)//设置扫码类型(二维码,条形码,全部,自定义,默认为二维码)
                .setScanViewType(QrConfig.SCANVIEW_TYPE_QRCODE)//设置扫描框类型(二维码还是条形码,默认为二维码)
                .setCustombarcodeformat(QrConfig.BARCODE_I25)//此项只有在扫码类型为TYPE_CUSTOM时才有效
                .setPlaySound(true)//是否扫描成功后bi~的声音
                .setDingPath(R.raw.test)//设置提示音(不设置为默认的Ding~)
                .setIsOnlyCenter(true)//是否只识别框中内容(默认为全屏识别)
                .setTitleText("扫描二维码")//设置Tilte文字
                .setTitleBackgroudColor(Color.BLUE)//设置状态栏颜色
                .setTitleTextColor(Color.BLACK)//设置Title文字颜色
                .create();
        QrManager.getInstance().init(qrConfig).startScan(MainActivity.this, new QrManager.OnScanResultCallback() {
            @Override
            public void onScanSuccess(String result) {
                Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
            }
        });

OK,就这么简单!

如果扫描界面不符合你的需求,来吧QRActivity的布局文件你随便改,保证改起来比别的库简单!

2.生成码

2.1生成二维码

Bitmap qrCode = QRUtils.getInstance().createQRCode("www.qq.com");

2.1.1生成二维码并添加Logo

Bitmap qrCode = QRUtils.getInstance().createQRCodeAddLogo(et_qr_content.getText().toString(),BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));

2.2生成条形码

QRUtils.TextViewConfig textViewConfig = new QRUtils.TextViewConfig();
textViewConfig.setSize(10);
 Bitmap barCodeWithText = QRUtils.getInstance().createBarCodeWithText(getApplicationContext(), content, 300, 100, textViewConfig);

3.识别本地

3.1 识别本地二维码

//可以传图片路径,Bitmap,ImageView 是不是很人性化
String s = QRUtils.getInstance().decodeQRcode(iv_qr);

3.2 识别本地条形码

//可以传图片路径,Bitmap,ImageView 是不是很人性化
String s = QRUtils.getInstance().decodeBarcode(iv_qr);

4.参数描述

name format description
setDesText String 设置扫描框下方描述文字
setShowDes Boolean 设置是否显示扫描框下方描述文字
setShowLight Boolean 是否开启手电筒功能
setShowAlbum Boolean 是否开启从相册选择功能
setShowTitle Boolean 是否显示Title
setTitleText String 设置Title文字
setTitleBackgroudColor int 设置Title背景色
setTitleTextColor int 设置Title文字颜色
setCornerColor int 设置扫描框颜色
setLineColor int 设置扫描线颜色
setLineSpeed int 设置扫描线速度
QrConfig.LINE_FAST(快速)
QrConfig.LINE_MEDIUM(中速
QrConfig.LINE_SLOW(慢速)
setScanType int 设置扫描类型
QrConfig.TYPE_QRCODE(二维码)
QrConfig.TYPE_BARCODE(条形码)
QrConfig.TYPE_ALL(全部类型)
QrConfig.TYPE_CUSTOM(指定类型)
setScanViewType int 设置扫描框类型
QrConfig.SCANVIEW_TYPE_QRCODE(二维码)
QrConfig.SCANVIEW_TYPE_BARCODE(条形码)
setCustombarcodeformat int 设置指定扫码类型(举例:QrConfig.BARCODE_EAN13),此项只有在ScanType设置为自定义时才生效
setIsOnlyCenter Boolean 设置是否只识别扫描框中的内容(默认为全屏扫描)
setPlaySound Boolean 设置扫描成功后是否有提示音
setDingPath int 自定义提示音(举例:R.raw.test,不设置为默认的)

5.混淆

-keep class cn.bertsir.zbar.Qr.** { *; }

二维码也就这些需求吧,这么简单就可以搞定了,识别速度是zxing的很多倍!方便了你的话可不可以给个Start,如遇BUG请Issues

关于作者

   南尘
   四川成都
   其它开源
   个人博客
   简书
   博客园
   交流群:118116509
   欢迎投稿(关注)我的唯一公众号,公众号搜索 nanchen 或者扫描下方二维码:
   

有码走遍天下 无码寸步难行(引自网络)

1024 - 梦想,永不止步!
爱编程 不爱Bug
爱加班 不爱黑眼圈
固执 但不偏执
疯狂 但不疯癫
生活里的菜鸟
工作中的大神
身怀宝藏,一心憧憬星辰大海
追求极致,目标始于高山之巅
一群怀揣好奇,梦想改变世界的孩子
一群追日逐浪,正在改变世界的极客
你们用最美的语言,诠释着科技的力量
你们用极速的创新,引领着时代的变迁

------至所有正在努力奋斗的程序猿们!加油!!

Licenses

 Copyright 2018 nanchen(刘世麟)

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.

About

🔥 zbar扫描快,zxing可以生成和识别本地,So,我就把他们结合在了一起,这样Android二维码(条形码)功能就更便捷了

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%