当前课程知识点:Android应用开发基础 > 第八章 多媒体 > 8.1 相机服务 > 8.1.2 实践案例-相册服务
本节我们介绍如何使用手机的相册服务
点击“从相册中选择”按钮
选择相册中的图片
并将该图片显示出来
进入MainActivty类
在Button响应函数onClick中
新建chooseFromAlbum()方法
在chooseFromAlbum方法中
使用ContextCompat.checkSelfPermission()方法
检查程序是否有SD卡写权限
如果没有该权限
则通过ActivityCompat.requestPermission()
申请SD卡写权限
否则调用openAlbum()方法
在openAlbum()中构建Intent意图对象
将它的action指定为
android.intent.action.GET_CONTENT
并使用setType()方法设置访问文件类型为image
然后调用startActivityForResult()方法
打开相册程序
使用Ctrl+O快捷键重写
onRequsetPermissionsResult()方法
用来处理权限申请
如果用户同意则调用openAlbum打开相册
如果不同意
则提示“you denied the permission”
当从相册选择完图片
回到onActivityResult()方法时
如果是4.4及以上系统的手机
就调用handleImageOnKitKat()方法处理图片
否则就调用handleImageBeforeKitKat()方法
来处理图片
在handleImageOnKitKat()方法中
定义字符串变量imagepath为空
创建Uri对象
并使用data .getData()方法
获取文件的uri路径
根据uri判断路径是否为文件类型
如果是则定义字符串变量docId
通过getDoucumentId()方法获取文档的id
其中
如果该Uri文件为本机媒体文件
则定义字符串变量id
通过split()方法解析出数字格式的id
并通过调用getImgagePath()方法
获取文件过滤后的路径imagePath
如果该Uri文件为下载文件
则通过ContentUris.withAppendedId()方法
获取文件的下载路径imagePath
如果返回的Uri为content类型
则使用普通方式处理
如果是file类型的Uri
直接获取图片路径即可
最后调用displayImage()方法
根据图片路径显示图片
点击Alt+Enter快捷键生成displayImage()方法
和getImagePath()方法
进入handleImageBeforeKitKat()
创建Uri对象
并使用data.getData()方法
获取文件的uri路径
新建字符串变量imagePath
调用getImagePath()方法获取图片的真实路径
再调用displayImage()方法将图片显示出来
进入getImagePath()方法
创建字符串变量path代表图片路径
并赋值为空
调用getContentResolver().query()
获取图片路径的集合cursor
如果cursor不为空
则调用cursor.moveToFirst()
移动到集合的第一行
调用cursor.getColumnIndex()返回列的索引值
并根据索引值
调用cursor.getString()方法
返回当前行所指定的列的值
调用cursor.close()释放资源
返回图片的路径的值
进入displayImage()方法
如果获取的图片路径不为空
则调用BitmapFactory.decodeFile()方法
将图片解码为位图文件
并将Imageview的源文件设置为bitmap
如果图片路径为空
则提示“failed to get image"
代码编写完成后运行程序
点击“从相册中选择”按钮选择相册中的图片
该图片显示在ImageView
这就是搜集相册服务的全部内容
请大家按照讲课的内容完成手机相册服务的功能
在Android的手机中分别运行
通过实例理解手机相册服务访问流程
-Android Studio4.1.2安装常用问题汇总2021.3.15
-1.1 Android概述
--1.1 Android Studio安装与配置-实践案例
-1.1 Android概述--作业
-1.2 Android程序
-1.2 Android程序--作业
-1.3 Android程序调试
-1.3 Android程序调试--作业
-2.1 Activity概述
-2.1 Activity概述--作业
-2.2 Activity应用
-第2章 Android视图--2.2 Activity应用
-3.1 Activity布局
-3.1 Activity布局--作业
-3.2 Android基础组件
-3.2 Android基础组件--作业
-3.3 Android中级组件
-3.3 Android中级组件--作业
-3.4 Android适配器
-3.4 Android适配器--作业
-4.1 Fragment碎片组件
-4.1 Fragment碎片组件--作业
-4.2 ViewPager翻页类组件
-4.2 ViewPager翻页类组件--作业
-讨论:fragment与activity的生命周期有哪些不同?
-5.1 Android广播概述
-5.1 Android广播概述--作业
-5.2 Android广播工作原理
-5.2 Android广播工作原理--作业
-5.3 自定义广播
-第5章 广播--5.3 自定义广播
-5.4 有序广播
--5.4有序广播
-第5章 广播--5.4 有序广播
-6.1 系统服务概述
-6.1 系统服务概述--作业
-6.2 访问系统服务
-6.2 访问系统服务--作业
-6.3 自定义服务
-第6章 Android服务--6.3 自定义服务
-6.4 多线程
--6.4 多线程
-第6章 Android服务--6.4 多线程
-7.1 Android运行权限
-7.1 Android运行权限--作业
-7.2 URL URI概述
-第7章 内容提供者ContentProvider--7.2 URL URI概述
-7.3 ContentProvider概述
-第7章 内容提供者ContentProvider--7.3 ContentProvider概述
-7.4 访问通讯录
-第7章 内容提供者ContentProvider--7.4 访问通讯录
-7.5 课后作业案例
-8.1 相机服务
--8.1 相机服务
-8.1 相机服务--作业
-8.2 音视频服务
-8.2 音视频服务--作业
-9.1 网络服务概述
-9.1 网络服务概述--作业
-9.2 网络框架
--9.2 网络框架
-9.2 网络框架--作业
-9.3 Json
--9.3 Json
-第9章 网络技术--9.3 Json
-9.4 Volley
-第9章 网络技术--9.4 Volley
-10.1 文件存储
--10.1.3 实践案例-SharedPreference文件读写
-10.1 文件存储--作业
-10.2 数据库存储
-10.2 数据库存储--作业
-第1章 实训简介以及开发环境配置
-第2章 在线音乐播放器整体设计以及服务端开发
-第3章 在线音乐播放器-客户端开发
-第4章 在线音乐播放器-完整版
-第5章 QQ聊天项目
-第6章 在线点餐系统