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)
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)
可能导致许多人在这里的混乱是你可以使用短代码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".
希望这会有所帮助
异常是由于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
| 归档时间: |
|
| 查看次数: |
46693 次 |
| 最近记录: |