Подтвердить что ты не робот

Может ли Android поддерживать Zeroconf/Bonjour через Bluetooth? Как насчет TCP/IP?

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

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

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

Спасибо

ИЗМЕНИТЬ Сева Алексеев, который предложил щедрость: я не обходчатые (например, Zeroconf sans Bluetooth или Bluetooth sans Zeroconf). Я за реальностью.

4b9b3361

Ответ 1

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

Это, однако, работает через Wi-Fi. Кроме того, Android поддерживает обнаружение сервисов через Wi-Fi Direct, что дает вам больший диапазон и эффективность работы от батарей, чем Bluetooth. Чтобы узнать, как интегрировать обнаружение службы в приложение с прямым подключением wi-fi, ознакомьтесь с урок обучения Android.

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

Ответ 2

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

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

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

Ответ 3

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

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

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

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