XCodeScanner
XCodeScanner copied to clipboard
decodeForResult这个api的使用建议
我在使用void decodeForResult(Context context, Uri uri, int requestCode);这个api的时候发现不能识别相册中的二维码。 后来改用void decodeForResult(Bitmap bitmap, RectF rectClipRatio, int requestCode);也会有部分机器不能够识别,看了源码有一段话说对图片分辨率有要求小于等于1920 * 1080。于是乎,在onActivityResult相册返回的data通过getContentResolver().query获取图片路径并生成的bitmap一定要压缩才可以解析二维码。我最开始用data.getData()把获取到的uri传入最上面的那个decodeForResult在三星G9500手机上会报错的
我自己的S9+是没有问题的,我找个S8试试看。
@YangJ0720 我试了下S8没有出现你说的问题,可以通过Uri识别相册中的二维码。你看下能否复现呢,发一下报错信息
@Simon-Leeeeeeeee 我刚才试了一下没有复现,大概信息是onActivityResult中data.getData()提示uri的错误。或者是因为我没有给权限?然后在Nexus 6低电量情况下会自动调用一个方法停止摄像头的预览,这段时间我没有做这部分工作,如果再次复现我会给你提交相关日志。
你这个BUG,我已经复现了。图像的大小,清晰度,二维码的内容都会有影响。不只是识别本地图片,通过摄像头扫码也是一样。这一块是zbar的问题,正在想办法解决。