All Projects → xuexiangjys → Xqrcode

xuexiangjys / Xqrcode

Licence: apache-2.0
A very convenient and practical qrcode scanning, analysis, generation library.(一个非常方便实用的二维码扫描、解析、生成库)

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Xqrcode

qrrs
CLI QR code generator and reader written in rust
Stars: ✭ 29 (-80.41%)
Mutual labels:  qrcode-scanner, qrcode-generator
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 (-91.22%)
Mutual labels:  qrcode-scanner, qrcode-generator
BGAQRCode-Android
QRCode 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式
Stars: ✭ 7,714 (+5112.16%)
Mutual labels:  qrcode-scanner, qrcode-generator
flutter qr code scanner generator sharing
Flutter App For Scanning, Generating, Sharing QR Code
Stars: ✭ 137 (-7.43%)
Mutual labels:  qrcode-scanner, qrcode-generator
Swiftscan
A barcode and qr code scanner( 二维码/条形码扫描、生成,仿微信、支付宝)
Stars: ✭ 293 (+97.97%)
Mutual labels:  qrcode-generator, qrcode-scanner
Qrcode
A pure JavaScript QRCode encode and decode library.
Stars: ✭ 69 (-53.38%)
Mutual labels:  qrcode-generator, qrcode-scanner
ai barcode
Barcode generation,Barcode scanning,qrcode,qrcode generation,qrcode creator,flutter barcode,flutter qrcode,support android iOS web platform
Stars: ✭ 99 (-33.11%)
Mutual labels:  qrcode-scanner, qrcode-generator
laravel-qr-code-login
Today I will be showing you how to implement Laravel login with QRcode in a website. You can use my Laravel Starter so you can start the project in one minute .
Stars: ✭ 72 (-51.35%)
Mutual labels:  qrcode-scanner, qrcode-generator
QR Attendance
This project is an attendance system which provides attendance on scanning QR code. The attendance is stored in Excel sheet named with the date of attendance taken. In this folder a file named Generate.py is used to generate the QR code for given input file. Attend.py file is for scanning the QR code
Stars: ✭ 17 (-88.51%)
Mutual labels:  qrcode-scanner, qrcode-generator
qr-code-unity-3d-read-generate
Generating a QR code / Scanning a QR code in Unity 3D. Pre-build DLL and sample code from old Unity
Stars: ✭ 70 (-52.7%)
Mutual labels:  qrcode-scanner, qrcode-generator
Efqrcode
A better way to operate QR Code in Swift, support iOS, macOS, watchOS and tvOS.
Stars: ✭ 4,121 (+2684.46%)
Mutual labels:  qrcode-generator, qrcode-scanner
Lbxscan
A barcode and qr code scanner (二维码、扫码、扫一扫、ZXing、ZBar、iOS系统AVFoundation扫码封装,扫码界面效果封装)
Stars: ✭ 3,133 (+2016.89%)
Mutual labels:  qrcode-generator, qrcode-scanner
Czxing
C++ port of ZXing and ZBar for Android.
Stars: ✭ 854 (+477.03%)
Mutual labels:  qrcode-generator, qrcode-scanner
Awesomeqrcode
An awesome QR code generator for Android.
Stars: ✭ 1,718 (+1060.81%)
Mutual labels:  qrcode-generator
Qrcodereader.swift
Simple QRCode reader in Swift
Stars: ✭ 1,202 (+712.16%)
Mutual labels:  qrcode-scanner
Qrious
Pure JavaScript library for QR code generation using canvas
Stars: ✭ 1,160 (+683.78%)
Mutual labels:  qrcode-generator
React Qr Svg
React component for rendering SVG QR codes
Stars: ✭ 134 (-9.46%)
Mutual labels:  qrcode-generator
React Native Qrcode Scanner
A QR code scanner component for React Native.
Stars: ✭ 1,796 (+1113.51%)
Mutual labels:  qrcode-scanner
Zxing Typescript
Open-source, multi-format 1D/2D barcode image processing library ported from Java in TypeScript usable from node or browser
Stars: ✭ 68 (-54.05%)
Mutual labels:  qrcode-generator
Scannermapp
A QR-code and barcode acanner app built in Delphi using ZXing and TFrameStand
Stars: ✭ 65 (-56.08%)
Mutual labels:  qrcode-scanner

XQRCode

api I Star

一个非常方便实用的二维码扫描、解析、生成库

关于我

github csdn 简书 掘金 知乎

特点

  • 支持快速集成条形码、二维码扫描功能。
  • 支持自定义扫描界面。
  • 支持二维码多次扫描。
  • 支持生成带图标的二维码。
  • 支持生成带背景图片的复杂二维码。
  • 支持二维码解析功能

1、演示(请star支持)

xqrcode.gif

Demo下载

downloads

xqrcode_download.png

2、如何使用

目前支持主流开发工具AndroidStudio的使用,直接配置build.gradle,增加依赖即可.

2.1、Android Studio导入方法,添加Gradle依赖

1.先在项目根目录的 build.gradle 的 repositories 添加:

allprojects {
     repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

2.然后在dependencies添加:

dependencies {
  ...
   // 如果是androidx项目,使用1.1.0版本及以上
  implementation 'com.github.xuexiangjys:XQRCode:1.1.0'
   // 如果是support项目,请使用1.0.6版本
  implementation 'com.github.xuexiangjys:XQRCode:1.0.6'
}

2.2、二维码扫描

默认二维码扫描

1.默认二维码扫描界面CaptureActivity

使用XQRCode.startScan直接调取默认二维码扫描。

XQRCode.startScan(this, REQUEST_CODE);

2.二维码的扫描结果通过Intent返回出来:

  • XQRCode.RESULT_TYPE:扫描结果类型,XQRCode.RESULT_SUCCESS代表扫描成功,XQRCode.RESULT_FAILED代表扫描失败。
  • XQRCode.RESULT_DATA:扫描二维码的数据内容。

3.自定义默认二维码扫描界面的主题样式:

<!-- 自定义默认二维码扫描界面的主题. -->
<style name="XQRCodeTheme.Custom">
    <item name="ViewfinderViewStyle">@style/ViewfinderView.Custom</item>
</style>

<style name="ViewfinderView.Custom">
    <item name="inner_corner_color">#123456</item>
    <item name="inner_corner_length">50dp</item>
    <item name="inner_corner_width">5dp</item>
    <item name="inner_scan_speed">20dp</item>
    <item name="inner_scan_isCircle">false</item>
</style>

4.自定义默认二维码扫描界面的界面样式,重写相关方法:

详细内容可参见CustomCaptureActivity

@Override
protected void beforeCapture() {
//做二维码采集之前需要做的事情
}

@Override
protected void onCameraInitSuccess() {
//相机初始化成功
}

@Override
protected void onCameraInitFailed() {
//相机初始化失败
}

下面的二维码扫描代码仅供参考:

/**
 * 开启二维码扫描
 */
@Permission(CAMERA)
private void startScan(ScanType scanType) {
    switch (scanType) {
        case DEFAULT:
            XQRCode.startScan(this, REQUEST_CODE);
            break;
        case DEFAULT_Custom:
            XQRCode.startScan(this, REQUEST_CODE, R.style.XQRCodeTheme_Custom);
            break;
        case REMOTE:
            Intent intent = new Intent(XQRCode.ACTION_DEFAULT_CAPTURE);
            startActivityForResult(intent, REQUEST_CODE);
            break;
        default:
            break;
    }
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    //处理二维码扫描结果
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
        //处理扫描结果(在界面上显示)
        handleScanResult(data);
    }

    //选择系统图片并解析
    else if (requestCode == REQUEST_IMAGE) {
        if (data != null) {
            Uri uri = data.getData();
            getAnalyzeQRCodeResult(uri);
        }
    }
}

/**
 * 处理二维码扫描结果
 * @param data
 */
private void handleScanResult(Intent data) {
    if (data != null) {
        Bundle bundle = data.getExtras();
        if (bundle != null) {
            if (bundle.getInt(XQRCode.RESULT_TYPE) == XQRCode.RESULT_SUCCESS) {
                String result = bundle.getString(XQRCode.RESULT_DATA);
                ToastUtils.toast("解析结果:" + result, Toast.LENGTH_LONG);
            } else if (bundle.getInt(XQRCode.RESULT_TYPE) == XQRCode.RESULT_FAILED) {
                ToastUtils.toast("解析二维码失败", Toast.LENGTH_LONG);
            }
        }
    }
}

/**
 * 进行二维码解析
 *
 * @param uri
 */
private void getAnalyzeQRCodeResult(Uri uri) {
    XQRCode.analyzeQRCode(PathUtils.getFilePathByUri(getContext(), uri), new QRCodeAnalyzeUtils.AnalyzeCallback() {
        @Override
        public void onAnalyzeSuccess(Bitmap mBitmap, String result) {
            ToastUtils.toast("解析结果:" + result, Toast.LENGTH_LONG);
        }

        @Override
        public void onAnalyzeFailed() {
            ToastUtils.toast("解析二维码失败", Toast.LENGTH_LONG);
        }
    });
}

自定义二维码扫描

  1. 自定义一个扫码界面布局。自定义的扫码界面需要定义一个SurfaceView和一个ViewfinderView,且id必须是preview_viewviewfinder_view。详情见如下布局代码:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <SurfaceView
        android:id="@+id/preview_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <com.xuexiang.xqrcode.view.ViewfinderView
        android:id="@+id/viewfinder_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:inner_corner_color="@color/scan_corner_color"
        app:inner_corner_length="30dp"
        app:inner_corner_width="5dp"
        app:inner_marginTop="120dp"
        app:inner_scan_bitmap="@mipmap/ic_scan_image"
        app:inner_scan_isCircle="false"
        app:inner_scan_speed="10dp"
        app:inner_height="300dp"
        app:inner_width="300dp" />

</FrameLayout>

ViewfinderView属性表

属性名 类型 默认值 备注
inner_width dimension 屏幕宽度的3/4 扫描框的宽度
inner_height dimension 屏幕宽度的3/4 扫描框的高度
inner_marginTop dimension 居中效果 扫描框距离顶部的距离
inner_corner_color color #0DC2FE 扫描框四角的颜色
inner_corner_length dimension 32dp 扫描框四角的长度
inner_corner_width dimension 6dp 扫描框四角的宽度
inner_scan_bitmap reference R.drawable.xqrcode_ic_scan_light 扫描控件图资源
inner_scan_bitmap_tint color / 扫描控件图资源的色调
inner_scan_speed dimension 5dp 扫描速度
inner_scan_animation_interval integer 25 扫描动画绘制的间期,单位是ms
inner_scan_isCircle boolean true 小圆点是否展示
  1. 调用XQRCode.getCaptureFragment的方法,传入自定义扫描界面的布局ID,可以获得带扫描功能的Fragment-CaptureFragment,将其填充到页面中。
// 为二维码扫描界面设置定制化界面
CaptureFragment captureFragment = XQRCode.getCaptureFragment(R.layout.layout_custom_camera);
captureFragment.setAnalyzeCallback(analyzeCallback);
getChildFragmentManager().beginTransaction().replace(R.id.fl_my_container, captureFragment).commit();
  1. 最后为CaptureFragment设置二维码解析回调接口AnalyzeCallback即可。

设置相机聚焦的间隔

//设置相机的自动聚焦间隔
XQRCode.setAutoFocusInterval(1500L);

2.3、二维码生成

1.简单的二维码生成

调用XQRCode.createQRCodeWithLogo,传入二维码携带的内容、尺寸、图标即可生成二维码Bitmap。

2.复杂的二维码生成

调用XQRCode.newQRCodeBuilder可以获得二维码生成构建者。可设置的参数如下:

  • setContents: 设置二维码携带的内容
  • setSize: 设置二维码的尺寸
  • setMargin: 设置二维码的边缘宽度
  • setDataDotScale: 设置二维码的数据点缩放比例
  • setColorDark: 设置深色点(true-dots)色值
  • setColorLight: 设置浅色点(false-dots)色值
  • setBackgroundImage: 设置背景图案
  • setWhiteMargin: 设置是否是白色的边缘
  • setAutoColor: 设置是否自动从背景图案中选取色值
  • setBinarize: 设置是否(二值化)灰度化背景图案
  • setBinarizeThreshold: 设置二值化中值

最后调用build方法即可生成二维码。

2.4、二维码解析

1.只需要解析二维码携带的数据内容,可直接调用XQRCode.analyzeQRCode方法,传入二维码的绝对路径即可。

2.如果需要完整的二维码解析结果,可调用XQRCode.getAnalyzeQRCodeResult方法,传入二维码的绝对路径即可。

混淆配置

-dontwarn com.google.zxing.**
-keep class com.google.zxing.**{*;}

特别感谢

https://github.com/yipianfengye/android-zxingLibrary

如果觉得项目还不错,可以考虑打赏一波

你的打赏是我维护的动力,我将会列出所有打赏人员的清单在下方作为凭证,打赏前请留下打赏项目的备注!

pay.png

联系方式

gzh_weixin.jpg

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].