Различие между подключением Bluetooth к устройству Mac или Windows/Linux

Можно ли проверить, произведено ли подключенное устройство Apple или работает ли оно на macOS?

Я видел некоторую информацию об UUID, которая может содержать эту информацию, но я не нашел способа извлечь из нее эту информацию. https://www.bluetooth.com/specifications/assigned-numbers/

Есть присвоенные номера, но я не выяснил, могу ли я полагаться на то, что UUID всегда имеет эту информацию, и если он даже содержит способ проверки.

В моем случае я разрабатываю приложение для Android, но я думаю, что язык программирования здесь не имеет значения. Если у меня есть UUID, как я могу проверить, изготовлен ли он Apple?

Поэтому мне нужен либо общий способ выяснить, является ли UUID от Apple, либо особый способ получения этой информации для Android, в основном имеющий доступ только к объекту BluetoothDevice (без рекламы или других вещей более низкого уровня, потому что я не получаю доступ к подключение напрямую)

Чтобы быть более конкретным, я использую BluetoothHidDevice для подключения https://developer.android.com/reference/android/bluetooth/BluetoothHidDevice


Изменить: мне предоставлена ​​переменная device.uuids, которая содержит несколько UUID

Каждый из них имеет следующие методы: UUids

Что именно я могу сделать со значениями, чтобы проверить, является ли производитель яблоком. Метод toString генерирует строку uuid, как и ожидалось.

Итак, чтобы привести пример, устройство Windows имеет несколько UUIDS, один из которых выглядит следующим образом:

toString: 0000111f-0000-1000-8000-00805f9b34fb

leastSignificantBits: -9223371485494954757

mostSignificantBits: 18824841662464

Предусмотрено около 32 UUID.


person Merthan Erdem    schedule 30.05.2021    source источник
comment
Идентификационные коды компании чаще всего можно увидеть в рекламных данных производителя при сканировании устройств. Как правило, Bluetooth не заботится о том, какая ОС удаленного устройства, а только о том, какие данные доступны. Идентификатор Apple, например, частично позволяет идентифицировать iBeacons из рекламных данных.   -  person ukBaz    schedule 31.05.2021
comment
Если ваше устройство рекламирует, вы можете, по крайней мере, легко обнаружить ПК/ноутбуки с Windows.   -  person Mike Petrichenko    schedule 31.05.2021
comment
Вы используете классический Bluetooth или Bluetooth с низким энергопотреблением? Если вы используете классический Bluetooth, обратите внимание, что Apple имеет ограниченную поддержку классического Bluetooth, которая еще не полностью разработана. Если вы используете BLE, ваш API BluetoothHidDevice не будет работать, так как он предназначен только для классического Bluetooth.   -  person Youssif Saeed    schedule 06.06.2021
comment
Да, с помощью классического Bluetooth   -  person Merthan Erdem    schedule 06.06.2021


Ответы (3)


Я нашел хакерский способ сделать это, но на устройствах должно быть активировано обнаружение Bluetooth, что вы можете сделать с помощью Android, так это вызвать метод startDiscovery(), который позволяет сканировать ближайшие устройства, которые можно обнаружить. Это позволяет вам создать список имен Bluetooth, которые вы можете отфильтровать с помощью регулярного выражения для поиска всего, что содержит термин mac, macos, osx, macbook, etc., учитывая, что большинство людей на самом деле не меняют имя своего устройства Bluetooth, это может быть достаточно хорошим решением вашей проблемы.

Вот очень подробный ответ на другой вопрос, который может помочь вам найти то, что вам нужно -forcing-the-de">Найти все Bluetooth-устройства (гарнитуры, телефоны и т. д.) поблизости, не переводя устройства в режим обнаружения

person MathieuAuclair    schedule 09.06.2021
comment
Уже думал об этом, но имена слишком ненадежны :/ - person Merthan Erdem; 09.06.2021

Я не думаю, что Apple будет нарушать спецификации Bluetooth, поэтому я думаю, что можно с уверенностью предположить, что идентификатор компании в UUID является надежным источником информации. Вы можете проверить UUID для назначенных идентификаторов компаний, предоставленных Bluetooth SIG. Идентификатор Apple: 0x004C. Однако я не вижу способа получить информацию об операционной системе. Возможно, если вы подробно опишете свой вариант использования, может быть более удобный способ добиться того, что вы намереваетесь.

person fxweidinger    schedule 09.06.2021
comment
Спасибо, пожалуйста, посмотрите на редактирование, я не уверен, как именно я использую выделенные идентификаторы, чтобы узнать это. И если мне нужно проверить ВСЕ предоставленные UUID устройства или только один - person Merthan Erdem; 09.06.2021

Пожалуйста, откройте этот 16-битные номера UUID Документ. Здесь на 3-й странице вы можете увидеть таблицу распределения UUID с выделенными устройствами. Вы можете использовать 16-битный UUID для списка участников, чтобы узнать, какое устройство подключено, например, Apple, Samsung, Huawei и т. д. Таким образом, мы можем найти 16-битные UUID на основе Apple, поскольку Apple является единственной платформой для использования IOS. Все остальные UUID будут относиться к устройствам Android, Windows или Ubuntu и т. д.

person Atif Zia    schedule 09.06.2021
comment
Пожалуйста, проверьте редактирование и уже спасибо, я не уверен, как именно я использую эту информацию / десятичную дробь, чтобы узнать это. - person Merthan Erdem; 09.06.2021