Android - общение между двумя устройствами

Как лучше всего установить приложение Android, установленное на двух устройствах, для взаимодействия друг с другом? Могут ли устройства подключаться напрямую без использования текстовых сообщений?

6 ответов

Решение

Вы можете подключить их через Bluetooth с помощью BluetoothSockets. Веб-сайт разработчика Android имеет довольно хорошую документацию по этому вопросу.

http://developer.android.com/guide/topics/wireless/bluetooth.html

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

http://developer.android.com/reference/java/net/ServerSocket.html для серверной части http://developer.android.com/reference/java/net/Socket.html для клиентской стороны

Если у вас есть большой объем данных для передачи, интернет-сокеты имеют большую емкость и будут работать быстрее. Другим преимуществом является то, что не существует такой вещи, как "вне диапазона". Вы можете соединить два устройства везде, где есть интернет, тогда как для Bluetooth они должны находиться в пределах Bluetooth друг от друга

У вас есть несколько вариантов, в зависимости от ваших требований и настроек:

  • Если ваши устройства находятся очень близко друг к другу (до 10 метров), вы можете общаться по Bluetooth, как предложил Дерек.
  • Если ваши устройства находятся немного дальше, но находятся в радиусе действия WiFi друг от друга (до 100 метров), они могут общаться друг с другом с помощью API-интерфейса Peer-to-Peer WiFi, описанного здесь (часть API-интерфейса беспроводной связи Android)., Для этого не требуется наличие маршрутизатора WiFi, и устройства будут находить друг друга и напрямую связываться. Однако для этого требуется Android 4.1 или выше.
  • Беспроводной API Android также будет работать, если ваши устройства находятся в одной локальной сети (то есть используют один и тот же WiFi-маршрутизатор), даже если они сами не находятся в пределах досягаемости друг друга.
  • Если ни один из этих вариантов не является жизнеспособным / гарантированным, то я согласен с Дереком, что самым простым способом было бы использовать ServerSocket и Socket для создания интерфейса сервер / клиент через Интернет. Вот пример приложения, делающего это. Основная проблема, с которой вы можете столкнуться, заключается в том, что если сервер находится за NAT (например, домашним интернет-маршрутизатором), вам придется настроить NAT для пересылки входящих пакетов на ваш сервер Android.

Вы можете использовать PubNub. он обрабатывает все сети, и вы должны заботиться только о сообщениях. у него отличный API для работы.

(Спасибо @Ian Jennings: можем ли мы отправлять данные с устройства Android на другое устройство Android напрямую (p2p) без сервера в середине?)

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

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

Вы должны взглянуть на WifiDirect

Одноранговая связь Wi-Fi (P2P) позволяет устройствам Android 4.0 (уровень API 14) или более поздней версии с соответствующим оборудованием подключаться друг к другу напрямую через Wi-Fi без промежуточной точки доступа.

Как уже было предложено, сокеты - самый простой способ добиться этого, если все ваши устройства подключены к сети.

Здесь есть кое-что, что нужно сделать:

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

Чтобы получить полное руководство, вы можете проверить это

ShortAnswer: Да

Данные могут быть отправлены напрямую.

В порядке дальности действия: 1 Bluetooth 2 wifidirect 3 может быть.. GSM оборудование напрямую?

После этого варианты снова в порядке диапазона: 4 модема или сети 5 Интернет

Android NSD API предназначен для того же, чего вы пытаетесь достичь! Пример в комплекте с SDK говорит сам за себя!

пожалуйста, проверьте:

Пример Android NSD API

Другие вопросы по тегам