拍照和从相册选择图片
发布日期:2021-05-24 17:12:36 浏览次数:24 分类:精选文章

本文共 1173 字,大约阅读时间需要 3 分钟。

一会儿,我需要调用`DialogUtil.showDoubleNoneTitleTextDialog`方法,显示一个标题为“选择图片”的对话框。用户选择了“拍照”或“图库”两种选项。对话框创建了两个`OnDialogClickListener` 实例。第一个`OnDialogClickListener`处理拍照功能调用:当用户点击拍照选项时,调用`takPicture()`方法。第二个`OnDialogClickListener`处理打开本地相册的功能调用:当用户点击“图库”选项时,调用`openAlbum()`方法。`takPicture()`方法的实现如下:1. 检查SD卡是否被挂载:使用`Environment.getExternalStorageState()`方法,判断是否挂载成功。2. 如SD卡已挂载,进入拍照功能。3. 创建一个临时目录`outDir`,指定`Environment.DIRECTORY_PICTURES`,并命名为`getExternalStoragePublicDirectory()`。如果目录不存在,则创建新目录。然后,创建一个名为`outFile.jpg`的文件,生成文件路径,保存在变量`picFileFullName`中。最后,启动`MediaStore.ACTION_IMAGE_CAPTURE`的活动,传递输出文件的URI,并设置视频质量为1(高)以优化图像质量。如果没有挂载SD卡,输出错误日志提示用户检查SD卡状态。`openAlbum()`方法的实现如下:1. 创建一个`Intent`对象`intentFromGallery`,设置`Intent.ACTION_GET_CONTENT`和`Intent.CATEGORY_OPENABLE`。2. 设置文件类型为`image/*`。3. 如果系统版本支持`Android Kitkat及更高版本`,使用`startActivityForResult`启动相册,传递`SELECT_PIC_KITKAT`。4. 否则,使用`CREATE_REQUESTCODE`。`onActivityResult()`方法实现如下:根据`requestCode`判断返回类型:1. `CREATE_REQUESTCODE`:针对旧版本。2. `SELECT_PIC_KITKAT`:针对`Android Kitkat及更高版本`。3. `CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE`:处理拍照结果。如有数据,通过`getData()`获取返回的URI,并调用`getRealPathFromURI`方法获取实际路径。根据请求类型设置相应的图像视图。处理不同`requestCode`类型,分别处理拍照和相册返回的数据。
上一篇:实时判断EditText里面输入的字数
下一篇:打开相机拍照和从本地相册获取图片以及图片的剪切

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年05月02日 03时34分56秒