Подтвердить что ты не робот

Могу ли я одновременно открыть как Wi-Fi, так и сотовые сети на Android?

Я работаю над приложением, которое будет работать на телефоне, где телефон будет станцией в частной сети Wi-Fi. Телефон будет станция, а не точка доступа, а частная сеть Wi-Fi не маршрут в Интернет. Моему приложению нужно общаться с серверов в Интернете, а также устройств в локальной сети Wi-Fi, поэтому он должен иметь соединения в обеих сетях одновременно. Я пытался выяснить, как это сделать.

Я пробовал метод, описанный в обсуждении Группа разработчиков Google Android под названием "Can Android 2.X подключается к сетям передачи данных 3G и Wi-Fi одновременно? ", Но он не работает хорошо. Я нахожу, что когда я включаю сотовой сети путем вызова ConnectivityManager.setNetworkPreference(ConnectivityManager.TYPE_MOBILE) все сокеты, открытые в сети Wi-Fi, закрыты. У меня нет попробовал, но я подозреваю, что то же самое произойдет с розетками на когда я вернусь к Wi-Fi.

Другая проблема заключается в том, эти вызовы работают на глобальном уровне, изменяя настройки сети для всего телефона, а не только для приложения. Переключение сети настроенный глобально подобным образом, будет мешать любому другому приложению, которое происходит на телефоне. Даже после выхода моего приложения, телефон продолжает работать с последней установленной конфигурацией сети.

Я ищу способ открыть соединения как на сотовой данных и Wi-Fi в одно и то же время, и не мешая другие приложения, работающие по телефону.

1. Кто-нибудь знает, как это сделать это?
2. Кто-нибудь знает, возможно ли это?

Спасибо за вашу помощь.

4b9b3361

Ответ 1

Этот поток Android: данные Force, отправляемые по радио и WiFi, упоминают два возможных подхода к проблеме.

  • Установите сетевое предпочтение, когда вы хотите, чтобы ваше приложение использовало конкретное соединение:

    ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
    cm.setNetworkPreference(ConnectivityManager.TYPE_MOBILE);
    
  • Включить высокоскоростное мобильное подключение к данным:

    connectivityManager.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, "enableHIPRI");
    

Для второго подхода указано, что он работает с Android 2.2, не знаю, работает ли это в реальных версиях. Однако, насколько я понял, enableHIPRI является более или менее скрытым сетевым параметром, поэтому я предпочел бы, если возможно, первый метод.

Ответ 2

Если вы не можете сделать это с помощью вызовов API, и если вы готовы заразиться руками на более низком уровне, некоторые знания Linux могут помочь. В основном вам нужно открыть оба интерфейса и установить маршрут по умолчанию на интерфейсе 3g. Вам придется использовать системные команды с привилегиями root для такого рода задач. Причина закрытия сокетов - это, вероятно, интерфейс, который снова и снова выходит из-за вызова API.

Ответ 3

Без доступа root доступ не может сильно повлиять на приложение.

В Android API вы можете максимально использовать Wi-Fi в надежде, что устройство переключится на него и отключит WiFi, чтобы устройство переключилось на 3G (если оно там, APN - это правильно и т.д.).

Все остальное не гарантируется. Например. установка предпочтительного типа подключения не гарантирует, что устройство переключится на этот тип.

Обычное поведение заключается в том, что, как только Wi-Fi станет доступным, на короткое время (3-5 секунд) устройство отключится как 3G, так и Wi-Fi, а затем отключит 3G. Как только Wi-Fi отключится пользователем или вашим приложением, и устройство попытается подключиться к Интернету, через некоторое время он включит 3G.

Начиная с Android 2.3 вы больше не сможете отключать/активировать 3G. Один используется для испортить/восстановить настройки APN для включения/отключения 3G, но начиная с 4.0 вы не можете программно изменять настройки APN.

Ответ 4

Я думаю, что за один раз возможно только одно обслуживание. Либо вы можете использовать WiFi, либо использовать данные Cellular 3G. Оба одновременно не могут работать одновременно.

Ответ 5

Сети передачи данных 3G и Wi-Fi не могут соединяться одновременно, но 3G и Wi-Fi могут быть подключены одновременно, если поддержка оператора и инфраструктура андроида также изменяются для оператора. Теперь некоторые операторы уже имеют эту функцию, но некоторые не могут.

Ответ 6

Использование обеих сетей одновременно невозможно в Android-приложении, но вы можете сделать это на ПК.
Подключите один из маршрутизатора WIFI и один из LAN или USB-интернет-Stick.
Поэтому создайте APp и используйте на ПК. Если вы не знаете, как запустить Android на ПК, чем Google.

Ответ 7

Если я не ошибаюсь, если доступны Wi-Fi и 3G/4G, Wi-Fi будет иметь приоритет.

Только когда Wi-Fi недоступен, он переключится на 3G/4G. Конечно, это обеспечило одновременное включение обоих.

Вместо использования частного Wi-Fi, таким образом ограничивая ваш выбор, вы можете подумать о подключении к Интернету через VPN, чтобы устройство подключилось к VPN из 3G/4G и впоследствии получало доступ к данным, если ваша безопасность связана с использованием частного Wi-Fi,.

И VPN-клиенты встроены в Android, и есть также сторонние клиенты.

Надеюсь, что это поможет!

Ответ 8

Возможно, вы захотите изучить специальные сети Wi-Fi. Он подключается к устройствам через Wi-Fi, даже если дроид уже использует Wi-Fi для Интернета (но не использует стек ip).

Не путайте соединения wifi (IEEE 802.11x) с интернет-соединениями. IP может работать на Wi-Fi, мобильном, ethernet, DSL, Dailup или самонаводящихся голубях, но только по одной сети за раз.

Для получения дополнительной информации о специальных сетях wifi см. следующую ссылку.

https://code.google.com/p/android-wifi-tether/

Обратите внимание, что многие носители запрещают многоадресную рассылку (совместное использование) своих IP-соединений. Ницца.