拍照相册选择器

来源:互联网 发布:sybase恢复数据库 编辑:程序博客网 时间:2024/06/06 03:08
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







原创粉丝点击