如何连接RSSI而不连接到BLE设备?

我的应用程序需要不断地获取蓝牙设备的RSSI值来做一些距离rssi近似, 而不需要连接 。 但是, BluetoothAdaptercallback方法只能在设备扫描时获取RSSI。

 // Device scan callback private BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback() { @Override public void onLeScan(final BluetoothDevice device, final int rssi, byte[] scanRecord) { runOnUiThread(new Runnable() { public void run() { ... } }); } }; 

作为解决scheme,我创build了两个Runnable对象。 一个是启动,另一个是停止扫描过程。 这两个对象不断地相互呼叫,直到我得到我想要的RSSI值。 之后,我的Handler将它们从消息队列中删除。

 private Runnable startScan = new Runnable() { @Override public void run() { bluetoothAdapter.startLeScan(leScanCallback); scanHandler.postDelayed(stopScan, SCAN_INTERVAL); } }; private Runnable stopScan = new Runnable() { @Override public void run() { bluetoothAdapter.stopLeScan(leScanCallback); scanHandler.postDelayed(startScan, STOP_INTERVAL); } }; 

这似乎是工作,但我想知道是否有更多的可行的select做到这一点,而无需连接。

Solutions Collecting From Web of "如何连接RSSI而不连接到BLE设备?"