Android13-图片视频选择器

在compileSDK = 33 时,谷歌在安卓新增了 图片选择器 功能,支持单选、多选、选图片、视频等操作,并且不需要额外获取照片/音频权限。

具体实现如下:

1:请求

        Log.d(TAG, "Build.VERSION.SDK_INT" + Build.VERSION.SDK_INT);
        if (Build.VERSION.SDK_INT >= 33) {
            //图片选择器单选
//            Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES);
//           在complieSDK32已废弃
//            startActivityForResult(intent,  PHOTO_PICKER_REQUEST_CODE);
            //图片选择器多选
            final int maxNumPhotosAndVideos = 3;
            Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES);
//            intent.setType("video/*");//仅选择视频
            intent.setType("image/*");//仅选择图片
            intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, maxNumPhotosAndVideos);
            launcher.launch(intent);
        } else {
            //我们需要自己开发
        }

2:响应

2.1单选:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            if (requestCode == PHOTO_PICKER_REQUEST_CODE) {
                Uri currentUri = null;
                if (data != null) {
                    currentUri = data.getData();
                    binding.image.setImageURI(currentUri);
                }
                Log.d(TAG, "currentUri:" + currentUri);
            }
        }
    }

2.2多选:

        launcher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
                new ActivityResultCallback<ActivityResult>() {
            @Override
            public void onActivityResult(ActivityResult result) {
                if (result != null) {
                    if (result.getData() != null && result.getResultCode() == RESULT_OK) {
                        Intent intent = result.getData();
                        for (int i = 0; i < intent.getClipData().getItemCount(); i++) {
                            Uri uri = intent.getClipData().getItemAt(i).getUri();
                            Log.d(TAG, "multiple current Uri:" + uri);
                            // Do stuff with each photo/video URI.
                        }
                    }
                }
            }
        });

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
最近项目中用到多图选择上传的需求,考虑到android机型众多问题就自己花时间写了一个,测试了大概60款机型,出现过一些问题也都一一修复了,基本上稳定了特分享出来,界面UI也是商用级的开发者不用在做太多修改了,界面高度自定义,可以设置符合你项目主色调的风格,集成完成后就可以拿来用。 重要的事情说三遍记得添加权限 < uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> < uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> < uses-permission android:name="android.permission.CAMERA" /> 功能特点: 1.适配android7.0系统 2.解决部分机型裁剪闪退问题 3.解决图片过大oom闪退问题 4.动态获取系统权限,避免闪退 5.支持相片or视频的单选和多选 6.支持裁剪比例设置,如常用的 1:1、3:4、3:2、16:9 默认为图片大小 7.支持视频预览 8.支持gif图片 9.支持一些常用场景设置:如:是否裁剪、是否预览图片、是否显示相机等 10.新增自定义主题设置 11.新增图片勾选样式设置 12.新增图片裁剪宽高设置 13.新增图片压缩处理 14.新增录视频最大时间设置 15.新增视频清晰度设置 16.新增QQ选择风格,带数字效果 17.新增自定义 文字颜色 背景色让风格和项目更搭配 18.新增多图裁剪功能 19.新增LuBan多图压缩 20.新增单独拍照功能 javaapk之前也介绍过很多类似的项目,感兴趣的可以在javaapk图片处理分类中下载。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值