Android 可调谐信标扫描
Android 4.3中添加了蓝牙LE,但似乎没有后台扫描模式,一旦应用程序注册通过附近可用的BLE UUID收到通知,该模式就会唤醒应用程序 通过iOS7和ibeaconsapi似乎完全可以做到这一点。有人知道安卓4.3中是否有这样一个功能,或者是否有一个很好的解决办法,可以在BLE环境中定期扫描BLE设备Android 可调谐信标扫描,android,bluetooth,ibeacon-android,Android,Bluetooth,Ibeacon Android,Android 4.3中添加了蓝牙LE,但似乎没有后台扫描模式,一旦应用程序注册通过附近可用的BLE UUID收到通知,该模式就会唤醒应用程序 通过iOS7和ibeaconsapi似乎完全可以做到这一点。有人知道安卓4.3中是否有这样一个功能,或者是否有一个很好的解决办法,可以在BLE环境中定期扫描BLE设备 我认为有如下解决方法: 您需要实现一个服务并创建线程到while循环来调用mBluetoothAdapter.starteScan(mLeScanCallback),然后您可以检查是否由
我认为有如下解决方法:
您需要实现一个服务并创建线程到while循环来调用mBluetoothAdapter.starteScan(mLeScanCallback),然后您可以检查是否由特定设备触发并进一步搜索特定UUID。直接从android示例中,您可以使用一个处理程序:
private void scanLeDevice(final boolean enable) {
if (enable) {
// Stops scanning after a pre-defined scan period.
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mScanning = false;
mBluetoothAdapter.stopLeScan(mLeScanCallback);
invalidateOptionsMenu();
}
}, SCAN_PERIOD);
mScanning = true;
mBluetoothAdapter.startLeScan(mLeScanCallback);
} else {
mScanning = false;
mBluetoothAdapter.stopLeScan(mLeScanCallback);
}
invalidateOptionsMenu();
}
根据我的经验,最好创建一个保持运行的服务。重要的是只扫描您感兴趣的信标,否则解析信标消息将浪费大量cpu资源 此库可以帮助您扫描您感兴趣的iBeacons: 此外,当无法进行扫描时(由于蓝牙关闭、位置关闭、权限吊销),您必须在再次满足所有必要条件时重新启动扫描,因为您需要广播侦听器 能够扫描的条件:
- 有蓝牙LE芯片:任何
- 打开蓝牙:任何
- 位置:安卓6+
- 具有位置运行时权限:Android 6+
- 30秒内最多开始5次扫描:Android 7+
true
。(蓝牙设备可以这样创建:BluetoothAdapter.getDefaultAdapter().getRemoteDevice(“20:00:A0:60:DD:05”);
)但是,它只有在开始扫描时才连接。似乎还没有什么背景扫描。也许他们以后会添加。你知道我是否可以用这段代码检测iBeacon,或者我需要额外的库吗?