我有一个BLE设备(智能手表),其中我想从服务中读取所有数据并在我的应用程序中使用(Swift和Android),我如何从自定义服务访问数据,但我无法在中查看UUID关贸总协定的服务和特点
答案 0 :(得分:1)
您可以使用此代码读取数据。它为我工作。 当您连接Smartwatch时,您需要发送服务发现请求。所以,下面的回调方法被触发了。在这种方法中获得您的服务和特征。
@Override
public void onServicesDiscovered(final BluetoothGatt gatt, final int status) {
Log.e(TAG, "onServicesDiscovered: ");
if (status != BluetoothGatt.GATT_SUCCESS) {
Log.w(TAG, "onServicesDiscovered received: " + status);
return;
}
BluetoothGattService customService = gatt.getService(CUSTOM_SERVICE_UUID);
if (customService != null) {
customNotifyCharacteristic = customService.getCharacteristic(CUSTOM_CHARACTERISTICS_NOTIFY_UUID);
customWriteCharacteristic = customService.getCharacteristic(CUSTOM_CHARACTERISTICS_WRITE_UUID);
customReadCharacteristic = customService.getCharacteristic(CUSTOM_CHARACTERISTICS_READ_UUID);
}
}
获取所有特征和服务后发送如下所示的读取请求。 放在需要读取数据的行下方。
readCharacteristic(customReadCharacteristic);
下面解释readCharacteristic方法。
public void readCharacteristic(BluetoothGattCharacteristic characteristic) {
if (mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w(TAG, "BluetoothAdapter not initialized");
return;
}
mBluetoothGatt.readCharacteristic(characteristic);
}
因此,触发了onCharacteristicRead回调。
@Override
public void onCharacteristicRead(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic,
int status) {
if (status == BluetoothGatt.GATT_SUCCESS) {
byte[] data = characteristic.getValue();
}
}
byte [] data = characteristic.getValue(); 返回您想要从设备中读取的数据。