Windows 10 — как определить, когда устройство Bluetooth находится в зоне действия

Ранее я выполнял сопряжение с устройством Bluetooth, поддерживающим RFCOMM. Когда мое приложение открыто, я постоянно пытаюсь подключиться к устройству, открывая файл RFCOMM. Таким образом, мое приложение автоматически подключается, когда устройство находится в зоне действия.

deviceInfoCollection = await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.SerialPort));
        LogData(String.Format("Number of mldp devices is {0}", deviceInfoCollection.Count));
        foreach (DeviceInformation deviceInfo in deviceInfoCollection)
        {
            LogData(String.Format("ID:{0}, NAME:{1}", deviceInfo.Id, deviceInfo.Name));
        }

Затем запустите это по таймеру:

try
            {
                // The first time this method is invoked by a store app, it should be called 
                // from a UI thread in order to display the consent prompt
                // https://msdn.microsoft.com/en-us/windows.devices.bluetooth.rfcomm.rfcommdeviceservice.fromidasync
                RfcommDeviceService rfcommService = await RfcommDeviceService.FromIdAsync(deviceInfo.Id);
                LogData(String.Format("ID:{0}, NAME:{1}", deviceInfo.Id, deviceInfo.Name));
            }
            catch (Exception)
            {
                LogData(String.Format("Can not request rfcomm service from device ID:{0}, NAME:{1}", deviceInfo.Id, deviceInfo.Name));
            }

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


person pogorman    schedule 20.11.2015    source источник


Ответы (1)


Для RFCOMM (BT2.0, BT2.1) вы можете периодически запускать перечисление устройств, см. также Get Bluetooth-устройства в радиусе действия

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

Для Bluetooth 4.0 вы можете прослушивать рекламу модуля BT, см. также https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/BluetoothAdvertisement

Если вы разговариваете со встроенным устройством (например, с каким-то роботом или домашними устройствами, использующими RFCOMM), я боюсь, что нет лучшего решения, чем то, что вы делаете.

Если вы используете телефон (который поддерживает как BT4.0, так и BT2.1), вы можете использовать рекламу BT4, чтобы сигнализировать о близости устройства, а затем подключиться через RFCOMM.

person Gee Bee    schedule 23.02.2016