2010-07-05 14 views
10

Estoy tratando de recibir datos de una dirección de multidifusión, pero la llamada a MulticastSocket.receive() bloquea hasta que se produce un tiempo de espera. Hice algo de olfateo en la red y descubrí que mi dispositivo (y el emulador) nunca envían una solicitud de MulticastSocket.joinGroup. Traté de ejecutar el mismo código Java desde mi PC como una aplicación independiente y funcionó bien. ¿Podría ser que la plataforma Android bloquea las solicitudes de combinación de IGMP? ¿Alguien ha tenido éxito con Multicast en Android anteriormente?Cómo recibir paquetes de multidifusión en Android

Mi archivo de manifiesto contiene el siguiente permiso:

Me postulo mi solicitud en 2.1 (Tanto dispositivo emulador &).

¿Alguna idea a alguien?

Gracias,

Respuesta

4

Por lo que parece, no hay soporte multicast adecuada en el emulador.

Aquí hay un error report y thread relacionados. Está siendo arreglado para froyo.

+0

Tengo una aplicación multicast que recibe bien en una tableta Nexus 7, pero no funciona en Jelly Bean. – PeterPurple

7

Lukas da la mejor explicación y ejemplos que he visto en su blog: http://codeisland.org/2012/udp-multicast-on-android

En resumen:
1. Necesita los permisos:

<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. Es necesario un bloqueo:


3. Tiene que tener un dispositivo que admita la recepción de multidifusión. O puede seguir su trabajo para encontrar dispositivos rooteados.

+0

URL que se proporciona dando 404. La URL correcta es sin '/' al final de la url. http://codeisland.org/2012/udp-multicast-on-android –

Cuestiones relacionadas