Windows phone 7 windows mobile中的Phonegap网络状态

Windows phone 7 windows mobile中的Phonegap网络状态,windows-phone-7,cordova,status,Windows Phone 7,Cordova,Status,我使用了下面的功能来检查windows mobile模拟器中的网络状态。它返回“未知”,无论ethertnet是否存在 function checkConnection() { var networkState = navigator.network.connection.type; var states = {}; states[Connection.UNKNOWN] = 'Unknown connection'; states[Connection.ETHERNET] = 'Ethern

我使用了下面的功能来检查windows mobile模拟器中的网络状态。它返回“未知”,无论ethertnet是否存在

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]);
}


在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中出现网络问题,也不得而知

我还没有用WindowsPhone8项目进行测试,但从理论上讲,这在4G中是可行的

此外,您还可以了解有关网络类型的更多详细信息


PS:为了测试网络,没有什么比用真实设备测试更好的了,因此,用真实的网络。

你在设备上试过吗?在Windows mobile或Windows Phone上?@RaoulGeorge我用模拟器试过。@DocRoms Windows Phone
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;
}