Подтвердить что ты не робот

Как создать UUID из строки в android

В моем приложении я сканирую низкоэнергетический Bluetooth для конкретного сервиса uuid 2415. Чтобы преобразовать строку 2415 в uuid, я использую UUID serviceUUID = UUID.fromString("2415");, но в этой строке возникает исключение IllegalArgumentException: Неверный UUID 2415.

Пожалуйста, помогите мне в этом отношении, я бы очень благодарен в этом отношении. Спасибо заранее.

4b9b3361

Ответ 1

Использование класса UUID

Пример:

 UUID.randomUUID().toString()

Ответ 2

Принятый ответ был предоставлен в комментарии от @Michael:

Вы пробовали комбинировать свой короткий UUID с базовым UUID Bluetooth? То есть "00002415-0000-1000-8000-00805F9B34FB"? (предполагая, что вы имели в виду 2415 шестнадцатеричных)?

Я преобразовываю этот комментарий в ответ, потому что я пропустил его в первый раз, когда прочитал этот поток.

Ответ 3

вы можете использовать

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

System.out.print(uuid.toString());

Ответ 4

Путаница, которая может привести многих людей здесь, заключается в том, что вы можете использовать UUID с коротким кодом для ссылки на службы и характеристики bluetooth на других платформах - например, на iOS с CBUUID. Однако на Android вы должны предоставить полный UUID длиной 128 бит, как указано в RFC4122.

Исправление (как указал @Michael) - добавить 16-битный или 32-разрядный короткий UUID к базовому Bluetooth 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");

Это создает объект UUID из "0000FFF0-0000-1000-8000-00805F9B34FB".

Ответ 5

Надеюсь, что это поможет
Исключение связано с недопустимым аргументом в методе UUID.fromString().

Метод UUID.fromString() ожидает "302a5a70-c085-4946-b702-fc1deb1046af" тип строки в качестве аргумента и возвращает экземпляр класса UUID.
Чтобы преобразовать 16-битную комбинацию с 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

Ответ 6

У меня такое ощущение, что ваш String "2415" может быть просто преобразован из длинного, потому что, как указывают другие, "2415" не близок к UUID. Если это так, то вы должны использовать конструктор UUID, который занимает две длинные строки:

uuid = new UUID(long mostSignificant, long leastSignificant)

где вы можете получить эти длинные значения с помощью

uuid.getMostSignificantBits() uuid.getLeastSignificantBits()

Итак, в вашем случае вы можете сделать что-то вроде uuid = new UUID(2415,2415)

Ответ 7

Перейдите на веб-сайт, например this и получите допустимую строку UUID.