1

截至今天,摩托罗拉开发者门户网站正在将问题重定向到 Stack Overflow 和谷歌 Android 论坛,因此希望摩托罗拉的人正在倾听。

我正在尝试在 ICS 设备(在我的情况下为 Atrix HD)上开发一个简单的应用程序,该应用程序可以查询和写入 GATT 配置文件(不仅仅是心率监测器)。

对于 ICS, http://www.motorola.com/sites/motodev/library/bluetooth_gatt_apis.html上的说明/示例充其量是不完整的。例如 MOT_BTLE_Stubs.jar 不包含在 ICS 下载中。相反,我们有 BluetoothGatt.jar 和 BluetoothGattService.jar。但是这些库没有教程中提到的 BluetoothGatt.connectGatt(...)。

ICS 插件包含一个示例,它引导我生成 ACTION_GATT 意图,但是当我收到以下内容的 NULL 返回时失败:

String[] ObjectPathArray = (String[])intent.getStringArrayExtra(BluetoothDevice.EXTRA_GATT);

一个编写良好的 ICS 示例将为摩托罗拉和规模虽小但不断壮大的 Android BLE 开发者社区提供极大的帮助。

谢谢!

PVS

4

2 回答 2

3

我偶然发现了完全相同的问题。

我有一个更新到 Android ICS (4.0.4) 的 Razr XT910,我正在使用摩托罗拉手机 SDK 插件“ Motorola_ICS_R2”。

我现在谈论的是 SDK 插件示例“Motorola_BLE_profile_sample”,我将其用作配置文件模板来与运行 SimplePeripheral 示例的 TI CC2540 开发套件的 Keyfob 进行通信。

当您创建配置文件服务时,请确保调用 BluetoothGattService(...) 包含您要连接的设备实现的有效GATT 主要服务声明 UUID 。这将解决您使用空 ObjectPathArray 的问题。

例如,我的 Keyfob 使用 UUID 0x180A 实现设备信息服务,您可以在 BLE CC2540 开发套件用户指南 (http://www.ti.com/lit/ug/swru270b/swru270b) 中找到 Keyfob 的此信息.pdf) 在图 20 中的第 14 页。您看到句柄 0x01、0x0C、0x0F 的类型 0x2800,这些都是主要服务。您可以在此处找到 GATT 配置文件属性类型。现在您将您的个人资料模板 (Motorola_BLE_profile_sample) 从

    public static final ParcelUuid HRM = ParcelUuid
        .fromString("0000180D-0000-1000-8000-00805f9b34fb");

至:

    public static final ParcelUuid HRM = ParcelUuid
        .fromString("0000180A-0000-1000-8000-00805f9b34fb");

运行应用程序后,LogCat 如下所示:

11-09 03:17:39.674: I/BluetoothLe(17462): onStop()
11-09 03:17:40.478: I/BluetoothLe(17462): onStart()
11-09 03:17:40.478: I/BluetoothLe(17462): onResume()
11-09 03:17:40.978: D/BluetoothLeREceiver(17462): Bluetooth LE receiver intnet action: android.bluetooth.devicepicker.action.DEVICE_SELECTED
11-09 03:17:40.986: I/BluetoothLe(17462): enter startConnection and value of devicePicker is true
11-09 03:17:40.986: D/BluetoothLe(17462): Calling  btDevice.getGattServices
11-09 03:17:40.994: V/BluetoothLe(17462): primary service was successful
11-09 03:17:40.994: D/BluetoothLe(17462): GATT action
11-09 03:17:41.002: D/BluetoothLe(17462): GATT Service data list len : 1
11-09 03:17:41.002: V/BluetoothLe(17462): getBluetoothGattService()
11-09 03:17:41.002: D/BluetoothLe(17462):  ++++++ Creating BluetoothGattService with device = 90:D7:EB:B2:4D:1D uuid 0000180a-0000-1000-8000-00805f9b34fb objPath = /org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010
11-09 03:17:41.002: D/BluetoothGattService(17462): Discovery State 0 to 0
11-09 03:17:41.002: D/BluetoothGattService(17462): Bond state of remote device : 90:D7:EB:B2:4D:1D is 12
11-09 03:17:41.002: D/BluetoothGattService(17462): doDiscovery /org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010
11-09 03:17:41.002: D/BluetoothGattService(17462): Discovery State 0 to 2
11-09 03:17:41.002: D/BluetoothLe(17462): getBluetoothGattService(): Adding gatt service to map for : 0000180a-0000-1000-8000-00805f9b34fbsize :1
11-09 03:17:41.002: D/BluetoothGattService(17462): readCharacteristicValue for /org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010
11-09 03:17:55.463: D/BluetoothGattService(17462): onCharacteristicsDiscovered: [Ljava.lang.String;@41412ea0
11-09 03:17:55.471: D/BluetoothGattService(17462): Discovered  9 characteristics for service /org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010 ( null )
11-09 03:17:55.510: D/BluetoothGattService(17462): Discovery State 2 to 1
11-09 03:17:55.510: D/BluetoothLe(17462): onDiscoverCharacteristicsResult :  path : /org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010 result : true
11-09 03:17:55.510: D/BluetoothLe(17462): gattService.getServiceUuid() ======= 0000180a-0000-1000-8000-00805f9b34fb
11-09 03:17:55.517: D/BluetoothGattService(17462): Characteristic UUID: 00002a23-0000-1000-8000-00805f9b34fb
11-09 03:17:55.517: D/BluetoothGattService(17462): Characteristic UUID: 00002a24-0000-1000-8000-00805f9b34fb
11-09 03:17:55.517: D/BluetoothGattService(17462): Characteristic UUID: 00002a25-0000-1000-8000-00805f9b34fb
11-09 03:17:55.517: D/BluetoothGattService(17462): Characteristic UUID: 00002a26-0000-1000-8000-00805f9b34fb
11-09 03:17:55.517: D/BluetoothGattService(17462): Characteristic UUID: 00002a27-0000-1000-8000-00805f9b34fb
11-09 03:17:55.517: D/BluetoothGattService(17462): Characteristic UUID: 00002a28-0000-1000-8000-00805f9b34fb
11-09 03:17:55.517: D/BluetoothGattService(17462): Characteristic UUID: 00002a29-0000-1000-8000-00805f9b34fb
11-09 03:17:55.517: D/BluetoothGattService(17462): Characteristic UUID: 00002a2a-0000-1000-8000-00805f9b34fb
11-09 03:17:55.525: D/BluetoothGattService(17462): Characteristic UUID: 00002a50-0000-1000-8000-00805f9b34fb
11-09 03:17:55.525: D/BluetoothGattService(17462): value is : /org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010/characteristic0012,/org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010/characteristic0014,/org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010/characteristic0016,/org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010/characteristic0018,/org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010/characteristic001a,/org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010/characteristic001c,/org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010/characteristic001e,/org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010/characteristic0020,/org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010/characteristic0022,
11-09 03:17:55.525: D/BluetoothGattService(17462): Characteristic UUID: 00002a23-0000-1000-8000-00805f9b34fb
11-09 03:17:55.525: D/BluetoothLe(17462):  Map with key UUID : 00002a23-0000-1000-8000-00805f9b34fb value : /org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010/characteristic0012
11-09 03:17:55.525: D/BluetoothGattService(17462): Characteristic UUID: 00002a24-0000-1000-8000-00805f9b34fb
11-09 03:17:55.525: D/BluetoothLe(17462):  Map with key UUID : 00002a24-0000-1000-8000-00805f9b34fb value : /org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010/characteristic0014
11-09 03:17:55.525: D/BluetoothGattService(17462): Characteristic UUID: 00002a25-0000-1000-8000-00805f9b34fb
11-09 03:17:55.525: D/BluetoothLe(17462):  Map with key UUID : 00002a25-0000-1000-8000-00805f9b34fb value : /org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010/characteristic0016
11-09 03:17:55.525: D/BluetoothGattService(17462): Characteristic UUID: 00002a26-0000-1000-8000-00805f9b34fb
11-09 03:17:55.525: D/BluetoothLe(17462):  Map with key UUID : 00002a26-0000-1000-8000-00805f9b34fb value : /org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010/characteristic0018
11-09 03:17:55.525: D/BluetoothGattService(17462): Characteristic UUID: 00002a27-0000-1000-8000-00805f9b34fb
11-09 03:17:55.533: D/BluetoothLe(17462):  Map with key UUID : 00002a27-0000-1000-8000-00805f9b34fb value : /org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010/characteristic001a
11-09 03:17:55.533: D/BluetoothGattService(17462): Characteristic UUID: 00002a28-0000-1000-8000-00805f9b34fb
11-09 03:17:55.533: D/BluetoothLe(17462):  Map with key UUID : 00002a28-0000-1000-8000-00805f9b34fb value : /org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010/characteristic001c
11-09 03:17:55.533: D/BluetoothGattService(17462): Characteristic UUID: 00002a29-0000-1000-8000-00805f9b34fb
11-09 03:17:55.533: D/BluetoothLe(17462):  Map with key UUID : 00002a29-0000-1000-8000-00805f9b34fb value : /org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010/characteristic001e
11-09 03:17:55.533: D/BluetoothGattService(17462): Characteristic UUID: 00002a2a-0000-1000-8000-00805f9b34fb
11-09 03:17:55.533: D/BluetoothLe(17462):  Map with key UUID : 00002a2a-0000-1000-8000-00805f9b34fb value : /org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010/characteristic0020
11-09 03:17:55.533: D/BluetoothGattService(17462): Characteristic UUID: 00002a50-0000-1000-8000-00805f9b34fb
11-09 03:17:55.533: D/BluetoothLe(17462):  Map with key UUID : 00002a50-0000-1000-8000-00805f9b34fb value : /org/bluez/358/hci0/dev_90_D7_EB_B2_4D_1D/service0010/characteristic0022
11-09 03:17:55.533: D/BluetoothLe(17462): Created map with size : 10

就这样 :-)

于 2012-11-09T03:21:48.650 回答
0

完全同意您对摩托罗拉文档、示例和开发人员支持的糟糕程度的看法。

我确实找到了这个:http ://www.tekritisoftware.com/how-to-implement-ble-in-android 这可能会有所帮助,但我仍在等待我的 btle 设备,所以还没有尝试过。

于 2012-11-08T06:13:26.083 回答