Android标准的选择图片操作

打开相机一般来说有两种方式,一种是自己初始化相机,调用Camera组件,相对来说这种比较复杂,需要做的工作也比较多,还有一种是调用相机的隐式Intent打开相机,打开相机选择图片这种需求其实调用隐式Intent就可以了,没必要自己初始化camera对象。

在这里插入图片描述

下面是介绍的是如何打开camera相机;

/**  
     * 初始化相机控件  
     */  
    private void openCamera() {  
        String state = Environment.getExternalStorageState();  
        if (state.equals(Environment.MEDIA_MOUNTED)) {  
            // 部分机型更改了action的值,这里尽量使用系统定义的常量  
            Intent getImageByCamera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  
            if (TextUtils.isEmpty(H5Constant.bigPicPath)) {  
                H5Constant.bigPicPath = SysConfig.SD_IMAGE_PATH + H5Constant.tempImage;  
            }  
            // 将相机所拍摄图片保存在临时目录  
            getImageByCamera.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(H5Constant.bigPicPath)));  
            // 添加隐士intent跳转的判断,若没有对应的activity,则不做处理  
            if (getImageByCamera.resolveActivity(h5Activity.getPackageManager()) != null) {  
                h5Activity.startActivityForResult(getImageByCamera, H5Constant.h5CameraCode);  
            }  
        } else {  
            Toast.makeText(h5Activity, "请确认已经插入SD卡", Toast.LENGTH_LONG).show();  
        }  
    }  

首先是判断SD卡的状态,然后创建打开相机的Intent对象,同时设置参数将相机拍照的相片保存在指定目录用于我们后期的裁剪,旋转,压缩等操作;
这里有一个需要注意的地方时,在使用友盟测试的时候,部分机型调用如下代码会报错:

Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE"); 

这是由于不同的系统修改的隐式intent的字符串值…,所以我们尽量使用系统的常量,并增加判断,该intent是否有对应的activity:

if (getImageByCamera.resolveActivity(h5Activity.getPackageManager()) != null) {
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值