从Android 4.3开始,BLE(Bluetooth Low Energy)在Android平台上被支持了。但是目前Android上BLE应用程序稀少,尤其是中文应用程序,希望本文对有兴趣开发BLE应用程序的开发者有所帮助。本文主要是对目前已有的Andriod BLE开发相关资料进行整理,给出一个开发资料的索引。(本文会根据大家的问题,不断完善)
基本参考资料
- 最基本的学习资料是这篇Android官方文档:《Bluetooth Low Energy》。该文档对BLE涉及的基本概念进行了介绍,并结合例子代码对如何使用Android BLE API进行了讲解。所用的例子源代码在AOSP/developers/samples/android/connectivity/bluetooth/BluetoothLeGatt/。
- 开发中需要用到的BLE profile的spec,可以在蓝牙组织的官方网站上找到《Specification Adopted Documents》,该页面的“GATT-Based Specifications“即是BLE profile and service的spec。我们开发手机端的应用主要是根据某个profile
spec,但是该profile对应的service spec也需要阅读,因为它通常包含了该profile相关的专业概念的说明和数据格式的定义,比如Heart Rate Service spec中就介绍了从sensor发送到手机的Heart Rate Measurement Value field的定义,手机端在接收到数据后就要根据这个field定义来解析数据。 - “Definition Browser“页面也是一个很重要的参考资料,在这个页面你可以“View the structure of XML definitions for GATT
profiles, services, characteristics,
descriptors and declarations and download the definitions in an XML format“,此外还能查看Units和Format Types。比如你可以在characteristics->Heart
Rate Measurement下看到该characteristic的Assigned number(uuid16)和Value fields的表格。 - Profile, service, characteristic等都有一个128-bit UUID(Universally Unique Identifier),它可以通过把uuid16加到BASE_UUID的高32位得到,可以参考"Service Discovery"。
BLE相关的类
和BLE相关的类有以下七个:
- BluetoothGatt
- BluetoothGattCallback
- BluetoothGattService
- BluetoothGattCharacteristics
- BluetoothGattDescriptor
- BluetoothGattServer
- BluetoothGattServerCallback
其中,前两个实现对GATT Client的支持,后两个实现对GATT Server的支持。多数情况下,手机都扮演GATT Client的角色。这些类都包含在android.bluetooth package. 目前Android没有基于GATT的profiles的API,比如Heart Rate
Profile, 开发者需要根据Heart Rate Profile的spec,利用这些类来实现连接并配置Heart Rate Sensor,然后获取并解析Heart Rate Sensor的测量数据。另外,对GATT这一层的一些参数和事件,Android也没有完全支持,所以不是所有的GATT profile都可以在目前的Android版本(4.4.4)上实现。Android对BLE的支持还在不断完善中,在后续的版本中应该会有更好的对BLE的支持。
时间: 2024-12-28 18:21:02