2013-03-08 3 views
7

J'essaie de mettre en œuvre une application android simple qui diffuse un service WifiP2P bonjour sur un appareil et d'avoir un deuxième appareil à découvrir et à s'y connecter. J'ai suivi à peu près le tutoriel here.Android Wifi Direct Service Discovery

J'ai un objet Channel valide, un DnsSdServiceResponseListener et un DnsSdTxtRecordListener, et les mettre par cet appel:

mManager.setDnsSdResponseListeners(channel, servListener, txtListener); 

En ce moment les deux auditeurs juste cracher sur quelques informations de débogage pour le garder réel simple.

Le problème est que mon DnsSdServiceResponseListener est jamais appelé, mais le DnsSdTxtRecordListenerne nous appelle et tous les arguments passés dans le regard legit. Comment peut-on être appelé mais pas l'autre?

Je suis en train de tester en utilisant deux appareils réels, les deux fonctionnant sous Android 4.2.2.

Merci!

Répondre

10

Enfin compris ... sorte de. Lors de l'obtention d'une instance d'une demande de service, je spécifier le nom d'instance de service et type pour correspondre aux valeurs utilisées lors de la création du service ...

Enregistrement du service: mServiceInfo = WifiP2pDnsSdServiceInfo.newInstance(Consts.SERVICE_INSTANCE, Consts.SERVICE_REG_TYPE, record);

Création de la demande de service: mServiceRequest = WifiP2pDnsSdServiceRequest.newInstance(Consts.SERVICE_INSTANCE, Consts.SERVICE_REG_TYPE);

J'ai enlevé les arguments à la méthode newInstance lors de l'obtention de la demande de service ... mServiceRequest = WifiP2pDnsSdServiceRequest.newInstance();

et les auditeurs sont appelés maintenant . Il semble que ma première méthode filtrerait les autres services diffusés à proximité, ce qui explique pourquoi j'ai initialement opté pour cette surcharge.

+0

Merci beaucoup, monsieur. Vous êtes un épargnant de vie! –

Questions connexes