Могу ли я одновременно открыть как 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. Кто-нибудь знает, возможно ли это?
Спасибо за вашу помощь.
Ответы
Ответ 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-соединений. Ницца.