2013-03-08 13 views
7

Sto cercando di implementare una semplice applicazione Android che trasmette un servizio bonjour WifiP2p su un dispositivo e che un secondo dispositivo scopra e si connetta ad esso. Ho praticamente seguito il tutorial here.Discovery servizio Android Wifi diretto

Ho un Channel oggetto valido, un DnsSdServiceResponseListener, e un DnsSdTxtRecordListener, e li tramite questa chiamata:

mManager.setDnsSdResponseListeners(channel, servListener, txtListener); 

A partire da ora entrambi gli ascoltatori solo sputare alcune informazioni di debug per tenerlo reale semplice.

Il problema è che il mio DnsSdServiceResponseListener non è mai chiamato, ma il DnsSdTxtRecordListenervenga chiamato e tutti gli argomenti passati nel look legit. Come si può essere chiamati ma non l'altro?

Sto testando utilizzando due dispositivi reali, entrambi con Android 4.2.2.

Grazie!

risposta

10

Finalmente capito .. tipo di. Quando si ottiene un caso di una richiesta di servizio, mi è stato specificando il nome istanza del servizio e inserite in base ai valori utilizzati durante la creazione del servizio ...

Registrazione del servizio: mServiceInfo = WifiP2pDnsSdServiceInfo.newInstance(Consts.SERVICE_INSTANCE, Consts.SERVICE_REG_TYPE, record);

Creazione della richiesta di servizio: mServiceRequest = WifiP2pDnsSdServiceRequest.newInstance(Consts.SERVICE_INSTANCE, Consts.SERVICE_REG_TYPE);

ho rimosso gli argomenti al metodo newInstance quando ottiene la richiesta di servizio ... mServiceRequest = WifiP2pDnsSdServiceRequest.newInstance();

ed entrambi gli ascoltatori sono chiamati ora . Sembra che il mio primo metodo possa filtrare altri servizi trasmessi nelle vicinanze, motivo per cui in origine ho optato per tale sovraccarico.

+0

Grazie mille amico. Sei un risparmiatore di vita! –

Problemi correlati