在开始之前,先说下正常调用相机的状况:
正常调用相机,在
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);
}
}
在返回的data中的是一个压缩过的Bitmap,而且压缩的比较厉害,所以根本不会产生OOM异常,我试过之后,确实是一个清晰度相当低的一张图片,根本不能满足需求,所以就需要返回原图!!!当然这个原图是需要处理的,否则依然会出现OOM。
切入正题
首先理下思路:
1.定义一个Uri用来标记相机拍摄的照片
2.通过Intent启动相机,同时传递Uri
3.在onActivityResult方法中获取到拍摄图片的Uri,就能找到我们拍摄的原图
需要注意的是:
有的手机的Uri此时传递回onActivityResult时,通过data. getData()时为空,这时可以用一个变量引用之前的Uri 就好了
权限问题
启动相机代码:
String s