Android: Fuerza los datos que se envían a través de radio vs WiFi

¿Es posible obligar a una aplicación de Android a utilizar sólo la conexión de radio móvil (3g / 4g / etc), lo que impide el uso de WiFi?

Creo que quiero usar una conexión HIPRI: (ex: WIFI activado, use HIPRI 3G): http://groups.google.com/group/android-developers/browse_thread/thread/d41f85505484d29b

No creo que puedas "forzar" el camino de la conexión sin apagar explícitamente la radio Wi-Fi temporalmente (no se recomienda). Sin embargo, puede intentar establecer la preferencia de red durante el período en el que desea que esto ocurra:

ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); //Prefer mobile over wifi cm.setNetworkPreference(ConnectivityManager.TYPE_MOBILE); //Do your work //Remove your preference cm.setNetworkPreference(ConnectivityManager.DEFAULT_NETWORK_PREFERENCE); 

¡Espero que ayude!

En Android 2.2 puede utilizar datos móviles de alta prioridad al mismo tiempo que WiFi. El valor del parámetro "feature" es "enableHIPRI" y está oculto en la API del teléfono.

Método: ConnectivityManager.startUsingNetworkFeature (int networkType, String feature) de http://developer.android.com/reference/android/net/ConnectivityManager.html

Fuente: http://code.google.com/p/android/issues/detail?id=5885

Puedes consultar esta otra respuesta: https://stackoverflow.com/a/4756630/327011

Esto NO es una buena política … usarlo si realmente se necesita!

(Yo respondí esta misma pregunta aquí )

No puede forzar explícitamente el canal de comunicaciones por aplicación (puede solicitar utilizar un modo preferido a través de ConnectivityManager.setNetworkPreference(...) , pero eso no es "forzar").

A pesar de que es probablemente UX terrible, puede informar al usuario que su aplicación no permite el uso de WiFi, a continuación, desactivar su WiFi si quieren continuar. Para ello, necesita los ACCESS_WIFI_STATE y CHANGE_WIFI_STATE . El código sería algo como esto:

 manager = (WifiManager)this.getSystemService(Context.WIFI_SERVICE); if(manager.isWifiEnabled()) { manager.setWifiEnabled(false); } // and to be sure: ConnectivityManager.setNetworkPreference(ConnectivityManager.TYPE_MOBILE); 

ConnectivityManager.setNetworkPreference () está cerca de ser obsoleto. Pero lo que es más importante, si lo hace getNetworkPreference () antes de cambiar, devolverá ConnectivityManager.TYPE_MOBILE. Establecer allí no hace ninguna diferencia. En cuanto a HIPRI en sí, funciona en modo bastante extraño. En primer lugar, permite conexiones a todos los hosts, no sólo a aquellos explícitamente solicitados. En segundo lugar, cuando lo apagas con la función stopUsingFeature … (), no se apagará y seguirá estando activo. En tercer lugar, todas las aplicaciones de dispositivos empiezan a usarlo incluso si wifi está disponible, lo que contradice lo que se dice en la documentación.

Trate de mirar esto, tiene un montón de información y puede tener la solución que está buscando: ¿Cómo utilizar la conexión 3G en la aplicación Android en lugar de Wi-fi?

Tiene un ejemplo de servicio operativo que configura la conexión móvil HIPRI y la mantiene en funcionamiento. AFAIK esta es la única manera más o menos directa de tener wifi de trabajo y 3g en android. La única desventaja es que, esta conexión permitirá solamente la transmisión de datos a los servidores que el encaminamiento fue solicitado explícitamente a. Esto básicamente significa que no se puede enrutar a muchos servidores porque el host de búsqueda por nombre para obtener direcciones IP toma tiempo y hacerlo para 10 servidores tomará 30-60 segundos, lo que hace que comience lentamente. Así que usted debe saber exactamente qué servidores deben estar disponibles a través de la conexión móvil.

  • Android móvil no detectar la red inalámbrica creada en mi portátil
  • Cambiar el rango de IP WiFi? Forzar IPv6 en Android WiFi-Direct?
  • ¿Cómo obtener BSSID de todos los puntos de acceso wifi?
  • Android Scan para redes Wifi
  • ¿Es posible eliminar los grupos Wifi Direct de Android programados?
  • Aumento de la velocidad de análisis WiFi
  • WPS Parámetros Wifi NFC y Android
  • Establecer proxy WiFi sin rooting teléfono
  • Problema al conectar la aplicación de Android al socket mediante la conexión de celda
  • ¿Cómo detectar si el sistema está conectado a wifi ad hoc o de infraestructura?
  • ¿Cómo obtener el nombre de la red wifi fuera de android utilizando la API de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.