【问题标题】:Continuously scan for BLE-MAC连续扫描BLE-MAC
【发布时间】:2015-12-23 05:15:08
【问题描述】:

是否有一个库可以对具有特定 MAC 的低功耗蓝牙设备进行后台扫描?我知道 altbeacon 可以做到这一点,但似乎只适用于信标类型的 BLE 设备 - 而不是其他类型的设备。或者有没有办法为此利用 altbeacon?我只想检测某个设备是否已打开并在范围内 - 据我所知,这应该与信标类似 - 我只是没有过滤广告中的某些数据 - 仅适用于 mac。我可以实现这一点,但不想重新发明*

【问题讨论】:

    标签: android altbeacon bluetooth-lowenergy


    【解决方案1】:

    要为您提供一个强大的解决方案,该解决方案消耗少量能源并适用于具有不同扫描 API 的所有操作系统版本,实际上需要数百行复杂的代码。我知道,因为我已经完成了,请参阅 https://github.com/iDevicesInc/SweetBlue/blob/master/src/com/idevicesinc/sweetblue/P_Task_Scan.java 了解您必须处理的内容。

    因此,如果您处于概念验证阶段并且只想快速获得一些东西,请在您的 Activity 类中使​​用 SweetBlue 尝试以下操作:

    // 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()

    【讨论】:

    • 谢谢 - 赞成但尚未接受,希望有更好的方法 (lib)