在 Android 上使用蓝牙低功耗 (BLE) 扫描,我注意到有时 RSSI 值不正确。我的代码只是调用了 start scan 函数:
mBluetoothAdapter.startLeScan(mLeScanCallback);
然后我在回调中读取结果并将结果保存在文件中:
private static BluetoothAdapter.LeScanCallback mLeScanCallback =
new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, final int rssi, final byte[] scanRecord) {
String objScanRec = bytesToHex(scanRecord);
outStr = rssi + ";" + objScanRec + ";" + device.getName() + ";" + beaconLocation + ";\n";
try {
Raw_log.write(outStr);
Raw_log.flush();
} catch (IOException e) {
e.printStackTrace();
}
// }
}
};
问题是我读取了正 RSSI 值,如果信标在固定距离处也是如此。例如,我的信标距离手机(或智能手表)30 厘米,我读取了大约 -45 的值,这是现实的,但也有大约 +80 或 +100(不现实)的值,这些值大约是测量值的 20%。有什么我想念的吗?谢谢