
拍照和从相册选择图片
发布日期: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`类型,分别处理拍照和相册返回的数据。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年05月02日 03时34分56秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Spring 和 DI 依赖注入
2019-03-15
中序线索二叉树的遍历
2019-03-15
laravel server error 服务器内部错误
2019-03-15
Linux驱动实现GPIO模拟I2C读写操作
2019-03-15
iJ配置Maven环境详解
2019-03-15
仿QQ登陆界面
2019-03-15
N皇后问题解法(递归+回朔)
2019-03-15
面试题 08.01. 三步问题
2019-03-15
剑指 Offer 11. 旋转数组的最小数字
2019-03-15
word文档注入(追踪word文档)未完
2019-03-15
作为我的第一篇csdn博客吧
2019-03-15
ajax异步提交失败
2019-03-15
一道简单的访问越界、栈溢出pwn解题记录
2019-03-15
Stream 某些API
2019-03-15
测试调用另一台电脑ip是否有用
2019-03-15
mos-excel集成文档
2019-03-15
chat 快问!
2019-03-15
Linux总结
2019-03-15
DKT—Going Deeper with Deep Knowledge Tracing
2019-03-15
响应的HTTP协议格式+常见的响应码
2019-03-15