本帖最后由 dakakunmin 于 2017-11-10 16:21 编辑
其实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):广播发送者,可连接的设备,在单一链路层作为从机。 注:中央和外围可以进行配对、连接、数据通信。值得注意的是一个中央可以同时连接多个周边,但是一个周边只能连接一个中央。 一般应用:手机和手表等。
-------------------------------------------------------------------------------------------------------
蓝牙协议基础概念 蓝牙协议包括两种技术:一种是BasicRate(简称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框架通信。
通过这两幅图我们可以看到,Android8.0的蓝牙架构和Android7.x以及之前版本还是有差别的。主要差别在供应商的扩展方式上,Android 8.0和以前版本之间的本地蓝牙堆栈的最大变化是使用高音。Android 8.0中的供应商实现必须使用HIDL而不是libbt-vendor。 另外Android 8.0还增强了平台对蓝牙的以下三点支持: 支持 AVRCP 1.4 标准,该标准支持音乐库浏览; 支持蓝牙低功耗 (BLE) 5.0 标准; 将 Sony LDAC 编解码器集成到蓝牙堆叠中。
|