从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 GATTprofiles, 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相关的类
- BluetoothGatt
- BluetoothGattCallback
- BluetoothGattService
- BluetoothGattCharacteristics
- BluetoothGattDescriptor
- BluetoothGattServer
- BluetoothGattServerCallback
硬件平台
开发BLE应用程序不仅需要一部支持BLE的Android手机,还需要BLE Sensors。这些Sensor如果每种单独购买市场上的产品,价格比较贵。作为应用程序开发者来说,最好是购买TI提供的BLE开发套件。TI提供了两种开发套件:CC2540/2541 Mini Development Kit(99美元)和CC2541 SensorTag Development Kit(25美元)。前者的硬件包含一个CC2540 USB Dongle,CC2540 "Keyfob"开发板(配备a two-colored LED, a buzzer, an accelerometer, and two buttons),CC Debugger烧写调试器。后者的硬件只包含一个SensorTag(配备IR temperature Sensor, Humidity Sensor, Pressure Sensor, Accelerometer, Gyroscope, Magnetometer)。虽然前者支持的sensor只有一个,但是它是可编程的,能运行任意BLE profile的模拟程序,这样就能仿真各种sensor,并且TI提供了多数BLE profile的模拟程序源代码。个人建议还是购买CC2540/2541 Mini Development Kit。在Google Play/App Store上TI提供了支持SensorTag的应用程序。在www.ti.com上可以直接购买这两种套件,无须在某宝上被二道贩子再赚一比。TI也可能免费提供这两种套件(我自己的就是),不过TI不收钱,不代表海关不收税,Mini Development Kit大概会被中国海关课100块的关税、增值税;SensorTag如果是分开购买,好像是免税的。