Code Monkey home page Code Monkey logo

nbzxing's Introduction

推荐优先使用华为统一扫码(比微信都猛😲),这个库后期不会进行重大改动升级, 但是出问题我还是会及时处理的

NBZxing

一个稳定完善的扫码库,几行代码既可接入,完美适配各种分辨率无拉伸,可插拔式自定义UI 。

亮点

  • 基于google-cameraView调整优化,大量机型测试,可稳定流畅启动关闭相机
  • Camera2-Camera1分别实现扫码, 高版本默认走Camera2, 低版本Camera1, Camera2启动失败走Camera1
  • 灰度算法处理, 可应付一些特殊场景二维码并可拓展
  • 自定义探测器支持非白边等异形二维码识别
  • zxing源码修改,彻底解决复杂二维码扫出一堆不相干数字问题
  • 可能是目前最完善的扫码横竖屏切换,可配置不同布局,可动态切换

依赖

API

	        implementation 'com.github.ailiwean:NBZxing:tag'
		//若需要使用灰度算法增强库,再次添加以下依赖(纯java超轻量,两个同时依赖,包体积只增大约400kb,混淆后仅200k)
		implementation 'com.github.ailiwean:NBZxing-Scale:tag'

NBZxing-Scale

说明

  • 仅AndroidX 不提供support,有需要自己改也没多少。
  • 库中已经包含zxing源码无需再次依赖

WIKI

如何使用-超简易

感谢@guangming提供近百台机型应用测试🙏

下载体验

在这里插入图片描述

  • 手动改文件后缀改为apk
😊 <自从写了这个库后,感觉身体与时间被掏空!!真的是花费了太多精力。如果觉得还凑合不错,强烈请求来上一个star ,开源不易,多多鼓励,感谢!> 😊

测试二维码

标准反色 82984899-9f981600-a025-11ea-9fe6-ad9fead67afa.png
彩色 caise.png
暗色 over_dart.png
曝光 over_light.png
浅色 test_gray.png
间断 test_inter.png
黑边 test2.png

联系我

QQ群: 444236054欢迎进群交流

😊 😊
请喝咖啡 pay.png

nbzxing's People

Contributors

ailiwean avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nbzxing's Issues

Android8.0 使用USB摄像头无法打开预览界面

我使用android8.0 的机器,接入一个USB摄像头,打不开扫码的预览界面。
然后在Camera2.java文件中的private boolean chooseCameraIdByFacing() 中屏蔽:
level == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY
这个判断,接着去掉下面的 (internal == internalFacing) 判断,可以正常打开

但是这样处理后,扫码容易出现扫码不出来

扫码崩溃

java.lang.IllegalStateException
at android.media.MediaPlayer.prepareAsync(Native Method)
at com.wishzixing.lib.util.RxBeepUtils.playBeep(RxBeepUtils.java:30)
at com.wishzixing.lib.able.DecodePixAble.cusAction(DecodePixAble.java:40)
at com.wishzixing.lib.manager.PixsValuesCusManager$1.run(PixsValuesCusManager.java:56)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)

oppo findx 崩溃

08-26 14:50:35.438 26583 26710 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.SortedSet.last()' on a null object reference
08-26 14:50:35.438 26583 26710 E AndroidRuntime: at com.google.android.cameraview.Camera2.prepareImageReader(Camera2.java:497)
08-26 14:50:35.438 26583 26710 E AndroidRuntime: at com.google.android.cameraview.Camera2.start(Camera2.java:219)
08-26 14:50:35.438 26583 26710 E AndroidRuntime: at com.google.android.cameraview.CameraView.start(CameraView.java:325)
08-26 14:50:35.438 26583 26710 E AndroidRuntime: at com.google.android.cameraview.BaseCameraView$openCamera$1.run(BaseCameraView.kt:193)
08-26 14:50:35.438 26583 26710 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:790)
08-26 14:50:35.438 26583 26710 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
08-26 14:50:35.438 26583 26710 E AndroidRuntime: at android.os.Looper.loop(Looper.java:200)

华为手机集成黑屏

我集成项目后,使用华为手机测试,黑屏,但是小米手机就可以,这是什么原因呢
进入能显示扫描框,但是摄像头好像没有打开,

使用freeZxingView识别图片失败的时候会崩溃

当使用FreeZxingView识别图片的时候,识别结果会回调到 onParseResult(Result)中。
但是在result不为空,但是result.text为空的时候,就会崩溃,因为
resultBackFile(content: String) {}
这个方法参数没有声明为 String?。

修复办法:需要修改方法声明为String?
protected open fun resultBackFile(content: String?) {}
或者
resultBackFile(result.text ?: "")

建议

经过我最近用遍github排名的库来说,这个库是最快最好的,对于我们这种印刷的书本里面的很深的二维码来说,扫描也是很快的。其他库,要么不能扫,要么很慢。建议出个java版本,更新下Api,完善下界面。可以去公众号推广下。对于扫码要求比较高的开发来说很不错。

闪光灯报错

在扫码完成的的瞬间开启关闭闪光灯,报错找不到相机

Process: com.xkb.education, PID: 31309
java.lang.IllegalStateException: Session has been closed; further changes are illegal.
at android.hardware.camera2.impl.CameraCaptureSessionImpl.checkNotClosed(CameraCaptureSessionImpl.java:672)
at android.hardware.camera2.impl.CameraCaptureSessionImpl.setRepeatingRequest(CameraCaptureSessionImpl.java:235)
at com.google.android.cameraview.Camera2.setFlash(Camera2.java:327)
at com.google.android.cameraview.Camera2.lightOperator(Camera2.java:380)
at com.google.android.cameraview.BaseCameraView.lightOperator(BaseCameraView.kt:226)
at com.xkb.education.ui.mine.scanner.MineScannerActivity4.onViewClicked(MineScannerActivity4.java:370)
at

使用相册扫码成功后,不能在resultBackFile中重新启用相机

使用parseFile识别图片,当识别不出时会重新启用相机,但是识别成功后默认就会关闭相机,无法在resultBackFile中控制重新启用相机。
FreeZxingView中
private fun onParseResult(result: com.ailiwean.core.zxing.core.Result?) {

    if (result != null && !result.text.isNullOrEmpty()) {
        mainHand.post {
            resultBackFile(result)
            scanSucHelper()
        }
    } else {
        mainHand.post {
            resultBackFile(null)
            unProscibeCamera()
        }
    }
}

这块调整为
scanSucHelper();
resultBackFile(result);
是否更好?

androidx 打开崩溃

java.lang.RuntimeException: Unable to start activity ComponentInfo{org.developer.fcmtest/org.developer.fcmtest.view.ScanActivity}: android.view.InflateException: Binary XML file line #6: Binary XML file line #6: Error inflating class org.developer.fcmtest.widget.CusZxingView
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3430)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3614)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:86)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2199)
        at android.os.Handler.dispatchMessage(Handler.java:112)
        at android.os.Looper.loop(Looper.java:216)
        at android.app.ActivityThread.main(ActivityThread.java:7625)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
     Caused by: android.view.InflateException: Binary XML file line #6: Binary XML file line #6: Error inflating class org.developer.fcmtest.widget.CusZxingView
     Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class org.developer.fcmtest.widget.CusZxingView
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at android.view.LayoutInflater.createView(LayoutInflater.java:658)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:801)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:874)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:835)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
        at org.developer.fcmtest.view.ScanActivity.onCreate(ScanActivity.kt:18)
        at android.app.Activity.performCreate(Activity.java:7458)
        at android.app.Activity.performCreate(Activity.java:7448)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1286)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3409)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3614)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:86)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2199)
        at android.os.Handler.dispatchMessage(Handler.java:112)
        at android.os.Looper.loop(Looper.java:216)
        at android.app.ActivityThread.main(ActivityThread.java:7625)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
     Caused by: java.lang.BootstrapMethodError: Exception from call site #3 bootstrap method
        at com.google.android.cameraview.CameraView.setAspectRatio(CameraView.java:418)
        at com.google.android.cameraview.CameraView.<init>(CameraView.java:142)
        at com.google.android.cameraview.BaseCameraView.<init>(BaseCameraView.kt:30)
        at com.ailiwean.core.view.ZxingCameraView.<init>(ZxingCameraView.kt:34)
2020-07-17 21:49:35.939 11097-11097/org.developer.fcmtest E/AndroidRuntime:     at org.developer.fcmtest.widget.CusZxingView.<init>(CusZxingView.kt:17)
        at org.developer.fcmtest.widget.CusZxingView.<init>(CusZxingView.kt:17)
        at org.developer.fcmtest.widget.CusZxingView.<init>(Unknown Source:6)
        	... 28 more
     Caused by: java.lang.ClassCastException: Bootstrap method returned null
        	... 35 more

内存抖动这么严重

内存抖动严重,使用过程中发热明显。虽说这是什么kotlin版本,但看源码,也就其中小部分几个类用了kotlin,百分之九十以上是java

双击放大

双击放大的时候放到最大了,建议逐级递增放大

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.