ZXingLite
ZXingLite copied to clipboard
Jenly: 意见收集😘,欢迎进群:20867961咨询与交流😘😘😘
希望增加设置前置摄像头的方法。谢谢大佬
希望增加设置前置摄像头的方法。谢谢大佬
这种需求比较少见,目前应该也支持。 你只要获取到Camera,然后通过Camera去切换前置摄像头 理论上是可行的。 获取途经:CaptureHelper -> CameraManager -> OpenCamera -> Camera
希望可以增加默认打开闪光灯的配置。我这边有暗环境频繁需要扫码的需求,需要每次进入扫码界面,点击开启闪光灯,挺麻烦的。
希望可以增加默认打开闪光灯的配置。我这边有暗环境频繁需要扫码的需求,需要每次进入扫码界面,点击开启闪光灯,挺麻烦的。
ZXingLite的CaptureHelpler类中本身已对外直接或间接的提供了闪光灯和光线照度值相关的方法,并配置了一系列默认值,主要是为了简化集成步骤;当默认配置不满足你的需求时,你可以根据自已的需求去改变默认配置来满足场景需求。
大佬,请问下什么时候推出camera2版本的?
能否添加logger的关闭功能?还有打开默认的captureactivity是不是太多设置了,有没有简化点的设置?有差不多一秒的等待时间,测试机器是pixel3,配置如下
captureHelper.playBeep(false) //播放音效
.vibrate(true) //震动
.decodeFormats(DecodeFormatManager.QR_CODE_FORMATS)//设置只识别二维码会提升速度
.frontLightMode(FrontLightMode.OFF) //设置闪光灯模式
.continuousScan(false)
能否添加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里面有很多默认配置,配置多少取决于你具体需求
希望可以有让闪光灯按钮一直显示的api,支付宝挡住摄像头灯按钮就出现了,demo手机平放桌面完全遮挡摄像头闪光灯控件也没出现。尝试设置tooDarkLux为99f,也不能显示闪光灯。挡光线感应器?各个机型不一,我测试机小米顶部,底部可能有光线感应地方挡住无效
希望可以有让闪光灯按钮一直显示的api,支付宝挡住摄像头灯按钮就出现了,demo手机平放桌面完全遮挡摄像头闪光灯控件也没出现。尝试设置tooDarkLux为99f,也不能显示闪光灯。挡光线感应器?各个机型不一,我测试机小米顶部,底部可能有光线感应地方挡住无效
目前内置的是光线感应器动态控制的,感应器一般在手机的正面,有个小圆孔那个。要实现闪光灯也不难,内置调用CameraConfigurationUtils.setTorch(Camera.Parameters parameters, boolean on)
即可。后续版本可以考虑添加简单一点的参数直接控制是否一直显示手电筒。
希望可以有让闪光灯按钮一直显示的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; }
必须进入扫码页前授权吗?进入页面后获取到授权预览扫码无法继续
target sdk 30 图片识别二维码有问题,识别返回值为空
作者你好,在使用 2.0.2 版本的过程中,发现连扫功能和获取扫描结果回调耦合了,建议将连扫功能单独设置配置项,使用起来会更方便一些。
作者你好,在使用 2.0.2 版本的过程中,发现连扫功能和获取扫描结果回调耦合了,建议将连扫功能单独设置配置项,使用起来会更方便一些。
首先谢谢你的建议,我去看了下整体实现思路,现在确实是有关联的,但并没有耦合,因为要连扫就必须要拦截扫码回调,主要是想简化步骤,只是思路发生的变化,v2.x 相对于之前版本 v1.x 去除了单独设置连扫的设置,改用cameraScan.setAnalyzeImage() 方法来控制是否分析图像,是否扫码分析是通过内部的 isAnalyze 和 isAnalyzeResult 来判定的。也就是通常理解的连扫。DefaultCameraScan 中第300行那段注释说明,没有描述完整,只说了一半,加上拦截回调结果,则重置分析结果状态,并且 isAnalyze 默认为true,(满足分析图像判定)自动认为是连扫,会有耦合的错觉,这和通常理解的连扫流程不一样,可能容易让人产生误解,后续我改下注释。
现在的逻辑是: 如果拦截了结果,则重置分析结果状态,并当isAnalyze为true时,默认会继续分析图像(也就是连扫)。如果只是想拦截扫码结果回调,并不想继续分析图像(不想连扫),请在拦截扫码逻辑处通过调用 cameraScan.setAnalyzeImage(false) 将不再分析图像。
作者你好,在使用 2.0.2 版本的过程中,发现连扫功能和获取扫描结果回调耦合了,建议将连扫功能单独设置配置项,使用起来会更方便一些。
首先谢谢你的建议,我去看了下整体实现思路,现在确实是有关联的,但并没有耦合,因为要连扫就必须要拦截扫码回调,主要是想简化步骤,只是思路发生的变化,v2.x 相对于之前版本 v1.x 去除了单独设置连扫的设置,改用cameraScan.setAnalyzeImage() 方法来控制是否分析图像,是否扫码分析是通过内部的 isAnalyze 和 isAnalyzeResult 来判定的。也就是通常理解的连扫。DefaultCameraScan 中第300行那段注释说明,没有描述完整,只说了一半,加上拦截回调结果,则重置分析结果状态,并且 isAnalyze 默认为true,(满足分析图像判定)自动认为是连扫,会有耦合的错觉,这和通常理解的连扫流程不一样,可能容易让人产生误解,后续我改下注释。
现在的逻辑是: 如果拦截了结果,则重置分析结果状态,并当isAnalyze为true时,默认会继续分析图像(也就是连扫)。如果只是想拦截扫码结果回调,并不想继续分析图像(不想连扫),请在拦截扫码逻辑处通过调用 cameraScan.setAnalyzeImage(false) 将不再分析图像。
感谢回复,目前通过业务字段限制不执行解析逻辑,并且根据解析结果作为 callback 的回调可以解决业务需求~
群满了怎么办
黑色底的二维码还是扫不出来
大佬您好,我在整理项目使用二维码方面的库时,发现该库的功能和扩展性都挺全面的,但是我在接入使用时还是发现有一些问题需要优化,首先文档有些地方需要优化一下:
这里整个使用方式我觉得应该放在引入的下面,版本说明应该放在最后,然后针对每种使用方式需要分开说明一下,就比如第三点,只能查看代码发现 CameraScan 这个抽象类有个默认实现类 DefaultCameraScan, 既然这样三四是不是应该属于同一种方式?
而且第一种方式集成使用时首先需要声明 com.king.zxing.CaptureActivity ,但是这个可以在代码层面优化的,作为依赖的 module,module 内部可以声明,这样使用方就无需再次声明,其次使用时默认缺少 androidx.camera.view.PreviewView 这个依赖库,我认为使用方有时不知道缺少库的相关地址,这个应该在打包发布时默认提供依赖比较好,目前还没有深入使用,仅在接入时发现的问题,希望大佬可以考虑优化一下
大佬您好,我在整理项目使用二维码方面的库时,发现该库的功能和扩展性都挺全面的,但是我在接入使用时还是发现有一些问题需要优化,首先文档有些地方需要优化一下:
这里整个使用方式我觉得应该放在引入的下面,版本说明应该放在最后,然后针对每种使用方式需要分开说明一下,就比如第三点,只能查看代码发现 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 中之前有人提过的,你可以搜下。
总结成一句话就是:简化集成步骤和可扩展性之间的权衡。
大佬您好,我在整理项目使用二维码方面的库时,发现该库的功能和扩展性都挺全面的,但是我在接入使用时还是发现有一些问题需要优化,首先文档有些地方需要优化一下:
这里整个使用方式我觉得应该放在引入的下面,版本说明应该放在最后,然后针对每种使用方式需要分开说明一下,就比如第三点,只能查看代码发现 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 也往统一方面优化。
有些机型(前摄像头内置)会弹出前摄像头,再自动缩回去,设置
class BackCaMerSelector:CameraConfig(){
override fun options(builder: CameraSelector.Builder): CameraSelector {
return CameraSelector.DEFAULT_BACK_CAMERA
}
}
.setCameraConfig(BackCaMerSelector())
无效,是什么原因
oppo A32 android10 用户反馈扫二维码没反应,其他手机可以,其他程序也可以
群满员了
扫码识别太低了,很难识别出来,不知道是否有这个反馈
同一个二维码 微信秒开,用这个很难识别到
DefaultCameraScan这个类能不能加个set方法啊?用来传CameraSelector.Builder的,只需要加这个set方法就好,然后再startCamera()里的相机选择器mCameraConfig.options(new CameraSelector.Builder());这行代码,稍微改一下,有传入CameraSelector.Builder的则使用,没有则new CameraSelector.Builder()。 因为我们有个项目,是设备类的,要做切换摄像头,我本来想继承DefaultCameraScan这个类,想加这个相机选择器控制功能,但是你把很多属性和方法都做成了private,没得修改,我只能自己定义一个class,复制DefaultCameraScan这个类里的所有代码,再加set传CameraSelector.Builder的方法,为了一个功能,这样子代价太大了。
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这个类能不能加个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)是不生效的,得改一下这行代码,加个传相机配置的方法进去才行。
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
前置摄像头预览颠倒怎么修改