onCharacteristicChanged没有用BLE调用

时间:2016-06-27 03:03:02

标签: android bluetooth-lowenergy

我已连接血压设备并在onServiceDicovered中设置通知。

我设置了每个特征的通知。 但onCharacteristicChanged仍然没有被调用。

public final static UUID CLIENT_UUID = UUID.fromString("00002902-0000-1000-8000-00805f9b34fb");

gatt.setCharacteristicNotification(characteristic, enabled);
for (BluetoothGattDescriptor dp : characteristic.getDescriptors()) {
    dp = characteristic.getDescriptor(CLIENT_UUID);
    if (dp != null) {
      if ((characteristic.getProperties() & BluetoothGattCharacteristic.PROPERTY_NOTIFY) != 0) { 
         descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
      } else if ((characteristic.getProperties() & BluetoothGattCharacteristic.PROPERTY_INDICATE) != 0) { 
         descriptor.setValue(BluetoothGattDescriptor.ENABLE_INDICATION_VALUE);
      }

    gatt.writeDescriptor(dp);
    }
}


@Override
public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
    super.onCharacteristicChanged(gatt, characteristic);

我想接受血压,但是特征变化从未打过电话。 但我可以用ios或其他示例代码接收。

谢谢!

1 个答案:

答案 0 :(得分:0)

首先,public static List<Integer> intGenerate(List<Integer> INLIST) { Random Rand = new Random(); int RANDOMNUM = Rand.nextInt((9999999 - 1000000) + 1) + 1000000; if(INLIST.isEmpty()) { INLIST.add(randomNum); }else { while(INLIST.contains(randomNum)==true) { RANDOMNUM = Rand.nextInt((9999999 - 1000000) + 1) + 1000000; } INLIST.add(RANDOMNUM); } return INLIST; 的属性为Blood Pressure Measurement,而不是Indicate

https://developer.bluetooth.org/gatt/services/Pages/ServiceViewer.aspx?u=org.bluetooth.service.blood_pressure.xml

iOS Notify会自动设置CBPeripheral setNotifyValueIndicate,但Android无法实现。

给你一些参考代码

Notify