轻松上手 Android蓝牙基础开发(3)

本文回顾了蓝牙技术的发展历程,从1.0版本的公布到低功耗BLE的出现,重点介绍了其工作原理、协议栈结构和在Android中的应用。同时提到Android应用开发分类及非连接/连接模式,并提供了《Android学习笔记》和面试题资源链接。
摘要由CSDN通过智能技术生成

1998年推出了 0.7 规格,1999 年推出了 0.8、0.9等等。1999 年 7 月正式公布 1.0 版本,使用 2.4GHz频谱,最高资料传输速度 1Mbps。2001 年的 1.1 版本正式列入 IEEE 标准。

蓝牙其实就是一种近距离无线通信技术。

image

  • 低功耗蓝牙 BLE

全称是 Bluetooth Low Energy 简称 BLE 。最大的特点就是低功耗,有些 BLE 设备一个纽扣电池可以使用一两年。这对于现在的穿戴设备以及各种物联网传感器来说是一个很大的突破。同时它的传输的数据就很少。

  • 在 Android 4.3 的时候开始支持低功耗蓝牙。仅仅支持中心模式,就是只可以连接其他蓝牙外设。到了 2014 年 Android 5.0 开始也支持周边模式。

协议栈

image

图片来自网络

从下到上分别为:控制器(Controller)–>主机(host)–>应用(Application)

控制器:协议栈的底层的实现,直接和硬件相关,由芯片厂商实现,包括物理层、链路层、主机控制接口。

主机:协议栈的上层实现是硬件的抽象,与具体的硬件厂商没有关系。

应用层:使用主机层提供的 API 开发的应用。

详细介绍各个层的含义:

  • PHY(Physical Layer)物理层,蓝牙是工作在 2.4GHz 附近,这是工业、科学、医疗 ISM 的频段,免许可证。WIFI 也是工作在同一个频段。蓝牙把频段切分为 40 个通道,其中 3 个广播通道,37 个数据通道,按照一个规律跳频通信。

  • LL(Linker Layer)链路层,用于控制设备的射频状态,设备将处于五种状态之一:等待、广告、扫描、初始化、连接。广播设备不需要建立连接就可以发送数据,而扫描设备接受广播设备发送的数据;发起连接的设备通过发送连接请求来回应广播设备,如果广播设备接受请求,那么广播设备与发起连接的设备将会进入连接状态。发起连接的设备称为主机,接受连接请求的设备称为从机。

  • HCI(Host Controller Interface):主机和控制器就是通过这个接口来进行通讯的,通讯的介质就是 HCI 命令。这层在协议栈中是可选的,一些小型终端可能没有,但是 Android 设备上肯定有,这层是蓝牙上层和芯片的交互必经之路,对于蓝牙硬件开发者,这里的 log 能够很好的帮助解决问题。

  • HOST 部分要复杂。有链路控制和适配层(L2CAP),安全管理(SM)等。重点看属性协议层,也就是 ATT。它是整个 BLE 通信的基础。ATT负责数据封装,向外暴露为 “属性”,提供“属性”的为服务端,获取“属性”的为客户端。ATT 是专门为 BLE 低功耗蓝牙而设计的传输协议,结构简单,传输数据短。

  • GATT(Generic Attribute Profile):全称叫做通用属性配置文件,是基于 ATT 做的进一步的逻辑封装,定义数据的交互方式和含义,APP 开发就是用的这一层。GATT 定义了三个非常重要的概念:服务(Service)、特征(Characteristic)、描述(Descripter)。他们的关系如下图

image

一个 Service 可以包含若干个 Characteristic,一个 Characteristic 可以包含属性(properties)和值(value),还可以包含多个 descripter 。Characteristic 实际上具有读、写、通知等权限。我们在对一个 BLE 设备发起连接成功以后,对他进行读写操作,其实就是对 Characteristic 的操作。图中的 Profile 是一组服务的集合,这些服务组个起来就形成了一个特定的使用场景了,里面的服务是嵌入式工作人员可以添加的。BLE 蓝牙使用 UUID 来区分 Service、Characteristic 、Descripter。

  • GAP(Generic Access Profile):通用访问控制配置文件。定义了 BLE 整个通信过程中的流程,负责处理设备访问模式和程序,包括设备发现、建立连接、终止连接等等。GAP 层总是作为下面四种角色之一:(1)广播者:不可连接的广播设备。(2)观察者:扫描设备,但不发起建立连接 (3)外部设备:可连接的广播设备,可以在单个链路层连接中作为从机。(4)集中器:扫描广播设备并发起连接,可以在单链路层连接中作为主机。

应用开发

BLE 应用可以分为两大类:基于非连接的和基于连接的

基于非连接的:

意思就是外设和周边设备不发生连接,主要靠扫描到的广播来获取信息。发送广播的一方叫做 broadcaster 监听广播的一方叫做 oberver 在 GAP 层有对应的角色定义。

网络拓扑图:

image

这种方式就是广播设备不断的向外发送广播(含有特定的信息),然后观察者接受到广播按照两者之间约定好的协议进行解析拿到有用的信息。例如:iBeacon,通过这种设备我们可以实现室内定位。

其实这些设备的角色可以即使广播者又是观察者。接收到广播后作出了处理,然后又发送广播。这样就形成了双向的网络,类似于因特网,这就是蓝牙 Mesh 组网。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

写在最后

最后我想说:对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

相信它会给大家带来很多收获:

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值