XCodeScanner
XCodeScanner copied to clipboard
一些建议
首先觉得作者这个做的还可以,至少体验上比其他的库快。自己也想做类似的库,但对相关的api不太熟,思路不清晰。不过建议是可以提的。 1、预览框和外面上下左右的阴影,是否有必要分开做。而且这个布局比较简单,完全用不到约束布局,不建议有了MaskRelativeLayout,还搞一个MaskConstraintLayout。没必要,约束布局还要引入一个库,这对一个本身就是库的来说,不太好。建议删除,也不需要花时间在这上面。 2、不管是zxing还是zbar,都是只负责解码和生成码的,不涉及UI以及camera预览,以及拾取的图像回调,所以做这类库,也主要就是封装这些东西,至于怎么处理解码,可以写个接口,然后就可以自己选(图像数据回调给接口了,至于怎么解析,选择zxing还是zbar,可以动态控制,zbar太大啦)。可以参考下面这个库的设计:https://github.com/themaster-gh/BGAQRCode-Android-master 3、接口设计有点复杂。用这个库的的话,需要实现3个接口CameraScanner.CameraListener, TextureView.SurfaceTextureListener, GraphicDecoder.DecodeListener,其实我觉得可以合并成一个接口就好,这些接口的很多方法在库的内部实现就可以(因为代码都是固定的,没必要每次都copy一遍)。 4、好像没有闪光灯控制的接口。不过按照计划,这个也会加的。
第一点,我希望扫码界面布局可以更大限度地自由发挥,我尝试过直接做一个充满父布局的ScannerFrameView,外面绘制阴影,内部绘制扫码框。但是布局内相对扫码框定位的一些View就不太好控制,例如要控制提示文字距离扫码框底部10dp,这个就很难实现。当然我也可以把提示文字加入ScannerFrameView进行绘制,但如果需求变成一副图片一个按钮等等,页面可定制性就大打折扣。 第一点补充,有了MaskRelativeLayout之外还搞一个MaskConstraintLayout,是我个人认为ConstraintLayout比RelativeLayout好用,可以控制ScannerFrameView在父容器中任意比例的位置。而不是只能居中或者上下左右。如果较多开发者反馈,我会考虑从zbar移到app中,届时如果需要,开发者可以自行定制MaskConstraintLayout。 第二点,zxing有计划添加,GraphicDecoder接口就是为了兼容zbar和zxing而准备的。以后会退出zxing版及zabr&zxing混合版。 第三点,我希望XCodeScanner具有很高的可定制化,所以设计了很多接口来进行解耦。这样做的确实会显得有点复杂,不能一行代码搞定。但是我觉得应该考虑更多个性化的需求,让开发者能够自定义他想要的规则。在我提供的方案不能满足他的需求时,他还可以自己写一个实现类继承我设计的接口来达到目的。 第四点,该有的都会有。不过目前只有我一个人,所以进度上不能保证,但是我一定会坚持下去。
直接上 C++版本的 zxing 吧,我花了好久验证过这个问题,无论是速度,识别率, 误识率都强于 zbar,尤其是 tough code.
目前市面上扫码的极致是 Scandit, 非常屌.
https://github.com/glassechidna/zxing-cpp
@lchad 感谢反馈。我对这个Scandit比较好奇,能介绍一下吗?
https://www.scandit.com/
@lchad 兄台研究这个 Scandit 怎么样了?有什么可以分享的吗?可以一起搞噢。