Dans mon application, je balaie un Bluetooth à faible consommation d'énergie pour rechercher un service spécifique uuid 2415
. Pour convertir la chaîne 2415 en uuid, j'utilise UUID serviceUUID = UUID.fromString("2415");
, mais à cette exception de ligne se produit IllegalArgumentException: UUID non valide 2415.
S'il vous plaît, aidez-moi à cet égard, je serais très reconnaissant à cet égard. Merci d'avance.
La réponse acceptée a été fournie dans un commentaire de @Michael:
Avez-vous essayé de combiner votre UUID court avec l’UUID de base Bluetooth? C'est à dire. "00002415-0000-1000-8000-00805F9B34FB"? (en supposant que vous vouliez dire 2415 hexadécimal)?
Je convertis ce commentaire en réponse parce que je l'avais manqué la première fois que je lisais ce fil.
vous pouvez utiliser
String str = "1234";
UUID uuid = UUID.nameUUIDFromBytes(str.getBytes());
System.out.print(uuid.toString());
La confusion qui peut conduire de nombreuses personnes ici est que vous pouvez utiliser des UUID de code abrégé pour faire référence à des services et caractéristiques Bluetooth sur d'autres plates-formes - par exemple sur iOS avec CBUUID . UUID complet d'une longueur de 128 bits, comme spécifié dans RFC4122 .
Le correctif (comme @Michael l’a souligné) consiste à ajouter votre UUID court 16 bits ou 32 bits au UUID bluetooth base . Vous pouvez utiliser ces fonctions pour rendre cela un peu plus facile.
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);
}
Par exemple:
UUID uuid = uuidFromShortCode16("FFF0");
Cela crée un objet UUID à partir de "0000FFF0-0000-1000-8000-00805F9B34FB"
.