Android开发 调用系统相机出现的问题

现在的项目用到了Android 手机的相机和相册 ,调用系统相册没问题

if (FileUtil.isExistSDCard()) {

            Intent intent;
            if (ViewUtil.getSDKVerSion() >= 19) {
                intent = new Intent(Intent.ACTION_OPEN_DOCUMENT, null);
            } else {
                intent = new Intent(Intent.ACTION_GET_CONTENT, null);
            }
            intent.addCategory(Intent.CATEGORY_OPENABLE);
            intent.setType("image/*");
            startActivityForResult(intent, Constants.IMAGE_CONSTANTS);
        } else {
            ViewUtil.toast(this, R.string.do_not_support);

        }

可是调用系统相机的时候出现问题了,手机适配的问题

    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 

你可能感兴趣的:(android)