0

Windowsモバイルシミュレーターでネットワークステータスを確認するために、以下の機能を使用しました。イーサネットが存在するかどうかにかかわらず、「不明」を返します。

function checkConnection() {
var networkState = navigator.network.connection.type;

var states = {};
states[Connection.UNKNOWN]  = 'Unknown connection';
states[Connection.ETHERNET] = 'Ethernet connection';
states[Connection.WIFI]     = 'WiFi connection';
states[Connection.CELL_2G]  = 'Cell 2G connection';
states[Connection.CELL_3G]  = 'Cell 3G connection';
states[Connection.CELL_4G]  = 'Cell 4G connection';
states[Connection.NONE]     = 'No network connection';

alert('Connection type: ' + states[networkState]);

}

checkConnection();
4

1 に答える 1

1

Windows Phone では、現在のインターフェイスを取得するには、クラス 'NetworkInterfaceList' を使用できます。

NetworkInterfaceInfo CurrentInterface;
var interfacesList = new NetworkInterfaceList();

foreach (NetworkInterfaceInfo specificInterface in interfacesList)
{
    CurrentInterface = specificInterface;
    break;
}

ネットワーク変更のイベントをサブスクライブできます。

DeviceNetworkInformation.NetworkAvailabilityChanged += NetworkChanged;

private void NetworkChanged(object sender, NetworkNotificationEventArgs e)
{
    CurrentInterface = e.NetworkInterface;
}

現在のインターフェイスを取得したら、ネットワークの真のタイプを取得できます。

switch (CurrentInterface.InterfaceType)
{
    case NetworkInterfaceType.Ethernet:
        // ETHERNET (USB connected)
        break;
    case NetworkInterfaceType.MobileBroadbandCdma:
        switch (pNetworkInterfaceInfo.InterfaceSubtype)
        {
            case NetworkInterfaceSubType.Cellular_GPRS:
                // 2G
                break;
            case NetworkInterfaceSubType.Cellular_EDGE:
                // 2GP
                break;
            case NetworkInterfaceSubType.Cellular_EVDO:
            case NetworkInterfaceSubType.Cellular_EVDV:
                // ?
                break;
            case NetworkInterfaceSubType.Cellular_1XRTT:
                // ?
                break;
            case NetworkInterfaceSubType.Cellular_3G:
                // 3G
                break;
            case NetworkInterfaceSubType.Cellular_HSPA:
                // 3GP
                break;
            case NetworkInterfaceSubType.Unknown:
                // Unknonwn ? 4G is Unknown.
                break;
        }
        break;
    case NetworkInterfaceType.MobileBroadbandGsm:
        switch (pNetworkInterfaceInfo.InterfaceSubtype)
        {
            case NetworkInterfaceSubType.Cellular_GPRS:
                // 2G
                break;
            case NetworkInterfaceSubType.Cellular_EDGE:
                // 2GP
                break;
            case NetworkInterfaceSubType.Cellular_EVDO:
            case NetworkInterfaceSubType.Cellular_EVDV:
                // ??
                break;
            case NetworkInterfaceSubType.Cellular_1XRTT:
                // ??
                break;
            case NetworkInterfaceSubType.Cellular_3G:
                // 3G
                break;
            case NetworkInterfaceSubType.Cellular_HSPA:
                // 3GP
                break;
            case NetworkInterfaceSubType.Unknown:
                // Unknown? 4G is Unknown
                break;
        }
        break;
    case NetworkInterfaceType.Wireless80211:
        // WIFI
        break;
}

Windows Phone 7 プロジェクトでは, 「4G タイプ」はありません. デバイスで 4G をテストすると, NetworkInterfaceType は不明です.しかし, 32G または 3G でネットワークに問題がある場合は不明です.それも..

Windows Phone 8 プロジェクトでテストしたことはありませんが、理論上は 4G で動作します。

また、ネットワーク タイプの詳細については、こちらを参照してください

PS: ネットワークをテストするには、実際のデバイス、つまり実際のネットワークでテストすることに勝るものはありません。

于 2013-08-14T13:21:54.713 に答える