Android: Force l'envoi de données par radio vs WiFi
Est-il possible de forcer une application Android pour utiliser uniquement la radio mobile de connexion (3g/4g/etc), le refus de l'utilisation du WiFi?
Je pense que je veux utiliser un HIPRI de connexion: (ex: WIFI allumé, utilisez HIPRI 3G):
http://groups.google.com/group/android-developers/browse_thread/thread/d41f85505484d29b
source d'informationauteur wuntee
Vous devez vous connecter pour publier un commentaire.
Je ne crois pas que vous pouvez "forcer" le chemin de connexion sans explicitement la désactivation de la radio Wi-Fi temporairement (non recommandé). Cependant, vous pourriez essayer de mettre en place le réseau de préférence au cours de la période que vous voulez que cela se produise:
Espère que ça Aide!
Dans Android 2.2, vous pouvez utiliser le haut de la priorité des données mobiles en même temps que le WiFi. La valeur de la "fonctionnalité" paramètre "enableHIPRI", et qui est caché dans le Téléphone de l'API.
Méthode:
ConnectivityManager.startUsingNetworkFeature(int networkType, Chaîne de caractéristique) de
http://developer.android.com/reference/android/net/ConnectivityManager.html
Source: http://code.google.com/p/android/issues/detail?id=5885
Vous pouvez consulter cette autre réponse: https://stackoverflow.com/a/4756630/327011
Ce n'est PAS une bonne politique...si VRAIMENT nécessaire!
ConnectivityManager.setNetworkPreference() est proche d'être obsolète. Mais ce qui est plus important, si vous ne getNetworkPreference() avant de changer, il sera de retour ConnectivityManager.TYPE_MOBILE. Réglage il n'y a pas de différence. Comme pour HIPRI lui-même, il fonctionne assez étrange mode. Tout d'abord, il permet les connexions à tous les hôtes, et pas seulement à celles explicitement demandé. Deuxièmement, lorsque vous éteignez l'appareil avec stopUsingFeature...() l'appel, il ne sera pas éteint, et sera toujours actif. Troisièmement, toutes les applications de l'appareil de commencer à l'utiliser même si le wifi est disponible, ce qui contredit ce qui est dit dans la documentation.
(J'ai répondu à cette même question ici)
Vous ne pouvez pas explicitement vigueur le canal de communication sur une base par application (vous pouvez demander à utiliser un mode préféré via
ConnectivityManager.setNetworkPreference(...)
mais ce n'est pas "forcer").Bien qu'il soit probablement terrible UX, vous peut informer l'utilisateur que votre application n'autorise pas l'utilisation de WiFi, puis de désactiver son WiFi si ils veulent continuer. Pour ce faire, vous avez besoin de la
ACCESS_WIFI_STATE
etCHANGE_WIFI_STATE
autorisations. Le code devrait ressembler à quelque chose comme ceci:Essayer de regarder cela, il a beaucoup d'infos et peut avoir de solution que vous cherchez: Comment faire pour utiliser la Connexion 3G Android de l'Application au lieu du Wi-fi?
Il a de travail exemple de service qui met en place le HIPRI connexion mobile et maintient en cours d'exécution. Autant que je sache, c'est le seul plus ou moins de façon simple d'avoir travaillé avec le wifi et la 3g android. Le seul inconvénient est que, de cette connexion permettra uniquement de la transmission des données vers les serveurs de routage a été explicitement demandé. Cela signifie essentiellement que vous ne pouvez pas la route à de nombreux serveurs en raison de recherche de l'hôte par son nom pour obtenir l'adresse ip prend du temps, et de le faire pour 10 serveurs vont prendre de 30 à 60 sec, ce qui le fait démarrer lentement. Donc, vous devez savoir exactement ce que les serveurs doivent être disponibles par l'intermédiaire de la connexion mobile.