当前课程知识点:Android应用开发基础 >  第八章 多媒体 >  8.1 相机服务 >  8.1 相机服务

返回《Android应用开发基础》慕课在线视频课程列表

8.1 相机服务在线视频

下一节:8.1.1实践案例-拍照服务

返回《Android应用开发基础》慕课在线视频列表

8.1 相机服务课程教案、知识点、字幕

本节我们介绍Android的拍照服务

现在Android智能手机都会提供拍照的功能

大部分的手机的摄像头的像素都在1000万以上

有的甚至会更高

它们大多都会支持光学变焦 曝光以及快门等

大部分的应用中

图片分享已成为主要的信息载体

比如微信的朋友圈

QQ的图片分享

微博的图片分享

相机也需要使用Android的系统服务

如图所示

Android系统为了降低系统服务的编程难度

研发了大量Manager组件

这些独立的管理组件

可以简化访问系统服务的难度

我们主要通过Photo Manager

去访问系统的拍照和相册服务

下面我们看一个相册的使用实例

我们完成了一个包含拍摄照和从相册中

选择两个按钮的应用

点击拍照

使用相机拍摄照片

获得用户存储权限后显示刚拍摄的照片

点击从相册中选择一张图片

从手机相册中选择一张图片并显示

下面我们看一下拍照服务如何实现

首先确定文件路径

1. 创建File对象

用于存储拍摄照片

使用getExternalCacheDir获取SD卡路径

将拍摄照片命名为output.jpg文件

2. 低于Android7.0的版本

可以直接将File对象转换为Uri对象

高于Android7.0之后的版本

不能直接使用Uri

需要使用FileProvider

将Uri封装后共享给外部对象

启动相机的流程如图所示

1. 新建一个相机系统服务的意图

2. 为系统服务传递文件路径的Uri地址

3. 使用startActivityForResult开启相机服务

并要求相机拍照系统服务完成后返回值给视图

在Activity中重写onActivityResult() 方法

处理相册系统服务结果回调

当拍照系统服务完成后

系统会自动回调该方法

1. 拍照服务的图片放入用户传入的Uri地址

2. 将拍摄的照片显示出来

FileProvider注册的流程如图所示

1. 在配置信息文件中新建一个provider标签

2. android name值是固定的

3. android authoritiesde的值

与FileProvider中getUriForFile的值一致

4. Uri的共享路径设置为@xml/file_paths

下面来看一下Uri共享路径设置

在res/xml目录新建file_paths文件

设置外部路径

external-path name="my_images"

在android配置信息文件中

我们设置用户的SD卡权限

这样我们完成了所有的拍照功能

下面我们看一下访问相册服务如何实现

首先需要申请SD卡读写权限

1. 使用checkSelfPermission() 检查权限

请求某个权限时

需要检查这个权限是否已经被用户授权

已经授权的权限重复申请

可能会让用户产生厌烦

权限名称为

Manifest.permission.WRITE_EXTERNAL_STORAGE

这个函数的返回值

与PackageManager.PERMISSION_GRANTED比较

一致则代表有权限

不一致代表没有权限

2. 使用requestPermissions() 申请权限

由于该方法是异步的 所以无返回值

当用户处理完授权操作时

会回调Activity的

onRequestPermissionsResult()方法

3. 在Activity中重写

onRequestPermissionsResult() 方法

来处理权限结果回调

当用户处理完授权操作时

系统会自动回调该方法

如果用户同意则打开相册

下面我们看一下打开系统相册的方法

第一步 新建一个访问相册系统服务的意图

2. 为系统服务设置访问文件类型

3. 使用startActivityForResult

开启打开相册服务

并要求打开相册系统服务完成后

返回值给视图

那么下面我们在Activity中

重写onActivityResult() 方法

来处理相册系统服务结果回调

1. 根据手机系统版本号处理返回的数据

2. 4.4及以上系统

使用handleImageOnKitKat(data)处理数据

3. 4.4及以下系统使用

handleImageBeforeKitKat(data)处理数据

4.4及以上系统使用handleImageOnKitKat(data)

处理数据的流程比较复杂

如图所示

1. 根据返回值获取文件的Uri路径

2. 根据Uri判断文件是否为文档

3. 如果Uri显示为本机的媒体文件

直接获取文件的路径

4. 如果是下载的文件

获取文件的下载路径

5. 如果是Content的类型

直接使用getImagePath获取文件的路径

6. 如果是File类型

直接使用Uri直接获取文件路径

7. 根据文件路径显示图片

Android 4.4以下图片处理的方式比较简单

1. 根据返回值获取文件的Uri路径

2. 根据Uri获取文件的路径

3. 根据文件的路径显示图片

下面我们看一下

实现根据Uri地址获取文件的流程

如图所示

1. 通过Uri查询图片信息

2. 在DATA列存放了图片的地址

通过cursor取出

那么显示图片流程

如图所示

1. 如果图片路径不为空

使用Bitmap将图片解码为位图文件

2. 设置组件的源文件

Android应用开发基础课程列表:

课程教案

-1 Android应用开发基础-课程标准

-2 Android应用开发基础-教案

第一章 Android概述

-讨论:Android应用开发基础资源下载地址

-讨论的问题:华为“鸿蒙系统”会取代安卓吗?

-Android Studio4.1.2安装常用问题汇总2021.3.15

-1.1 Android概述

--1.1 Android概述

--1.1 Android Studio安装与配置-实践案例

-1.1 Android概述--作业

-1.2 Android程序

--1.2 Android程序

--1.2 第一个Android应用程序-实践案例

-1.2 Android程序--作业

-1.3 Android程序调试

--1.3 Android程序调试

--1.3 Android程序调试-实践案例

-1.3 Android程序调试--作业

-讨论-完成第一个Android程序需要多长时间?

第二章 Android视图

-讨论-什么是Activity?

-2.1 Activity概述

--2.1 Activity概述

--2.1.1 实践案例-Activity生命周期

--2.1.2 实践案例-Activity跳转和数据传递

-2.1 Activity概述--作业

-2.2 Activity应用

--2.2 Activity应用

--2.2 实践案例-Activity四种启动模式

-第2章 Android视图--2.2 Activity应用

-讨论-怎么理解常用的四种启动模式?

第三章 Android组件

-讨论:Android在五个常用布局外还有哪几种布局方式?

-3.1 Activity布局

--3.1 Activity布局

--3.1 实践案例-Android布局

-3.1 Activity布局--作业

-3.2 Android基础组件

--3.2 Android基础组件

--3.2.1 实践案例-文本和按钮组件

--3.2.2 实践案例-编辑框和进度条组件

-3.2 Android基础组件--作业

-3.3 Android中级组件

--3.3 Android中级组件

--3.3.1 实践案例-复选框和开关组件

--3.3.2 实践案例-单选框和图像组件

-3.3 Android中级组件--作业

-3.4 Android适配器

--3.4.1 系统适配器

--3.4.2 自定义适配器

--3.4.1实践案例-系统适配器

--3.4.2 实践案例-自定义适配器

-3.4 Android适配器--作业

-讨论-如何解决Android的布局嵌套问题的?

第四章 Android Fragment

-讨论:Fragment的优点?

-4.1 Fragment碎片组件

--4.1.1 Fragment静态加载

--4.1.2 Fragment与Activity通讯

--4.1.3 Fragment动态加载

--4.1.1 实践案例-Fragment静态加载

--4.1.2 实践案例-Fragment的动态加载

-4.1 Fragment碎片组件--作业

-4.2 ViewPager翻页类组件

--4.2.1 ViewPager翻页类组件

--4.2.2 引导页和标题栏

--4.2 实践案例-引导页和选项卡

-4.2 ViewPager翻页类组件--作业

-讨论:fragment与activity的生命周期有哪些不同?

第五章 广播

-讨论:Android广播有什么作用?

-5.1 Android广播概述

--5.1 Android广播概述

--5.1.1 实践案例-手机电量显示

--5.1.2 实践案例-手机充电状态显示

-5.1 Android广播概述--作业

-5.2 Android广播工作原理

--5.2 Android广播工作原理

--5.2.1 实践案例-手机网络状态显示

--5.2.2 实践案例-短消息接收

-5.2 Android广播工作原理--作业

-5.3 自定义广播

--5.3 自定义广播

--5.3 实践案例-自定义广播与有序广播

-第5章 广播--5.3 自定义广播

-5.4 有序广播

--5.4有序广播

--5.4.2 实践案例-登录广播-记住密码

--5.4.2 实践案例-登录广播-强制退出

-第5章 广播--5.4 有序广播

-讨论:广播的动态注册和静态注册有什么区别?

第六章 Android服务

-讨论:Android的服务有什么作用?

-6.1 系统服务概述

--6.1 系统服务概述

-6.1 系统服务概述--作业

-6.2 访问系统服务

--6.2 访问系统服务

--6.2 实践案例-通知服务

-6.2 访问系统服务--作业

-6.3 自定义服务

--6.3 自定义服务

--6.3.1 实践案例-启动服务

--6.3.2 实践案例-绑定服务

--6.3.3 实践案例-后台服务

-第6章 Android服务--6.3 自定义服务

-6.4 多线程

--6.4 多线程

--6.4.2 实践案例-MyService下载

--6.4.3 实践案例-MyIntentService

--6.4.4 实践案例-AsyncTask实现对话框下载

--6.4.5 实践案例-下载精灵

-第6章 Android服务--6.4 多线程

-讨论:Android中怎么启动Service?

第七章 内容提供者ContentProvider

-讨论:ContentProvide的作用是什么?

-7.1 Android运行权限

--7.1 Android运行权限

--7.1 实践案例-拨打电话与发送短信

-7.1 Android运行权限--作业

-7.2 URL URI概述

--7.2 URL URI概述

-第7章 内容提供者ContentProvider--7.2 URL URI概述

-7.3 ContentProvider概述

--7.3 ContentProvider概述

--7.3 实践案例-读取联系人

-第7章 内容提供者ContentProvider--7.3 ContentProvider概述

-7.4 访问通讯录

--7.4 访问通讯录

--7.4.1 实践案例-读取通讯录

--7.4.2 实践案例-添加通讯录

--7.4.3 实践案例-删除更改通讯录

-第7章 内容提供者ContentProvider--7.4 访问通讯录

-7.5 课后作业案例

--7.5.1 实践案例-文件管理器-查看

--7.5.2 实践案例-文件管理器-播放

-讨论:ContentProvide如何使用?

第八章 多媒体

-讨论:Android多媒体主要应用于哪些场景?

-8.1 相机服务

--8.1 相机服务

--8.1.1实践案例-拍照服务

--8.1.2 实践案例-相册服务

-8.1 相机服务--作业

-8.2 音视频服务

--8.2 音视频服务

--8.2.1实践案例-音乐播放

--8.2.2 实践案例-视频播放

-8.2 音视频服务--作业

-讨论:Android视频组件的使用流程?

第九章 网络技术

-讨论:为什么使用Json作为网络的通讯格式?

-9.1 网络服务概述

--9.1 网络服务概述

--9.1 实践案例-WebView和Http服务

-9.1 网络服务概述--作业

-9.2 网络框架

--9.2 网络框架

--9.2 实践案例-okhttp框架

-9.2 网络框架--作业

-9.3 Json

--9.3 Json

--9.3 实践案例-json协议

-第9章 网络技术--9.3 Json

-9.4 Volley

--9.4 volley

--9.4 实践案例-volley框架

-第9章 网络技术--9.4 Volley

-讨论:OkHttp和Volley的有什么区别?

第十章 数据存储

-讨论:Android的存储方式有哪几种?

-10.1 文件存储

--10.1 文件存储

--10.1.1 实践案例-文件读写布局

--10.1.2 实践案例-文件读写

--10.1.3 实践案例-SharedPreference文件读写

-10.1 文件存储--作业

-10.2 数据库存储

--10.2 数据库存储

--10.2.1 实践案例-Sqlite数据库操作布局

--10.2.2 实践案例-Sqlite数据库操作

-10.2 数据库存储--作业

-讨论:SQLite的基础操作的流程是什么?

课程实训(不计入考核)

-第1章 实训简介以及开发环境配置

--实训项目简介PPT以及实训指导书

--1.1 实训项目简介

--1.2 项目开发环境配置

-第2章 在线音乐播放器整体设计以及服务端开发

--在线音乐播放器整体介绍PPT以及服务端开发实训指导书

--2.1 在线音乐播放器-整体设计

--2.2 在线音乐播放器-服务端开发

-第3章 在线音乐播放器-客户端开发

--3.1 客服端开发实训指导书以及PPT

--3.2 客户端开发-讲课视频

-第4章 在线音乐播放器-完整版

--4.1 实训指导书以及PPT

--4.2 在线音乐播放器-完整版授课视频

-第5章 QQ聊天项目

--5.1 实训指导书以及PPT

--5.2 QQ聊天项目授课视频

-第6章 在线点餐系统

--6.1 实训指导书以及PPT

--6.2 在线点餐系统授课视频

8.1 相机服务笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。