Я объясню свою проблему, я списываю список доступных BLE, и когда нахожу конкретный, я делаю следующее
gatt = device.connectGatt(MainActivity.this, true, gattCallback);
и там все в порядке (или я так думаю).
Но когда я запускаю приведенный ниже код: gatt.getService(BLOOD_PRESURE_SERVICE_UUID).getCharacteristic(BLOOD_PRESURE_MEASUREMENT_CHAR_UUID);
Я получил эту ошибку:
W / BluetoothGatt: необработанное исключение в обратном вызове java .lang.NullPointerException : Попытка вызвать виртуальный метод 'android .bluetooth.BluetoothGattCharacteristic android .bluetooth.BluetoothGattService.getCharacteristi c (java .util.UUID)' для ссылки на пустой объект
И я понятия не имею, почему, объект gatt поставляется с контентом, поэтому он не равен нулю или не должен
BluetoothGattCallback gattCallback = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
super.onConnectionStateChange(gatt, status, newState);
if (newState == BluetoothProfile.STATE_CONNECTED){
gatt.discoverServices();
}
}
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
super.onServicesDiscovered(gatt, status);
BluetoothGattCharacteristic characteristic =
gatt.getService(BLOOD_PRESURE_SERVICE_UUID)
.getCharacteristic(BLOOD_PRESURE_MEASUREMENT_CHAR_UUID);
gatt.setCharacteristicNotification(characteristic, true);
BluetoothGattDescriptor descriptor =
characteristic.getDescriptor(CLIENT_CHARACTERISTIC_CONFIG_UUID);
descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
gatt.writeDescriptor(descriptor);
}
};
Я читал в другой записи, что у человека произошло, что CallBack был пуст и вот почему ошибка прыгнула. Этот пользователь комментирует решение, которое они предоставляют, Необработанное исключение при обратном вызове при попытке соединения с BluetoothGatt Но если это мой случай, я не знаю, как его решить.
Пожалуйста, помогите. Спасибо