如何在android中从字符串创建UUID

use*_*760 41 uuid android bluetooth-lowenergy

在我的应用程序中,我扫描低功耗蓝牙的特定服务uuid 2415.要将字符串2415转换为uuid我正在使用UUID serviceUUID = UUID.fromString("2415");但在此行出现异常IllegalArgumentException:无效的UUID 2415.

请在这方面帮助我,在这方面我将非常感谢.提前致谢.

Alé*_*lho 33

使用类UUID

像这样的例子:

 UUID.randomUUID().toString()
Run Code Online (Sandbox Code Playgroud)

  • 我不明白这个答案应该如何有用.这为您提供了与OP问题无关的随机UUID. (16认同)
  • 我不明白为什么人们会对此表示支持,是的,它链接到正确的类,但是与为什么在其他平台上我们可以使用CBUUID“ 140D”的问题无关,而在Android中对此没有支持。 (5认同)

Ric*_*ier 18

@Michael在评论中提供了接受的答案:

您是否尝试将短UUID与蓝牙基础UUID结合使用?即"00002415-0000-1000-8000-00805F9B34FB"?(假设你的意思是2415十六进制)?

我正在将该评论转换为答案,因为我在第一次阅读这个帖子时错过了它.


Öze*_*can 11

您可以使用

String str = "1234";
UUID uuid = UUID.nameUUIDFromBytes(str.getBytes());

System.out.print(uuid.toString());
Run Code Online (Sandbox Code Playgroud)

  • 虽然这可以解决问题,但总是很好的解释为什么/如何工作的解释. (4认同)

92t*_*lls 8

可能导致许多人在这里的混乱是你可以使用短代码UUID来引用其他平台上的蓝牙服务和特性 - 例如在带有CBUUID的 iOS上.但是,在Android上,您必须提供RFC4122中指定的完整的128位长度UUID .

修复(正如@Michael指出的那样)是将16位或32位短UUID添加到基本蓝牙UUID.您可以使用这些功能使这更容易一些.

public static final String baseBluetoothUuidPostfix = "0000-1000-8000-00805F9B34FB";

public static UUID uuidFromShortCode16(String shortCode16) {
    return UUID.fromString("0000" + shortCode16 + "-" + baseBluetoothUuidPostfix);
}

public static UUID uuidFromShortCode32(String shortCode32) {
    return UUID.fromString(shortCode32 + "-" + baseBluetoothUuidPostfix);
}
Run Code Online (Sandbox Code Playgroud)

例如:

UUID uuid = uuidFromShortCode16("FFF0");
Run Code Online (Sandbox Code Playgroud)

这将创建一个UUID对象"0000FFF0-0000-1000-8000-00805F9B34FB".


Akh*_*mar 6

希望这会有所帮助
异常是由于UUID.fromString()方法中的参数无效.

UUID.fromString()方法期望"302a5a70-c085-4946-b702-fc1deb1046af"字符串的类型作为其参数并返回UUID类的实例.
要将短手16位uuid转换为128位uuid,您可以使用此模板"0000XXXX-0000-1000-8000-00805F9B34FB".这里XXXX用你的16位uuid 替换.

例如:
在您的情况下使用128位UUID "00002415-0000-1000-8000-00805F9B34FB".
要从字符串中获取UUID,您应该使用这样的代码

UUID uuid = UUID.fromString("00002415-0000-1000-8000-00805F9B34FB");
https://newcircle.com/s/post/1786/2016/01/04/bluetooth-uuids-and-interoperable-advertisements