我正在尝试将 BLE 模块(bluegiga BLE112)与我的 nexus 4(android 4.3)一起使用。我可以连接,获取设备名称,连接到 GATT,但服务发现失败。
以下是初始 gatt 连接的方式(似乎工作成功:
dev.connectGatt(getBaseContext(), true, btGattCB);
这是 GATT 回调:
private BluetoothGattCallback btGattCB = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
super.onConnectionStateChange(gatt, status, newState);
if(newState == BluetoothProfile.STATE_CONNECTED){
Log.i(TAG, "Gatt Connected");
gatt.discoverServices();
}
else if(newState == BluetoothProfile.STATE_DISCONNECTED){
Log.i(TAG, "Gatt Disconnected");
}
}
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status){
Log.i(TAG,"Status onServiceDiscovered: "+status); //status code i'm getting here is 129
List<BluetoothGattService> btServices = gatt.getServices();//try anyway
}
};
这是我的日志:
09-28 12:58:37.611 4118-4130/com.jnewt.btFive I/PDU? Scan Callback
09-28 12:58:37.611 4118-4130/com.jnewt.btFive I/PDU? Device is: 00:07:80:67:2F:63
09-28 12:58:37.611 4118-4130/com.jnewt.btFive I/PDU? Device Name: BGT GPIO Test
09-28 12:58:43.607 4118-4118/com.jnewt.btFive I/PDU? Scan Timeout
09-28 12:59:13.539 4118-4129/com.jnewt.btFive I/PDU? Gatt Connected
09-28 12:59:43.561 4118-4190/com.jnewt.btFive I/PDU? Service Discovery Failed
09-28 12:59:43.581 4118-4130/com.jnewt.btFive I/PDU? Gatt Disconnected
09-28 13:00:00.920 4118-4129/com.jnewt.btFive I/PDU? Gatt Connected
09-28 13:00:30.902 4118-4130/com.jnewt.btFive I/PDU? Service Discovery Failed
09-28 13:00:30.922 4118-4190/com.jnewt.btFive I/PDU? Gatt Disconnected
09-28 13:01:20.265 4118-4129/com.jnewt.btFive I/PDU? Gatt Connected
09-28 13:01:50.277 4118-4190/com.jnewt.btFive I/PDU? Service Discovery Failed
09-28 13:01:50.297 4118-4130/com.jnewt.btFive I/PDU? Gatt Disconnected
09-28 13:01:56.113 4118-4129/com.jnewt.btFive I/PDU? Gatt Connected
09-28 13:02:26.115 4118-4190/com.jnewt.btFive I/PDU? Service Discovery Failed
09-28 13:02:26.125 4118-4130/com.jnewt.btFive I/PDU? Gatt Disconnected
从https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html页面,我没有看到 129 被提及为可能的状态(没有一个常量与 129 匹配)。
在这一点上,我完全没有想法。通过使用类似的 iphone 示例进行测试,我已将问题隔离到 android 手机。我还尝试了 Play 商店中提供的几个应用程序,它们也有类似的问题(可以连接、获取名称等,但没有服务)。