Итак, у меня есть периферийное устройство BLE с пользовательским UUID, и я могу нормально к нему подключиться. Я могу прочитать пользовательскую характеристику, используя:
if (UUID_HEART_RATE_MEASUREMENT.equals(characteristic.getUuid())) {
int flag = characteristic.getProperties();
int format = -1;
if ((flag & 0x01) != 0) {
format = BluetoothGattCharacteristic.FORMAT_UINT16;
Log.d(TAG, "Heart rate format UINT16.");
} else {
format = BluetoothGattCharacteristic.FORMAT_UINT8;
Log.d(TAG, "Heart rate format UINT8.");
}
final int heartRate = characteristic.getIntValue(format, 1);
Log.d(TAG, String.format("Received heart rate: %d", heartRate));
intent.putExtra(EXTRA_DATA, String.valueOf(heartRate));
}
else {
if(characteristic.getValue()!=null){
final int data2 = characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT32, 0);
intent.putExtra("Right",String.valueOf(data2));}
}
sendBroadcast(intent);
}
Но если я хочу указать, что делать с конкретной характеристикой:
public final static UUID chara = UUID.fromString("custom 128bit UUID");
private void broadcastUpdate(final String action,
final BluetoothGattCharacteristic characteristic) {
final Intent intent = new Intent(action);
if(chara.equals(characteristic.getUuid())){
if(characteristic.getValue()!=null){
final int data2 = characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT32, 0);
intent.putExtra("Right",String.valueOf(data2));}
}
sendBroadcast(intent);
}
Я получаю сообщение об ошибке при получении широковещательного намерения ..... Вызвано: java.lang.NumberFormatException: Invalid int: "null"
Может ли кто-нибудь сказать мне, что я делаю неправильно?