/ ** *计算信号的电平。这应该在任何时候使用 *正在显示。 * * @param rssi在RSSI中测量的信号功率。 * @param numLevels计算中要考虑的级别数 *水平。 * @return信号的电平,在0到numLevels-1的范围内给出 *(包括在内)。 * /
public static int calculateSignalLevel(int rssi, int numLevels) {
if (rssi <= MIN_RSSI) {
return 0;
} else if (rssi >= MAX_RSSI) {
return numLevels - 1;
} else {
float inputRange = (MAX_RSSI - MIN_RSSI);
float outputRange = (numLevels - 1);
return (int)((float)(rssi - MIN_RSSI) * outputRange / inputRange);
}
}
有没有人可以解释一下numLevels参数的输入是什么? 我需要根据这种方法的输出显示Wifi信号强度,如“好,更好,最好”。请帮助我!!
答案 0 :(得分:1)
numLevels
实际上是您希望评估wifi信号强度的级别数。例如,选择
int numLevels = 5;
int strength = calculateSignalLevel(rssi, numLevels);
将为您提供0到4之间的输出范围(numbLevels - 1 = 4
),其中4是最强的。
由于您希望评估“好”,“更好”和“最好”的信号强度。缩放,您应输入3
作为numLevels
参数。