Я новичок в Bluetooth, но около месяца работал над клиентом Android, который подключается к периферийному устройству BLE для записи данных в характеристику.
Мое периферийное устройство BLE — это устройство nrf52832 (Nordic), и я загрузил BLE_SM (менеджер безопасности), чтобы я мог использовать связывание/сопряжение для безопасной связи.
Мой код Android успешно соединяется/связывается с периферийным устройством, но, насколько я вижу, периферийное устройство теперь перестает рекламировать. Я не уверен, нормально это или потому, что я получил событие gap.onDisconnection типа REMOTE_USER_TERMINATED_CONNECTION.
Независимо от того, что я связан, вы можете подумать, что мне больше не нужно сканировать устройство, и я могу просто позвонить device.connectGatt()
, но это не работает, и мой обратный вызов получает событие GATT STATE_DISCONNECTED. Я прочитал в другом посте, который вставил следующее из Nordic (Учебник):
Невозможно подключиться к периферийному устройству, которое не является рекламным, хотя его адрес заранее известен. Это связано с тем, что периферийное устройство включит приемник только на определенное время после передачи рекламы. Это время используется для прослушивания запросов на подключение и запросов на сканирование.
Если это действительно так, кажется, я не смогу остановить постоянную рекламу периферийного устройства, что бесполезно, если я пытаюсь снизить энергопотребление периферийного устройства.