2015-12-05 5 views
2

Je travaille dans Android guimauve api qui permet à l'utilisateur de travailler à la fois LTE et WiFi (ie) nous pouvons forcer notre application à utiliser LTE utilisant le réseau hipri même quand le wifi est activé en réglant le type de réseau.Obtenir l'adresse IP du LTE et du WiFi quand vous êtes connecté simultanément à Android M

j'ai vérifié ce lien: Send request over Mobile data when WIFI is ON.(Android L)

builder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); 
    builder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); 

    mNetworkCallback = 
      new NetworkCallback() { 
       @Override 
       public void onAvailable(Network network) { 
        super.onAvailable(network); 
        Log.d(TAG, "activate(): onAvailable(): " + network); 
        myConnManager.bindProcessToNetwork(network); 
        myCallback.networkStateChanged(State.CONNECTED); 
       } 

       @Override 
       public void onLosing(Network network, int maxMsToLive) { 
        super.onLosing(network, maxMsToLive); 
        Log.d(TAG, "activate(): onLosing(): ms to live: " + maxMsToLive); 
        myCallback.networkStateChanged(State.DISCONNECTING); 
       } 

       @Override 
       public void onLost(Network network) { 
        super.onLost(network); 
        Log.d(TAG, "activate(): onLost(): " + network); 
        myConnManager.bindProcessToNetwork(null); 
        myCallback.networkStateChanged(State.DISCONNECTED); 
       } 
      }; 

Maintenant, je travaille sur l'obtention de l'adresse IP à la fois le réseau WiFi et le réseau LTE connecté. Je ne suis pas sûr de savoir comment récupérer l'adresse IP des deux réseaux connectés en parallèle.

Toute aide ici serait appréciable.

+0

"Récupérer l'adresse IP" ---? Je pense que vous voulez faire une connexion DHCP sur vos deux interfaces (LTE et WiFi). Vérifiez s'il existe une API pour une demande de connexion DHCP. – Jay

Répondre

2

Voici comment vous pouvez obtenir le InetAddress d'un objet Network network:

ConnectivityManager manager = getSystemService(ConnectivityManager.class); 
LinkProperties prop = manager.getLinkProperties(network); 
InetAddress addr = prop.getLinkAddresses().get(0).getAddress(); 

Dans votre cas, vous pouvez l'utiliser dans l'une des NetworkCallback méthodes, vous obtiendrez l'adresse IP de votre mobile connexion de données (même si je suppose que cela n'a de sens que dans onAvailable()). Dans l'API 23, vous pouvez utiliser getActiveNetwork() pour obtenir un objet Network correspondant au "réseau de données par défaut actuellement actif", qui devrait être Wi-Fi (cependant, les moyens hérités pour obtenir l'adresse IP doivent également pointer vers celui-ci).

+0

BTW, il y avait un bug dans 6.0 qui empêchait d'utiliser 'requestNetwork()', il est corrigé dans 6.0.1. – cuihtlauac

+0

Merci cuihtlauac. Maintenant, j'ai une autre requête. Je suis dans un appel wifi ... Quand le wifi baisse la connectivité, je veux le connecter au réseau de données et continuer l'appel en cours ... C'est possible quand je m'enregistre avec le réseau de données que je vais connecter avec . Pour cela, j'ai besoin de l'IP de la connexion de données. Nous pensons donc à faire le manuel de transition de données wifi-> via le code lorsque la force du wifi devient inférieure à 1. Donc, nous aurons les deux IP. Puis-je forcer le paquet à aller dans les données et le wifi de façon transparente dans le même appel? – Ajitha

+0

Désolé, je n'ai jamais essayé de faire quelque chose comme ça. On dirait un grand sujet, vaut sans doute poser une autre question :-) – cuihtlauac