You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android 11以下版本中通过WifiManager获取网络信号强度?

Android SDK 30以下设备计算WiFi信号强度的方案
  • 直接使用旧版API
    SDK 30(Android 11)以下的设备中,WifiManager.calculateSignalLevel(int rssi, int numLevels)方法并未被弃用,可以直接调用。其中rssi是获取到的WiFi信号强度值,numLevels是你需要划分的信号等级数量(比如你之前用到的5级)。

  • 自定义信号强度计算逻辑
    如果不想依赖系统API,也可以自己实现信号强度的等级映射逻辑,逻辑和系统旧API大致一致。比如将RSSI值(通常范围在-100dBm到-50dBm之间)映射为0到指定等级数-1的数值:

    private int calculateWifiSignalLevel(int rssi, int numLevels) {
        if (rssi <= -100) {
            return 0;
        } else if (rssi >= -50) {
            return numLevels - 1;
        } else {
            float inputInterval = (-50) - (-100);
            float outputInterval = numLevels - 1;
            return (int) ((rssi - (-100)) * outputInterval / inputInterval);
        }
    }
    
  • 兼容性代码示例
    如果你需要同时兼容SDK 30以上和以下的设备,可以通过版本判断来选择对应的实现:

    WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
    int rssi = ...; // 从WifiInfo中获取的RSSI值
    int signalLevel;
    
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
        signalLevel = wifiManager.calculateSignalLevel(rssi);
    } else {
        // 选择旧版API或自定义方法
        signalLevel = wifiManager.calculateSignalLevel(rssi, 5);
        // signalLevel = calculateWifiSignalLevel(rssi, 5);
    }
    

内容的提问来源于stack exchange,提问作者Malik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 04:10:06