Может ли Android поддерживать Zeroconf / Bonjour через Bluetooth? Как насчет TCP / IP? - PullRequest
20 голосов
/ 02 декабря 2011

На iPhone, если я создаю пользовательский сервис, например "_test._tcp.local."в Bonjour я могу искать / транслировать этот сервис через WiFi или / и Bluetooth.

Это возможно на Android?

Я знаю, что есть jmDNS, но из того, что я понимаю, он работает только через WiFi/ Сеть, не Bluetooth.

Спасибо

РЕДАКТИРОВАТЬ Сева Алексеева, который предложил награду: я не после обходных путей (как Zeroconf без Bluetooth или Bluetooth без Zeroconf).Я за реальной вещью.

Ответы [ 3 ]

3 голосов
/ 25 октября 2012

Не по Bluetooth, потому что Android в настоящее время не поддерживает TCP / IP по Bluetooth, а встроенная поддержка Android NSD ( обнаружение сетевой службы ) работает по IP.

Однако, ДЕЙСТВИТЕЛЬНОРаботаю над Wi-Fi.Кроме того, Android поддерживает обнаружение служб через Wi-Fi Direct, что обеспечивает большую дальность и эффективность использования аккумулятора, чем через Bluetooth.Чтобы узнать, как интегрировать обнаружение служб в приложение с поддержкой Wi-Fi, ознакомьтесь с уроком Android Training .

. Части этого ответа дублируются из нашего Дорогой видеоответ Android на этот вопрос

0 голосов
/ 08 октября 2012

Есть несколько причин, почему это невозможно в настоящее время.Одним из наиболее связанных с вашим вопросом является то, что - как вы, вероятно, испытали - jmDNS требует ссылку TCP / IP для публикации или просмотра служб (для привязки требуется IP-адрес).Как говорится в других ответах и ​​комментариях, для этого вам понадобится установленная ссылка PANU, которую в настоящее время Android не предоставляет.

Другие причины, по которым она не будет работать:

  • Apple использует несколько механизмов, чтобы гарантировать, что устройства iOS будут общаться только с другими устройствами iOS.Поэтому, даже если вы заставите Android говорить о Bonjour-over-Bluetooth, он будет работать только с Android на Android.
  • Устройства, сертифицированные Apple, в программе MFi имеют специальный криптографический чип, поставляемый Apple.Я не уверен, относится ли это также к соединениям Bonjour-over-Bluetooth, но я бы предположил, что это так.

Вместо этого вы можете использовать Bluetooth 4 LE - по крайней мере, есть AppleAPI для этого, начиная с iOS 5, предоставляет профиль Slave и расширен для поддержки главного профиля в iOS 6.

0 голосов
/ 05 августа 2012

Вы можете использовать BluetoothSocket и BluetoothServerSocket для создания TCP-подобных сокетов через Bluetooth.

Вот пример android dnssd: https://github.com/twitwi/AndroidDnssdDemo

Возможно, вам придется изменить библиотеку jmdns, чтобы она создавала сокеты Bluetooth, если Bluetooth включен, в противном случае создаются простые сокеты.Инкапсулируйте связь с сокетом в другом классе, который создает сокет условно.

...