2011-12-02 8 views
20

Su iPhone se creo un servizio personalizzato, ad esempio "_test._tcp.local." in Bonjour posso cercare/trasmettere questo servizio tramite WiFi o/e Bluetooth.Android può supportare Zeroconf/Bonjour tramite Bluetooth? Che ne dici di TCP/IP?

E 'possibile su Android?

So che c'è jmDNS ma da quanto ho capito funziona solo tramite Wi-Fi/Network, non Bluetooth.

Grazie

EDIT Seva Alekseyev, che ha offerto la bontà: io non sto cercando soluzioni alternative (come Zeroconf sans Bluetooth o sans Bluetooth Zeroconf). Sto cercando la cosa vera.

+0

Sono molto curioso di conoscere la risposta per quanto riguarda bluetooth ... si JmDNS alowed per rilevare i servizi Bonjour esposti dal bluetooth ?? – fvisticot

+0

Iniziamo dalle basi: c'è un modo per eseguire TCP/IP su Bluetooth in Android? Se è così, si potrebbe essere in grado di sic JmDNS su quella particolare interfaccia. Forse solo l'esposizione, non la scoperta, o viceversa. –

+0

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

risposta

0

È possibile utilizzare BluetoothSocket e BluetoothServerSocket per creare socket TCP come Bluetooth.

Ecco un esempio di dnssd Android: https://github.com/twitwi/AndroidDnssdDemo

Potrebbe essere necessario modificare la libreria jmdns in modo tale che essa crea prese Bluetooth Se il Bluetooth è attivo, altrimenti crea prese semplici. Incapsula la comunicazione socket in una classe diversa che crea socket in modo condizionale.

+0

Um, in definitiva, dopo iOS-to-Android e viceversa scoperta del servizio. Non penso che sarebbero interoperabili, dato che l'implementazione iOS è basata su TCP/IP. –

+0

sì, questa è un'alta probabilità, ma la documentazione dice che è simile ai socket TCP .. Quindi provatelo .. – Ronnie

+0

L'esempio non rivendica la compatibilità Bluetooth e non lo implementa. Ho integrato JmDNS nella mia app per un po 'di tempo; su TCP/IP su WiFi parla bene con iOS. Ora, solo perché l'interfaccia è simile, non significa che i socket RFCOMM possano comunicare con quelli TCP/IP. Quelli sono diversi trasporti. Non ne so abbastanza su BT per sapere se è possibile reimplementare TCP/IP da zero in cima allo stack di Android. –

0

Ci sono un paio di motivi per cui al momento non è possibile. Quello più correlato alla tua domanda è che, come probabilmente hai sperimentato, jmDNS richiede un collegamento TCP/IP per pubblicare o consultare i servizi (richiede un indirizzo IP per collegarsi). Poiché l'altro risponde allo stato &, è necessario un collegamento PANU stabilito per quello, che Android attualmente non fornisce.

Le altre ragioni che non funziona sono:

  • Apple utilizza un paio di meccanismi per assicurare i dispositivi iOS parlerà solo ad altri dispositivi iOS. Quindi, anche se dovessi parlare con Android di Bonjour-over-Bluetooth, funzionerebbe solo da Android a Android.
  • I dispositivi certificati Apple nel programma MFi dispongono di uno speciale chip crittografico fornito da Apple. Non sono sicuro che questo si applichi anche alle connessioni Bonjour-over-Bluetooth, ma suppongo che lo faccia.

Si potrebbe invece considerare di usare Bluetooth 4 LE - almeno c'è un'API di Apple per che a partire in iOS 5 che fornisce un profilo slave, ed esteso per sostenere un profilo Master in iOS 6.

3

Non su bluetooth, perché Android attualmente non supporta TCP/IP su bluetooth e il supporto NSD nativo di Android (network service discovery) funziona su IP.

FA, tuttavia, funziona tramite Wi-Fi. Inoltre, Android supporta l'individuazione dei servizi tramite Wi-Fi Direct, che offre una maggiore autonomia e l'efficienza della batteria rispetto al bluetooth. Per una guida su come integrare l'individuazione dei servizi in un'applicazione abilitata per Wi-Fi diretta, consulta lo Android Training lesson.

Parti di questa risposta sono duplicati dal nostro Dear Android video response a questa domanda

Problemi correlati