Qt/QML安卓应用中QBluetoothDeviceInfo::rssi()值转dBm方法问询
关于QBluetoothDeviceInfo::rssi()返回值的单位与转换问题
其实你完全不需要额外转换——QBluetoothDeviceInfo::rssi()方法返回的负整数本身就是以dBm为单位的信号强度值!
为什么返回值都是负数?
RSSI(Received Signal Strength Indicator)的测量逻辑就是如此:它以理论上的最强信号(几乎无衰减、贴近天线的状态)作为0dBm的参考基准,实际场景中信号必然会有衰减,所以返回值都是负数。数值越接近0,代表信号越强;数值越小(比如-90、-100),代表信号越弱。
补充说明
Qt的这个API本质是封装了Android底层蓝牙框架提供的原生RSSI数据,而Android返回的RSSI本身就是以dBm为单位的,所以Qt只是直接把这个数值传递给你,不存在转换需求。
给你几个常见的信号强度参考区间:
- -30dBm 到 -50dBm:信号极强,设备距离非常近
- -50dBm 到 -70dBm:信号良好,可稳定连接使用
- -70dBm 到 -90dBm:信号一般,可能偶尔出现连接波动
- -90dBm 以下:信号极弱,几乎无法维持稳定连接
内容的提问来源于stack exchange,提问作者KernelPanic
相关产品推荐
相关产品推荐

