首页 > 代码库 > Android平台BLE应用程序开发指南

Android平台BLE应用程序开发指南

    从Android 4.3开始,BLE(Bluetooth Low Energy)在Android平台上被支持了。但是目前Android上BLE应用程序稀少,尤其是中文应用程序,希望本文对有兴趣开发BLE应用程序的开发者有所帮助。本文主要是对目前已有的Andriod BLE开发相关资料进行整理,给出一个开发资料的索引。(本文会根据大家的问题,不断完善)

基本参考资料

  1. 最基本的学习资料是这篇Android官方文档:《Bluetooth Low Energy》。该文档对BLE涉及的基本概念进行了介绍,并结合例子代码对如何使用Android BLE API进行了讲解。所用的例子源代码在AOSP/developers/samples/android/connectivity/bluetooth/BluetoothLeGatt/。
  2. 开发中需要用到的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定义来解析数据。
  3. “Definition Browser“页面也是一个很重要的参考资料,在这个页面你可以“View the structure of XML definitions for GATTprofiles, services, characteristics,descriptors and declarations and download the definitions in an XML format“,此外还能查看UnitsFormat Types。比如你可以在characteristics->Heart Rate Measurement下看到该characteristic的Assigned number(uuid16)和Value fields的表格。
  4. 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的支持。

Android平台BLE应用程序开发指南