Как запустить подключение к локальной сети программно через точку доступа Wi-Fi на Android? - PullRequest
13 голосов
/ 25 ноября 2011

Я хочу установить локальное сетевое соединение, используя встроенную точку доступа Wi-Fi на устройствах Android.Есть ли способ сделать это?А как общаться между двумя устройствами?

РЕДАКТИРОВАТЬ: Я хочу сделать это программно.Затем я могу передавать свои собственные данные между устройствами.

Ответы [ 6 ]

5 голосов
/ 28 ноября 2011

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

Я думаю, вам нужно объявить одно устройство сервером и вручную запустить его точку доступа с известным именем.

Запуск / остановка встроенного Wi-Fi / USB-модема из кода? (В соответствии с этим вопросом вы не можете запустить горячую точку программно).

После настройки точки доступа вы запускаете серверное приложение и ждете входящих подключений. Серверное приложение может показать вам IP-адрес или имя хоста.

На клиентах вы можете выполнить простую проверку и посмотреть, присутствует ли имя точки доступа, и автоматически подключиться к ней, если вы ее найдете. Смотрите эту ссылку для подключения к сети:

Использование WifiManager для подключения к сети

Что касается вашего второго вопроса, как общаться - вам нужно установить соединение между устройствами. Для этого вам нужен IP-адрес сервера. Самое простое, что можно сделать, это показать IP-адрес на пользовательском интерфейсе сервера, а затем вручную ввести его на клиентах и ​​нажать «Подключиться». Затем он установит соединение с сервером по известному порту, и вы сможете отправлять сообщения между клиентом и сервером.

Для справки я нашел NanoHttpd , который является веб-сервером для Android. Он использует ServerSocket для прослушивания входящих соединений.

3 голосов
/ 30 ноября 2011

Возможные ответы:

До ICS и нерутированных устройств

Нет способа подключиться к устройству через Wi-Fi. Там нет API, чтобы сделать. Bluetooth - ваш лучший вариант или взаимодействие с пользователем.

До ICS и корневых устройств

Я не уверен, что кто-то взломал код, но когда я попытался установить автоматическое подключение к точке доступа Wi-Fi, я заметил:

  • API скрыт внутри SDK.
  • Метод, который устанавливает соединение, проверяет поток, который его запрашивает. Если это не поток os, он генерирует исключение.

Использование ICS

В ICS появился новый способ подключения устройств через Wi-Fi, который называется Wi-Fi Direct . Вот ссылка с некоторыми демонстрациями.

0 голосов
/ 12 марта 2012

Я не знаю, программно создайте wify LAN, но вы можете создать wify LAN вручную, тогда вы можете сделать java tcp / udp программу, как сказал brianestey

"Что касается вашего второго вопроса, как общаться - вам нужно установить соединение между устройствами. Для этого вам нужен IP-адрес сервера. Самое простое, что нужно сделать, это показать IP-адрес на Пользовательский интерфейс сервера, а затем вручную введите его на клиентах и ​​нажмите «Подключиться». После этого будет установлено соединение с сервером по известному порту, и вы сможете отправлять сообщения между клиентом и сервером. "

для ручного подключения выполните шаги

  • настройки / беспроводная связь и сети / настройки портативной точки доступа Wi-Fi с любого телефона

  • создать новую точку доступа и включить оттуда портативную точку доступа Wi-Fi

  • подключите все другие устройства к этой точке доступа, включая ваш компьютер

  • вы получите ip каждого устройства программно (включая ПК, но я не знаю)

0 голосов
/ 02 декабря 2011

Вы имеете в виду связь между устройствами с поддержкой Wi-Fi без какого-либо сервера, такого как p2p? если это так, его Wi-Fi Direct, который поддерживается в ICS, проверьте это http://developer.android.com/reference/android/net/wifi/p2p/package-summary.html

До ICS не было стандартного API для Android для Wi-Fi Direct, хотя Galaxy S2 имеет Wi-Fi Direct, он использует собственные API, которые сторонние разработчики не могут использовать.

0 голосов
/ 01 декабря 2011

Если вы собираетесь разрабатывать свое собственное приложение для каждого отдельного терминала (устройства), то я думаю, что для вас сокет программирования подойдет.

Да, Android поддерживает программирование сокетов так же, как программирование сокетов Java.

1-й учебник по программированию сокетов Google Java, а затем вы можете использовать те же знания в Android.

Также не забудьте включить в манифест разрешение на использование интернета, на самом деле это то, что съело мой мозг в течение длительного времени:)

0 голосов
/ 25 ноября 2011

Это поможет начать. link1

...