Я пытаюсь прочитать данные, взятые из шкалы BLE после измерения.Если я пытаюсь прочитать название модели, все работает.
Pearing правильно.Я правильно получаю сообщение с подтверждением на дисплее об успешной установке даты.После измерения устройство предоставляет сервисы, и я использую простую кнопку для запуска соединения через адрес.
buttonConnect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String deviceAddress = "B4:99:4C:6E:20:68";
BluetoothDevice device = getBluetoothAdapter(getApplicationContext()).getRemoteDevice(deviceAddress);
connectToDevice(device, false);
}
});
соединение через GATT
public void connectToDevice(BluetoothDevice device, boolean pairing) {
if (mGatt == null) {
mGatt = device.connectGatt(this, false, gattCallbackNoPairing);
}
}
метод callBack, вызываемый connectGatt
private final BluetoothGattCallback gattCallbackNoPairing = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
Log.i("onConnectionStateChange", "Status: " + status);
switch (newState) {
case BluetoothProfile.STATE_CONNECTED:
Log.i("gattCallback", "STATE_CONNECTED");
gatt.discoverServices();
break;
case BluetoothProfile.STATE_DISCONNECTED:
Log.e("gattCallback", "STATE_DISCONNECTED");
break;
default:
Log.e("gattCallback", "STATE_OTHER");
}
}
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
Log.i("Callback", "onServicesDiscovered");
BluetoothGattCharacteristic characteristic = gatt.getService(ADGattUUID.WeightScaleService).getCharacteristic(ADGattUUID.WeightScaleMeasurement);
BluetoothGattDescriptor descriptor = characteristic.getDescriptor(ADGattUUID.ClientCharacteristicConfiguration);
descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
boolean result = gatt.writeDescriptor(descriptor);
Log.i("writeDescriptor", String.valueOf(result));
}
Когда я прихожу к этому моменту и выполняю writeCharacteristic, я всегда получаю ложь
@Override
public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor,
int status) {
Log.i("Callback", "onDescriptorWrite");
BluetoothGattCharacteristic characteristic = gatt.getService(ADGattUUID.WeightScaleService).getCharacteristic(ADGattUUID.WeightScaleMeasurement);
characteristic.setValue(new byte[]{1, 1});
boolean result1 = gatt.writeCharacteristic(characteristic);
Log.i("writeCharacteristic", String.valueOf(result1));
}
@Override
public void onCharacteristicChanged(BluetoothGatt gatt,
BluetoothGattCharacteristic
characteristic) {
Log.i("Callback", "onCharacteristicChanged");
Log.i("onCharacteristicChanged", new String(characteristic.getValue()));
}
};
Действительно, в документации это обозначено как «Указать».Так как мне восстановить эти данные?