其实BLE是个通用的技术术语,与平台无关的,即ios和Android以及一些嵌入式系统或单片机都可以有BLE模块。
那今天先对Android BLE相关的应用开发的进行讲解,不过在了解之前,我们有必要去了解BLE简单介绍和蓝牙协议的一些知识。
BLE简单介绍
BLE:Bluetooth Low Energy,即蓝牙低功耗,它是一种技术,从蓝牙4.0开始支持。
低功耗蓝牙芯片有两种模式:单模和双模。
*单模:只能执行低功耗协议栈,也就是只支持BLE;
*双模:即支持传统蓝牙又支持BLE的使用。
BLE较传统蓝牙具有传输速度更快,覆盖范围更广,安全性更高,延迟更短,耗电低等优点。
关键术语
Gatt(Generic Attribute Profile)即通用属性协议,用于在BLE链路上发送和接收的数据块。目前所有的BLE应用都是基于GATT的。一个设备可以实现多个配置文件。
BLE交互的桥梁是Characteristic、Desciptor、Service。
Characteristic:可以理解为一个数据类型,它包括一个value和0至多个对此characteristic的描述(Descriptor);
Descriptor:对Characterisctic的描述,如范围、单位等;
Service:是Characteristic的集合,它可以包含多个Characteristic。
重点:一个BLE终端可以包含多个Service,一个Service可以包含多个Characteristic,一个Characteristic包含一个value和多个Descriptor,一个Descriptor包含一个value(其中Characteristic比较重要,用的比较多)。
BLE中有四个角色
广播者(Braodcaster):广播发送者,是不可连接的设备;观察者(Observer):扫描广播,不能够启动连接。
注:广播者和观察者不能建立连接。
一般应用:传感器和显示器等。
中央(central):扫描广播,启动连接,在单一或多链路层作为主机;外围(periphery):广播发送者,可连接的设备,在单一链路层作为从机。
注:中央和外围可以进行配对、连接、数据通信。值得注意的是一个中央可以同时连接多个周边,但是一个周边只能连接一个中央。
一般应用:手机和手表等。
-------------------------------------------------------------------------------------------------------
蓝牙协议基础概念
蓝牙协议包括两种技术:一种是Basic
Rate(简称BR),另一种是Low Energy(简称LE)。
Basic Rate是正宗的蓝牙技术,可以包括可选的EDR(Enhanced Data Rate)技术,以及交替使用的MAC(Media Access Control)层和PHY层扩展(简称AMP)。
知识点:BR的发展方向是传输速率越快越好,但随之的是功耗也会越来越大,而在某些场景下,功耗是用户比较关注的,于是BLE就产生了,即Bluetooth LE。
协议层次
蓝牙协议分为四个层次:
(1)物理层:负责提供数据传输的物理通道(通常称为信道);
(2)逻辑层:在物理层的基础上,提供两个或多个设备之间,和物理无关的逻辑传输通道;
(3)L2CAP:L2CAP是逻辑链路控制和适配协议的缩写,负责管理逻辑层提供的逻辑链路;
(4)应用层:基于L2CAP提供的channel,实现各种各样的应用功能。
蓝牙协议是通信协议的一种,为了把复杂问题简单化,任何通信协议都具有层次性,特点如下:
(1)从下到上分层,通过层层封装,每一层只需要关心特定,独立的功能,易于实现和维护;
(2)在通信实体内部,下层向上层提供服务,上层是下层的用户;
(3)在通信实体之间,协议仅针对每一层,实体之间的通信,就像每一层之间的通信一样,这样有利于交流,理解和标准化。
Android蓝牙简介
Android提供默认的蓝牙协议栈是BlueDroid,分为两层:蓝牙嵌入式系统(BTE)和蓝牙应用层(BTA),BTE层主要实现蓝牙的核心功能,BTA层则主要负责和Android框架通信。
通过这两幅图我们可以看到,Android 8.0的蓝牙架构和Android7.x以及之前版本还是有差别的。主要差别在供应商的扩展方式上,Android 8.0和以前版本之间的本地蓝牙堆栈的最大变化是使用高音。Android 8.0中的供应商实现必须使用HIDL而不是libbt-vendor。
另外Android 8.0还增强了平台对蓝牙的以下三点支持:
支持AVRCP 1.4标准,该标准支持音乐库浏览;
支持蓝牙低功耗(BLE) 5.0标准;
将Sony LDAC编解码器集成到蓝牙堆叠中。