【发布时间】:2014-10-16 22:32:46
【问题描述】:
在 Android 上使用蓝牙低功耗 (BLE) 扫描时,我注意到有时 RSSI 值不正确。 我的代码只是调用了开始扫描函数:
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%。 有什么我想念的吗? 谢谢
【问题讨论】:
-
我可能错了,但这就是电磁学的工作原理?您无法获得准确的读数,因为它们受到很多事物的干扰。
-
嗨,不,你一点都没错,RSSI 值本质上是一个近似值,并不稳定。但我期望的是标称值附近的振荡,比如说从 -45dBm 到 -35dBm,而不是正值,我也得到了 100dBm(正值),这在智能手机中是不可能的(信号的功率将是数百千瓦) [链接]rapidtables.com/convert/power/dBm_to_Watt.htm但感谢您的评论
-
感谢您的链接!我刚刚查看了有关 rssi 的维基百科详细信息:它显示了从天线吸收的功率。也许读数来自干扰蓝牙的 wifi/移动天线?我知道这些是不同的频率,但是在反弹或发生其他任何事情之后,它们可能会影响蓝牙天线的工作方式吗?
-
@dominik4142 - 不,这是不可能的。这显然是软件/寄存器解释错误,而不是来自无线电硬件的有效信号强度报告。
标签: android bluetooth bluetooth-lowenergy ibeacon-android android-ibeacon