调用系统相机拍照获取缩照片略图
调用系统相机拍照时,如果不传路径,图片默认返回缩略图,不需要权限
|
|
takePictureIntent.resolveActivity(getPackageManager()) != null
在官方文档中有描述:startActivityForResult()方法受到调用resolveActivity()的条件的保护,该方法返回可处理该意图的第一个活动组件,执行此检查很重要,因为如果您使用没有应用程序可以处理的意图调用startActivityForResult(),则您的应用程序将崩溃。所以只要结果不为空,就可以安全的使用意图,大概意思是检测手机中有没有相机。
另外一种检测相机的方法是
|
|
required=true表示要安装该应用,手机必须有摄像头该硬件。要不然不允许安装
处理回调
|
|
调用系统相机拍照获取全尺寸照片
如果要保存一个全尺寸的照片,必须提供一个完整的文件名,当照片需要保存到公有目录时,那么需要一个写入的权限(写入权限已经隐含的允许读取[READ_EXTERNAL_STORAGE],这样子就可以将app拍的照片写入到外部存储,该外部存储的链接是
getExternalStoragePublicDirectory()
|
|
当需要将得到的照片保存到私有目录时,使用该链接
getExternalFilesDir(),getFilesDir()
,这两个目录下的文件在应用删除的时候就自动删掉了,在android4.4以下需要权限,4.4以上应用之间不能被其他程序访问,因此该权限只要在4.4以下加入
|
|
- 提供一个不会冲突的文件名,例如按时间来起名
|
|
- 构造拍照intent,适配7.0以及4.0
|
|
FileProvider.getUriForFile()
用来返回一个content:// URI。对于最新的针对Android 7.0(API级别24)的应用程序,通过一个包边界传递一个文件:// URI会导致FileUriExposedException
鸿洋的博客关于android7.0 以及 4.0 拍照封装的处理(点击跳转)
- 取得结果
|
|
- 将照片保存到相册如果你保存图片的路径是getExternalFilesDir() 媒体扫描器访问不到,只有你自己的应用可以访问,因此一下方法可以将图片保存到相册
|
|