ZXingLite icon indicating copy to clipboard operation
ZXingLite copied to clipboard

Jenly: ⚠注意!提交新的 Issues 时, 请看这里🌷🌷🌷

Open jenly1314 opened this issue 5 years ago • 16 comments
trafficstars

温馨提示

README中描述ZXingLite的几种集成方式,在App中基本都有对应的集成源码示例。所以当出现问题时,最好先参考 源码示例 来确认集成步骤没有错漏。

1. 遇到问题,该怎么做?

请先分析下问题原因,确认这个 Issues 是否有解决方案。 自己可能分析不出具体原因或无法解决,需要获得帮助,请看下面一条。

2. 需要获得帮助,提交新的Issues

在提交 Issues时,提供的信息尽可能的详细,包括但不限于:手机型号、系统版本、问题描述、截图、等等。如果是异常信息,请最好提供相关的日志信息。这样我才方便查找和定位原因。

3. 有好的建议或希望支持新功能

ZXingLite 目前正在做 意见收集,您有什么好的建议和希望增加什么功能,都可以直接提Issue进行反馈。我会抽空,评估后,考虑在下一个版本去优化或实现目前没有的功能。

有什么问题也可以直接进群 QQGroup 咨询与交流,反馈更及时。

下面是一些在集成时可能会遇到的问题

1. 集成后,扫码界面黑屏问题

扫码界面黑屏的原因,一般是因为 Camera动态权限 问题或集成步骤不对导致。相关步骤请参考 源码示例

2. 扫码界面预览只显示一半,另一半黑屏的问题

先确认不是布局的问题;那么还有一种可能就是由于硬件加速配置导致的;可以在AndroidManifest文件的application中添加配置 android:hardwareAccelerated="true" 来启用硬件加速,便可解决此问题。(原因:PreviewView 默认使用 PERFORMANCE 模式,该模式优先采用 SurfaceView 进行渲染,但某些情况下会降级为 TextureView,而 TextureView 需要硬件加速支持。)

3. 扫码界面预览变形问题

扫码界面预览变形,一般是因为扫码界面的预览布局没有全屏铺满,导致界面预览宽高比例与Camera预览的宽高比例不一致导致。

4. 部分二维码/条形码扫码识别慢或无法识别问题

影响二维码/条形码识别的因素有很多,包括但不限于:硬件、软件、环境等因素。 a. 硬件:主要指:手机、平板等等。 b. 软件:扫码识别;这里主要指从扫码到识别的一个过程,中间包括编解码处理和算法等等。 c. 环境:扫码环境;主要包括:光线、亮度、二维码/条形码码的清晰度和规范性问题。 在这里主要讲到软件因素和环境因素,因为这二者是根据实际场景来的,是秘密相关,不可完全分开的。

5.为什么demo识别很快,自己集成却达不到这样的效果?

因为 CameraScanDecodeConfig 中有很多可配置参数;默认配置相对通用,但并不一定完全适合你的场景需求,你可根据自己的需要来修改相关配置以满足自己的需求。

6. 为什么同一个二维码通过扫码识别很快,通过相册选择图片却无法识别?

主要是存在上面提到的一些客观因素影响,包括但不限于:环境,角度,识别区域,图片大小等等。通过扫码识别时这些因素都是变量,在没识别成功前,会多次进行识别,并且只需识别成功一次即可;而从相册选择图片进行识别时,这些客观因素都相对固定;所以虽然是同一个二维码,但是识别的前提条件并不一样。

  • ZXingLite 的核心识别功能是基于 zxing, ZXingLite 的主要目的是:优化从扫码到识别这中间的过程。在简化集成步骤的同时,尽可能的保证识别率不是因为中间的过程而受到影响,为zxing提供最想要的识别数据,从而间接的提升识别速度与识别率。努力的去完善扫码相关功能;
  • ZXing对于常规的的二维码识别率还是比较高的,但是对于一些特殊不符合规范的二维码可能就会无法识别。如上面列出的一些客观原因。(zxing 本身的上限在那儿不会因此而改变。)
  • 如果你只是基本扫码的需求,ZXingLite完全能满足你。如果你对扫码有着比较严格或者更加苛刻的要求,比如:变形码,比例不规范的码,一张复杂的大图上有个很小的码等场景,ZXingLite可能并不能完全满足你的需求。你可以尝试使用 MLKit中的mlkit-barcode-scanningmlkit-barcode-scanning 的识别率相对来说会更高。

jenly1314 avatar Nov 28 '19 10:11 jenly1314

在扫码领域,微信扫码和支付宝扫码大家一听就知道。请看下面的一段对白场景:

产品:为什么微信扫码和支付宝扫码都秒能识别,你这有些不能识别? 开发:。。。

  • 微信扫码和支付扫码在二值化算法和针对变形都做了相对应的优化处理。
  • 如果你对扫码识别有更高的要求,zxing或许无法满足你的需求,你可以选择使用 MLKitWeChatQRCode

jenly1314 avatar Nov 29 '19 08:11 jenly1314

有不少二维码是黑底白字,目前都无法扫码成功,能否对黑底白字在扫描时,自动进行反色处理进行扫码?

qqiabc521 avatar Dec 16 '19 04:12 qqiabc521

目前生成的二维码不支持设置颜色

JefferyHoo avatar Dec 20 '19 02:12 JefferyHoo

建议,将CaptureActivity的super类改为AppcompatActivity,而不是Activity,可以实现向下兼容,以及lifeCycle。

iOrchid avatar Dec 23 '19 05:12 iOrchid

建议,将CaptureActivity的super类改为AppcompatActivity,而不是Activity,可以实现向下兼容,以及lifeCycle。

可以的,下个版本改成AppcompatActivity

jenly1314 avatar Dec 26 '19 01:12 jenly1314

建议提供设置激光扫描线宽度的属性, 目前只能设置激光线高度,宽度被固定成距离边框为高度的2倍,希望宽度能由开发者设置。

delaiwen-hgh avatar Feb 17 '20 03:02 delaiwen-hgh

在继承的Activity的onCreate里写getCaptureHelper().tooDarkLux(9999f);好像没有效果,我想让闪光灯按钮一直显示

Lightning627 avatar Mar 19 '20 06:03 Lightning627

建议考虑看看能否支持暴露图像处理的接口,增加识别前的自定义处理,比如变形、反相等~ 抽象流程:摄像头获取的图像数据--->抽象处理--->识别模块,将”抽象处理“的入参出参定义好,并且提供默认的处理操作,比如上面说的变形,反相等;

halohoop avatar Apr 13 '20 03:04 halohoop

建议考虑看看能否支持暴露图像处理的接口,增加识别前的自定义处理,比如变形、反相等~ 抽象流程:摄像头获取的图像数据--->抽象处理--->识别模块,将”抽象处理“的入参出参定义好,并且提供默认的处理操作,比如上面说的变形,反相等;

  • 目前的做法是:尽量对外暴露一些参数,去控制处理流程。在简化集成步骤的同时,保证一些可自定义性。 你这个建议很好,后续可以考虑再抽象一部分。
  • 后续有个将zxing库升级至v3.3.4的计划,并要求使用Android API 21 ,所以版本变动可能相对会大一点,虽然可能会不完全兼容ZXing Lite之前的用法,但要尽量的保证用法和之前的版本没有大的改变。

jenly1314 avatar Apr 14 '20 04:04 jenly1314

1、扫码框显示位置能不能开放给开发者自定义显示位置 2、ViewfinderView别搞成final的想真正自定义的view都搞不了等你们发版太慢了 3、如何以lib的方式集成到Android里面

DennisJu007 avatar Jul 28 '20 06:07 DennisJu007

ZXingLite 2.0 开发版已经开发了一部分,还未完成。因为最近比较忙,打断了开发发布计划,所以具体发布版本时间待定。不妨趁着这段时间,在没发布之前,你什么想法或问题都可以提交到 意见收集 中 ,我会抽空整理后,在后续的版本中支持或完善相关功能。

jenly1314 avatar Jul 29 '20 07:07 jenly1314

二维码有的手机有很大的白色边距,这个怎么设置

llllonger avatar Jun 28 '21 07:06 llllonger

设置摄像头预览画面旋转之后无反应 public class WatchGuideCameraConfig extends ResolutionCameraConfig { public WatchGuideCameraConfig(Context context, int imageQuality) { super(context, imageQuality); }

@NonNull
@Override
public Preview options(@NonNull Preview.Builder builder) {
    builder.setTargetRotation(Surface.ROTATION_270);
    return super.options(builder);
}

}

    mCameraScan = DefaultCameraScan(this, mBind.previewView)
    mCameraScan.setOnScanResultCallback(this)
        .setAnalyzer(MultiFormatAnalyzer(decodeConfig))
        .setVibrate(true)
        .setCameraConfig(
            WatchGuideCameraConfig(
                this,
                ResolutionCameraConfig.IMAGE_QUALITY_1080P
            )
        )
        .startCamera()

woodboard avatar Apr 26 '24 08:04 woodboard