Непрерывно сканировать BLE-MAC

Есть ли библиотека для фонового сканирования устройств Bluetooth-Low-Energy с определенным MAC-адресом? Я знаю, что altbeacon делает это, но, похоже, работает только для устройств BLE типа маяка, а не для других типов. Или есть способ использовать altbeacon для этого? Я просто хочу определить, включено ли определенное устройство и находится ли оно в пределах досягаемости - насколько я понимаю, это должно быть возможно аналогично маякам - я просто не фильтрую некоторые данные в рекламе - только для Mac. Я мог бы реализовать это, но не хочу изобретать велосипед


person ligi    schedule 22.12.2015    source источник


Ответы (1)


Чтобы предоставить вам надежное решение, которое потребляет мало энергии и работает во всех версиях ОС с их различными API-интерфейсами сканирования, потребуются буквально сотни строк сложного кода. Я знаю, потому что сам это сделал, см. https://github.com/iDevicesInc/SweetBlue/blob/master/src/com/idevicesinc/sweetblue/P_Task_Scan.java, чтобы узнать, с чем вам придется столкнуться.

Поэтому, если вы находитесь на этапе проверки концепции и просто хотите что-то быстрое, попробуйте следующее в своем классе Activity, используя Сладкий Синий:

// Wake lock might not be needed for your application, up to you.
BleManager.get(this).pushWakeLock();

BleManager.get(this).setConfig(new BleManagerConfig()
{{
        scanMode = BleScanMode.LOW_POWER;
}});

BleManager.get(this).startPeriodicScan(Interval.FIVE_SECS, Interval.FIVE_SECS, new ScanFilter()
{
    @Override public Please onEvent(ScanEvent e)
    {
        return Please.acknowledgeIf(e.macAddress().equals("DE:CA:FF:C0:FF:EE"));
    }
});

Это даст вам сканирование в течение пяти секунд, пять секунд бездействия, и так до тех пор, пока вы не назовете stopPeriodicScan().

person Doug Koellmer    schedule 22.12.2015
comment
Спасибо - проголосовали, но еще не приняли в надежде на лучший способ (lib) - person ligi; 23.12.2015