是否有库可以对具有特定MAC的蓝牙低功耗设备进行后台扫描?我知道altbeacon这样做,但似乎只适用于信标类型的BLE设备 - 而不是其他类型。或者有没有办法利用altbeacon这个?我只是想检测某个设备是否打开并且在范围内 - 据我所知,这应该可能类似于信标 - 我只是不过滤广告中的某些数据 - 仅适用于mac。我可以实现这个,但不想重新发明轮子
答案 0 :(得分:2)
为您提供强大的解决方案,消耗少量能源,并且可以在所有操作系统版本中使用不同的扫描API,这将是数百行复杂代码。我知道,因为我已经完成了,请参阅https://github.com/iDevicesInc/SweetBlue/blob/master/src/com/idevicesinc/sweetblue/P_Task_Scan.java,了解您必须处理的内容。
因此,如果您处于概念验证阶段且只是想快速进行,请使用SweetBlue在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()
。