如何实现安卓二维码扫码功能
使用这个库: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;}
如何实现安卓二维码扫码功能相关推荐
- PHP实现二维码扫码登录
实现客户端扫码登录分为下列四步: 1. Web页面生成二维码 生成的二维码中必须要包含一个用于唯一标识用户的数据,这个唯一标识是为了确保将客户端(手机)与web网页绑定,避免其他人登录了你的账号 ...
- spring boot高性能实现二维码扫码登录(中)——Redis版
前言 本打算用CountDownLatch来实现,但有个问题我没有考虑,就是当用户APP没有扫二维码的时候,线程会阻塞5分钟,这反而造成性能的下降.好吧,现在回归传统方式:前端ajax每隔1秒或2秒发 ...
- spring boot高性能实现二维码扫码登录(上)——单服务器版
前言 目前网页的主流登录方式是通过手机扫码二维码登录.我看了网上很多关于扫码登录博客后,发现基本思路大致是:打开网页,生成uuid,然后长连接请求后端并等待登录认证相应结果,而后端每个几百毫秒会循环查 ...
- C++实现二维码扫码登录
实现客户端扫码登录分为下列四步: 1. Web页面生成二维码 生成的二维码中必须要包含一个用于唯一标识用户的数据,这个唯一标识是为了确保将客户端(手机)与web网页绑定,避免其他人登录了你的账号 ...
- thinkphp5+php微信公众号二维码扫码关注推广二维码事件实现
thinkphp5微信公众号二维码扫码关注推广二维码事件实现, 给出实现的全部方法: 获取二维码,让微信公众号跳转到以下代码的code方法即可,用户点击二维码后,通过二维码获取关注用户信息及二维码推广 ...
- 应用宝ysdk微信二维码扫码登录没有回调问题
在更新ysdk版本的时候,发现新版本ysdk增加了微信二维码扫码登录,但是打包测试发现并没有登录回调. 接下来就开始排查了,检查了生命周期都没有问题,那问题出现在哪里呢?用ysdk提供的demo换上我 ...
- python 全栈开发,Day128(创建二维码,扫码,创建玩具的基本属性)
python 全栈开发,Day128(创建二维码,扫码,创建玩具的基本属性) 昨日内容回顾 1.app播放音乐plus.audio.createPlayer(文件路径/URL)player.play( ...
- 二维码扫码登录的原理
二维码登录的本质 二维码登录本质上也是一种登录认证方式.既然是登录认证,要做的也就两件事情! 告诉系统我是谁 向系统证明我是谁 比如账号密码登录,账号就是告诉系统我是谁, 密码就是向系统证明我是谁; ...
- TCPIP远程网络电子健康码扫码设备|二维码扫码门禁机HX-QR86L-IP在校园复学防疫领域的应用
TCPIP远程网络电子健康码扫码设备|二维码扫码门禁机HX-QR86L-IP是一款铝合金材质.带液晶显示屏,一机两用,即可做门禁读头使用,也可以做电子健康码数据采集使用.可支持静态.手机动态二维码识别 ...
最新文章
- Linux下通过源码编译安装程序
- 2019-03-18-算法-进化(反转链表)
- ubuntu默认root密码
- jfinal mysql存储过程_jfinal调用mysql存储过程
- 深度学习入门之二阶段小demo练习(持续更新系列)
- 上课解除教师机控制(红蜘蛛)超详细
- 如何在网上隐藏自己的IP地址(转)
- 注册测绘师考试(个人总结)—工程测量、地籍测量、房产测量、界线测量
- e5服务器系列天梯图,至强e5处理器天梯图_至强E5系列CPU排行榜高清图2020-win7之家...
- php之——常用的字符串函数
- DAO是什么?为什么我们需要DAO?
- usb共享远程服务器,USB Network Gate
- C# ico转png
- outlook显示imap服务器已关闭,允许 Outlook Web App 中的最终用户查看 POP3、IMAP4 和 SMTP 服务器设置...
- virtualBox安装驱动失败:找不到指定模块解决方法
- 常见API、正则表达式、Lanbda、算法
- 云队友丨在注意力稀缺的时代,专注是你成败的关键筹码
- 使用百度云盘快速下载文件
- PyTorch搭建卷积神经网络(CNN)进行视频行为识别(附源码和数据集)
- 你真的了解什么是Beta测试?完整测试指南
热门文章
- VC++新手入门教程
- 好玩的==百度java面试题
- 实战 | Bypass云锁MySQL注入总结
- 再也不担心问到Java集合了,一文讲透Java中的数据结构
- BigTable 数据模型
- 云终端ncomputingl300服务器,NComputing L300云终端在局域网下升级的设置操作
- OPPO猛烈反击诺基亚,意味着中国手机不再任人宰割
- 注册CSDN之后的第一条PIAO客
- 李宏毅_机器学习_作业3(详解)_HW3 Image Classification
- java infinity_Java中的INFINITY常量是什么?