Quelqu'un at-il obtenu Multicast pour travailler sur Android 2.2, en particulier JmDNS pour la détection de service Bonjour. Il y a beaucoup de questions & réponses de la période Android 1.5-> 2.0, y compris sur stackOverflow, qui indiquent différents niveaux de succès, et un bug dans le bug tracker qui indique qu'il a été fixé, et fermé, pour 2.2 (http://code.google.com/p/android/issues/detail?id=2323). J'ai essayé le code source "TuneControl", mais cela a fonctionné sur ~ 1.5 et n'a pas été mis à jour, et ne fonctionne pas pour moi sur 2.2.Multicast sur Android 2.2
Ainsi, les questions ... 1) a-t-quelqu'un vu le travail de multidiffusion sur 2.2, en particulier JmDNS, et plus particulièrement pour la détection de service Bonjour?
2) Qu'est-ce qui est nécessaire dans le code pour que cela fonctionne?
J'utilise les autorisations appropriées:
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
I acquérir le verrou multicast:
WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
if(wifi != null)
{
MulticastLock mcLock = wifi.createMulticastLock("mylock");
mcLock.acquire();
...
Et puis essayez de démarrer jmDNS à chercher des serveurs:
mdns = JmDNS.create(addr, HOSTNAME);
jmdns.addServiceListener(TOUCH_ABLE_TYPE, listener);
jmdns.addServiceListener(DACP_TYPE, listener);
...
L'écouteur ne voit aucun service. J'ai vérifié en utilisant Wireshark que les paquets de demande sont envoyés, et que le serveur répond, mais le paquet de réponse n'est jamais vu par le code d'écouteur de prise dans la bibliothèque de jmDNS.
Alors ... je manque quelque chose? Est-ce toujours un bug? Quelqu'un at-il obtenu quelque chose, même à distance, comme ça au travail ???
de traitement de multidiffusion sur Android est vraiment problématique à ce point (2.2). – jldupont
Je reçois le "multicast lock" OK sur mon appareil Samsung Galaxy S mais je ne reçois que les paquets que j'ai envoyés. Pour contourner ce problème pour mon application, je construis un service Web qui sera utilisé pour "enregistrer" les services LAN que je veux contrôler avec mes appareils Android. De cette façon, je ne dépends pas de la disponibilité de la multidiffusion sur le matériel. – jldupont