Android 4.2 中的Bluetooth 协议栈

转载 2016年08月30日 18:42:39


Android 4.2之前,Google一直使用的是Linux官方蓝牙协议栈,即知名老牌开源项目BlueZBlueZ实际上是由高通公司在20015月基于GPL协议发布的一个开源项目,该项目仅发布一个月后就被Linux之父Linux Torvalds纳入了Linux内核,并做为Linux 2.4.6内核的官方蓝牙协议栈。随着Android设备的流行,BlueZ也得到了极大的完善和扩展。例如Android 4.1BlueZ的版本升级为4.93,它支持蓝牙核心规范4.0,并实现了绝大部分的Profiles

BlueZ现在正处于其巅峰时期,但好景不长。从Android 4.2Jelly Bean开始,Google便在Android源码中推出了它和博通公司一起开发的BlueDroid以替代BlueZ。虽然因为时间及成熟度的原因,大部分手机厂商在Android 4.2中仍继续使用BlueZ。但据笔者了解,BlueZ的创始者,高通公司也将在基于其芯片的Android参考设计中去除BlueZ,并仅支持BlueDroid

BlueZ的未来如何笔者姑且不论。不过,能让高通改弦易辙,BlueDroid自有其合理之处。相比BlueZBlueDroid最值得称道的地方就是其框架结构变得更为简洁和清晰。另外,借助HALHardware Abstraction Layer,硬件抽象层),BlueDroid终于不再和dbus有任何瓜葛。图8所示为Android 4.2BlueDroid的框架结构图[④]

8  Android 4.2BlueDroid框架结构图

由图8可知,Android4.2BlueDroid框架包括以下几个部分:

  • 应用程序通过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 ReadyBSR,蓝牙智能就绪)和Bluetooth SmartBS,蓝牙智能)技术。这项技术使蓝牙设备或应用可以非常容易地连接全球成千上万的蓝牙设备,蓝牙使用者的生活也因此变得更加简单。BSRBS都是建立在蓝牙核心规范4.0GATT应用规范。即将发布的Android 4.3MR2)支持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的移植工作,相信能帮助它们在竞争日趋白日化的移动世界中拔得先机。

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








相关文章推荐

在android4.2中,Google更换了android的蓝牙协议栈,从Bluez换成Bluedroid,我也是初涉这个方面,顺便记录一下。 http://source.android.com/d

在android4.2中,Google更换了android的蓝牙协议栈,从Bluez换成Bluedroid,我也是初涉这个方面,顺便记录一下。 http://source.android.com/d...

树莓派安装BlueZ协议栈(Raspberry pi Bluetooth LE)

在之前的项目中,遇到需要将若干个BLE连接上读取其数据的功能,所以我采取了将树莓派和usb蓝牙结合在一起,使用bluez驱动其蓝牙4.0使 之和我的BLE设备进行连接,所以在此我记录一下在树莓派环境...
  • talkxin
  • talkxin
  • 2016年01月29日 23:59
  • 5196

Bluetooth编程(一) 协议栈概述

一:Bluetooth基本概念:   Bluetooth是爱立信、诺基亚、东芝、IBM和Intel 5家公司在1998年联合推出的一项无线网络技术。其宗旨是提供一种短距离、低成本的无线传输...
  • kobbee9
  • kobbee9
  • 2012年07月13日 17:50
  • 1271

[Bluetooth]蓝牙协议栈构架

协议栈是蓝牙技术的核心组成部分,它能使设备之间互相定位并建立连接,通过这个连接,设备间能通过各种各样的程序进行交互和数据交换。 下图展示了蓝牙栈内部的支撑层: OBEX 是一个对象...
  • vlily
  • vlily
  • 2012年09月28日 17:33
  • 714

Bluetooth协议栈学习之SDP

SDP(service discovery protocol:服务发现协议)提供了一个方法,让应用程序检测哪些服务是可用的并探测这些可用服务的特性。服务发现协议(SDP或Bluetooth SDP)在...

BlueTooth: 蓝牙协议栈实现模式分析

蓝牙技术是一项新兴的技术。它的主要目的就是要在全世界范围内建立一个短距离的无线通信标准 。它使用 2.4-2.5 GHz 的 ISM( Industrion Scientifc Medical ) 频...

[Bluetooth(SDK)]蓝牙协议栈架构

   协议栈是蓝牙技术的核心组成部分,它能使设备之间互相定位并建立连接,通过这个连接,设备间能通过各种各样的程序进行交互和数据交换。 下图展示了蓝牙栈内部的支撑层:   OB...

linux下bluetooth编程(二)blueZ协议栈

Linux下开放的蓝牙协议栈主要包括IBM公司的BlueDrekar,Nokia公司的Affix, Axis公司的OpenBT和官方协议栈BlueZ。我们主要对Bluez进行探讨。   BlueZ...

实战Linux Bluetooth编程(一) 协议栈概述

Sam一年前在Linux下写了一个类似Windows下BTW的库--BTX。现在需要添加新功能时发现很多知识点都忘记了。所以决定在这次学习中,把一些bluez API记录下来。这几天又想,这样还不够,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 4.2 中的Bluetooth 协议栈
举报原因:
原因补充:

(最多只允许输入30个字)