安卓笔记——图片选择及相机拍照

Posted _23_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓笔记——图片选择及相机拍照相关的知识,希望对你有一定的参考价值。

实现拍照功能 步骤

1、引入两个第三方依赖包

implementation 'io.github.lucksiege:pictureselector:v2.7.2'
implementation 'com.github.bumptech.glide:glide:4.12.0'

在这里插入图片描述

2、添加文件读写权限和相机拍照权限

 <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" />

 android:requestLegacyExternalStorage="true"

在这里插入图片描述
3、拍照功能,调用第三方框架,Glide图片封装工具类
在这里插入图片描述

拍照

findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//                拍照功能
                PictureSelector.create(MainActivity.this)
                        .openCamera(PictureMimeType.ofImage())
                        .imageEngine(GlideEngine.createGlideEngine())
                        .forResult(new OnResultCallbackListener<LocalMedia>() {
                            @Override
                            public void onResult(List<LocalMedia> result) {
                                // onResult Callback

                                for (LocalMedia localMedia : result){
                                    Log.i("MainActivity",localMedia.getPath());
                                }
                                //todo 显示图片
                                //网络请求xUtils https 上传  mock  后台接收
                                //读取图片  io流程   流数据转成图片
                                Glide.with(MainActivity.this)
                                        .load(Uri.fromFile(new File(result.get(0).getRealPath())))
                                        .into(imageView);
                            }
                            @Override
                            public void onCancel() {
                                // onCancel Callback
                            }
                        });
            }
        });

选择相片

findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//                选择照片功能
                PictureSelector.create(MainActivity.this)
                        .openGallery(PictureMimeType.ofImage())
                        .imageEngine(GlideEngine.createGlideEngine())
                        .forResult(new OnResultCallbackListener<LocalMedia>() {
                            @Override
                            public void onResult(List<LocalMedia> result) {
                                // onResult Callback

                                for (LocalMedia localMedia : result){
                                    Log.i("MainActivity",localMedia.getPath());
                                }
                                //todo 显示图片
                                //网络请求xUtils https 上传  mock  后台接收
                                //读取图片  io流程   流数据转成图片
                                Glide.with(MainActivity.this)
                                        .load(Uri.fromFile(new File(result.get(0).getRealPath())))
                                        .into(imageView);
                            }
                            @Override
                            public void onCancel() {
                                // onCancel Callback
                            }
                        });
            }
        });

4、如果报错,uses-sdk版本太低,进行修改
在这里插入图片描述

以上是关于安卓笔记——图片选择及相机拍照的主要内容,如果未能解决你的问题,请参考以下文章

Flutter - 图片/视频选择器(支持拍照及录制视频)

hybird app项目实例:安卓webview中HTML5拍照图片上传

Flutter从相册选择图片和相机拍照(image_picker)

安卓开发从本地相册或拍照上传图片

无法替换图像视图,用于来自相机或画廊的图像(它不起作用)

从片段中的相机拍照