您的位置:首页 > 移动开发 > Android开发

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

2014-12-11 17:05 441 查看
现在的项目用到了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 camera