2013-03-08 15 views
7

Ich versuche, eine einfache Android-Anwendung zu implementieren, die einen WifiP2p Bonjour-Dienst auf einem Gerät sendet und ein zweites Gerät zu entdecken und eine Verbindung zu ihm haben. Ich habe das Tutorial here ziemlich genau verfolgt.Android Wifi Direct Service Discovery

Ich habe ein gültiges Channel Objekt, ein DnsSdServiceResponseListener und ein DnsSdTxtRecordListener, und über diesen Aufruf gesetzt:

mManager.setDnsSdResponseListeners(channel, servListener, txtListener); 

Ab jetzt beiden Hörer nur einige Debug-Informationen ausspucken es wirklich einfach zu halten.

Das Problem ist, dass mein DnsSdServiceResponseListener nie genannt wird, aber die DnsSdTxtRecordListenernicht aufgerufen und alle Argumente in Blick legit geben. Wie kann man heißen, aber nicht der andere?

Ich teste mit zwei tatsächlichen Geräten, beide laufenden Android 4.2.2.

Danke!

Antwort

10

Schließlich herausgefunden, es .. Art von. Wenn eine Instanz einer Serviceanfrage bekommen, war ich die Dienstinstanz Namen angeben und geben Sie die Werte verwendet, um übereinstimmen, wenn der Service ... und

den Dienst registrieren: mServiceInfo = WifiP2pDnsSdServiceInfo.newInstance(Consts.SERVICE_INSTANCE, Consts.SERVICE_REG_TYPE, record);

die Serviceanfrage erstellen: mServiceRequest = WifiP2pDnsSdServiceRequest.newInstance(Consts.SERVICE_INSTANCE, Consts.SERVICE_REG_TYPE);

ich die Argumente der Methode newInstance entfernt, wenn die Dienstanforderung ... mServiceRequest = WifiP2pDnsSdServiceRequest.newInstance();

bekommen und beide Zuhörer jetzt genannt werden . Es scheint so, als würde meine erste Methode andere Dienste herausfiltern, die in der Nähe ausgestrahlt werden, weshalb ich mich ursprünglich für diese Überladung entschieden habe.

+0

Vielen Dank, Mann. Du bist ein Lebensretter! –

Verwandte Themen