All Projects → devilsen → Czxing

devilsen / Czxing

C++ port of ZXing and ZBar for Android.

Projects that are alternatives of or similar to Czxing

Swiftscan
A barcode and qr code scanner( 二维码/条形码扫描、生成,仿微信、支付宝)
Stars: ✭ 293 (-65.69%)
Mutual labels:  qrcode-generator, qrcode-scanner, qrcode, barcode
Scannermapp
A QR-code and barcode acanner app built in Delphi using ZXing and TFrameStand
Stars: ✭ 65 (-92.39%)
Mutual labels:  qrcode-scanner, zxing, qrcode, barcode
Efqrcode
A better way to operate QR Code in Swift, support iOS, macOS, watchOS and tvOS.
Stars: ✭ 4,121 (+382.55%)
Mutual labels:  qrcode-generator, qrcode-scanner, qrcode, barcode
Zxinglite
🔥 ZXing的精简版,优化扫码和生成二维码/条形码,内置闪光灯等功能。扫描风格支持:微信的线条样式,支付宝的网格样式。几句代码轻松拥有扫码功能 ,ZXingLite让集成更简单。(扫码识别速度快如微信)
Stars: ✭ 2,117 (+147.89%)
Mutual labels:  qrcode-scanner, zxing, qrcode, barcode
barcode-server
Barcode Server for Barcode Client-Server android application
Stars: ✭ 40 (-95.32%)
Mutual labels:  qrcode, barcode, qrcode-scanner
Qzxing
Qt/QML wrapper library for the ZXing library. 1D/2D barcode image processing library
Stars: ✭ 401 (-53.04%)
Mutual labels:  zxing, qrcode, barcode
qrrs
CLI QR code generator and reader written in rust
Stars: ✭ 29 (-96.6%)
Mutual labels:  qrcode, qrcode-scanner, qrcode-generator
Lbxscan
A barcode and qr code scanner (二维码、扫码、扫一扫、ZXing、ZBar、iOS系统AVFoundation扫码封装,扫码界面效果封装)
Stars: ✭ 3,133 (+266.86%)
Mutual labels:  qrcode-generator, qrcode-scanner, zxing
barcode-detector
Spec compliant polyfill of the Barcode Detection API 🤳
Stars: ✭ 31 (-96.37%)
Mutual labels:  qrcode, barcode, qrcode-scanner
BarcodeReader
Simple multi-format barcode reader for Windows
Stars: ✭ 26 (-96.96%)
Mutual labels:  qrcode, barcode, qrcode-scanner
Zxingview
👍 Lowest cost integration and most convenient customization zxing on android
Stars: ✭ 23 (-97.31%)
Mutual labels:  zxing, qrcode, barcode
BGAQRCode-Android
QRCode 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式
Stars: ✭ 7,714 (+803.28%)
Mutual labels:  qrcode, qrcode-scanner, qrcode-generator
android-zbar-sdk
🔗 android-zbar-sdk, provide jni source, so file and jar file used alone, gradle/maven remote dependencies.
Stars: ✭ 311 (-63.58%)
Mutual labels:  qrcode, barcode, qrcode-scanner
flutter qr code scanner generator sharing
Flutter App For Scanning, Generating, Sharing QR Code
Stars: ✭ 137 (-83.96%)
Mutual labels:  qrcode, qrcode-scanner, qrcode-generator
barcode scan2
[reborned barcode_scan] A flutter plugin for reading 2D barcodes and QR codes.
Stars: ✭ 43 (-94.96%)
Mutual labels:  qrcode, barcode, qrcode-scanner
ZxingSupport
A Library based on Zxing, make you easy to develop 1D/2D barcode-scan App.
Stars: ✭ 15 (-98.24%)
Mutual labels:  qrcode, barcode, zxing
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 (-91.8%)
Mutual labels:  qrcode, qrcode-scanner, qrcode-generator
qrcode
A flutter plugin for scanning QR codes. Use AVCaptureSession in iOS and zxing in Android.
Stars: ✭ 69 (-91.92%)
Mutual labels:  qrcode, zxing, qrcode-scanner
Qrcode
A pure JavaScript QRCode encode and decode library.
Stars: ✭ 69 (-91.92%)
Mutual labels:  qrcode-generator, qrcode-scanner, qrcode
Barcode
barcode.php - Generate barcodes from a single PHP file. MIT license.
Stars: ✭ 141 (-83.49%)
Mutual labels:  qrcode-generator, qrcode, barcode

GitHub release Bintray

CZXing

C++ port of ZXing for Android

底层使用C++来处理图像及解析二维码,并且加入了OpenCV来解析图像,可以在更远的距离识别出更加复杂的二维码。

App展示

使用

在gradle中:

// 改为小写了,这样显得更整齐一些
implementation 'me.devilsen:czxing:1.0.17'

建议加入abiFilters

defaultConfig {
    
    // 其他设置...

    ndk {
        // 设置支持的so库架构,设置一个可以减小包的大小
        abiFilters "armeabi-v7a","arm64-v8a"
    }
}

如果下载失败,可以在根目录加入阿里云的镜像

maven { url 'https://maven.aliyun.com/repository/jcenter' }

1. 直接使用

你可以直接使用已经封装好的ScanActivity作为扫码界面

Resources resources = getResources();
List<Integer> scanColors = Arrays.asList(resources.getColor(R.color.scan_side), resources.getColor(R.color.scan_partial), resources.getColor(R.color.scan_middle));

Scanner.with(this)
        .setMaskColor(resources.getColor(R.color.mask_color))   // 设置设置扫码框四周颜色
        .setBorderColor(resources.getColor(R.color.box_line))   // 扫码框边框颜色
        .setBorderSize(BarCodeUtil.dp2px(this, 200))            // 设置扫码框大小
//        .setBorderSize(BarCodeUtil.dp2px(this, 200), BarCodeUtil.dp2px(this, 100))     // 设置扫码框长宽(如果同时调用了两个setBorderSize方法优先使用上一个)
        .setCornerColor(resources.getColor(R.color.corner))     // 扫码框角颜色
        .setScanLineColors(scanColors)                          // 扫描线颜色(这是一个渐变颜色)
//        .setHorizontalScanLine()                              // 设置扫码线为水平方向(从左到右)
        .setScanMode(ScanView.SCAN_MODE_TINY)                   // 扫描区域 0:混合 1:只扫描框内 2:只扫描整个屏幕
//        .setBarcodeFormat(BarcodeFormat.EAN_13)                 // 设置扫码格式
        .setTitle("My Scan View")                               // 扫码界面标题
        .showAlbum(true)                                        // 显示相册(默认为true)
        .setScanNoticeText("扫描二维码")                         // 设置扫码文字提示
        .setFlashLightOnText("打开闪光灯")                       // 打开闪光灯提示
        .setFlashLightOffText("关闭闪光灯")                      // 关闭闪光灯提示
        .setFlashLightOnDrawable(R.drawable.ic_highlight_blue_open_24dp)       // 闪光灯打开时的样式
        .setFlashLightOffDrawable(R.drawable.ic_highlight_white_close_24dp)    // 闪光灯关闭时的样式
        .setFlashLightInvisible()                               // 不使用闪光灯图标及提示
        .continuousScan()                                       // 连续扫码,不关闭扫码界面
        .enableOpenCVDetect(false)                              // 关闭OpenCV探测,避免没有发现二维码也放大的现象,但是这样可能降低扫码的成功率,请结合业务关闭(默认开启)
        .setOnClickAlbumDelegate(new ScanActivityDelegate.OnClickAlbumDelegate() {
            @Override
            public void onClickAlbum(Activity activity) {       // 点击右上角的相册按钮
                Intent albumIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                activity.startActivityForResult(albumIntent, CODE_SELECT_IMAGE);
            }

            @Override
            public void onSelectData(int requestCode, Intent data) { // 选择图片返回的数据
                if (requestCode == CODE_SELECT_IMAGE) {
                    selectPic(data);
                }
            }
        })
        .setOnScanResultDelegate(new ScanActivityDelegate.OnScanDelegate() { // 接管扫码成功的数据
            @Override
            public void onScanResult(Activity activity, String result, BarcodeFormat format) {
                Intent intent = new Intent(MainActivity.this, DelegateActivity.class);
                intent.putExtra("result", result);
                startActivity(intent);
            }
        })
        .start();

混淆配置

-keep class me.devilsen.czxing.**
-keep class me.devilsen.czxing.** { *; }

2. 自定义界面

自定义界面展示

或者使用ScanView来自定义你的界面

<me.devilsen.czxing.view.ScanView
    android:id="@+id/surface_view_scan"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

在自定义的Activity中你需要接管ScanView的生命周期,具体可以参看ScanActivity界面,同时设定setScanListener()

mScanView.setScanListener(new ScanListener() {
    @Override
    public void onScanSuccess(String result, BarcodeFormat format) {
        // 扫码成功
    }

    @Override
    public void onOpenCameraError() {
        // 打开相机出错
    }
});

更多API请参考CustomizeActivity

3. 生成二维码

生成二维码

调用以下代码,可生成二维码的bitmap,Color为可选参数,默认为黑色。

简易调用

BarcodeWriter writer = new BarcodeWriter();
Bitmap bitmap = writer.write("Hello World", BarCodeUtil.dp2px(this, 200), BarCodeUtil.dp2px(this, 200), Color.RED);

完整调用

/**
* 生成图片
*
* @param text   要生成的文本
* @param width  图片宽
* @param height 图片高
* @param color  要生成的二维码颜色
* @param format 要生成的条码格式
* @param logo   放在中间的logo
* @return 条码bitmap
*/
private Bitmap write(String text, int width, int height, int color, BarcodeFormat format, Bitmap logo)

4. 识别图片中的二维码

// 适当压缩图片
Bitmap bitmap = BitmapUtil.getDecodeAbleBitmap(picturePath);
// 这个方法因为要做bitmap的变换,所以比较耗时,推荐放到子线程执行
CodeResult result = BarcodeReader.getInstance().read(bitmap);
if (result == null) {
  Log.d("Scan >>> ", "no code");
  return;
} else {
  Log.d("Scan >>> ", result.getText());
}

5. 测试Case

效果展示

远距离扫码演示

apk下载

设计思路

License

Copyright 2019 Devilsen

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