ZXingLite icon indicating copy to clipboard operation
ZXingLite copied to clipboard

Jenly: 意见收集😘,欢迎进群:20867961咨询与交流😘😘😘

Open jenly1314 opened this issue 5 years ago • 31 comments

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

如果您对ZXingLite有什么好的建议,可以在下面留言和讨论。

jenly1314 avatar Nov 28 '19 08:11 jenly1314

希望增加设置前置摄像头的方法。谢谢大佬

JIalin-zhang avatar Feb 29 '20 07:02 JIalin-zhang

希望增加设置前置摄像头的方法。谢谢大佬

这种需求比较少见,目前应该也支持。 你只要获取到Camera,然后通过Camera去切换前置摄像头 理论上是可行的。 获取途经:CaptureHelper -> CameraManager -> OpenCamera -> Camera

jenly1314 avatar Mar 02 '20 06:03 jenly1314

希望可以增加默认打开闪光灯的配置。我这边有暗环境频繁需要扫码的需求,需要每次进入扫码界面,点击开启闪光灯,挺麻烦的。

jieeraoyun avatar Mar 05 '20 00:03 jieeraoyun

希望可以增加默认打开闪光灯的配置。我这边有暗环境频繁需要扫码的需求,需要每次进入扫码界面,点击开启闪光灯,挺麻烦的。

ZXingLiteCaptureHelpler类中本身已对外直接或间接的提供了闪光灯和光线照度值相关的方法,并配置了一系列默认值,主要是为了简化集成步骤;当默认配置不满足你的需求时,你可以根据自已的需求去改变默认配置来满足场景需求。

jenly1314 avatar Mar 05 '20 08:03 jenly1314

大佬,请问下什么时候推出camera2版本的?

yinanwang1 avatar Apr 21 '20 03:04 yinanwang1

能否添加logger的关闭功能?还有打开默认的captureactivity是不是太多设置了,有没有简化点的设置?有差不多一秒的等待时间,测试机器是pixel3,配置如下

captureHelper.playBeep(false) //播放音效
            .vibrate(true) //震动
            .decodeFormats(DecodeFormatManager.QR_CODE_FORMATS)//设置只识别二维码会提升速度
            .frontLightMode(FrontLightMode.OFF) //设置闪光灯模式
            .continuousScan(false)

yudanhezhongweijie avatar May 10 '20 21:05 yudanhezhongweijie

能否添加logger的关闭功能?还有打开默认的captureactivity是不是太多设置了,有没有简化点的设置?有差不多一秒的等待时间,测试机器是pixel3,配置如下

captureHelper.playBeep(false) //播放音效
            .vibrate(true) //震动
            .decodeFormats(DecodeFormatManager.QR_CODE_FORMATS)//设置只识别二维码会提升速度
            .frontLightMode(FrontLightMode.OFF) //设置闪光灯模式
            .continuousScan(false)
  • LogUtils 中有全局控制日志输出功能:
//设置日志显示优先级别
LogUtils.setPriority(priority);
//设置是否显示日志
LogUtils.setShowLog(isShowLog);
  • CaptureHelper里面有很多默认配置,配置多少取决于你具体需求

jenly1314 avatar May 11 '20 12:05 jenly1314

希望可以有让闪光灯按钮一直显示的api,支付宝挡住摄像头灯按钮就出现了,demo手机平放桌面完全遮挡摄像头闪光灯控件也没出现。尝试设置tooDarkLux为99f,也不能显示闪光灯。挡光线感应器?各个机型不一,我测试机小米顶部,底部可能有光线感应地方挡住无效

MhuiHugh avatar May 21 '20 10:05 MhuiHugh

希望可以有让闪光灯按钮一直显示的api,支付宝挡住摄像头灯按钮就出现了,demo手机平放桌面完全遮挡摄像头闪光灯控件也没出现。尝试设置tooDarkLux为99f,也不能显示闪光灯。挡光线感应器?各个机型不一,我测试机小米顶部,底部可能有光线感应地方挡住无效

目前内置的是光线感应器动态控制的,感应器一般在手机的正面,有个小圆孔那个。要实现闪光灯也不难,内置调用CameraConfigurationUtils.setTorch(Camera.Parameters parameters, boolean on)即可。后续版本可以考虑添加简单一点的参数直接控制是否一直显示手电筒。

jenly1314 avatar May 21 '20 15:05 jenly1314

希望可以有让闪光灯按钮一直显示的api,支付宝挡住摄像头灯按钮就出现了,demo手机平放桌面完全遮挡摄像头闪光灯控件也没出现。尝试设置tooDarkLux为99f,也不能显示闪光灯。挡光线感应器?各个机型不一,我测试机小米顶部,底部可能有光线感应地方挡住无效

目前内置的是光线感应器动态控制的,感应器一般在手机的正面,有个小圆孔那个。要实现闪光灯也不难,内置调用CameraConfigurationUtils.setTorch(Camera.Parameters parameters, boolean on)即可。后续版本可以考虑添加简单一点的参数直接控制是否一直显示手电筒。

感谢回复,无法打开闪光灯CameraConfigurationUtils.findSettableValue(L:365): Can set flash mode to: torch

Camera.Parameters mParameters= getCaptureHelper().getCameraManager().getOpenCamera().getCamera().getParameters(); if(mTorchLight){ CameraConfigurationUtils.setTorch(mParameters,false); mTorchLight=false; }else{ CameraConfigurationUtils.setTorch(mParameters,true); mTorchLight=true; }

MhuiHugh avatar May 22 '20 01:05 MhuiHugh

必须进入扫码页前授权吗?进入页面后获取到授权预览扫码无法继续

MhuiHugh avatar May 22 '20 03:05 MhuiHugh

target sdk 30 图片识别二维码有问题,识别返回值为空

KupoGu avatar Aug 10 '20 09:08 KupoGu

作者你好,在使用 2.0.2 版本的过程中,发现连扫功能和获取扫描结果回调耦合了,建议将连扫功能单独设置配置项,使用起来会更方便一些。

ZakAnun avatar Mar 01 '21 09:03 ZakAnun

作者你好,在使用 2.0.2 版本的过程中,发现连扫功能和获取扫描结果回调耦合了,建议将连扫功能单独设置配置项,使用起来会更方便一些。

首先谢谢你的建议,我去看了下整体实现思路,现在确实是有关联的,但并没有耦合,因为要连扫就必须要拦截扫码回调,主要是想简化步骤,只是思路发生的变化,v2.x 相对于之前版本 v1.x 去除了单独设置连扫的设置,改用cameraScan.setAnalyzeImage() 方法来控制是否分析图像,是否扫码分析是通过内部的 isAnalyzeisAnalyzeResult 来判定的。也就是通常理解的连扫。DefaultCameraScan第300行那段注释说明,没有描述完整,只说了一半,加上拦截回调结果,则重置分析结果状态,并且 isAnalyze 默认为true,(满足分析图像判定)自动认为是连扫,会有耦合的错觉,这和通常理解的连扫流程不一样,可能容易让人产生误解,后续我改下注释。

现在的逻辑是: 如果拦截了结果,则重置分析结果状态,并当isAnalyze为true时,默认会继续分析图像(也就是连扫)。如果只是想拦截扫码结果回调,并不想继续分析图像(不想连扫),请在拦截扫码逻辑处通过调用 cameraScan.setAnalyzeImage(false) 将不再分析图像。

jenly1314 avatar Mar 02 '21 02:03 jenly1314

作者你好,在使用 2.0.2 版本的过程中,发现连扫功能和获取扫描结果回调耦合了,建议将连扫功能单独设置配置项,使用起来会更方便一些。

首先谢谢你的建议,我去看了下整体实现思路,现在确实是有关联的,但并没有耦合,因为要连扫就必须要拦截扫码回调,主要是想简化步骤,只是思路发生的变化,v2.x 相对于之前版本 v1.x 去除了单独设置连扫的设置,改用cameraScan.setAnalyzeImage() 方法来控制是否分析图像,是否扫码分析是通过内部的 isAnalyzeisAnalyzeResult 来判定的。也就是通常理解的连扫。DefaultCameraScan第300行那段注释说明,没有描述完整,只说了一半,加上拦截回调结果,则重置分析结果状态,并且 isAnalyze 默认为true,(满足分析图像判定)自动认为是连扫,会有耦合的错觉,这和通常理解的连扫流程不一样,可能容易让人产生误解,后续我改下注释。

现在的逻辑是: 如果拦截了结果,则重置分析结果状态,并当isAnalyze为true时,默认会继续分析图像(也就是连扫)。如果只是想拦截扫码结果回调,并不想继续分析图像(不想连扫),请在拦截扫码逻辑处通过调用 cameraScan.setAnalyzeImage(false) 将不再分析图像。

感谢回复,目前通过业务字段限制不执行解析逻辑,并且根据解析结果作为 callback 的回调可以解决业务需求~

ZakAnun avatar Mar 02 '21 07:03 ZakAnun

群满了怎么办

wkw052 avatar Aug 06 '21 07:08 wkw052

黑色底的二维码还是扫不出来

DevYJQ avatar Nov 23 '21 09:11 DevYJQ

大佬您好,我在整理项目使用二维码方面的库时,发现该库的功能和扩展性都挺全面的,但是我在接入使用时还是发现有一些问题需要优化,首先文档有些地方需要优化一下: image

这里整个使用方式我觉得应该放在引入的下面,版本说明应该放在最后,然后针对每种使用方式需要分开说明一下,就比如第三点,只能查看代码发现 CameraScan 这个抽象类有个默认实现类 DefaultCameraScan, 既然这样三四是不是应该属于同一种方式?

而且第一种方式集成使用时首先需要声明 com.king.zxing.CaptureActivity ,但是这个可以在代码层面优化的,作为依赖的 module,module 内部可以声明,这样使用方就无需再次声明,其次使用时默认缺少 androidx.camera.view.PreviewView 这个依赖库,我认为使用方有时不知道缺少库的相关地址,这个应该在打包发布时默认提供依赖比较好,目前还没有深入使用,仅在接入时发现的问题,希望大佬可以考虑优化一下

Heart-Beats avatar Mar 31 '22 03:03 Heart-Beats

大佬您好,我在整理项目使用二维码方面的库时,发现该库的功能和扩展性都挺全面的,但是我在接入使用时还是发现有一些问题需要优化,首先文档有些地方需要优化一下: image

这里整个使用方式我觉得应该放在引入的下面,版本说明应该放在最后,然后针对每种使用方式需要分开说明一下,就比如第三点,只能查看代码发现 CameraScan 这个抽象类有个默认实现类 DefaultCameraScan, 既然这样三四是不是应该属于同一种方式?

而且第一种方式集成使用时首先需要声明 com.king.zxing.CaptureActivity ,但是这个可以在代码层面优化的,作为依赖的 module,module 内部可以声明,这样使用方就无需再次声明,其次使用时默认缺少 androidx.camera.view.PreviewView 这个依赖库,我认为使用方有时不知道缺少库的相关地址,这个应该在打包发布时默认提供依赖比较好,目前还没有深入使用,仅在接入时发现的问题,希望大佬可以考虑优化一下

首先感谢你的建议反馈;下面根据你提到的几个点一一答复下:

截图中提到的关于 快速实现扫码的几种方式 的说明 和 页面排版顺序问题;

大部分开发者集成 ZXingLite 时一般都是使用第 2 或者第3 种方式,所以在看到 README 中的代码示例后基本就能实现功能了;少部分开发者需要实现的需求可能比较特殊一点,需要更详细的了解 ZXingLite 后才能实现自己的需求,所以可能会往下多看一点;之所以这么排序;关于扫码的几种实现方式,代码示例只列出了主要的示例,这里可能需要抽动补充下。如果要看使用更多示例,目前可以去app示例中去看,几种集成方式里面基本都是有的。在README 下面也有个更多详情,请查看app中的源码使用示例可快速跳转。

截图中提到的关于 快速实现扫码的几种方式 中的 第3种和第4种的区别;

第4种方式一般不会是不会用到的;一般只有第3种方式都无法实现你的需求时,并且需要对 ZXingLite 的源码处理熟悉的情况下才会用到。第4种方式相当于将扫码核心处理逻辑进行重构。

反馈建议库内部申明 com.king.zxing.CaptureActivity 问题;

这个之所以希望开发者自己手动声明的主要原因是因为直接使用 CaptureActivity 使用的 theme 和屏幕方向希望由集成者自己决定,我这边只是给到了一个默认的建议;如果内置申明了,反而限制了集成时去自定义相关配置。

反馈说默认缺少androidx.camera.view.PreviewView 问题;

ZXingLite 内部已默认依赖了 CameraX 相关库,不会缺少 CameraX 相关依赖;如果出现缺少依赖相关提示,可能有两种原因,第一种原因可能是网络问题,没有成功拉取相关的依赖库;第二种原因可能是你的项目依赖了其他第三方库也依赖了 CameraX 相关库,与 ZXingLite 依赖的 CameraX 的版本不一致导致(原因是: CameraX 相关库不同版本之间并不一定都兼容)关闭的 issues 中之前有人提过的,你可以搜下。

总结成一句话就是:简化集成步骤和可扩展性之间的权衡。

jenly1314 avatar Mar 31 '22 11:03 jenly1314

大佬您好,我在整理项目使用二维码方面的库时,发现该库的功能和扩展性都挺全面的,但是我在接入使用时还是发现有一些问题需要优化,首先文档有些地方需要优化一下: image 这里整个使用方式我觉得应该放在引入的下面,版本说明应该放在最后,然后针对每种使用方式需要分开说明一下,就比如第三点,只能查看代码发现 CameraScan 这个抽象类有个默认实现类 DefaultCameraScan, 既然这样三四是不是应该属于同一种方式? 而且第一种方式集成使用时首先需要声明 com.king.zxing.CaptureActivity ,但是这个可以在代码层面优化的,作为依赖的 module,module 内部可以声明,这样使用方就无需再次声明,其次使用时默认缺少 androidx.camera.view.PreviewView 这个依赖库,我认为使用方有时不知道缺少库的相关地址,这个应该在打包发布时默认提供依赖比较好,目前还没有深入使用,仅在接入时发现的问题,希望大佬可以考虑优化一下

首先感谢你的建议反馈;下面根据你提到的几个点一一答复下:

截图中提到的关于 快速实现扫码的几种方式 的说明 和 页面排版顺序问题;

大部分开发者集成 ZXingLite 时一般都是使用第 2 或者第3 种方式,所以在看到 README 中的代码示例后基本就能实现功能了;少部分开发者需要实现的需求可能比较特殊一点,需要更详细的了解 ZXingLite 后才能实现自己的需求,所以可能会往下多看一点;之所以这么排序;关于扫码的几种实现方式,代码示例只列出了主要的示例,这里可能需要抽动补充下。如果要看使用更多示例,目前可以去app示例中去看,几种集成方式里面基本都是有的。在README 下面也有个更多详情,请查看app中的源码使用示例可快速跳转。

截图中提到的关于 快速实现扫码的几种方式 中的 第3种和第4种的区别;

第4种方式一般不会是不会用到的;一般只有第3种方式都无法实现你的需求时,并且需要对 ZXingLite 的源码处理熟悉的情况下才会用到。第4种方式相当于将扫码核心处理逻辑进行重构。

反馈建议库内部申明 com.king.zxing.CaptureActivity 问题;

这个之所以希望开发者自己手动声明的主要原因是因为直接使用 CaptureActivity 使用的 theme 和屏幕方向希望由集成者自己决定,我这边只是给到了一个默认的建议;如果内置申明了,反而限制了集成时去自定义相关配置。

反馈说默认缺少androidx.camera.view.PreviewView 问题;

ZXingLite 内部已默认依赖了 CameraX 相关库,不会缺少 CameraX 相关依赖;如果出现缺少依赖相关提示,可能有两种原因,第一种原因可能是网络问题,没有成功拉取相关的依赖库;第二种原因可能是你的项目依赖了其他第三方库也依赖了 CameraX 相关库,与 ZXingLite 依赖的 CameraX 的版本不一致导致(原因是: CameraX 相关库不同版本之间并不一定都兼容)关闭的 issues 中之前有人提过的,你可以搜下。

总结成一句话就是:简化集成步骤和可扩展性之间的权衡。

谢谢大佬的回复,认真查看了一下知道了页面排版的顺序问题,明白了主要使用说明是在版本说明里面,但对开发者来说,最需要的是最快最简洁明朗的接入使用说明,可循序渐进。

对于建议库内部申明 com.king.zxing.CaptureActivity 问题;我觉得使用该种方式的开发者一般都无需自定义主题等,如需定制页面以及特殊需求,更多的方式是使用第二、三种方式。

缺少androidx.camera.view.PreviewView 问题:我查看了代码是我这边的问题,因为该库与另一个扫码库依赖冲突,所以直接使用了 transitive(false) 导致了依赖丢失,这是我的使用问题很抱歉。

关于第三种方式既然作为主要的使用方式,可适当补充使用说明,因为我看 DefaultCameraScan 其实也是需要传入参数的,对于没接触过的可能并不知道怎么使用。

最后提一个建议:是否可考虑将四种方式合为一种使用方式,因为我看一二的区别主要是涉及在自定义布局上,三四种其实就是 CameraScan 的不同实现,还有关于 activity 回调处理结果的方式是否可以考虑使用 ActivityResultApi 方式进行优化,因为之前使用过 PictureSelector 这个库,感觉它的 API 使用方便简单同时可扩展性也非常之高,希望大佬可以考虑将扫码方面的 API 也往统一方面优化。

Heart-Beats avatar Apr 01 '22 04:04 Heart-Beats

有些机型(前摄像头内置)会弹出前摄像头,再自动缩回去,设置

class BackCaMerSelector:CameraConfig(){
        override fun options(builder: CameraSelector.Builder): CameraSelector {
            return CameraSelector.DEFAULT_BACK_CAMERA
        }
    }

.setCameraConfig(BackCaMerSelector())

无效,是什么原因

jianning0925 avatar Apr 22 '22 05:04 jianning0925

oppo A32 android10 用户反馈扫二维码没反应,其他手机可以,其他程序也可以

yangzyqq avatar May 14 '22 05:05 yangzyqq

群满员了

Catherinelhl avatar Jul 07 '22 08:07 Catherinelhl

扫码识别太低了,很难识别出来,不知道是否有这个反馈

Catherinelhl avatar Jul 07 '22 08:07 Catherinelhl

同一个二维码 微信秒开,用这个很难识别到

Catherinelhl avatar Jul 07 '22 08:07 Catherinelhl

DefaultCameraScan这个类能不能加个set方法啊?用来传CameraSelector.Builder的,只需要加这个set方法就好,然后再startCamera()里的相机选择器mCameraConfig.options(new CameraSelector.Builder());这行代码,稍微改一下,有传入CameraSelector.Builder的则使用,没有则new CameraSelector.Builder()。 因为我们有个项目,是设备类的,要做切换摄像头,我本来想继承DefaultCameraScan这个类,想加这个相机选择器控制功能,但是你把很多属性和方法都做成了private,没得修改,我只能自己定义一个class,复制DefaultCameraScan这个类里的所有代码,再加set传CameraSelector.Builder的方法,为了一个功能,这样子代价太大了。

QiuShanwen avatar Jul 14 '23 01:07 QiuShanwen

DefaultCameraScan这个类能不能加个set方法啊?用来传CameraSelector.Builder的,只需要加这个set方法就好,然后再startCamera()里的相机选择器mCameraConfig.options(new CameraSelector.Builder());这行代码,稍微改一下,有传入CameraSelector.Builder的则使用,没有则new CameraSelector.Builder()。 因为我们有个项目,是设备类的,要做切换摄像头,我本来想继承DefaultCameraScan这个类,想加这个相机选择器控制功能,但是你把很多属性和方法都做成了private,没得修改,我只能自己定义一个class,复制DefaultCameraScan这个类里的所有代码,再加set传CameraSelector.Builder的方法,为了一个功能,这样子代价太大了。

你如果需要切换摄像头,只需在先调用cameraScan.setCameraConfig(cameraConfig) 之后再调用 cameraScan.startCamera() 即可切换摄像头。

jenly1314 avatar Jul 14 '23 01:07 jenly1314

DefaultCameraScan这个类能不能加个set方法啊?用来传CameraSelector.Builder的,只需要加这个set方法就好,然后再startCamera()里的相机选择器mCameraConfig.options(new CameraSelector.Builder());这行代码,稍微改一下,有传入CameraSelector.Builder的则使用,没有则new CameraSelector.Builder()。 因为我们有个项目,是设备类的,要做切换摄像头,我本来想继承DefaultCameraScan这个类,想加这个相机选择器控制功能,但是你把很多属性和方法都做成了private,没得修改,我只能自己定义一个class,复制DefaultCameraScan这个类里的所有代码,再加set传CameraSelector.Builder的方法,为了一个功能,这样子代价太大了。

你如果需要切换摄像头,只需在先调用cameraScan.setCameraConfig(cameraConfig) 之后再调用 cameraScan.startCamera() 即可切换摄像头。

我一开始就试过,不生效。DefaultCameraScan这个类,它在初始化配置的时候,在mCameraConfig.options(new CameraSelector.Builder());写死了,所以使用cameraScan.setCameraConfig(cameraConfig)是不生效的,得改一下这行代码,加个传相机配置的方法进去才行。

QiuShanwen avatar Jul 25 '23 03:07 QiuShanwen

DefaultCameraScan这个类能不能加个set方法啊?用来传CameraSelector.Builder的,只需要加这个set方法就好,然后再startCamera()里的相机选择器mCameraConfig.options(new CameraSelector.Builder());这行代码,稍微改一下,有传入CameraSelector.Builder的则使用,没有则new CameraSelector.Builder()。 因为我们有个项目,是设备类的,要做切换摄像头,我本来想继承DefaultCameraScan这个类,想加这个相机选择器控制功能,但是你把很多属性和方法都做成了private,没得修改,我只能自己定义一个class,复制DefaultCameraScan这个类里的所有代码,再加set传CameraSelector.Builder的方法,为了一个功能,这样子代价太大了。

你如果需要切换摄像头,只需在先调用cameraScan.setCameraConfig(cameraConfig) 之后再调用 cameraScan.startCamera() 即可切换摄像头。

我一开始就试过,不生效。DefaultCameraScan这个类,它在初始化配置的时候,在mCameraConfig.options(new CameraSelector.Builder());写死了,所以使用cameraScan.setCameraConfig(cameraConfig)是不生效的,得改一下这行代码,加个传相机配置的方法进去才行。

有没有一种可能是你使用的方式不对?请参见:#211

jenly1314 avatar Jul 25 '23 06:07 jenly1314

前置摄像头预览颠倒怎么修改

mikedream89 avatar Nov 10 '23 01:11 mikedream89