使用这个库:https://github.com/jenly1314/ZXingLite

1.库的引入:

allprojects {repositories {google()jcenter()maven { url 'https://dl.bintray.com/jenly/maven' }}
}
    implementation 'com.king.zxing:zxing-lite:1.1.3'implementation 'pub.devrel:easypermissions:2.0.1'

第一个库用于二维码扫码,第二个库用来权限摄像机权限申请

2.核心代码

 /*** 扫码* @param cls* @param title*/private void startScan(Class<?> cls,String title){ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeCustomAnimation(this,R.anim.in,R.anim.out);Intent intent = new Intent(this, cls);intent.putExtra(KEY_TITLE,title);intent.putExtra(KEY_IS_CONTINUOUS,isContinuousScan);ActivityCompat.startActivityForResult(this,intent,REQUEST_CODE_SCAN,optionsCompat.toBundle());}
 /*** 检测拍摄权限*/@AfterPermissionGranted(RC_CAMERA)private void checkCameraPermissions(){String[] perms = {Manifest.permission.CAMERA};if (EasyPermissions.hasPermissions(this, perms)) {//有权限startScan(cls,title);} else {// Do not have permissions, request them nowEasyPermissions.requestPermissions(this, getString(R.string.permission_camera),RC_CAMERA, perms);}}/*** 检测读写权限* */@AfterPermissionGranted(RC_READ_PHOTO)private void checkExternalStoragePermissions(){String[] perms = {Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE};if (EasyPermissions.hasPermissions(this, perms)) {//有权限startPhotoCode();}else{EasyPermissions.requestPermissions(this, getString(R.string.permission_external_storage),RC_READ_PHOTO, perms);}}
 /** easypermisson 方法重写** */@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);// Forward results to EasyPermissionsEasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);}@Overridepublic void onPermissionsGranted(int requestCode, List<String> list) {// Some permissions have been granted}@Overridepublic void onPermissionsDenied(int requestCode, List<String> list) {// Some permissions have been denied// ...}
/*** 回调显示返回的结果* */@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if(resultCode == RESULT_OK && data!=null){switch (requestCode){case REQUEST_CODE_SCAN:String result = data.getStringExtra(Intents.Scan.RESULT);Toast.makeText(this,result,Toast.LENGTH_SHORT).show();break;case REQUEST_CODE_PHOTO:parsePhoto(data);break;}}}private void parsePhoto(Intent data){final String path = UriUtils.INSTANCE.getImagePath(this,data);Log.d("Jenly","path:" + path);if(TextUtils.isEmpty(path)){return;}//异步解析asyncThread(new Runnable() {@Overridepublic void run() {final String result = CodeUtils.parseCode(path);runOnUiThread(new Runnable() {@Overridepublic void run() {Log.d("Jenly","result:" + result);Toast.makeText(getContext(),result,Toast.LENGTH_SHORT).show();}});}});}private void asyncThread(Runnable runnable){new Thread(runnable).start();}private Context getContext(){return this;}

如何实现安卓二维码扫码功能相关推荐

  1. PHP实现二维码扫码登录

    实现客户端扫码登录分为下列四步: 1.    Web页面生成二维码 生成的二维码中必须要包含一个用于唯一标识用户的数据,这个唯一标识是为了确保将客户端(手机)与web网页绑定,避免其他人登录了你的账号 ...

  2. spring boot高性能实现二维码扫码登录(中)——Redis版

    前言 本打算用CountDownLatch来实现,但有个问题我没有考虑,就是当用户APP没有扫二维码的时候,线程会阻塞5分钟,这反而造成性能的下降.好吧,现在回归传统方式:前端ajax每隔1秒或2秒发 ...

  3. spring boot高性能实现二维码扫码登录(上)——单服务器版

    前言 目前网页的主流登录方式是通过手机扫码二维码登录.我看了网上很多关于扫码登录博客后,发现基本思路大致是:打开网页,生成uuid,然后长连接请求后端并等待登录认证相应结果,而后端每个几百毫秒会循环查 ...

  4. C++实现二维码扫码登录

    实现客户端扫码登录分为下列四步: 1.    Web页面生成二维码 生成的二维码中必须要包含一个用于唯一标识用户的数据,这个唯一标识是为了确保将客户端(手机)与web网页绑定,避免其他人登录了你的账号 ...

  5. thinkphp5+php微信公众号二维码扫码关注推广二维码事件实现

    thinkphp5微信公众号二维码扫码关注推广二维码事件实现, 给出实现的全部方法: 获取二维码,让微信公众号跳转到以下代码的code方法即可,用户点击二维码后,通过二维码获取关注用户信息及二维码推广 ...

  6. 应用宝ysdk微信二维码扫码登录没有回调问题

    在更新ysdk版本的时候,发现新版本ysdk增加了微信二维码扫码登录,但是打包测试发现并没有登录回调. 接下来就开始排查了,检查了生命周期都没有问题,那问题出现在哪里呢?用ysdk提供的demo换上我 ...

  7. python 全栈开发,Day128(创建二维码,扫码,创建玩具的基本属性)

    python 全栈开发,Day128(创建二维码,扫码,创建玩具的基本属性) 昨日内容回顾 1.app播放音乐plus.audio.createPlayer(文件路径/URL)player.play( ...

  8. 二维码扫码登录的原理

    二维码登录的本质 二维码登录本质上也是一种登录认证方式.既然是登录认证,要做的也就两件事情! 告诉系统我是谁 向系统证明我是谁 比如账号密码登录,账号就是告诉系统我是谁, 密码就是向系统证明我是谁; ...

  9. TCPIP远程网络电子健康码扫码设备|二维码扫码门禁机HX-QR86L-IP在校园复学防疫领域的应用

    TCPIP远程网络电子健康码扫码设备|二维码扫码门禁机HX-QR86L-IP是一款铝合金材质.带液晶显示屏,一机两用,即可做门禁读头使用,也可以做电子健康码数据采集使用.可支持静态.手机动态二维码识别 ...

最新文章

  1. Linux下通过源码编译安装程序
  2. 2019-03-18-算法-进化(反转链表)
  3. ubuntu默认root密码
  4. jfinal mysql存储过程_jfinal调用mysql存储过程
  5. 深度学习入门之二阶段小demo练习(持续更新系列)
  6. 上课解除教师机控制(红蜘蛛)超详细
  7. 如何在网上隐藏自己的IP地址(转)
  8. 注册测绘师考试(个人总结)—工程测量、地籍测量、房产测量、界线测量
  9. e5服务器系列天梯图,至强e5处理器天梯图_至强E5系列CPU排行榜高清图2020-win7之家...
  10. php之——常用的字符串函数
  11. DAO是什么?为什么我们需要DAO?
  12. usb共享远程服务器,USB Network Gate
  13. C# ico转png
  14. outlook显示imap服务器已关闭,允许 Outlook Web App 中的最终用户查看 POP3、IMAP4 和 SMTP 服务器设置...
  15. virtualBox安装驱动失败:找不到指定模块解决方法
  16. 常见API、正则表达式、Lanbda、算法
  17. 云队友丨在注意力稀缺的时代,专注是你成败的关键筹码
  18. 使用百度云盘快速下载文件
  19. PyTorch搭建卷积神经网络(CNN)进行视频行为识别(附源码和数据集)
  20. 你真的了解什么是Beta测试?完整测试指南

热门文章

  1. VC++新手入门教程
  2. 好玩的==百度java面试题
  3. 实战 | Bypass云锁MySQL注入总结
  4. 再也不担心问到Java集合了,一文讲透Java中的数据结构
  5. BigTable 数据模型
  6. 云终端ncomputingl300服务器,NComputing L300云终端在局域网下升级的设置操作
  7. OPPO猛烈反击诺基亚,意味着中国手机不再任人宰割
  8. 注册CSDN之后的第一条PIAO客
  9. 李宏毅_机器学习_作业3(详解)_HW3 Image Classification
  10. java infinity_Java中的INFINITY常量是什么?