调用摄像头

2018-12-07  本文已影响0人  leap_

  权限声明:

创建一个隐式调用摄像头的intent

action指定为  :  

MediaStore.ACTION_IMAGE_CAPTURE- 从已存在的相机应用中请求一个图片.

MediaStore.ACTION_VIDEO_CAPTURE- 从已存在的相机应用中请求一个视频.

创建uri存放图片:uri通过intent传入相机;

1  安卓7.0版本之前:通过文件转化uri

创建file文件 将file文件转为uri用于存放照片 指定uri和照片绑定

MediaStore.EXTRA_OUTPUT的作用是指定照片的名称和地址,如果没有设置uri,那么系统会自动命名照片并且放入默认的储存地址。

2  7.0以后认为直接使用真实路径是不安全的,所以使用共享文件的形式(contentValues和contentResolver类)

contentValues文档解释:This class is used to store a set of values that the contentResolver can process.        类似hashtable,键值对的方式储存数据,

contentResolver文档解释:This class provides applications access to the content model. 内容解析者:contentResolver提供一系列的方法对数据进行crud;

1 创建contentValues,将照片file的路径存起来;

2 通过contentResolver的insert()方法得到照片的uri,设置MediaStore.EXTRA_OUTPUT;

contentResolver的insert()文档解释

权限申请

检查是否有CAMERA和STROAGE权限

没有就申请:

第三个参数是请求码,用于回调;

回调:重写onRequestPermissionResult();

requestCode为请求码,用于处理回调:

grantResults为用户的选择:PERMISSION——GRANTED和PERMISSION_DENIED

如果是granted则调用摄像头;

如果有权限,直接调用摄像头;

开启摄像头

第二个参数是相机回调的请求码,处理相机的回调;

相机的回调处理

如果是相机回调的请求码,并且请求回调结果为OK,则处理回调:加载照片到imageView中;

上一篇下一篇

猜你喜欢

热点阅读