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

Android平台Xamarin.Forms获取WiFi信号强度:最新方法及代码报错解决

适用于Android设备的Xamarin.Forms获取WiFi信号强度的最新方案

解决你代码中的三个问题:

  • GetSystemService和WifiService不存在:
    在Xamarin.Android中,GetSystemService是Context类的方法,不能直接调用,需通过Android.App.Application.Context获取全局上下文;WifiService对应Context.WifiService常量,而非直接写WifiService。
  • CalculateSignalLevel过时:
    Android API 30+标记该方法过时,推荐直接通过信号强度值(item.Level)计算百分比,公式为:Math.Max(0, Math.Min(100, (item.Level + 100) * 100 / 50))(WiFi信号强度通常在-100到-50之间,-50为最强,-100为最弱)。

完整实现代码

using Android.Net.Wifi;
using Android.Content;
using Android.App;

public static void PrintWifiSignalStrength()
{
    // 获取WiFi管理器实例
    var wifiMgr = (WifiManager)Application.Context.GetSystemService(Context.WifiService);
    
    // 检查WiFi是否开启
    if (!wifiMgr.IsWifiEnabled)
    {
        Console.WriteLine("WiFi未开启");
        return;
    }

    // 获取扫描结果(需权限支持)
    var scanResults = wifiMgr.ScanResults;
    if (scanResults == null || scanResults.Count == 0)
    {
        Console.WriteLine("未扫描到WiFi网络");
        return;
    }

    foreach (var result in scanResults)
    {
        // 计算信号强度百分比(替代过时的CalculateSignalLevel)
        int signalStrengthPercent = Math.Max(0, Math.Min(100, (result.Level + 100) * 100 / 50));
        Console.WriteLine($"WiFi SSID: {result.Ssid} - 信号强度: {signalStrengthPercent}%");
    }
}

必要权限配置

  1. 在AndroidManifest.xml中添加权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
  1. Android 6.0(API 23)及以上版本需要动态申请ACCESS_FINE_LOCATION权限,否则无法获取扫描结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 16:05:22