首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蓝牙GATT UUID

蓝牙GATT UUID
EN

Stack Overflow用户
提问于 2016-04-20 08:58:49
回答 1查看 1.3K关注 0票数 1

我正在尝试构建一个使用BluetoothLE的安卓应用程序。在教程中,他们使用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

有什么合适的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-21 07:49:41

我用这个:

代码语言:javascript
复制
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);
    }
}

你的例子看上去很正常。它是否被其他设备正确识别?

编辑:评论中要求的反向操作是:

代码语言:javascript
复制
public static long getShortUuid(UUID uuid) {
    long result = uuid.getMostSignificantBits();
    result = result - BT_UUID_UPPER_BITS;
    result = result >> 32;
    return result;
}

不过我没试过。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36738698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档