现在的项目用到了Android 手机的相机和相册 ,调用系统相册没问题
if (FileUtil.isExistSDCard()) {
Intent intent; }
可是调用系统相机的时候出现问题了,手机适配的问题
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, getCameraUri());
startActivityForResult(intent, Constants.CAMERE_CONSTANTS);
我的sony 手机能够从 @Override
protected void onActivityResult(int arg0, int arg1, Intent arg2) {
super.onActivityResult(arg0, arg1, arg2);
}
arg2 中获取数据 ,也就是不为空,但公司还有个google 原生的手机 和一个numa手机 获取数据时出现
android camera : Failure delivering result ResultInfo{who=null, request=0, result=-1, data=null} to activity
网上找了一段时间 ,都是推荐去掉这个
intent.putExtra(MediaStore.EXTRA_OUTPUT, getCameraUri()); 不设置图片的的返回的Uri,结果是可以获取到数据
通过//Bitmap bitmap = (Bitmap) arg2.getExtras().get("data"); 可是 ,这里有个问题就是 获取到的图片被压缩了 ,变的很小 ,Android 源码好像说是为了防止oom,
所以还是用上面的方法 不过 获取图片的时候不是用arg2
而是通过这种方法
@Override
protected void onActivityResult(int arg0, int arg1, Intent arg2) {
super.onActivityResult(arg0, arg1, arg2);
// 相机
if (Constants.CAMERE_CONSTANTS == arg0) {
try {
File file = new File(imagePath);
Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(
getContentResolver(), file.getAbsolutePath(), null,
null));
setIntent(uri);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
获取到图片的uri