1

Я разрабатываю приложение, которое использует Wi-Fi напрямую для подключения устройств. Я прочитал, как подключиться, отправить данные и отключить устройства здесь: http://developer.android.com/guide/topics/connectivity/wifip2p.html. Теперь я хочу отправить некоторые данные перед подключением, чтобы показать некоторые сведения об устройстве. У меня Googled это, но единственный ответ, который я нашел, это: Sending data in Android WiFi Direct service discovery instead of connecting, который использует обнаружение сервисов.Android Wi-Fi Прямая отправка данных перед подключением

Есть ли способ отправить данные перед процессом сопряжения без использования службы обнаружения? Если я не могу, вы можете объяснить, в чем разница между обнаружением службы и обычным Wi-Fi P2P?

спасибо.

ответ

3

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

Я уже написал несколько ответов относительно WifiP2p и Service Discovery, и я предлагаю вам взглянуть на них в первую очередь. Последнее, вероятно, должно вас заинтересовать больше всего.

  1. Why is discovering peers for Android WifiDirect so unreliable
  2. Wi-fi P2P. Inform all peers available of some event
  3. Wifi P2P service discovery works intermittently

Чтобы ответить на ваш вопрос о разнице между WifiP2p и ServiceDiscovery, позвольте мне использовать небольшую аналогию:

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

Теперь позвольте мне объяснить ... Каждый человек, держащий кусок бумаги, представляет собой Broadcasted Service. Каждый broadcasted service может нести небольшую часть информации (имя человека). Пространство для информации очень ограничено (вы не можете много писать на бумаге) и является «относительно постоянным» (для его изменения требуется немного). Когда вы искали подходящего человека, вы делали Service Discovery. Вам не нужно было разговаривать со всеми этими людьми, чтобы читать имена на этих листах - вам не нужно было подключаться к ним (WiFiP2p-мудрый). Когда вы нашли тот, который вас интересует, вы поговорили с человеком - вы установили соединение WiFiP2p. Теперь вы можете поговорить с ним столько, сколько хотите - вы можете передавать столько данных, сколько хотите, через соединение.

+0

Большое спасибо, ваш ответ был ясен и очень хорошо сделан. К сожалению, я думал отправить данные, как изображение и другую информацию, но, похоже, это невозможно. Я посмотрю на это немного больше, чтобы узнать, сколько данных я могу поместить в эфир. Спасибо, +1 и принят. – Aurasphere

+1

Возможно, вы не сможете отправить изображение. Возможно, вы могли бы транслировать URL-адрес изображения (я не помню предела для широковещательного сообщения) –