Camera详解(附身份证扫描示例)
Camera是什么
大概意思是Camera是一个用来设置图片获取选项,开启/关闭预览,连续拍照,获取视频解码每一帧,对于管理实际摄像硬件的Camer service来说它相当于一个客户端。
Camera应用场景
项目开发中经常会遇到拍照或录像的需求,有两种实现方式一种是调用系统相机,另一种是使用系统Camera类和surfaceView来实现自定义Camera。
Camera使用
1 Menifest添加权限
<!--允许使用相机--> <uses-permission android:name="android.permission.CAMERA"/> <!--允许使用外部存储--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!--允许使用闪光灯--> <uses-permission android:name="android.permission.FLASHLIGHT"/><!--使用相机特性--> <uses-feature android:name="android.hardware.camera"/> <uses-feature android:name="android.hardware.camera.autofocus"/>
2.打开相机
/*** check if the device has a camera* @return*/ private boolean checkCameraHardWare() {if(getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) {return true;}return false; }
3.初始化
Camera.Parameters parameters = mCamera.getParameters(); // ......设置Camera参数 mCamera.setParameters(parameters);
mCamera.setPreviewDisplay(holder); mCamera.startPreview();
4 使用相机
a. 调用takePictrue,会触发一个异步的图片获取,以及多个回调。此方法会导致预览关闭,若想继续预览在获取图片后再次调用startPreview
参数说明
shutter call back 当图片被获取到的时候会被回调,可以用来播放一个声音让用户知道图片已经被获取到。
PictureCallBack raw 当图片的原始数据可用时会被回调
PictureCallBack postView 当发生缩放时会被回调,并不是所有设备都支持。
PictureCallBack jpeg 当被压缩的图片可用时,会被回调
mCameraInstance.takePicture(null, null, new Camera.PictureCallback() {@Overridepublic void onPictureTaken(byte[] data, Camera camera) {// 在这里处理获取到的图片,data可直接转化为bitmap或图片文件} });
b另外获取视频的示例这里暂时不做过多介绍,可参考官方文档https://developer.android.com/guide/topics/media/camera.html
5关闭预览,释放相机资源。
注意
a。注意:一定要设置预览大小,否则图片会变形。设置预览尺寸,首先获取设备支持的预览尺寸列表,找到与屏幕分辨率差值最小的并设置。
另外还想到一个办法,没有尝试,有兴趣的同学可以尝试一下,就是去设置相机图片尺寸,然后再去截取。
身份证扫描
在应用中需要对身份证扫描获取信息的场景很多,参考很多ocr相关资料和项目后,编写了一个示例工程,在文章最后附上地址。
代码下载
身份证扫描项目地址
Camera详解(附身份证扫描示例)相关推荐
- 蓝牙:CRC原理详解(附crc16校验代码)
CRC原理详解(附crc16校验代码) 参考链接: https://www.cnblogs.com/esestt/archive/2007/08/09/848856.html Cyclic Redun ...
- php中的装饰,详解PHP装饰模式的示例代码
详解PHP装饰模式的示例代码<?php // 装饰模式 function echoLine($msg) { echo $msg, ' '; } class RequestHelper { /** ...
- 《前端》权限链接--vue前端权限控制方案详解附demo_feiyu_may的博客-CSDN博客_vue 前端权限
前端权限控制 - 潘正 - 博客园 https://www.cnblogs.com/guchengnan/p/11800947.html vue前端权限控制方案详解附demo_feiyu_may的博 ...
- PackageManagerService启动详解(七)之扫描系统应用安装目录阶段流程分析
PKMS启动详解(七)之BOOT_PROGRESS_PMS_SYSTEM_SCAN_START阶段流程分析 Android PackageManagerService系列博客目录: PKMS启动详解系 ...
- Win+TexLive2020+TexStudio安装过程详解附ElsevierLatex模板下载并使用
Win+TexLive2020+TexStudio安装过程详解附ElsevierLatex模板下载并使用 一.下载并安装Texlive2020 1.下载TexLive2020 2.安装过程 解压之后运 ...
- 计算机排名的985大学排名,2019年985大学名单排名,985大学详解(附全榜单)
中国最有名的就是211大学和985大学了.2019年211大学名单排名已经为大家公布了,相比之下985大学更加少,全国只有39所985大学,可见985是比211更加有含金量的学校了.下面排行榜123网 ...
- .user.ini上传详解附CTF例题
.user.ini上传详解附CTF例题 题目 解法 https://buuoj.cn/challenges#[SUCTF%202019]CheckIn [SUCTF 2019]CheckIn 题目 解 ...
- 数学规划详解(附例题及部分Python实现)
数学规划详解(附例题及Python实现) 例题来自于清风老师的数学建模课,个人认为讲的非常好,欢迎大家购买 一.概述 1.1 定义 数学规划是运筹学的一个分支,在约束条件下,按照目标函数来寻求计划管理 ...
- python直线拟合_RANSAC算法详解(附Python拟合直线模型代码)
之前只是简单了解RANSAC模型,知道它是干什么的.然后今天有个课程设计的报告,上去讲了一下RANSAC,感觉这个东西也没那么复杂,所以今天就总结一些RASAC并用Python实现一下直线拟合. RA ...
最新文章
- 总结 | 机器学习的通俗讲解!
- 批归一化和Dropout不能共存?这篇研究说可以
- Zookeeper知识点详解
- IIS7开启gZip动态压缩
- java学习(119):set类
- python模型的属性是什么_python – Django:为什么Django模型字段的类属性?
- 基于JAVA+SpringMVC+Mybatis+MYSQL的体育竞赛比赛赛事管理系统
- Web Audio API 入门1
- Python 之面向对象 继承
- 如何更改gnome-screenshot的默认的保存路径?
- Linux如何查找软件的安装位置
- 色彩搭配原则和方法【转】
- spring的依赖注入是什么意思
- unity 引用 移动mm 支付sdk
- 树莓派配置文件 config.txt - HDMI 热插拔
- 亚马逊多账号怎么管理|亚马逊账号关联
- 百度地图JS API 支持HTTPS
- 人员行为识别系统 TensorFlow
- 【算法】0-1背包问题(Knapsack problem)
- 抖音seo搜索是什么?源码部署-seo排名系统源码分析