权限声明:
创建一个隐式调用摄像头的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中;
网友评论