拍照相册选择器

DemoMainActivity-->UIElementActivity-->AddPhotoActivity
涉及到的类
AbHttpUtil:网络请求类
AbFileUtil:文件操作类
AbDialogUtil:对话框管理类
AbToastUtil:Toast管理类
图片的来源包括本地相册和相机拍照

权限

    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
private ImageView imagview;
    /* 用来标识请求照相功能的activity */
    private static final int CAMERA_WITH_DATA = 3023;
    /* 用来标识请求gallery的activity */
    private static final int PHOTO_PICKED_WITH_DATA = 3021;
    /* 用来标识请求裁剪图片后的activity */
    private static final int CAMERA_CROP_DATA = 3022;
    File currentPhotoFile=null;

   //相机拍照
            case R.id.btCamera:
                try{
                String fileName = "camera_"+new Random().nextInt(1000)+
                        "-"+System.currentTimeMillis()+".png";
                String photo_dir = AbFileUtil.getImageDownloadDir(this);
                //照相机拍照得到的图片
                    currentPhotoFile = new File(photo_dir,fileName);
                    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE,null);
                    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(currentPhotoFile));
                    startActivityForResult(intent, CAMERA_WITH_DATA);


                }catch (Exception e){
                    e.printStackTrace();
                }
                break;
                //相册选择
            case R.id.btGrallery:
                try{
                    Intent intent = new Intent(Intent.ACTION_PICK,
                            MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                    intent.setType("image/*");
                    startActivityForResult(intent,PHOTO_PICKED_WITH_DATA);
                }catch (Exception e){
                    e.printStackTrace();
                }

                break;
--------------------------------------------------------------------------
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if(resultCode != RESULT_OK){
            return;
        }
        String currentFilePath = null;
        switch (requestCode){
            case CAMERA_WITH_DATA:
                currentFilePath = currentPhotoFile.getPath();

                Log.i("camera","从拍照获取的图片的路径是"+currentFilePath);
                imagview.setImageURI(Uri.fromFile(currentPhotoFile));
                break;
            case PHOTO_PICKED_WITH_DATA:
                Uri uri = data.getData();
                currentFilePath = getPath(uri);
                Log.i("camera","从相册获取到的图片路径"+currentFilePath);
                imagview.setImageURI(uri);
                break;
        }

    }

    /**
     * 从相册得到的url转换为SD卡中图片路径
     */
    public String getPath(Uri uri) {
        if(AbStrUtil.isEmpty(uri.getAuthority())){
            return null;
        }

        String[] proj = { MediaStore.Images.Media.DATA };
        CursorLoader loader = new CursorLoader(this, uri, proj, null, null, null);
        Cursor cursor = loader.loadInBackground();
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
    }


运行Logocat

I/camera  ( 4226): 从拍照获取的图片的路径是/storage/emulated/0/download/com.xxx.andbasetest/images/camera_685-1513759389911.png
I/camera  ( 4226): 从相册获取到的图片路径/storage/emulated/0/Pictures/新建相册/超级截屏_20171130_100259.png







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值