当前课程知识点:Android应用开发基础 >  第五章 广播 >  5.1 Android广播概述 >  5.1 Android广播概述

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

5.1 Android广播概述在线视频

下一节:5.1.1 实践案例-手机电量显示

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

5.1 Android广播概述课程教案、知识点、字幕

本节我们介绍广播

我们上学时都有过这样的经历

当我们在火车站列车候车室中等待时

每当有某次列车开始检票

或者进站上车时

就会播放通知

来告知在候车室等待的人们该消息

为了便于进行系统级别的消息通知

Android引入了一套类似的广播机制

然而比上述情景要灵活得多

常用的手机卫士

就有很多模块使用了广播机制

我们看一下应用的具体实例

比如在手机卫士中进行电量的管理

骚扰电话的拦截和显示

骚扰短信的拦截和显示

这些例子都使用了广播机制

什么是广播呢

广播有如下的一些特征

一 广播是一种数据传送与交换方式

二 广播传送数据时存在两个固定角色

1 负责发送广播的发送方

2 可以接收广播的接收方

广播发送方只负责按特定通道 频道

来发送数据

并不考虑接收

广播接收方只有通过特定通道 频道

才能接收到数据

什么是Android广播呢

Android的广播有如下的一些特点

Android广播Broadcast

是Android四大核心组件之一

1 以广播发送者分类

广播可被分为系统广播和自定义广播

2 Android广播机制

是Android系统实现应用程序之间

数据传递的一种方式

这种方式被称为跨进程间通讯(IPC)

应用程序是如何应用Android广播呢

Android会通过系统广播

告知当前设备中所有应用程序

系统环境

或系统应用发生的变化

设备中的应用程序

可以根据需要来接收这些广播

以实现相应的业务

如下图所示

这是一个手机卫士应用的例子

设备收到短信与电话后

产生了Android的广播

应用程序可以拦截

发送到设备中的短信与电话

还可以获取设备中电池电量的变化情况

获取设备启动 关机的信息

Android系统是系统广播的发送方

应用程序需要编写广播接收器来接收广播

Android有哪些广播呢

如图所示

下面是Android的广播类型

通过Android的广播Action的名字

就可以使用Android的广播

比如我们常用的有如下几种

1 SMS_RECEIVED_ACTION

接收到短信时 系统会发送这个广播

2 ACTION_PHONE_STATE_CHANGED

电话打出 接入时 系统发送的广播

3 ACTION_BATTERY_LOW

设备处于低电量时 系统发送的广播

应用程序如何接收Android的系统广播呢

1 获取常用Android系统广播种类

2 理解常用系统广播使用的Action

频道和通道

3 编写广播接收类 BroadcastReceiver

4 按相应的Action 频道

将接收器注册到Android系统

5 在接收器内编写对应广播数据的处理业务

下面我们介绍

如何获取Android设备中电池信息

主要包括

1 如何了解当前设备是否处于充电状态

2 如何了解当前设备使用何种充电模式

3 当前设备的实际电量

4 当前设备充电是否完成

5 当前设备的电池

是否在低电量环境中运行

Android通过广播机制传递电池的状态信息

1 设备接入充电器时

Android会在系统范围内

发送设备充电广播

2 设备拔出充电器时

Android会在系统范围内

发送设备停止充电广播

3 设备电池电量发生变化时

Android会在系统范围内

发送设备电池电量发生改变的广播

4 每次发送广播时

广播中附带了大量的电池设备的信息

下面我们以一个实例

讲解如何获取设备中电池的电量

具体步骤如下

1 获取Android系统广播的类型

2 获取电池电量广播的Action 频道

3 编写广播接收类BatteryReceiver接收广播

4 向Android系统注册广播接收器

BatteryReceiver

5 从广播中获取电池信息

6 应用程序退出时注销广播接收器

Android有很多内部组件

比如线程 服务 广播 视图

组件之间的通信有很多种方式

如图所示

常用的有Handler机制

线程视图一般通过使用视图Handler

发送消息到视图的消息队列

视图从消息队列中取出消息

更新视图UI组件信息

这种机制使得组件之间的通信比较复杂

组件之间不能解耦

代码移植和可读性都不好

EventBus是一个开源库的Android和java库

使用发布订阅的方式

是松耦合模式

EventBus使中央通信能够用几行代码解耦类

可以简化代码

消除依赖关系

加速应用程序开发

组件之间使用EventBus

接收数据的组件将自己注册到EventBus

发送数据的组件

将数据通过Post发送到总线

总线将数据发送到订阅者

EventBus总线的作用主要有如下几个特点

1 简化组件之间的通信

2 解耦事件发送者和接收者

3 使用UI 例如activity fragment和后台线程

避免复杂易出错的依赖和生命周期问题

4 快速

EventBus专门优化的代码具有很高的性能

如何使用EventBus呢

如下图所示

1 Build.gradle文件中

dependencies上添加插件依赖

implementation 'org.greenrobot:eventbus

3.1.1'是它的版本号

2 EventBus初始化

将Activity注册到EventBus上

3 Event消息的发送

新建EventData事件对象

设置事件类型

设置数据

发送数据

如何处理EventBus的消息呢

如下图所示

1 使用@Subscribe

表示是EventBus的消息处理函数

2 重新实现onEventMainThread方法

3 使用event.getEventCode() 获取消息类型

4 使用event.getiBatterydata()取出数据

EventBus如何注销呢

如下图所示

1 重写视图的onDestroy方法

2 使用EventBus.getDefault().unregister(this)

注销EventBus的订阅

下面我们以一个电量广播例子

讲解如何实现Android系统广播的接收

1 编写广播接收类BatteryReceiver接收广播

继承BroadcastReceiver

并重写onReceive方法

如图所示

1.1 首先使用intent.getAction()中

取出意图的名称

1.2 判断意图是否为电量改变的广播

ACTION_BATTERY_CHANGED

1.3 使用intent.getExtras()

取出广播数据

1.4 根据BatteryManager.EXTRA_LEVEL

取出电量绝对值

1.5 根据BatteryManager.EXTRA_SCALE

取出电量最大值

1.6 换算出电量的百分比

使用level/(float)scale*100

来计算出电量的百分比

1.7 将电量值使用EventBus

发送到EventBus总线上

2 在Activity中注册广播接收器

BatteryReceiver

如图所示

2.1 定义广播接收器

2.2 将Activity视图注册到EventBus

2.3 初始化广播接收器对象

2.4 新建电量变化广播过滤器

2.5 设置广播接收器接收电量广播

3 BatteryReceiver与MainActivity之间

通过EventBus传递数据

如图所示

3.1 新建eventCode变量代表数据类型

3.2 新建iBatterydata变量代表电量值

4 Activity中使用EventBus获取信息

电池电量信息均被保存在EventData对象

如图所示

4.1 重写Event的消息处理方法

onEventMainThread

4.2 使用event.getEventCode()

判断是否是电量变化广播消息

4.3 使用event.getiBatterydata()

取出电量的数据并显示到组件上

5

应用程序退出注销EventBus和广播接收器

如图所示

5.1 视图中重写onDestroy() 方法

5.2 使用super.unregisterReceiver

注销广播接收器

5.3

使用EventBus.getDefault().unregister(this)

注销EventBus接收

下面就是我们最后的效果

如图所示

我们可以看到电量的实时情况

这就是电量广播的实例

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 在线点餐系统授课视频

5.1 Android广播概述笔记与讨论

也许你还感兴趣的课程:

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