Tieto公司某蓝牙大牛写得《程序员》投稿文章 php
蓝牙一词源于公元十世纪丹麦国王HaraldBlatand名字中的Blatand。Blatand的英文之意就是Blue tooth。这是由于这位让丹麦人引觉得傲的国王酷爱吃蓝莓以致于牙龈都被染成蓝色。因为Blatand统一了丹麦和挪威,因此,做为无线通讯技术的一种,蓝牙技术之因此取名Bluetooth可谓志向远大。不过,在以Android为表明的智能机出现之前,蓝牙在早期智能机甚至功能机中一直扮演着“鸡肋”的角色。那么,随着无线通讯技术的快速发展以及Android的普及,蓝牙能给咱们带来哪些新的变化呢? html
本文将从蓝牙核心规范的发展历史、最具应用前景的几个蓝牙Profile以及Android 4.2中蓝牙实现状况等几个方面向读者介绍蓝牙技术。 android
做为一种通用的无线通讯技术,规范天然是蓝牙技术的核心。蓝牙规范可分为两个层次,如图1所示: 程序员
图1 蓝牙规范的层次结构 安全
由图1可知蓝牙规范包括: 服务器
核心规范是蓝牙协议家族的基础,自蓝牙技术联盟(Bluetooth SIG,Special Interest Group)在1999年颁布蓝牙核心规范1.0版本以来,到目前为止蓝牙SIG一共发布了七个重要版本。每个版本都促使蓝牙技术朝着更快、更安全、更省电的方向发展。表1所示为蓝牙核心规范[①]发展历史。 框架
表1 蓝牙核心规范发展介绍 less
版本 异步 |
规范发布日期 ide |
加强功能 |
0.7 |
1998年10月19日 |
Baseband、LMP |
0.8 |
1999年1月21日 |
HCI、L2CAP、RFCOMM |
0.9 |
1999年4月30日 |
OBEX与IrDA的互通性 |
1.0 Draft |
1999年7月5日 |
SDP、TCS |
1.0 A |
1999年7月26日 |
|
1.0 B |
2000年10月1日 |
安全性,厂商设备之间链接兼容性 |
1.1 |
2001年2月22日 |
IEEE 802.15.1 |
1.2 |
2003年11月5日 |
快速链接、自适应跳频、错误检测和流程控制、同步能力 |
2.0 + EDR |
2004年11月9日 |
EDR传输率提高至2-3Mbps |
2.1 + EDR |
2007年7月26日 |
扩展查询响应、简易安全配对、暂停与继续加密、Sniff省电 |
3.0 + HS |
2009年4月21日 |
交替射频技术、802.11协议适配层、电源管理、取消了UMB的应用 |
4.0 +BLE |
2010年6月30日 |
低功耗物理层和链路层、AES加密、Attribute Protocol(ATT)、Generic Attribute Profile(GATT)、Security Manager(SM) |
表1中,
虽然蓝牙4.0规范3年就发布,但目前使用最普遍的蓝牙核心规范版本仍是3.0。智能手机中只有Iphone 4S,Iphone5,三星GallaxyS3、S4、Note2等少数设备支持蓝牙4.0。不过,Google已经在Android 4.3中添加了对4.0的支持。很明显,随着Android的持续推动和众多厂商的齐力支持,笔者估计在将来较短的一段时间内,蓝牙核心规范4.0将获得迅速普及。表2是经典蓝牙与低功耗蓝牙的一些区别:
表2 经典蓝牙与低功耗蓝牙的区别
技术规范 |
经典蓝牙(2.1 &3.0) |
低功耗蓝牙(4.0) |
无线电频率 |
2.4GHz |
2.4GHz |
距离 |
10米/100米 |
30米 |
数据速率 |
1-3Mbps |
1Mbps |
应用吞吐量 |
0.7-2.1Mbps |
0.2Mbps |
发送数据的总时间 |
100ms |
<6ms |
耗电量 |
1 |
0.01至0.5 |
最大操做电流 |
<30mA |
<15mA(最高运行时为15 mA) |
主要用途 |
那么,蓝牙核心规范4.0有什么特别之处呢?蓝牙核心规范4.0的模块如图2所示:
图2 蓝牙核心规范4.0的模块
由图2可知,蓝牙核心规范4.0的模块增长了如下几个蓝牙低功耗组件。
蓝牙SIG根据不一样的应用场景定义了不一样的蓝牙应用规范,截止到如今,发布了40个蓝牙应用规范。本节介绍最经常使用的五个的蓝牙应用规范。
Advanced Audio Distribution Profile 简称为A2DP(高质量音频分发规范)定义了如何将立体声质量的音频经过流媒体的方式从媒体源传输到接收器上。A2DP使用Asynchronous Connectionless Link(ACL,蓝牙异步传输)信道传输高质量音频内容,它依赖于Generic Audio/Video Distribution Profile(GAVDP,通用音频/视频分发规范)。A2DP必须支持低复杂度及Sub-bandCodec(SBC,低带宽编解码),可选支持MPEG1,2音频,MPEG2、4AAC。A2DP的应用场景如图4[1]所示:A2DP的应用场景如图3所示:
图3 A2DP的应用场景
由图3可知,A2DP有两种应用场景分别是播放和录音。
和A2DP相关的规范有Video Distribution Profile(VDP,视频分发规范),Audio/Video Remote Control Profile(AVRCP,音频/视频运程控制规范)。
OPP(对象推送规范)定义了推送服务器和客户端之间基于Generic Object Exchange Profile(GOEP,通用对象交换规范)进行对象交换的规范。OPP的应用场景如图4所示:
图4 OPP的应用场景
由图4可知,OPP主要用于手机与手机或者手机与电脑之间经过蓝牙进行文件操做。可交换的文件类型有电话本,备忘录,日程表等文本文件,还有视频,声音,图片,音乐等多媒体文件。
Wi-Fi Direct(WiFi直连)[③]和蓝牙OPP有相同的功能。WiFi直连是WiFi设备之间不须要无线路由器,直接进行对象交换。它的优势是传输距离长、速度快,缺点是功耗高。
HFP(HFP,免提规范)定义了蓝牙音频网关设备如何经过蓝牙免提设备拨打和接听电话。HFP的应用场景如图5所示:
图5 HFP的应用场景
由图5可知,HFP包括两个角色:
和HFP相关的规范有Headset Profile(HSP,耳机规范),Phonebook Access Profile(PBAP,电话簿访问规范。
HRP(心率规范)定位与和医疗/健康相关的应用场景中,它使得蓝牙设备能与心率传感器交互。相关场景如图6所示:
图6 HRP的角色关系和应用场景
由图6可知:
随着人口老龄化,医疗设备和医护人员资源不足,能够运用蓝牙健康规范实现远程医疗。笔者所在的Tieto公司在Android平台上运用心率规范开发了心率测量的原型程序,详细介绍请看视频http://www.youtube.com/watch?v=r_t-hstRgDs&feature=youtu.be。
和HRP相关的健康规范有Glucose Profile(GLP,血糖规范),Blood Pressure Profile(BLP,血压规范BLP),Health Thermometer Profile(HTP,健康体温计规范)。
CSCP(自行车速度和步调规范)让人们在骑自行车锻炼时跟踪速度和节奏。CSCP也基于GATT的规范。自行车速度和步调规范的角色关系和应用场景如图7所示:
图7 CSCP的角色关系和应用场景
由图7可知:
和CSCP相关的规范有Running Speed and Cadence Profile(RSCS,跑步速度和步调规范)。
Android 4.2以前,Google一直使用的是Linux官方蓝牙协议栈,即知名老牌开源项目BlueZ。BlueZ其实是由高通公司在2001年5月基于GPL协议发布的一个开源项目,该项目仅发布一个月后就被Linux之父Linux Torvalds归入了Linux内核,并作为Linux 2.4.6内核的官方蓝牙协议栈。随着Android设备的流行,BlueZ也获得了极大的完善和扩展。例如Android 4.1中BlueZ的版本升级为4.93,它支持蓝牙核心规范4.0,并实现了绝大部分的Profiles。
BlueZ如今正处于其巅峰时期,但好景不长。从Android 4.2即Jelly Bean开始,Google便在Android源码中推出了它和博通公司一块儿开发的BlueDroid以替代BlueZ。虽然由于时间及成熟度的缘由,大部分手机厂商在Android 4.2中仍继续使用BlueZ。但据笔者了解,BlueZ的创始者,高通公司也将在基于其芯片的Android参考设计中去除BlueZ,并仅支持BlueDroid。
BlueZ的将来如何笔者姑且不论。不过,能让高通改弦易辙,BlueDroid自有其合理之处。相比BlueZ,BlueDroid最值得称道的地方就是其框架结构变得更为简洁和清晰。另外,借助HAL(Hardware Abstraction Layer,硬件抽象层),BlueDroid终于再也不和dbus有任何瓜葛。图8所示为Android 4.2中BlueDroid的框架结构图[④]:
图8 Android 4.2BlueDroid框架结构图
由图8可知,Android4.2中BlueDroid框架包括如下几个部分:
除了BlueDroid外,在今年的Google I/O大会,谷歌公司还宣布将于与苹果、微软和黑莓等公司共同支持Bluetooth Smart Ready(BSR,蓝牙智能就绪)和Bluetooth Smart(BS,蓝牙智能)技术。这项技术使蓝牙设备或应用能够很是容易地链接全球成千上万的蓝牙设备,蓝牙使用者的生活也所以变得更加简单。BSR和BS都是创建在蓝牙核心规范4.0和GATT应用规范。即将发布的Android 4.3(MR2)支持BSR技术,使得BS的开发者能够轻易地将其设备和应用与Android BSR设备进行链接和发布。蓝牙使用者运用BS的智能应用配件(如健康监控或医疗设备)收集数据,再传送到支持BSR设备(如智能手机或平板)上。
另外,蓝牙SIG也正在研发工具Bluetooth Application Accelerator(蓝牙应用加速器)。据可靠消息,该工具将随Android 4.3发布,并将帮助开发者在Android 4.3上快速开发蓝牙应用,从而加快相关产品的研发时间。
本文对蓝牙核心规范、蓝牙应用规范以及Android 4.2中的蓝牙协议栈BlueDroid进行了一些简单介绍。
从笔者了解的状况来看,BlueDroid虽然对BlueZ大有取而代之的趋势,但如今它对蓝牙应用规范的支持还不够完善。例如BlueDroid仅支持AVRCP 1.0,而非最新的AVRCP 1.5。因此,国内某些芯片或手机厂商若能及早完成BlueZ相关模块到BlueDroid的移植工做,相信能帮助它们在竞争日趋白日化的移动世界中拔得先机。
另外,做为一种成熟、低功耗无线通讯技术的先锋,蓝牙将来在可穿戴设备领域中也将扮演愈来愈重要的做用。那时,蓝牙或许就会真正像“牙齿”同样成为各类设备中不可或缺的一部分了。