2015-09-16 2 views
1

Я довольно долгое время использовал StartLeScan, имена возвращаемых устройств после сканирования никогда не заселялись. Я никогда не мог понять, почему, я просто получаю адрес mac. Сегодня я проверил сканирование с страницы настроек BT BT и показал только MAC-адреса до тех пор, пока сканирование не завершится, а затем отобразите имена. Теперь, когда я запускаю сканирование программно, имена всегда заполняются.Неисследованные устройства Bluetooth Bluetooth LE отсутствуют Имя

Почему StartLeScan не возвращает имена устройств?

ответ

1

Имя не передается с MAC во время сканирования, имя, которое вы видите позже, является локальным кешем после того, как вы потребовали его от устройства.

Мое воспоминание может быть изменой мне, но я считаю, что настройки делают отдельный запрос имени после сканирования. У настроек также есть локальный отдельный кеш для отслеживания устройств и их текущего состояния.

Помните, что имя не является хорошим способом идентификации устройства, поскольку оно может быть изменено пользователем.

+1

Вот что-то интересное, если я назову StartDiscovery() до StartLeScan() Я получу имена, возвращенные в LE-сканировании. Поэтому я предполагаю, что поиск запрашивает имена и LE-сканирование не – pogorman

+0

Yup, StartDiscovery гораздо более подробно, но требует больше времени и требует больше ресурсов. Вам не нужны оба. Не забудьте вызвать stopDiscovery, когда найдете свое устройство. Вы можете посмотреть в сканирование, если вы уже знаете MAC-адрес, к которому собираетесь подключиться. Большинство чипов Bluetooth являются синхронными и будут блокироваться в течение хорошего времени, если вы попытаетесь подключиться к недоступному устройству. – JohanShogun

+0

Есть ли способ запросить имя без StartDiscovery? Это имя полезно для пользователей при выборе устройства для подключения. – pogorman

Смежные вопросы