Windows Phone 7監測網路環境變化

l_serein發表於2012-11-26

有些應用是跟網路環境敏感的,WiFi快且免費,3G走流量,GSM慢,所以我們需要知道如何判斷當前的網路型別,以及當網路型別發生改變時如何得到通知。

  MSDN相關文章:How To: Detect Network Changes

  下面我簡單介紹一下。

  當網路發生變化時,會引發網路地址發生變化,要監測這一事件,需要用到位於System.Net.NetworkInformation名稱空間下的NetworkChange類。

  要檢視網路連線的型別和狀態,用到的類都在Microsoft.Phone.Net.NetworkInformation這個名稱空間裡。

  注意上面兩個不同的名稱空間,Microsoft.Phone.Net.NetworkInformation是專門用於手機,System.Net.NetworkInformation用於各種場合。由於這兩個類中的名字衝突很多,一起用的時候注意區分好。

  網路環境變化時得到通知

  只需要監聽一個事件:

NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);

……


 

void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)
{
    string content = string.Format(
            @"CellularMobileOperator        {0}
            IsCellularDataEnabled           {1}
            IsCellularDataRoamingEnabled    {2}
            IsNetworkAvailable              {3}
            IsWiFiEnabled                   {4}",
            DeviceNetworkInformation.CellularMobileOperator, // 運營商名字,例如“中國移動”
            DeviceNetworkInformation.IsCellularDataEnabled,
            DeviceNetworkInformation.IsCellularDataRoamingEnabled,
            DeviceNetworkInformation.IsNetworkAvailable,
            DeviceNetworkInformation.IsWiFiEnabled);
 
    NetworkInterfaceList list = new NetworkInterfaceList(); // 獲得所有NetworkInterfaces

    foreach (var item in list)
    {
        string text = string.Format(
            @"
            Bandwidth       {0}
            InterfaceName   {1}
            InterfaceState  {2}
            InterfaceType   {3}
            ",
            item.Bandwidth, // 單位是Kbps(千位元每秒)
            item.InterfaceName, // 網路連線的名字
            item.InterfaceState, // 列舉 Connected/Disconnected
            item.InterfaceType); // 網路型別的列舉
        
        content += text;
    }

    textBlock_NetworkInfo.Text = content;
}

  經過我的測試,應用被切換到後臺時網路環境發生了變化,在切換回前臺執行後,也一樣能立即偵測到這個事件。

  在Microsoft.Phone.Net.NetworkInformation.NetworkInterface名稱空間下的NetworkInterfaceType列舉,比較典型的值有:

  Wireless80211 -- WiFi

  Ethernet -- USB

  MobileBroadbandGSM

  MobileBroadbandCDMA

  None

  本文來自董超的部落格,原文地址:http://www.cnblogs.com/dc10101/archive/2012/01/03/2310622.html

相關文章