转载:http://www.jianshu.com/p/7052add136f2

之前一直不了解相机这里,也尝试写过但总是出错,这篇文章讲的很明白,特此记录,

主要介绍了打开相机进行拍照之后,获取拍照后的照片

问题1.调用系统相机拍照,并且把图片返回流程是什么?

答:1.定义一个Uri用来标记相机拍摄的照片

2.通过系统的action打开系统相机,同时传递Uri

3.拍照之后点击确定回调 onActivityResult()方法,在该方法中 获取拍照返回的Uri

注意 :有的手机的Uri此时传递回 onActivityResult 时,通过 data.getDatd( )时,为空,

这时可以用一个变量引用之前的Uri就好了;在返回的data中的是一个压缩过的Bitmap,

而且压缩的比较厉害,所以根本不会产生OOM异常作者试过之后,确实是一个清晰度

相当低的一张图片,根本不能满足需求,所以需要返回原图,当然这个原图是需要处理

的,否则依然会出现OOM

问题2 .图片保存路径,总是分不清楚,图片存在哪里,返回Uri的话,图片Uri可以转化为图片的路径string

path: 系统相册的路径

String path=Environment.getExternalStorageDirectory( )+File.separator+

Environmen.DIRECTORY_DCIM+ File.separator;

即path : /storage/emulated/0/DCIM/

存储图片(文件)的 名字 ,按照时间来命名:

private   String  getPhoneFileName(){

Date  date =new Date(System.currentTimeMillis( ));

SimpleDateFormat   dateFormat=new SimpleDateFormat("yyyyMMdd_HHmmss");

return "IMG_"+dateFormat.format(date);

}

图片存储的地址 = path+文件名+“.jpg”

问题3.涉及的权限

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.CAMERA"/>

下面是具体的步骤:

正常调用相机,在

          Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);startActivityForResult(intent, REQUEST_CODE);

然后重写onActivityResult

     @Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);}}

上面是整体的框架,下面是具体的代码:

String state = Environment.getExternalStorageState();if (state.equals(Environment.MEDIA_MOUNTED)) {File file = new File(path);if (!file.exists()) {file.mkdir();}String fileName = getPhotoFileName() + ".jpg"; //图片的文件名Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);photoUri = Uri.fromFile(new File(path + fileName));//记录图片的uriintent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri); //photoUri就是图片存储的位置startActivityForResult(intent, REQUEST_CODE);}
关于 图片返回部分 ,如下
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (resultCode != RESULT_OK) {return;}if (requestCode == REQUEST_CODE) {Log.d(TAG, "开始回调");Uri uri = null;if (data != null && data.getData() != null) {uri = data.getData();}if (uri == null) { //如果是空的,使用记录的Uri if (photoUri != null) {uri = photoUri;}} }

打开相机 ,拍照 ,完成 ,返回的图片,如图:

介绍到这里

打开android 系统的相机,拍照并且图片返回相关推荐

  1. Android自定义相机拍照、图片裁剪的实现

    原文:Android自定义相机拍照.图片裁剪的实现 最近项目里面又要加一个拍照搜题的功能,也就是用户对着不会做的题目拍一张照片,将照片的文字使用ocr识别出来,再调用题库搜索接口搜索出来展示给用户,类 ...

  2. android 调用相机并获取图片地址,Android 7.0使用FileProvider获取相机拍照的图片路径...

    这里主要是基于Android 7.0,Nougat 实现一个获取相机拍照的图片后,使用FileProvider把图片转换为实际的路径. 首先需要在AndroidManifest.xml声明调用相机的权 ...

  3. 解决三星调用系统相机拍照显示图片旋转90度横着的问题

    最近项目有个功能是调用系统相机拍照上传图片的功能,发现别的手机都没有ok,只有三星的显示图片很明显是旋转了90度,横着的.后来百度了解是三星对android相机单独做了优化(android碎片化,各种 ...

  4. android intent拍照,Android通过Intent方式调用相机拍照取得图片

    Android通过Intent方式调用相机拍照取得图片 AndroidManifest.XML 权限设置: XML布局设置: 代码: public classMainActivityextendsAp ...

  5. Unity for IOS 加载手机相册图片以及打开相机拍照获取图片

    Unity for IOS 加载手机相册图片以及打开相机拍照获取图片 最近想做一个使用unity for IOS获取手机图片的功能,所以就研究了一下 这里我们需要创建两个objective-c文件,最 ...

  6. android 7.0 裁剪,Android 7.0中拍照和图片裁剪适配的问题详解

    前言 Android 7.0系统发布后,拿到能升级的nexus 6P,就开始了7.0的适配.发现在Android 7.0以上,在相机拍照和图片裁剪上,可能会碰到以下一些错误: Process: com ...

  7. 小米部分手机在相册或相机拍照裁剪图片时,出现错误问题

    小米部分手机在相册或相机拍照裁剪图片时,出现错误问题 Unable to load resource 0x00000000 from pkg=com.android.systemui 报错型号:Mi ...

  8. android 三星手机拍照旋转90度,解决三星调用系统相机拍照显示图片旋转90度横着的问题...

    /** * 调用系统相机拍照工具类 * @author yao * */ public class CaremaUtil { private static String strImgPath = &q ...

  9. android自定义相机打开闪光灯,Android surfaceview 自定义相机 拍照(闪光灯、先后摄像头)...

    在咱们app中常常会调用相机进行拍照,而后把拍下来的图片保存在本地,再上传到服务端,网上有很多自定义的相机,也下载了很多,可是效果仍是不满意,因此决定自定义下,很少说了,直接上代码: public c ...

最新文章

  1. Linux常用命令及技巧4
  2. 654. Maximum Binary Tree最大二叉树
  3. (二) LtRecyclerView v2.x (更多实用方法)
  4. HTML中href src区别,html中 href 和 src 的定义与区别
  5. xshell有大量打印时,显示信息不全
  6. 学术词汇 | Ablation Test or Ablation Experiment
  7. oracle10g 安装手册 linux,oracle10g在x86linux上的安装步骤
  8. Python中DataFrame按照行遍历
  9. linux 编辑文件 cat 跳到指定行,Linux文件操作详解(八)--文件的创建和编辑(vi/vim命令和cat命令)...
  10. 敏捷开发相关概念——学习笔记
  11. 【Hoxton.SR1版本】Spring Cloud Eureka服务注册中心单节点搭建
  12. OkHttp Interceptors(二)
  13. 计算机辅助药物设计中的分子动力学模拟
  14. Unit Of Measure UOM in Oracle Applications Inventory
  15. 分数化成有限小数的方法_怎样把分数化成小数
  16. 近期微信登录10005报错,解决办法
  17. 前端和后端的英文_前端、后端、全栈是什么意思?薪资怎么样?
  18. 德州扑克游戏算法讲解
  19. 全国356城所有银行网点数据(截至2022.2.13)
  20. 计算机音乐博士,美国音乐博士解析

热门文章

  1. java entry getvalue_Java Entry.getValue方法代碼示例
  2. (co-,contra-,in-)variance in Scala, what is [+-A]
  3. 大数据之路、阿里巴巴大数据实践读书笔记 --- 第二章、日志采集
  4. 国密SM3加密算法工具类(非对称)
  5. ISP算法----基本DPC算法实现代码
  6. 如何用解耦合提升开发效率?闲鱼团队有了新发现
  7. Window10中Dev-C++ 使用EasyX绘图库编程入门
  8. 计算机科学导论实验(一)
  9. 隐私信息检索(PIR)
  10. 计算机网络ieee802.3标准,计算机网络实验四IEEE 802.3协议分析和以太网