Pregunta

¿Alguien ha conseguido multidifusión a trabajar en Android 2.2, específicamente para la detección JmDNS servicio Bonjour. Hay muchas preguntas y respuestas desde el Android 1.5-> 2.0 plazo, incluidos en StackOverflow, que indican diferentes grados de éxito, y un error en el seguimiento de errores que indican que se fijó, y se cierran, el 2,2 ( http://code.google.com/p/android/issues/detail?id=2323 ). He probado el código fuente "TuneControl", pero que trabajé en ~ 1.5 y no se ha actualizado, y no funciona para mí en 2.2.

Por lo tanto, las preguntas ... 1) Tiene cualquiera trabajo de multidifusión visto en 2.2, específicamente JmDNS, y específicamente para la detección de servicios Bonjour?

2) Lo que se necesita en el código para hacer este trabajo?

Estoy usando los permisos apropiados:

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

Me adquirir el bloqueo de multidifusión:

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

Y a continuación, intente iniciar JmDNS para buscar servidores:

    mdns = JmDNS.create(addr, HOSTNAME);
    jmdns.addServiceListener(TOUCH_ABLE_TYPE, listener);
    jmdns.addServiceListener(DACP_TYPE, listener);
    ...

El oyente no ve ningún servicio. He verificado usando Wireshark que los paquetes de solicitud se envían, y que responde el servidor, pero el paquete de respuesta nunca se ven por el código de socket de escucha en la biblioteca JmDNS.

Así que ... me estoy perdiendo algo? ¿Sigue siendo un error? Se ha hecho nada a nadie ni remotamente como este para trabajar ???

¿Fue útil?

Solución

A (groseramente) responder a mi propia pregunta, se proporcionó más información en http://code.google.com/p/android/issues/detail?id=2917#c48 por otra persona. Para la posteridad, como se suele decir, aquí está brian.ro ... @ gmail.com de respuesta ...

  

"He pasado un poco de tiempo   la depuración de problemas con mDNS JmDNS en mi   Evo y HTC Hero (CDMA). Lo que encontré   es parece que hay un filtro en   lugar en el controlador inalámbrico Broadcom   en el Evo (y ya me estoy poniendo un   reprt similar de un usuario HTC Desire   - con el mismo chipset, es de suponer que el teléfono también). El filtro, por   por defecto, bloquea cualquier no-unicast o   el tráfico de difusión de la red, incluyendo   multidifusión. Al parecer, la teoría era   se trata de un ahorro de batería.

     

El problema parece ser el   wpa_supplicant en el Evo no lo hace   apoyar la eliminación de los filtros cuando   se obtiene una MulticastLock. (Comprobar el   ingrese salida derecha después de obtener el   bloquear y verá lo que quiero decir).   Por desgracia lo que ha sucedido es el   fabricantes de hardware han fragmentado   soporte multicast .... :( "

Así que ... parece que este es un problema en el dispositivo más que un problema de codificación. D'oh. :( Si me da la oportunidad de probar en otro dispositivo ...

Otros consejos

He estado haciendo un poco de investigación en esto, y creo que es un problema con Android en general, y se fija en o alrededor de Android 2.3.7.

Es un poco demasiado anecdótica, pero esto es lo que he probado:

  • HTC Desire, 2.2, disponible: fallar
  • HTC Desire, 2.3.7, CyanogenMod: éxito
  • Motorola Milestone, 2,1-Update1: fallar
  • HTC Desire S, 2.3.3: fallar
  • Acer Iconia A501, 3.2.1: éxito
  • Samsung algo, 2.3.3: fallar
  • HTC Legend, 2,2 pienso: fallan

Cuando digo 'fallar', de hecho todo lo que eran capaces de enviar mensajes de multidifusión a los dispositivos de 'éxito', pero nunca recibe de nuevo nada más que sus propios mensajes -. Como se describe jldupont

Tenga en cuenta que la aplicación de mensajería instantánea de multidifusión KouChat sólo está disponible para 2.3.7 en adelante, a pesar de que se puede hacer para compilar ya en 2.1, lo que da mayor credibilidad a esta teoría.

Creo que la otra razón es su punto de acceso no soporta.

Otros: Ordenador de envío / Recieve a / desde Android

el equipo sólo tiene que utilizar WIFI, mejor fuera de toda otra red

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top