[英]How to get current WiFi signal strength in Xamarin.Forms running on Android?
对于 Android 设备,是否有最新的方法来获取 Xamarin.Forms 中的当前 WiFi 信号强度?
下面的代码片段改编自文章 58191523 说:
当前上下文中不存在名称“GetSystemService”
当前上下文中不存在名称“WifiService”
'WiFiManager.CalculateSignalLevel(int, int)' 已过时:'已弃用'
using Android.Net.Wifi;
public static void SignalStrengthToConsole()
{
var wifiMgr = (WifiManager)GetSystemService(WifiService);
var wifiList = wifiMgr.ScanResults;
foreach (var item in wifiList)
{
var wifiLevel = WifiManager.CalculateSignalLevel(item.Level, 100);
Console.WriteLine($"Wifi SSID: {item.Ssid} - Strengh: {wifiLevel}");
}
}
以下是使用已弃用功能检索当前 Wi-Fi 信号强度的步骤:
第 1 步:在 Android 设备上,点击
设置 > 位置
然后点击
应用权限
向下滚动,直到找到您的应用程序。
点击您的应用程序和 select 除“拒绝”以外的任何选项。
第 2 步:确保您的项目 AndroidManifest.xml 中包含以下内容:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
第 3 步:在 class 中包含以下代码,您希望在其中使用已弃用的功能捕获 Wi-Fi 信号强度:
using System;
using System.Linq;
namespace YourNamespaceHere
{
public static class Device
{
private static Android.Net.Wifi.WifiManager deviwifimanager;
private static Android.Content.Context devicontext;
public static void PassContext(Android.Content.Context context00)
{
devicontext = context00;
deviwifimanager = (Android.Net.Wifi.WifiManager)devicontext.GetSystemService(Android.Content.Context.WifiService);
devwifimanager.StartScan();
}
public static Int32 SignalStrength()
{
Int32 temp00 = 0;
string text00 = null;
try
{
var wifilist = deviwifimanager.ScanResults;
foreach (var wifilistitem in wifilist)
{
temp00 = Android.Net.Wifi.WifiManager.CalculateSignalLevel(wifilistitem.Level, 100);
text00 = wifilistitem.Ssid;
// add your code to process signal level and SSID as required
}
}
catch
{
temp00 = 0;
}
return temp00;
}
}
}
第四步:在MainActivity.cs的OnCreate方法中添加如下代码:
Device.PassContext(this);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.