如何在android中从string创buildUUID

在我的应用程序,我扫描低能量蓝牙特定服务uuid 2415 。 将string2415转换为uuid我使用UUID serviceUUID = UUID.fromString("2415"); 但在此行exceptionIllegalArgumentException:无效的UUID 2415。

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

Solutions Collecting From Web of "如何在android中从string创buildUUID"

使用类UUID

像这样的例子:

  UUID.randomUUID().toString() 

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

你有没有尝试过把你的UUID和蓝牙UUID结合起来? 即“00002415-0000-1000-8000-00805F9B34FB”? (假设你的意思是2415hex)?

我正在将该评论转换为答案,因为我第一次读这篇文章时就错过了。

您可以使用

 String str = "1234"; UUID uuid = UUID.nameUUIDFromBytes(str.getBytes()); System.out.print(uuid.toString()); 

这里可能导致很多人的困惑是你可以使用短代码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); } 

例如:

 UUID uuid = uuidFromShortCode16("FFF0"); 

这会从"0000FFF0-0000-1000-8000-00805F9B34FB"创build一个UUID对象。

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

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

例如:
在你的情况下,使用128位的UUID将是"00002415-0000-1000-8000-00805F9B34FB"
并从string获得UUID,你应该使用这样的代码

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

我有一种感觉,你的string“2415”可能是从一个长整型转换而来,因为正如其他人指出的那样,“2415”并不近似于一个UUID。 如果是这种情况,那么你应该使用两个长的UUID构造函数:

uuid = new UUID(long mostSignificant, long leastSignificant)

在那里你可以通过检索那些长的值

uuid.getMostSignificantBits() uuid.getLeastSignificantBits()

所以在你的情况下,你可能会做一些像uuid = new UUID(2415,2415)

转到这样的网站,并获得一个有效的UUIDstring。