using System;
using Android.Net;
using Android.Net.Wifi;
using Android.OS;
namespace Shared
{
public static class WiimuUPnP
{
///
/// 获取当前WIFI的名称
///
/// The ssid.
public static string SSID
{
get
{
return getWIFISSID(Shared.Application.Activity);
}
}
/**
* 获取SSID
* @param activity 上下文
* @return WIFI 的SSID
*/
static string getWIFISSID(Android.App.Activity activity)
{
var ssid = "unknown id";
if ((int)Build.VERSION.SdkInt <= 26/*8.0*/ || (int)Build.VERSION.SdkInt >= 28/*9.0*/)
{
var mWifiManager = (WifiManager)activity.ApplicationContext.GetSystemService(Android.Content.Context.WifiService);
if (mWifiManager != null)
{
var info = mWifiManager.ConnectionInfo;
if ((int)Build.VERSION.SdkInt < 19/*4.4*/)
{
return info.SSID;
}
else
{
return info.SSID.Replace("\"", "");
}
}
}
//8.1
else if ((int)Build.VERSION.SdkInt == 27)
{
var connManager = (ConnectivityManager)activity.ApplicationContext.GetSystemService(Android.Content.Context.ConnectivityService);
if (connManager != null)
{
var networkInfo = connManager.ActiveNetworkInfo;
if (networkInfo.IsConnected)
{
if (networkInfo.ExtraInfo != null)
{
return networkInfo.ExtraInfo.Replace("\"", "");
}
}
}
}
return ssid;
}
static Action currentAction;
///
/// 启动配置无线上网
///
/// The start.
/// 密码
/// 配置完成后反馈的结果
public static void Start(string password,Action action)
{
if (SSID == null)
{
return;
}
Stop();
dateTime = DateTime.Now;
currentAction = action;
action ("TimeOut");
}
static WiimuUPnP()
{
//定时检查
System.Threading.Tasks.Task.Run(() =>
{
while (true)
{
System.Threading.Thread.Sleep(1000);
if (20 <= (System.DateTime.Now - dateTime).TotalSeconds)
{
Stop();
if (currentAction != null)
{
currentAction("TimeOut");
}
}
}
});
}
///
/// 记录开始时间
///
static DateTime dateTime = DateTime.MaxValue;
///
/// 停止配置无线上网
///
public static void Stop()
{
dateTime = DateTime.MaxValue;
}
}
}