Android 版本与 Bluetooth 版本之间的关系

转自ifeegoo的个人博客,原文地址《Android:Bluetooth 的打开和关闭》 http://www.ifeegoo.com/android-turn-on-and-turn-off-bluetooth.html

Android 版本与 Bluetooth 版本之间的关系

摘要:Android 版本与 Bluetooth 版本之间是否存在必然关系?答案是否定的。不同版本的 Android 系统是否有针对不同版本的 Bluetooth 模块提供官方的 API 供开发者调用,这个才是关键。

最近开始 Bluetooth 开发,一直纠结一个问题:

Android 版本与 Bluetooth 版本之间是否存在必然关系?例如:Android 4.3 版本的手机上的 Bluetooth 模块一定是支持 BLE (Bluetooth Low Energy) 的吗?

答案是否定的,比如说有一个设备厂商,在自己的 Android 4.3 系统的设备上移除了 Bluetooth 模块,或者在自己的 Android 4.3 系统设备上的 Bluetooth 模块仍然采用的是 Bluetooth 2.1 ,这种情况在理论上来说是有可能的。当然,正常情况下,设备厂商如果要在自己的 Android 4.3 系统设备上提供 Bluetooth 模块的话,一定会考虑到自己的 Bluetooth 版本和当前设备的 Android 系统版本之间的关系,这是针对设备的普通使用者和开发者考虑的问题。当然,如果说设备厂商生产了一款 Android 1.6 系统的设备,在上面采用了 BLE 模块,当然由于 Android 1.6 系统没有对 BLE 操作的 API。如果说所有 Android 1.6 系统不支持的对 BLE 模块的操作,都自己开发相应的 API,也是可以完成在 Android 1.6 系统的设备上对 BLE 操作的。这种情况,从理论上来说也是可行的,只不过一般不会有厂商这么做。

针对我们这种非定制 Android 设备开发者来说,我们首要关心的是不同版本的 Android 系统是否有针对不同版本的 Bluetooth 提供官方的 API 供开发者调用。当然,针对不同的 Bluetooth 方案商,比如 Nordic (www.nordicsemi.com/),会有自己的特定的 API,当然这些 API 对于 Android 开发者来说,都是基于Android API基础上实现的,这些就先另当别论了。

通过 Android 官网资料,我们可以看到从 Android 1.0 (API Level 1) – Android 4.4W (API Level 20) 中 Android 官方版本的更迭对 Bluetooth 支持的变化。


************************************************************************************************************
关于 Android 中的 Bluetooth 协议栈的说明:


    Android 4.2 版本系统之前,Google 一直使用的是 Linux 官方 Bluetooth 协议栈,即知名老牌开源项目 BlueZ。BlueZ 实际上是由高通公司在2001年5月基于 GPL 协议发布的一个开源项目,该项目仅发布一个月后就被 Linux 之父 Linux Torvalds 纳入了 Linux 内核,并做为 Linux 2.4.6 内核的官方 Bluetooth 协议栈。随着 Android 设备的流行,BlueZ 也得到了极大的完善和扩展。例如 Android 4.1 版本系统中 BlueZ 的版本升级为4.93,它支持 Bluetooth 核心规范 4.0,并实现了绝大部分的 Profile。
    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 有任何瓜葛。下图所示为 Android 4.2 中 BlueDroid 的框架结构图:

Android 版本与 Bluetooth 版本之间的关系_第1张图片


由上图可以看出,Android 4.2 中 BlueDroid 框架包括以下几个部分:
1.应用程序通过 android.bluetooth 包下的API来调用系统的 Bluetooth 功能。
2.应用层空间增加了一个名为 Bluetooth 的 App。它作为系统的 Bluetooth 核心进程而存在。其内部将通过 JNI 来调用 Bluetooth HAL 层以完成各种蓝牙请求。
3.Bluetooth HAL 也属于 Android 4.2 新增模块,它由蓝牙核心规范硬件抽象层和蓝牙应用规范硬件抽象层组成。由于 HAL 层的隔离作用,上层代码可轻松移植到不同芯片平台。
4.作为整个蓝牙服务的核心,Bluetooth Stack 模块则由 Bluetooth Application Layer(BTA)和Bluetooth Embedded System(BTE)两大部分组成。BTA 实现了蓝牙设备管理、状态管理及一些应用规范。而 BTE 则通过 HCI 与厂商蓝牙芯片交互以实现了蓝牙协议栈的通用功能和相关协议。另外,BTE 还包括一个统一内核接口(GKI),蓝牙芯片厂商可借助 GKI 快速轻松得移植蓝牙协议栈到其他操作系统或手机平台上。
5.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 的移植工作,相信能帮助它们在竞争日趋白日化的移动世界中拔得先机。
    另外,作为一种成熟、低功耗无线通信技术的先锋,蓝牙未来在可穿戴设备领域中也将扮演越来越重要的作用。那时,蓝牙或许就会真正像“牙齿”一样成为各种设备中不可或缺的一部分了。

************************************************************************************************************
说明:以上两行”*”号中间的内容来自 CSDN 作者 ID 为 Innost 的博客文章:
http://blog.csdn.net/innost/article/details/9187199,感谢他给予的参考,谢谢!


你可能感兴趣的:(Android开发)