想要在APP上指定網路連線到某個路由器上(AP),在IOS系統上是天方夜譚,Windows上易如反掌.
這就是捨棄用IOS開發這專案,改採用Windows來開發的主因,否則如此龐大的專案(APP程式,Server程式,兩個單晶片的程式,採用有線無線互相連結),如果採用IOS只是搞屎自己.
微軟本身就提供這個Library (Windows.Device.WiFi).
/*下面這行是重點*/
Package.appxmanifest 內要增加一行程式碼 <DeviceCapabilityName="wiFiControl" />,否則你是沒權限去存取WiFi裝置.
// 看你是否能進行掃描動作,如果不行就該打道回府
var access = awaitWiFiAdapter.RequestAccessAsync();
if (access != WiFiAccessStatus.Allowed)
{
//rootPage.NotifyUser("Access denied", NotifyType.ErrorMessage);
}
//找出你裝置(電腦,平板,手機..)上的網卡
var result = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(WiFiAdapter.GetDeviceSelector());
//最少要有一塊網卡
if (result.Count >= 1)
{
var nwAdapter = awaitWiFiAdapter.FromIdAsync(result[0].Id);
// scan for networks
await nwAdapter.ScanAsync();
// List information for all networks
foreach (var network in nwAdapter.NetworkReport.AvailableNetworks)
{
// List SSID,BDDID(網卡位址),RSSI(能量),頻率,強度(1~4)
var message = string.Format("\nNetworkName: {0}, BSSID: {1}, RSSI: {2}dBm, Channel Frequency: {3}kHz, Bar: {4}",
network.Ssid, network.Bssid, network.NetworkRssiInDecibelMilliwatts,
network.ChannelCenterFrequencyInKilohertz, network.SignalBars);
TextBlock tb = newTextBlock { Text = message, FontSize = 12 };
//TextBlock tb = new TextBlock { Text = nwAdapter.NetworkReport.AvailableNetworks[idx].Ssid, FontSize = 12 };
lbMsg.Children.Add(tb);
}
// find network with the correct SSID
var nw = nwAdapter.NetworkReport.AvailableNetworks.Where(y => y.Ssid.ToLower() == "ConnectionSSID").FirstOrDefault();
// connect
await nwAdapter.ConnectAsync(nw, WiFiReconnectionKind.Automatic);
大功告成.微軟不愧是工程師的最佳夥伴.