【转】Android 4.2蓝牙介绍

原文网址:http://blog.csdn.net/innost/article/details/9187199

Tieto公司某蓝牙大牛写得《程序员》投稿文章

Android 4.2蓝牙介绍

蓝牙一词源于公元十世纪丹麦国王HaraldBlatand名字中的Blatand。Blatand的英文之意就是Blue tooth。这是因为这位让丹麦人引以为傲的国王酷爱吃蓝莓以至于牙龈都被染成蓝色。由于Blatand统一了丹麦和挪威,所以,作为无线通信技术的一种,蓝牙技术之所以取名Bluetooth可谓志向远大。不过,在以Android为代表的智能机出现以前,蓝牙在早期智能机甚至功能机中一直扮演着“鸡肋”的角色。那么,随着无线通信技术的快速发展以及Android的普及,蓝牙能给我们带来哪些新的变化呢?

本文将从蓝牙核心规范的发展历史、最具应用前景的几个蓝牙Profile以及Android 4.2中蓝牙实现情况等几个方面向读者介绍蓝牙技术。

一  蓝牙规范介绍

作为一种通用的无线通信技术,规范自然是蓝牙技术的核心。蓝牙规范可分为两个层次,如图1所示:

图1  蓝牙规范的层次结构

由图1可知蓝牙规范包括:

  • Core Specification(核心规范),用于规定蓝牙设备必须实现的通用功能和协议层次。它由软件和硬件模块组成,两个模块之间的信息和数据通过主机控制接口(HCI)的解释才能进行传递。
  • Profiles(蓝牙应用规范),它从应用场景的角度为蓝牙技术的使用制定了不同的规范。这也是和大众日常生活接触最多的一部分。蓝牙支持很多Profiles,下文将介绍几种使用最广泛的蓝牙应用规范。

1.1  蓝牙核心规范介绍

核心规范是蓝牙协议家族的基础,自蓝牙技术联盟(Bluetooth SIG,Special Interest Group)在1999年颁布蓝牙核心规范1.0版本以来,到目前为止蓝牙SIG一共发布了七个重要版本。每一个版本都促使蓝牙技术朝着更快、更安全、更省电的方向发展。表1所示为蓝牙核心规范[①]发展历史。

表1  蓝牙核心规范发展介绍


版本


规范发布日期


增强功能


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中,

  • EDR:全称为Enhanced Data Rate。通过提高多任务处理和多种蓝牙设备同时运行的能力,EDR使得蓝牙设备的传输速度可达3Mbps。
  • HS:全称为High Speed。HS使得Bluetooth能利用WiFi作为传输方式进行数据传输,其支持的传输速度最高可达24Mbps。其核心是在802.11的基础上,通过集成802.11协议适配层,使得蓝牙协议栈可以根据任务和设备的不同,选择正确的射频。
  • BLE:全称为Bluetooth Low Energy。蓝牙规范4.0最重要的一个特性就是低功耗。BLE使得蓝牙设备可通过一粒纽扣电池供电以维持续工作数年之久。很明显,BLE使得蓝牙设备在钟表、远程控制、医疗保健及运动感应器等市场具有极光明的应用场景。

虽然蓝牙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)


主要用途


手机游戏机耳机,立体声音频流,汽车PC


手机,游戏机,PC,体育健身医疗保健,汽车,家用电子自动化工业

那么,蓝牙核心规范4.0有什么特别之处呢?蓝牙核心规范4.0的模块如图2所示:

图2  蓝牙核心规范4.0的模块

由图2可知,蓝牙核心规范4.0的模块增加了以下几个蓝牙低功耗组件。

  • GATT表示服务器属性和客户端属性,描述了属性服务器中使用的服务层次,特点和属性。BLE设备使用它作为蓝牙低功耗应用规范的服务发现。
  • ATT实现了属性客户端和服务器之间的点对点协议。ATT客户端给ATT服务器发送请命令。ATT服务器向ATT客户端发送回复和通知。
  • SMP用于生成对等协议的加密密钥和身份密钥。SMP管理加密密钥和身份密钥的存储,它通过生成和解析设备的地址来识别蓝牙设备。

1.2  蓝牙应用规范[②]

蓝牙SIG根据不同的应用场景定义了不同的蓝牙应用规范,截止到现在,发布了40个蓝牙应用规范。本节介绍最常用的五个的蓝牙应用规范。

1.2.1  Advanced Audio Distribution Profile

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向蓝牙耳机或蓝牙立体声扬声器传送高质量音频。
  • 录音场景是具有蓝牙功能的麦克风通过A2DP向蓝牙录音器传送高质量音频。

和A2DP相关的规范有Video Distribution Profile(VDP,视频分发规范),Audio/Video Remote Control Profile(AVRCP,音频/视频运程控制规范)。

1.2.2  Object Push Profile

OPP(对象推送规范)定义了推送服务器和客户端之间基于Generic Object Exchange Profile(GOEP,通用对象交换规范)进行对象交换的规范。OPP的应用场景如图4所示:

图4  OPP的应用场景

由图4可知,OPP主要用于手机与手机或者手机与电脑之间通过蓝牙进行文件操作。可交换的文件类型有电话本,备忘录,日程表等文本文件,还有视频,声音,图片,音乐等多媒体文件。

Wi-Fi Direct(WiFi直连)[③]和蓝牙OPP有相同的功能。WiFi直连是WiFi设备之间不需要无线路由器,直接进行对象交换。它的优点是传输距离长、速度快,缺点是功耗高。

1.2.3  Hands-Free Profile

HFP(HFP,免提规范)定义了蓝牙音频网关设备如何通过蓝牙免提设备拨打和接听电话。HFP的应用场景如图5所示:

图5  HFP的应用场景

由图5可知,HFP包括两个角色:

  • Audio Gateway(AG,音频网关)和Hands-Free Unit(HF,免提设备)。AG是音频输入和输出的设备,典型的AG设备是手机。HF是执行音频网关的远程音频输入输出设备。
  • HFP常见的场景是汽车上的车载套件,当车载套件和耳机通过蓝牙方式连接到手机时,通过无线蓝牙耳机拨打和接听电话。

和HFP相关的规范有Headset Profile(HSP,耳机规范),Phonebook Access Profile(PBAP,电话簿访问规范。

1.2.4  Heart Rate Profile

HRP(心率规范)定位与和医疗/健康相关的应用场景中,它使得蓝牙设备能与心率传感器交互。相关场景如图6所示:

图6  HRP的角色关系和应用场景

由图6可知:

  • 左图是HRP定义的角色关系。HRP中有两个角色:心率感应器和收集器。心率感应器是GATT服务器,是测量心率的设备,它包含心率服务和设备信息服务,心率服务导出心率测量数据;收集器是GATT客户端,是从心率感应器接收心率测量数据和其它数据的设备。
  • 右图是HRP的应用场景。心率规范用于让设备获得心率传感器的心率测量和其它数据。例如,护士或医生可以用心率传感器测量病人的心率,并把心率数据传到笔记本或手持设备上。

随着人口老龄化,医疗设备和医护人员资源不足,可以运用蓝牙健康规范实现远程医疗。笔者所在的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,健康体温计规范)。

1.2.5  Cycling Speed and Cadence Profile

CSCP(自行车速度和步调规范)让人们在骑自行车锻炼时跟踪速度和节奏。CSCP也基于GATT的规范。自行车速度和步调规范的角色关系和应用场景如图7所示:

图7  CSCP的角色关系和应用场景

由图7可知:

  • 左图是CSCP的角色关系。CSCP定义了两个角色:自行车速度和步调感应器和收集器。CSC感应器是GATT服务器,向收集器报告车轮转速数据或轴转速数据。CSC感应器包含CSC服务和设备信息服务;收集器是GATT客户端,从CSC感应器接收自行车的速度和步调数据。
  • 右图是CSCP的应用场景。传感器测量被广泛应用于运动和健身,通过传感器来监视和控制训练强调,以及在多个训练中衡量进展情况。自行车速度传感器和自行车踏频传感器是用户测量车轮速度或蹬踏节奏的设备。任何设备实现CSC规范可以与CSC传感器连接并接收数据。

和CSCP相关的规范有Running Speed and Cadence Profile(RSCS,跑步速度和步调规范)。

二  Android中的Bluetooth

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框架包括以下几个部分:

  • 应用程序通过android.bluetooth package下的API来调用系统的Bluetooth功能。
  • 应用层空间增加了一个名为Bluetooth的App。它做为系统的bluetooth核心进程而存在。其内部将通过JNI来调用Bluetooth HAL层以完成各种蓝牙请求。
  • Bluetooth HAL也属于Android 4.2新增模块,它由蓝牙核心规范硬件抽象层和蓝牙应用规范硬件抽象层组成。由于HAL层的隔离作用,上层代码可轻松移植到不同芯片平台。
  • 作为整个蓝牙服务的核心,Bluetooth Stack模块则由Bluetooth Application Layer(缩写为BTA)和Bluetooth Embedded System(缩写为BTE)两大部分组成。BTA实现了蓝牙设备管理、状态管理及一些应用规范。而BTE则通过HCI与厂商蓝牙芯片交互以实现了蓝牙协议栈的通用功能和相关协议。另外,BTE还包括一个统一内核接口(GKI),蓝牙芯片厂商可借助GKI快速轻松得移植蓝牙协议栈到其他操作系统或手机平台上。
  • Vendor Extentions(厂商扩展):开发者可以添加自定义扩展以实现厂商特定的模块和组件。

除了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的移植工作,相信能帮助它们在竞争日趋白日化的移动世界中拔得先机。

另外,作为一种成熟、低功耗无线通信技术的先锋,蓝牙未来在可穿戴设备领域中也将扮演越来越重要的作用。那时,蓝牙或许就会真正像“牙齿”一样成为各种设备中不可或缺的一部分了。


[①]http://zh.wikipedia.org/wiki/Bluetooth

[②]详情可参考http://developer.bluetooth.org/TechnologyOverview/Pages/Profiles.aspx

[③]关于WFD,读者可参考http://blog.csdn.net/innost/article/details/8474683

[④]http://source.android.com/devices/bluetooth.html

时间: 2024-11-11 10:52:50

【转】Android 4.2蓝牙介绍的相关文章

无线通信 - 由于Android应用开发蓝牙&#12316;SPP

是设备解决方案的一部分. 由Android,我想介绍如何执行由蓝牙SPP(串行端口配置文件)的无线通信. Android SDK中,以有一个名为"BluetoothChat"一个示例项目,因为它已经实现在执行蓝牙通信所需Ichitori的功能,我们想解释给该组. BluetoothChat是,它说假设的Android终端之间的连接,但这次我想谈谈与其他设备,如PC连接,使用SPP目标. ●蓝牙授权(许可)首先,为了使用蓝牙功能的应用,"蓝牙""BLUETO

【视频】零基础学Android开发:蓝牙聊天室APP(一)

零基础学Android开发:蓝牙聊天室APP第一讲 1. Android介绍与环境搭建:史上最高效Android入门学习 1.1 Google的大小战略 1.2 物联网与云计算 1.3 智能XX设备 1.4 Android发展前景 1.5 Android企业需求与就业薪资 1.6 Android框架介绍 1.7 搭建Android开发环境 1.8 Android SDK文件夹具体解释 1.9 开发第一个App:HelloWorld 1.10 App应用程序文件夹具体解释 在线收看:http://

Android 6.0 Marshmallow介绍

Android 6.0 Marshmallow介绍 Android 6.0 (M) 为用户和应用开发者提供了新功能.本文旨在介绍其中最值得关注的 API和重点介绍您应该了解并在开发应用时加以考虑的一些主要变更. 1.Android 6.0新增功能与特性 指纹身份验证: 此版本提供了一些新的 API,在受支持的设备上,用户只需扫描其指纹即可完成身份验证,这些 API 还可与 Android 密钥库系统结合使用. 要通过指纹扫描验证用户身份,请获取新 FingerprintManager 类的实例,

android pbap client 蓝牙

一.  简介: 此功能具体使用的是bluetoothV2.1之后的Phone Book Access Profile功能,简称PBAP .目前MTK Android中只实现了server端的功能,并没有实现client.所以该文档简略介绍了如何开发一个简易client.并在最后给出一个测试用的demo.下面就按照客户端的开发流程来说明. 二.  前提设置: 本处介绍执行PBAP之前的蓝牙需要的一些操作.其包括开启和搜索. 首先在manifest中加入权限 <uses-permissionandr

Android四大基本组件介绍与生命周期

主要参考: 1.http://blog.csdn.net/android_tutor/article/details/5772285 2.http://www.cnblogs.com/bravestarrhu/archive/2012/05/02/2479461.html Android四大基本组件介绍与生命周期,布布扣,bubuko.com

Android文件监控FileObserver介绍

在前面的Linux文件系统Inotify机制中介绍了Linux对文件变更监控过程.Android系统在此基础上封装了一个FileObserver类来方便使用Inotify机制.FileObserver是一个抽象类,需要定义子类实现该类的onEvent抽象方法,当被监控的文件或者目录发生变更事件时,将回调FileObserver的onEvent()函数来处理文件或目录的变更事件. 事件监控过程 在FileObserver类中定义了一个静态内部类ObserverThread,该线程类才是真正实现文件

Android反编译工具介绍与简单实用方法

Android反编译工具介绍与简单实用方法 Android反编译的目的无非就是为了看到APK的xml.资源和代码: 得到代码的方式:直接解压APK文件 --> 得到classes.dex文件 --> 使用 dex2jar classes.dex classes.jar生成jar文件 --> [可选的解压jar文件] -->使用XJad或者JDCompiler查看源代码 得到XML的方式: 方式1:直接解压APK文件 --> 通过axmlprinter工具查看XML文件(这种方

Android小项目蓝牙电子钟

Android小项目蓝牙电子钟 请支持原创,尊重原创,转载请注明出处:http://blog.csdn.net/kangweijian(来自kangweijian的csdn博客) Android蓝牙电子钟应用程序通过蓝牙设备发送消息给多功能数字电子钟,实现更新电子钟时间.设定电子钟监控时间.设定电子钟闹钟时间和调整电子钟时间误差等功能. 该应用程序的UI主要基于http://blog.csdn.net/kangweijian/article/details/43404801. 本章主要讲解蓝牙设

android.app.Activity 的介绍

发现当前Android的资料不是很多,而且对于Activity的介绍也很少,所以把官方文档的android.app.Activity的介绍翻译了一下,加入了一些自己的理解.各位如果觉得我自己理解的不对,请无视.欢迎邮件讨论. android.app public class android.app.Activity java.lang.Object android.content.Context android.app.ApplicationContext    ViewInflate.Fact