调用系统相机,相册设置头像

最近在写项目再次用到了调用相机相册里面的图片去设置头像,由于功能不经常使用,很容易忘掉,所以记录一下小知识点

1.添加权限

<!-- 许可使用照相机 -->
    <uses-permission android:name="android.permission.CAMERA" />

2.调用系统相机

 //从相机获取图片
    private void getPhotoFromCamera(){
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        // 下面这句指定调用相机拍照后的照片存储的路径
        intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(
                Environment.getExternalStorageDirectory(), "head.png")));
        startActivityForResult(intent, GET_PHOTO_FROM_CAMERA);
    }
3.调用系统相册

//从相册获取图片
    private void getPhotoFromAlbum(){
        Intent intent = new Intent(Intent.ACTION_PICK, null);
        intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                "image/*");
        startActivityForResult(intent, GET_PHOTO_FORM_ALBUM);
    }
4.调用系统裁剪

//调用系统裁剪照片
    private void photoClip(Uri uri) {
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(uri, "image/*");
        // 设置在开启的Intent中设置显示的VIEW可裁剪
        intent.putExtra("crop", "true");
        // aspectX aspectY 是宽高的比例
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
        // outputX outputY 是裁剪图片宽高
        intent.putExtra("outputX", 150);
        intent.putExtra("outputY", 150);
        intent.putExtra("return-data", true);
        startActivityForResult(intent, PHOTO_CLIP);
    }

5.结果处理

调用相机,相册,系统裁剪结果统一在onActivityForResult中处理

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode){
            case GET_PHOTO_FROM_CAMERA:
                if(resultCode == -1){
                    L.d("+++++++++++++++++++++++++++++相机回调成功");
                    File file = new File(Environment.getExternalStorageDirectory()
                            + "/head.png");
                    if (file.exists()) {
                        photoClip(Uri.fromFile(file));
                    }
                }
                break;
            case GET_PHOTO_FORM_ALBUM:
                L.d("+++++++++++++++++++++++++++++相册回调成功");
                if (data != null) {
                    photoClip(data.getData());
                }
                break;
            case PHOTO_CLIP:
                L.d("++++++++++++++++++++++++++++裁剪回调成功");
                if (data != null) {
                    Bundle extras = data.getExtras();
                    if (extras != null) {
                        Bitmap photo = extras.getParcelable("data");
                        headCircleImageView.setImageBitmap(photo);
                    }
                }
                break;
        }
    }

requestCode根据自己的实际情况定义


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值