2010-07-05 3 views
10

J'essaie de recevoir des données d'une adresse de multidiffusion, mais l'appel à MulticastSocket.receive() bloque jusqu'à ce qu'un délai expire. J'ai fait du reniflage de réseau et j'ai découvert que mon appareil (et l'émulateur) n'envoie jamais de requête MulticastSocket.joinGroup. J'ai essayé d'exécuter le même code Java à partir de mon PC en tant qu'application autonome et cela a bien fonctionné. Se pourrait-il que la plateforme Android bloque les requêtes de jointure IGMP? Quelqu'un at-il réussi avec Multicast sur Android avant?Comment recevoir des paquets de multidiffusion sur Android

Mon fichier manifeste contient l'autorisation suivante:

Je suis en cours d'exécution sur ma demande 2.1 (deux dispositif émulateur &).

Vous avez des idées?

Merci,

Répondre

4

Comme il semble, il n'y a pas un soutien adéquat de multidiffusion dans l'émulateur.

Voici un bug report et apparenté thread. Il est en cours de réparation pour froyo.

+0

J'ai une application de multidiffusion qui reçoit bien sur une tablette Nexus 7, mais cela ne fonctionne pas sur Jelly Bean. – PeterPurple

7

Lukas donne la meilleure explication et des exemples que je l'ai vu sur son blog: http://codeisland.org/2012/udp-multicast-on-android

En résumé:
1. Vous avez besoin des autorisations:

<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"/> 


2. Vous avez besoin d'un verrou:

WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
    if (wifi != null){ 
     WifiManager.MulticastLock lock = wifi.createMulticastLock("mylock"); 
     lock.acquire(); 
    } 


3. Vous devez disposer d'un périphérique prenant en charge la réception multidiffusion. Ou vous pouvez suivre son travail pour les appareils enracinés.

+0

Url qui fourni donne 404. L'URL correcte est sans '/' à la fin de l'URL. http://codeisland.org/2012/udp-multicast-on-android –

Questions connexes