蓝牙 GATT UUID
Bluetooth GATT UUID
我正在尝试构建一个使用 BluetoothLE 的 android 应用程序。在教程中,他们使用 128 位 UUID,但我只有 16 位 UUID。
我必须使用服务 UUID 和蓝牙基地创建一个新的 128 位 UUID。
示例:
- 警报通知服务 UUID(16 位)=> 0x1811
- 蓝牙基础 UUID(128 位)=> 00000000-0000-1000-8000-00805F9B34FB
通过组合这两个 UUID,我们收到...
- 警报通知服务 UUID(128 位)=> 00001811-0000-1000-8000-00805F9B34FB
有正确的方法吗?
我用这个:
public class BLEUtils {
public static final long BT_UUID_LOWER_BITS = 0x800000805F9B34FBl;
public static final long BT_UUID_UPPER_BITS = 0x1000l;
public static final long BT_CCCD_SHORT_UUID = 0x2902l;
public static final UUID BT_CCCD_UUID = get16BitBTUUID(BT_CCCD_SHORT_UUID);
public static UUID get16BitBTUUID(long uuid) {
return new UUID(BT_UUID_UPPER_BITS + (uuid << 32), BT_UUID_LOWER_BITS);
}
}
你的例子看起来很正常。是否被其他设备正确识别?
编辑:
评论中要求的反向操作为:
public static long getShortUuid(UUID uuid) {
long result = uuid.getMostSignificantBits();
result = result - BT_UUID_UPPER_BITS;
result = result >> 32;
return result;
}
虽然我没有测试它。
我正在尝试构建一个使用 BluetoothLE 的 android 应用程序。在教程中,他们使用 128 位 UUID,但我只有 16 位 UUID。 我必须使用服务 UUID 和蓝牙基地创建一个新的 128 位 UUID。
示例:
- 警报通知服务 UUID(16 位)=> 0x1811
- 蓝牙基础 UUID(128 位)=> 00000000-0000-1000-8000-00805F9B34FB
通过组合这两个 UUID,我们收到...
- 警报通知服务 UUID(128 位)=> 00001811-0000-1000-8000-00805F9B34FB
有正确的方法吗?
我用这个:
public class BLEUtils {
public static final long BT_UUID_LOWER_BITS = 0x800000805F9B34FBl;
public static final long BT_UUID_UPPER_BITS = 0x1000l;
public static final long BT_CCCD_SHORT_UUID = 0x2902l;
public static final UUID BT_CCCD_UUID = get16BitBTUUID(BT_CCCD_SHORT_UUID);
public static UUID get16BitBTUUID(long uuid) {
return new UUID(BT_UUID_UPPER_BITS + (uuid << 32), BT_UUID_LOWER_BITS);
}
}
你的例子看起来很正常。是否被其他设备正确识别?
编辑: 评论中要求的反向操作为:
public static long getShortUuid(UUID uuid) {
long result = uuid.getMostSignificantBits();
result = result - BT_UUID_UPPER_BITS;
result = result >> 32;
return result;
}
虽然我没有测试它。