我正在尝试构建一个使用BluetoothLE的安卓应用程序。在教程中,他们使用128位UUID,但我只有16位UUID。我必须使用服务UUID和蓝牙基础创建一个新的128位UUID。
例子:
通过合并这两个UUID,我们收到..。
有什么合适的方法吗?
发布于 2016-04-21 07:49:41
我用这个:
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;
}不过我没试过。
https://stackoverflow.com/questions/36738698
复制相似问题