经过多次成功连接后,Android GATT Services返回Null

时间:2014-05-01 16:06:27

标签: android bluetooth bluetooth-lowenergy

我正在开发一个连接到BLE设备的Android应用程序,设备大部分时间连接,我能够捕获读数。但是在很多连接断开后,蓝牙开/关,我的BluetoothGattCallback类方法

onServicesDiscovered(BluetoothGatt gatt, int status)

状态为0 [表示GATT_SUCCESS]。

现在当我尝试获得BluetoothGattService时:

BluetoothGattService service = gatt.getService(getServiceUUID());

它返回null,因此我无法执行后续步骤。 请帮我找到问题。

2 个答案:

答案 0 :(得分:4)

您必须首先发现给定设备的所有服务,否则当您运行BluetoothGattService service = gatt.getService(getServiceUUID());时,它将返回null。

我建议您添加onServicesDiscovered功能并改为使用gatt.discoverServices();

@Override
    // New services discovered
    public void onServicesDiscovered(BluetoothGatt gatt, int status) {
        if (status == BluetoothGatt.GATT_SUCCESS) {
            for (BluetoothGattService gattService : gattServices) {
                Log.i(TAG, "Service UUID Found: " + gattService.getUuid().toString());
            }
        }
    }

答案 1 :(得分:0)

你好,因为蓝牙低能量是unstable。并且您的问题定义您获得具有0状态代码的回调函数。而不是使用getServivce(UUID)。您可以使用getServices()方法来发现可用的服务。这可能是uuid问题!!也许你的UUID错了..