Android 2.2上的组播

有没有人得到组播工作在Android 2.2,特别是JmDNS的Bonjour服务检测。 Android 1.5-> 2.0的时间框架有很多问题和答案,包括stackOverflow,表示不同级别的成功,以及错误跟踪器中的一个错误,表明它已经修复,并且closures了2.2( http:// code .google.com / p / android / issues / detail?id = 2323 )。 我已经尝试了“TuneControl”源代码,但工作〜1.5,并没有更新,并没有为我工作在2.2。

所以,这个问题… 1)有没有看过2.2的组播工作,特别是JmDNS,专门用于Bonjour服务检测?

2)什么是必要的代码,使这项工作?

我正在使用适当的权限:

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

我获得了多播locking:

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

然后尝试启动jmDNS以查找服务器:

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

听众从来没有看到任何服务。 我已经validation了使用Wireshark发送请求数据包,并且服务器响应,但jmDNS库中的套接字侦听器代码从不会看到响应数据包。

所以…我错过了什么? 这仍然是一个错误? 有没有人得到任何东西,甚至远程这样的工作?

Solutions Collecting From Web of "Android 2.2上的组播"

为了(粗​​鲁地)回答我自己的问题,他人提供了http://code.google.com/p/android/issues/detail?id=2917#c48的更多信息&#x3002; 对于后代,正如他们所说,这里是brian.ro … @ gmail.com的答案…

“我花了很多时间在我的Evo和HTC Hero(CDMA)上用JmDNSdebuggingmDNS问题,我发现在Evo的broadcom无线驱动器上似乎有一个filter,从HTC Desire用户那里得到一个类似的reprt(用同样的芯片组,大概是那个手机)。默认情况下,filter阻止任何非单播或networking广播stream量,包括组播。显然理论是它是一个节电器。

问题似乎是Evo上的wpa_supplicant不支持在获取MulticastLock时删除这些filter。 (获取locking后请检查日志输出,您将看到我的意思)。 不幸的是发生了什么事情是硬件供应商支持碎片组播支持…. :(“

所以…看起来这不仅仅是一个编码问题,而是一个设备问题。 D'哦。 :(如果我有机会testing另一个设备…

我一直在做一些研究,我相信这是Android的一般问题,并且固定在Android 2.3.7中或附近。

这有点轶事,但这是我testing的:

  • HTC欲望,2.2,股票:失败
  • HTC Desire,2.3.7,CyanogenMod:成功
  • 摩托罗拉里程碑,2.1更新1:失败
  • HTC Desire S,2.3.3:失败
  • macros碁Iconia A501,3.2.1:成功
  • 三星的东西,2.3.3:失败
  • HTC Legend,2.2我认为:失败

当我说'失败'时,实际上他们都能够发送多播消息给“成功”的设备,但是除了他们自己的消息外,从来没有收到任何东西 – 正如jldupont所描述的那样。

请注意,多点传送即时通讯应用程序Kouchat仅适用于2.3.7版本,尽pipe它可以在2.1版本中进行编译,这进一步certificate了这一理论。

我想另一个原因是你的AP不支持。

其他:计算机发送/从Android接收

你的电脑只能使用WIFI,最好不要使用其他networking