/ **
     *计算信号电平。每当有信号时都应使用
     *正在显示。
     *
     * @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 param的输入是什么吗?
我需要根据此方法的输出显示“好,更好,最好”的Wifi信号强度。请帮助我!

最佳答案

numLevels实际上是您希望评估wifi信号强度的电平数。例如,选择

int numLevels = 5;
int strength = calculateSignalLevel(rssi, numLevels);


将为您提供0到4(如numbLevels - 1 = 4)的输出范围,其中4是最强的。

由于要以“好”,“更好”和“最好”的等级评估信号强度,因此应输入3作为numLevels参数。

07-28 02:16