转载: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.涉及的权限
下面是具体的步骤:
正常调用相机,在
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_CODE);
然后重写onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
}
上面是整体的框架,下面是具体的代码:
打开相机 ,拍照 ,完成 ,返回的图片,如图:
介绍到这里