2011-12-02 10 views
20

En iPhone si creo un servicio personalizado, por ejemplo, "_test._tcp.local". En Bonjour puedo buscar/transmitir este servicio a través de WiFi y/o Bluetooth.¿Puede Android admitir Zeroconf/Bonjour a través de Bluetooth? ¿Qué hay de TCP/IP?

¿Es posible en Android?

sé que hay JmDNS pero por lo que entiendo que sólo funciona a través de Wi-Fi/red, no Bluetooth.

Gracias

EDITAR por Seva Alekseyev, que ofreció la recompensa: No estoy después de soluciones (como zeroconf sans sans Bluetooth o Bluetooth Zeroconf). Estoy detrás de lo real.

+0

Estoy muy curioso por saber la respuesta en relación con el bluetooth ... se JmDNS alowed para detectar Bonjour expuestos por bluetooth ?? – fvisticot

+0

Comencemos por lo básico: ¿hay alguna forma de ejecutar TCP/IP sobre Bluetooth en Android? Si es así, uno podría ser capaz de detectar JmDNS en esa interfaz en particular. Tal vez solo la exposición, no el descubrimiento, o viceversa. –

+0

Relacionado: [TCP/IP sobre Bluetooth en Linux] (http://giovanni.wordpress.com/2007/04/06/how-to-use-tcpip-over-bluetooth/) –

Respuesta

0

Puede usar BluetoothSocket y BluetoothServerSocket para crear tomas TCP similares a través de Bluetooth.

Aquí está una muestra de dnssd androide: https://github.com/twitwi/AndroidDnssdDemo

Es posible que tenga que modificar la biblioteca JmDNS tal que crea tomas Bluetooth si Bluetooth está activado, de lo contrario crea tomas simples. Encapsule la comunicación de socket en una clase diferente que crea un socket condicionalmente.

+0

Um, en última instancia, estoy detrás del descubrimiento de servicios de iOS a Android y viceversa. No creo que interfieran, ya que la implementación de iOS está basada en TCP/IP. –

+0

sí, es una gran probabilidad, pero la documentación dice que es similar a los sockets TCP. Así que pruébelo. – Ronnie

+0

El ejemplo no reclama la compatibilidad Bluetooth y no lo implementa. Tenía JmDNS integrado en mi aplicación desde hace un tiempo; sobre TCP/IP en WiFi habla bien con iOS. Ahora, solo porque la interfaz es similar, no significa que los sockets de RFCOMM puedan comunicarse con los de TCP/IP. Esos son transportes diferentes. No sé lo suficiente sobre BT para saber si es posible volver a implementar TCP/IP desde cero en la parte superior de la pila de Android. –

0

Hay un par de razones por las cuales esto no es posible actualmente. La que más se relaciona con su pregunta es que, como probablemente haya experimentado, jmDNS requiere un enlace TCP/IP para publicar o explorar servicios (requiere una dirección IP para enlazarse). Como dice el otro & comentarios, necesitaría un enlace PANU establecido para eso, que Android actualmente no proporciona.

Las otras razones que no trabajará son:

  • Apple utiliza un par de mecanismos para asegurar los dispositivos IOS sólo hablar con otros dispositivos IOS. Así que incluso si logras que Android hable Bonjour-over-Bluetooth, solo funcionará Android-a-Android.
  • Los dispositivos con certificación Apple en el programa MFi tienen un chip criptográfico especial que es suministrado por Apple. No estoy seguro de si esto se aplica también a las conexiones Bonjour por Bluetooth, pero supongo que sí.

Se podría en lugar de mirar a través de Bluetooth 4 LE - al menos hay una API de Apple para que a partir de iOS 5 que proporciona un perfil de esclavos y extendido para soportar un perfil de Master en iOS 6.

3

No en bluetooth, porque Android actualmente no es compatible con TCP/IP sobre bluetooth, y el soporte NSD nativo de Android (network service discovery) funciona a través de IP.

SÍ, sin embargo, funciona a través de Wi-Fi. Además, Android admite el descubrimiento de servicios a través de Wi-Fi Direct, lo que le proporciona un mayor alcance y eficiencia de batería que Bluetooth. Para obtener una guía sobre cómo integrar el descubrimiento de servicios en una aplicación con acceso directo a wi-fi, consulte el Android Training lesson.

Algunas partes de esta respuesta se duplican de nuestra Dear Android video response a esta pregunta

Cuestiones relacionadas