phone noticias instalar desde descargar como caracteristicas actualizar actualizacion c# windows-phone-8 windows-phone-8.1

c# - noticias - windows 10 mobile enterprise



Cómo obtener información de conexión y operador en Windows Phone 8.1 Runtime (3)

Actualmente estoy transfiriendo una de mis bibliotecas a Windows Phone 8.1 Runtime y entré a una API faltante que puede usar en las aplicaciones Windows Phone 8.0 y Windows Phone Silverlight 8.1.

Lo que necesito es DeviceNetworkInformation para saber qué tipo de NetworkInterfaceType es el dispositivo conectado a internet.

Código de muestra en Windows Phone 8.0.

public void GetDeviceConnectionInfo() { DeviceNetworkInformation.ResolveHostNameAsync(new DnsEndPoint("microsoft.com", 80), nrr => { NetworkInterfaceInfo info = nrr.NetworkInterface; if (info != null) { switch (info.InterfaceType) { case NetworkInterfaceType.Ethernet: // Do something break; case NetworkInterfaceType.MobileBroadbandCdma: case NetworkInterfaceType.MobileBroadbandGsm: switch (info.InterfaceSubtype) { case NetworkInterfaceSubType.Cellular_3G: case NetworkInterfaceSubType.Cellular_EVDO: case NetworkInterfaceSubType.Cellular_EVDV: case NetworkInterfaceSubType.Cellular_HSPA: // Do something break; } // Do something break; case NetworkInterfaceType.Wireless80211: // Do something break; } } }, null); }

Y puede acceder al nombre del operador con DeviceNetworkInformation.CellularMobileOperator .


No es exactamente lo mismo, pero podemos hacer más o menos lo mismo en Windows 8.1 para detectar el tipo de red que pudimos en versiones anteriores, excepto que el espacio de nombres y las clases son diferentes. Un buen artículo que cubre la mayoría de los escenarios posibles se puede encontrar aquí.

Efectivamente, en lugar de acceder a las características específicas de la conexión de red, puede ajustar su comportamiento según el NetworkCostType . Básicamente, si la conexión del usuario es de poca o ninguna medición, haga lo que quiera, pero si están en un plan de datos o en un lugar donde realizar una llamada a Internet implicará una tarifa para el usuario, debe solicitarles o manejarlo de manera diferente. Tal vez esperando hasta que esté disponible Wifi o Ethernet.


Si está interesado más en la información técnica sobre la red, lo mejor que pude encontrar son las propiedades de la clase ConnectionProfile.NetworkAdapter . Puede obtener una instancia de clase ConnectionProfile como esta (tomada de este artículo de Microsoft ):

//Get the Internet connection profile string connectionProfileInfo = string.Empty; try { ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile(); if (InternetConnectionProfile == null) { NotifyUser("Not connected to Internet/n"); } else { connectionProfileInfo = GetConnectionProfile(InternetConnectionProfile); NotifyUser("Internet connection profile = " +connectionProfileInfo); } } catch (Exception ex) { NotifyUser("Unexpected exception occurred: " + ex.ToString()); }

En la clase NetworkAdapter tiene propiedades como IanaInterfaceType , InboundMaxBitsPerSecond y OutboundMaxBitsPerSecond que le dan una idea bastante aproximada de la velocidad de su red. Por ejemplo, IanaInterfaceType para IEEE 802.11 Wifi es 71 ... Puede ver más detalles aquí: NetworkAdapter e IanaInterfaceType .

Editar: Aquí está la lista completa de tipos de interfaz Iana


EDITAR: la siguiente sugerencia funciona con Windows Phone 8.1 Apps.

No recomendaría el uso de IanaInterfaceType , InboundMaxBitsPerSecond o OutboundMaxBitsPerSecond para determinar el tipo de conexión, ya que son muy inexactos.

El siguiente método obtiene el tipo de conexión como se ve en la barra de estado del WP. Tenga en cuenta que el modo de conexión no necesariamente da una indicación de la velocidad de carga / descarga.

using Windows.Networking.Connectivity; /// <summary> /// Detect the current connection type /// </summary> /// <returns> /// 2 for 2G, 3 for 3G, 4 for 4G /// 100 for WiFi /// 0 for unknown or not connected</returns> private static byte GetConnectionGeneration() { ConnectionProfile profile = NetworkInformation.GetInternetConnectionProfile(); if (profile.IsWwanConnectionProfile) { WwanDataClass connectionClass = profile.WwanConnectionProfileDetails.GetCurrentDataClass(); switch (connectionClass) { //2G-equivalent case WwanDataClass.Edge: case WwanDataClass.Gprs: return 2; //3G-equivalent case WwanDataClass.Cdma1xEvdo: case WwanDataClass.Cdma1xEvdoRevA: case WwanDataClass.Cdma1xEvdoRevB: case WwanDataClass.Cdma1xEvdv: case WwanDataClass.Cdma1xRtt: case WwanDataClass.Cdma3xRtt: case WwanDataClass.CdmaUmb: case WwanDataClass.Umts: case WwanDataClass.Hsdpa: case WwanDataClass.Hsupa: return 3; //4G-equivalent case WwanDataClass.LteAdvanced: return 4; //not connected case WwanDataClass.None: return 0; //unknown case WwanDataClass.Custom: default: return 0; } } else if (profile.IsWlanConnectionProfile) { return 100; } return 0; }

Lo siento, no sé sobre el nombre del operador, pero el nombre del punto de acceso (APN) también puede ser útil, ya que el punto de acceso está conectado al operador:

ConnectionProfile profile = NetworkInformation.GetInternetConnectionProfile(); string apn = profile.WwanConnectionProfileDetails.AccessPointName;