现在很多App都有扫码识别二维码的场景,最新的扫码已经支持全屏扫码、从相册选取二维码识别,以下使用基于Zxing封装的一个库:https://github.com/maning0303/MNZXingCode

MNZXingCode 快速集成zxing二维码扫描
快速集成zxing二维码扫描,生成二维码,可配置相册,闪光灯,相机可以调整焦距放大缩小,自定义扫描线颜色,自定义背景颜色,自定义遮罩层,自定义Activity,多个二维码扫码(zxing:core:3.3.3/3.4.0)

1:生成二维码,支持修改颜色和边距,支持带Logo
2:二维码扫描,手势缩放,无拉伸,样式自定义
3:相册中选取图片识别
4:闪光灯开关
5: 相机可以调整焦距放大缩小
6: 完全自定义遮罩层
7: 自定义Activity
8: 支持微信,支付宝类似多个二维码扫码

gradle集成方式:

    //扫一扫支持全屏、从相册选择:需要支持7.0以下implementation 'com.google.zxing:core:3.3.3'implementation 'com.github.maning0303:MNZXingCode:V2.1.8'

具体使用:

//(1)默认扫描使用:MNScanManager.startScan(this, new MNScanCallback() {@Overridepublic void onActivityResult(int resultCode, Intent data) {switch (resultCode) {case MNScanManager.RESULT_SUCCESS:String resultSuccess = data.getStringExtra(MNScanManager.INTENT_KEY_RESULT_SUCCESS);break;case MNScanManager.RESULT_FAIL:String resultError = data.getStringExtra(MNScanManager.INTENT_KEY_RESULT_ERROR);break;case MNScanManager.RESULT_CANCLE:showToast("取消扫码");break;}}});
// (2)自定义扫描布局和参数MNScanConfig scanConfig = new MNScanConfig.Builder()//设置完成震动.isShowVibrate(true)//扫描完成声音.isShowBeep(true)//显示相册功能.isShowPhotoAlbum(true)//显示闪光灯.isShowLightController(false)//打开扫描页面的动画.setActivityOpenAnime(R.anim.activate_in)//退出扫描页面动画.setActivityExitAnime(R.anim.activate_out)//自定义文案--不展示.setScanHintText("")//自定义文案颜色.setScanHintTextColor("#FFFFFF")//自定义文案大小(单位sp).setScanHintTextSize(15)//是否显示缩放控制器.isShowZoomController(false)//显示缩放控制器位置.setZoomControllerLocation(MNScanConfig.ZoomControllerLocation.Bottom)//背景颜色.setBgColor("#33FF0000")//扫描线样式.setLaserStyle(MNScanConfig.LaserStyle.Line)//扫描线的颜色.setScanColor("#E61F55")//网格扫描线的列数.setGridScanLineColumn(30)//网格高度.setGridScanLineHeight(1)//高度偏移值(单位px)+向上偏移,-向下偏移.setScanFrameHeightOffsets(150)//是否全屏范围扫描.setFullScreenScan(true)//二维码标记点.isShowResultPoint(true)// 设置标记点的大小、色值.setResultPointConfigs(36, 20, 2, "#FFFFFFFF", "#E61F55")//状态栏设置:颜色,是否黑色字体.setStatusBarConfigs("#00000000", true)//是否支持多二维码同时扫出,默认false,多二维码状态不支持条形码.setSupportMultiQRCode(true)//自定义遮罩.setCustomShadeViewLayoutID(R.layout.layout_custom_view, new MNCustomViewBindCallback() {@Overridepublic void onBindView(View customView) {//TODO:通过findviewById 获取View// 返回按钮,点击关闭扫描ImageView ivBack = customView.findViewById(R.id.ivBack);//TODO 打开相册,选择二维码ImageView ivPhoto = customView.findViewById(R.id.ivPhoto);tvTips = customView.findViewById(R.id.tvTips);scanLine = customView.findViewById(R.id.scanLine);ivBack.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//关闭扫描页面MNScanManager.closeScanPage();}});ivPhoto.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//打开相册扫描RxPermissions.getInstance(activity).request(Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.CAMERA).subscribe(new Observer<Boolean>() {@Overridepublic void onCompleted() {}@Overridepublic void onError(Throwable e) {}@Overridepublic void onNext(Boolean aBoolean) {if (aBoolean) {MNScanManager.openAlbumPage();} else {Toast.makeText(activity, R.string.permission_request_denied, Toast.LENGTH_LONG).show();}}});}});startScanAnimation();}}).builder();
// 开启扫描MNScanManager.startScan(activity, scanConfig, new MNScanCallback() {public void onActivityResult(int resultCode, Intent data) {switch (resultCode) {case MNScanManager.RESULT_SUCCESS:String resultSuccess = data.getStringExtra(MNScanManager.INTENT_KEY_RESULT_SUCCESS);if (callback != null) {callback.onResult(resultSuccess);} else {handleDecode(activity, from, resultSuccess, barcode);}break;case MNScanManager.RESULT_FAIL:// 错误提示:比如:初始化相机失败等String resultError = data.getStringExtra(MNScanManager.INTENT_KEY_RESULT_ERROR);break;case MNScanManager.RESULT_CANCLE:ZZSSLog.e("取消扫码");break;}}});
Activity中调用以上方法:// (1)授权相机、读写权限if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {activity.requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE},REQUEST_CODE_OF_SCAN_PAGE);}// (2)在onRequestPermissionsResult,获取授权请求结果后,启动扫码@Overridepublic void onRequestPermissionsResult(final int requestCode, @NonNull String[] permissions,@NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);if (requestCode == REQUEST_CODE_OF_SCAN_PAGE) {// 将最上面的扫描代码写在startScan()方法中,进行调用,也可以将扫描结果回调出来,随时使用。startScan(this);}}

Android二维码多码识别,相册选择二维码,自定义扫码界面相关推荐

  1. Android:实际运用Zxing集成二维码扫描 及 自定义扫码界面(demo源码)

    二维码扫描,各大主流App必不可少的功能,而且google已将轮子替我们造好,直接拿来使用即可.以下是教学如何将Zxing开源库集成到自己项目中,并且自定义扫码界面,后期可根据自己的业务需求进行修改, ...

  2. IM扫码登录技术专题(三):通俗易懂,IM扫码登录功能详细原理一篇就够

    本文引用了作者"大古同学"的"二维码扫码登录是什么原理"一文的主要内容,为了更好的理解和阅读,即时通讯网收录时有修订和改动,感谢原作者的分享. 1.引言 自从微 ...

  3. 小程序之自定义扫码界面和扫码api学习

    微信小程序扫码 使用wx.scanCode(Object,Object) 调起客户端扫码界面进行扫码 这个是小程序提供的相关扫码api,可以直接调用该api实现扫码 相关参数 使用例子: 直接调用ap ...

  4. 万能码:大数据时代的新星(安全扫码专业委员会)

    万能码:大数据时代的新星(安全扫码专业委员会) 万能码又叫做数智商盟码,包括了点餐.连WiFi.充电.支付.开发票.折扣券.领红包.话费充值等功能,未来的时间里,万能码将继续研发新的功能没让万能码成为 ...

  5. 万能码又又有新功能了(安全扫码专业委员会)

    万能码又又有新功能了(安全扫码专业委员会)之前有一个新闻上了微博热搜,那就是禁止将个人收款码商用,并且强调了个人和经营用的收款码,"码上付"是新的功能,适用于所有场所,不管你是开餐 ...

  6. (补充)微信长按识别二维码 -- 页面多个二维码如何识别?(二)

    基于上一篇微信长按识别二维码 -- 页面多个二维码如何识别? )在部分设备上,如果图片非常多,还是会出现识别错误的bug(主要是二维码显示一半或居于底部时),修改了识别流程,改为点击图片弹窗,然后长按 ...

  7. android 自定义相册选择,Android图片选择器,支持拍照、从相册选择、裁剪、自定义主题...

    在很多项目中都会用到图片选择器,比如在选择头像的时候,还会要求选择图片进行裁剪后再进行上传:而有的项目要支持拍照后进行图片裁剪再进行上传.由于Android系统兼容性问题,我们不得不考虑自己实现图片裁 ...

  8. APP二维码微信扫描后无法下载的问题 微信扫码(扫一扫二维码)下载不了app怎么解决

    最近公司开发了一款app,在做推广的时候遇到了微信扫码无法直接下载的问题. 最终在参考了众多资料后,发现微信内置浏览器不支持直接下载功能,可能这就是公司足够大了,有些功能不给开放也不会怎样.但是问题还 ...

  9. 二维物体形状识别方法(二)

    这个论文不知道作者转自哪里,暂时就写博客作者地址吧:http://blog.chinaunix.net/uid-24517893-id-3140811.html 摘  要  针对模式识别中二维物体的形 ...

最新文章

  1. oracle websp,探索Web2.0成就SP 2.0之路
  2. python游戏服务器框架_mqant首页、文档和下载 - Golang/python语言开发的分布式游戏服务器框架 - OSCHINA - 中文开源技术交流社区...
  3. UML类图关系大全 and 报表的基本用法
  4. iOS中的UIAlertView之新方法(弹出警告框)
  5. C#文件和文件文件夹按时间、名称排序-顺序与倒序
  6. 如何将Windows 10帐户还原为本地帐户(在Windows Store劫持它之后)
  7. 你要知道的MacOS哪些优缺点
  8. java 服务端重复提交_java 服务器端验证重复提交
  9. 【备战NOIP】[算法总结] 二分查找
  10. poi,HSSFWorkbook,Excel导出,代码示例
  11. 模仿豆丁、百度文库播放器
  12. 家里还装摄像头?看完B站直播毛骨悚然!
  13. 关闭笔记本电脑计算机键盘,笔记本小键盘怎么关闭,教您怎么关闭笔记本小键盘...
  14. 关于制作ppt的讲解
  15. 音频转换成mp3,音频转mp3格式
  16. python arp断网攻击_arp断网攻击,教您arp断网攻击怎么解决
  17. 对于支付宝里面推荐的基金大家怎么看待呢?
  18. visual 创建c语言程序吗,visual studio怎么创建c语言
  19. 信号完整性(SI)电源完整性(PI)学习笔记(三十四)100条估计信号完整性效应的经验法则
  20. 极速office(PPT)文字如何设置加粗

热门文章

  1. 与其他带货直播平台相比,视频号更适合哪些人?
  2. python能否取代excel_行,Python玩大了!​取代Excel,程序员:太牛!你怎么看?...
  3. Linux磁盘空间爆满怎么办?定时文件清理脚本配置实现
  4. ISME:长江流域Comammox Nitrospira的群落、生物地理学和生态驱动者
  5. Apache POI(Word)教程_编程入门自学教程_菜鸟教程-免费教程分享
  6. MobTech 秒验|极速验证,拉新无忧
  7. fiddler安卓模拟器与ios手机抓包
  8. dellR730装机教程
  9. 自定义原生jsonp跨域请求
  10. 注册oracle驱动,[XXX] 注册了JDBC驱动程 序 [oracle.jdbc.OracleDriver]