想要在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);

 

 

 

大功告成.微軟不愧是工程師的最佳夥伴.

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 linear 的頭像
    linear

    李泥兒

    linear 發表在 痞客邦 留言(0) 人氣()