精简版:
在我使用Android 5.0 Lollipop的测试中,我注意到android.bluetooth.le.BluetoothLeScanner检测BLE设备的频率低于Android 4.4 KitKat。 为什么这样,还有其他选择吗?
长版:
我正在开发一款Android应用程序,专门用于Nexus 7平板电脑,专注于检测蓝牙低功耗(BLE)设备。 该应用程序主要感兴趣的是信标的RSSI值,以确定它们与平板电脑的接近程度。 这意味着我不需要连接到BLE设备,因为在检测到设备时RSSI值会传递给扫描回调。
在Android 4.4 KitKat中,当我调用BluetoothAdapter.startLeScan(LeScanCallback) ,我的回调仅针对每个检测到的BLE设备被调用ONCE。 (我已经看到一些讨论声称每个设备的这种行为可能不同)但是,我对不断变化的RSSI值感兴趣,所以目前推荐的方法是以设定的间隔(在我的情况下为250ms)连续执行startLeScan和stopLeScan:
public class TheOldWay {
private static final int SCAN_INTERVAL_MS = 250;
private Handler scanHandler = new Handler();
private boolean isScanning = false;
public void beginScanning() {
scanHandler.post(scanRunnable);
}
private Runnable scanRunnable = new Runnable()