Получить IP-адрес LTE и WiFi при одновременном подключении в Android M

Я работаю в API-интерфейсе Android marshmallow, который позволяет пользователю работать как с LTE, так и с WiFi. (т.е.) мы можем заставить наше приложение использовать LTE с использованием сети хипри, даже когда Wi-Fi включен, установив тип сети.

Я проверил эту ссылку: Отправить запрос через мобильные данные когда WIFI включен. (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);
                }
            };

Теперь я работаю над получением IP-адреса как подключенной сети Wi-Fi, так и сети LTE. Я не уверен, как получить IP-адрес обеих подключенных сетей параллельно.

Любая помощь здесь будет ценной.


person Ajitha    schedule 05.12.2015    source источник
comment
Получить IP-адрес --- ?. Я думаю, вы хотите установить DHCP-соединение на обоих интерфейсах (LTE и WiFi). Проверьте, есть ли какой-либо API для запроса DHCP-подключения.   -  person Jay    schedule 10.12.2015


Ответы (1)


Вот как вы можете получить InetAddress из объекта Network network:

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

В вашем случае вы можете использовать это в любом из методов NetworkCallback, вы получите IP-адрес вашего мобильного подключения для передачи данных (хотя я подозреваю, что это имеет смысл только в onAvailable()). В API 23 вы можете использовать getActiveNetwork(), чтобы получить Network объект, соответствующий «активной в данный момент сети передачи данных по умолчанию», которая должна быть Wi-Fi (однако устаревшие средства получения IP-адреса также должны указывать на этот).

person cuihtlauac    schedule 11.12.2015
comment
Кстати, в 6.0 была ошибка, не позволявшая использовать requestNetwork(), она исправлена ​​в 6.0.1. - person cuihtlauac; 11.12.2015
comment
Спасибо, Куитлауак. Теперь у меня есть другой запрос. Я разговариваю по Wi-Fi... Когда Wi-Fi теряет связь, я хочу подключить его к сети передачи данных и продолжать вызов... Это возможно, когда я регистрируюсь в сети передачи данных, к которой я собираюсь подключиться. . Для этого мне нужен IP-адрес подключения для передачи данных. Таким образом, мы думаем сделать ручной переход Wi-Fi-› через код, когда мощность Wi-Fi становится меньше 1. Так что у нас будут оба IP-адреса. Могу ли я заставить пакет беспрепятственно передавать данные и Wi-Fi в одном и том же вызове? - person Ajitha; 11.12.2015
comment
Извините, я никогда не пытался сделать что-то подобное. Похоже, это большая тема, возможно, стоит задать еще один вопрос :-) - person cuihtlauac; 11.12.2015