J'ai besoin de savoir comment je peux détecter un commutateur dans les réseaux Wi-Fi, mais automatiquement ou manuellement, peu importe. Y a-t-il une sorte d'intention diffusée dans tout le système lorsqu'un interrupteur est détecté? Ou dois-je vérifier manuellement si un nouveau réseau est sélectionné en appelant une méthode sur un ConnectivityManager?Comment détecter les changements dans le réseau?
Répondre
A ce moment, j'ai résolu ce comme ça (ne sont pas totalement encore testé car je n'ai pas un second réseau disponible pour le moment):
J'ai étendu la classe BroadcastReceiver
private class NetworkSwitcher extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (!action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
return;
}
NetworkInfo networkInfo =
(NetworkInfo)intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
if (networkInfo.isConnected()) {
if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
Log.d(TAG, "Network type: " + networkInfo.getTypeName() +
" Network subtype: " + networkInfo.getSubtypeName());
getOwnIpAddress();
mClient.updateUnicastSocket(mOwnAddress, mUnicastPort);
}
}
else {
Log.e(TAG, "Network connection lost");
}
}
}
I enregistrer cette classe en tant que récepteur d'un filtre fixé à l'intention ConnectivityManager.CONNECTIVITY_ACTION
(mise en onResume()
et en la libérant dans onPause()
). Cela devrait attraper n'importe quel commutateur de réseau Wi-Fi automatique. Le getOwnIpAddress
récupère l'adresse IP du périphérique à partir du WifiManager
.
J'ai également constaté que cela fonctionne quand je retourne à l'activité d'une autre activité.
Je réalise que c'est l'acceptation (par l'OP) mais je ne pense pas que cela fonctionnera. Les docs recommandent d'utiliser WifiManager plutôt que ConnectivityManager pour le genre de chose que vous décrivez, donc vous utiliserez WifiManager.NETWORK_STATE_CHANGED_ACTION, mais je ne suis pas sûr que même cela ferait l'affaire: vous notifier quand votre client passe d'un BSSID à l'autre (si je comprends bien la question). – Tom
Cela aurait pu être une meilleure solution. Bien que je ne travaille plus sur cette application (peut-être encore dans le futur). Si j'avais su du WifiManager, j'aurais essayé ça aussi. – ThaMe90
'WifiManager.NETWORK_STATE_CHANGED_ACTION' fera l'affaire exactement comme @Tom dit et mentionné dans [Documentation] (http://developer.android.com/reference/android/net/wifi/WifiManager.html#NETWORK_STATE_CHANGED_ACTION) – Sdghasemi
- 1. Comment détecter les changements dans le réseau avec Reachability?
- 2. détecter les changements sur NSUserDefaults
- 3. Comment détecter les changements de résolution d'affichage?
- 4. Détecter les changements dans une vidéo
- 5. Détecter le dépannage réseau?
- 6. Comment détecter les changements d'orientation dans IEMobile 7 avec Javascript?
- 7. détecter les changements de shell de Windows
- 8. Comment détecter les changements de champs dans EF?
- 9. Comment détecter les changements de tour dans Android?
- 10. Comment détecter l'iPhone sur le réseau?
- 11. livequery pour détecter les changements dom
- 12. Comment détecter un périphérique sur le réseau?
- 13. jQuery détecter les changements de formulaire
- 14. Comparer deux IEnumerable pour détecter les changements
- 15. Jouer le framework 2.1 ne pas détecter les changements d'évolution
- 16. Comment détecter les changements de police à l'intérieur d'iFrame
- 17. Détecter les changements directs dans MySQL à travers
- 18. comment détecter un événement réseau dans le cacao osx
- 19. Comment détecter les changements de classe sur IE
- 20. détecter des changements avec ckeditor
- 21. détecter svn changements dans un .bat
- 22. Détecter les changements de données avec les événements Form
- 23. Comment trouver les changements dans le Bean
- 24. Google Drive Javascript API: Détecter les changements de lecteur - retourner les changements seulement
- 25. Détecter si le réseau a changé?
- 26. Comment détecter la disponibilité réelle du réseau?
- 27. détecter les changements de hauteur iframe sans iframe reload
- 28. GpsStatus.Listener ne déclenche pas sur les changements d'état du réseau
- 29. Comment refléter les changements dans le list.selectedItem dans le itemRenderer?
- 30. Comment détecter si des appareils iOS utilisent le même réseau?
duplication possible de [Détecter réseau 3G ou Wifi] (http://stackoverflow.com/questions/4503561/detect-3g-or-wifi-network-restoration) – Reno
Cette question semble répondre à la question de savoir si un réseau est connecté ou déconnecté en général. J'ai besoin de savoir quand un changement entre les réseaux s'est produit. – ThaMe90
Vous pouvez utiliser le même code. Si le type est Wifi, utilisez NetworkInfo pour obtenir les données [EXTRA_] (http://developer.android.com/reference/android/net/wifi/WifiManager.html). Par exemple BSSID devrait être différent pour les différents n/w WiFi – Reno