All Projects → mylhyl → Android Zxing

mylhyl / Android Zxing

android google zxing 可配置扫描框、线样式 ,生成二维码(文字、联系人)

Programming Languages

java
68154 projects - #9 most used programming language

Labels

Projects that are alternatives of or similar to Android Zxing

ZxingSupport
A Library based on Zxing, make you easy to develop 1D/2D barcode-scan App.
Stars: ✭ 15 (-97.28%)
Mutual labels:  zxing
Inventory-Management-System
This is an app for a warehouse management using Bar code Scanner. The database used is Firebase.
Stars: ✭ 41 (-92.57%)
Mutual labels:  zxing
Qrcodescanner
An optimized qr code scan tool forked from zxing.
Stars: ✭ 427 (-22.64%)
Mutual labels:  zxing
WifiBarcodeSample
Sample code for my article in DotNetCurry magazine on scanning barcodes. In this sample you can generate and scan QR codes that contain a Wi-Fi connection string
Stars: ✭ 13 (-97.64%)
Mutual labels:  zxing
StarBarcode
一个基于Zxing封装的条形码扫描库。支持多种条形码,可生成、解析带logo的二维码,自动放大镜头,设备移动时自动对焦、连续对焦,扫描UI自定义。
Stars: ✭ 52 (-90.58%)
Mutual labels:  zxing
Binaryeye
Yet another barcode scanner for Android
Stars: ✭ 278 (-49.64%)
Mutual labels:  zxing
UVCCameraZxing
USB串口摄像头识别二维码
Stars: ✭ 82 (-85.14%)
Mutual labels:  zxing
Android Zblibrary
🔥Android MVP 快速开发框架,做国内 「示例最全面」「注释最详细」「使用最简单」「代码最严谨」的 Android 开源 UI 框架。 🔥An Android MVP Framework with many demos, detailed documents, simple usages and strict codes.
Stars: ✭ 5,000 (+805.8%)
Mutual labels:  zxing
qrcode
A flutter plugin for scanning QR codes. Use AVCaptureSession in iOS and zxing in Android.
Stars: ✭ 69 (-87.5%)
Mutual labels:  zxing
Ngx Scanner
Angular (2+) QR code, Barcode, DataMatrix, scanner component using ZXing.
Stars: ✭ 420 (-23.91%)
Mutual labels:  zxing
Zxing-demo
A tutorial app to generate Barcode using Zxing.
Stars: ✭ 17 (-96.92%)
Mutual labels:  zxing
browser
ZXing for JS's browser layer with decoding implementations for browser.
Stars: ✭ 88 (-84.06%)
Mutual labels:  zxing
Lbxscan
A barcode and qr code scanner (二维码、扫码、扫一扫、ZXing、ZBar、iOS系统AVFoundation扫码封装,扫码界面效果封装)
Stars: ✭ 3,133 (+467.57%)
Mutual labels:  zxing
SCodes
This project is Qt & Qml wrapper for ZXing-C++ Library that is used for decoding 1D and 2D barcodes.
Stars: ✭ 55 (-90.04%)
Mutual labels:  zxing
Zxing Cpp
ZXing C++ Library
Stars: ✭ 483 (-12.5%)
Mutual labels:  zxing
ZXingSample
Working sample app for a blog post on barcode scanning and generating with ZXing
Stars: ✭ 20 (-96.38%)
Mutual labels:  zxing
Ponyexpress
Android express app use zxing&volley&gson&material design
Stars: ✭ 272 (-50.72%)
Mutual labels:  zxing
Scanner
二维码/条码识别、身份证识别、银行卡识别、车牌识别、图片文字识别、黄图识别、驾驶证(驾照)识别
Stars: ✭ 547 (-0.91%)
Mutual labels:  zxing
Code Scanner
Code scanner library for Android, based on ZXing
Stars: ✭ 543 (-1.63%)
Mutual labels:  zxing
Qzxing
Qt/QML wrapper library for the ZXing library. 1D/2D barcode image processing library
Stars: ✭ 401 (-27.36%)
Mutual labels:  zxing

一、概述

相信Adnroid开发都知道,有四款扫描器,ZxingZbarBarcode4JOkapiBarcode 前二者应用较广泛,至于介绍与区别就在此阐述,网上有很多。此文主要介绍在在使用过程中,官方客户端各种达不到需求。相信很多童鞋都有此体会,所以借此机会就在Zxing 官方客户端基础上修改,去除无用功能并二次封装达到可扩展。

  • 官方客户端目前问题汇总
  • 设置功能多余
  • 竖屏后不能正向扫描条形码
  • 扫描框大小、颜色、扫描线配置不够灵活
  • 无生成二维码、主动识别二维码功能
  • 介于以上问题,于是该库就华丽的诞生
  • 修复竖屏不能正向扫描条形码
  • 可定制扫描框与扫描线样式
  • 加入创建二维码、识别图片中的二维码功能

二、效果图

三、下载APK体验或手机扫描下面二维码

四、引用

1、在线 本库内部已集成zxing:core:3.4.0

  • 依赖使用 Gradle 构建时添加一下即可
compile 'com.mylhyl:zxingscanner:2.2.0'

2、离线jar,需要手动添加 Zxing 核心库

compile 'com.google.zxing:core:3.4.0'

gradle makeJar 或者参考下图,在android studio中执行

这里写图片描述

五、使用

例子

直接在layout xml使用ScannerView即可

<com.mylhyl.zxing.scanner.ScannerView
    android:id="@+id/scanner_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
注意生命周期中的使用

重写onResume调用mScannerView.onResume();

@Override
protected void onResume() {
    mScannerView.onResume();
    super.onResume();
}

@Override
protected void onPause() {
    mScannerView.onPause();
    super.onPause();
}

注册扫描成功监听器mScannerView.setOnScannerCompletionListener

/**
 * 扫描成功后将调用
 *
 * @param rawResult    扫描结果
 * @param parsedResult 结果类型
 * @param barcode      扫描后的图像
 */
void OnScannerCompletion(Result rawResult, ParsedResult parsedResult, Bitmap barcode);

开启闪光灯

mScannerView.toggleLight(true);//开
mScannerView.toggleLight(false);//关

调用如下方法获取类型

ParsedResultType type = parsedResult.getType();

可根据type强转为相应的对象,按项目需求处理。每个项目都有不同的需求,所以此库将最终处理结果丢给你们自己咯,想怎么玩就怎么玩,下面代码是在 sample 中

switch (type) {
    case ADDRESSBOOK:
	AddressBookParsedResult addressBook = (AddressBookParsedResult) parsedResult;
        bundle.putSerializable(Intents.Scan.RESULT, new AddressBookResult(addressBook));
        break;
    case URI:
        URIParsedResult uriParsedResult = (URIParsedResult) parsedResult;
        bundle.putString(Intents.Scan.RESULT, uriParsedResult.getURI());
        break;
    case TEXT:
        bundle.putString(Intents.Scan.RESULT, rawResult.getText());
        break;
}

生成二维码使用

//联系人类型
Bitmap bitmap = new QREncode.Builder(this)
        .setParsedResultType(ParsedResultType.ADDRESSBOOK)
        .setAddressBookUri(contactUri).build().encodeAsBitmap();

//文本类型
Bitmap bitmap = new QREncode.Builder(this)
        .setColor(getResources().getColor(R.color.colorPrimary))//二维码颜色
        //.setParsedResultType(ParsedResultType.TEXT)//默认是TEXT类型
        .setContents("我是石头")//二维码内容
        .setLogoBitmap(logoBitmap)//二维码中间logo
        .build().encodeAsBitmap();

解析图中二维码

    public static void decodeQR(String picturePath, OnScannerCompletionListener listener);
    public static void decodeQR(Bitmap srcBitmap, final OnScannerCompletionListener listener)

六、样式设置

说明:1.6.0以后版本将废弃ScannerView样式设置,使用新增ScannerOptions,后续版本只会在ScannerOptions中维护。
具体api请看ScannerOptions.Builder

七、注意事项

权限

<uses-permission android:name="android.permission.CAMERA" />

八、常见问题

  • 对于setLaserFrameTopMargin方法,扫描区域偏移的问题issues-13
  • 可以在扫描成功后,调用restartPreviewAfterDelay连续扫描
  • 对于加密后的二维码,判断二维码类型可以如下:
	//重新包装`Result`,`decryptText`为解密后的内容
        Result decryptResult = new Result(decryptText, rawResult.getRawBytes(),
                rawResult.getNumBits(), rawResult.getResultPoints(), 
                rawResult.getBarcodeFormat(), rawResult.getTimestamp());
	//转换扫描结果为类型枚举
        ParsedResult decryptParsedResult = Scanner.parseResult(decryptResult);
        final ParsedResultType decryptType = decryptParsedResult.getType();
        switch (decryptType) {
            //类型分支
	    case :
	    	break;
        }

联系方式

  • 可能会因为工作忙碌原因没有及时回复,大家方便的话可以加我个人微信号:48025211,备注:github
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].