有没有人在Android 2.2上使用Multicast,特别是用于Bonjour服务检测的JmDNS.Android 1.5-> 2.0时间帧有很多问题和答案,包括stackOverflow,表明不同程度的成功,以及错误跟踪器中的错误,表明它已修复并关闭,为2.2(http://代码.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"/>
Run Code Online (Sandbox Code Playgroud)
我获得了多播锁:
WifiManager wifi = (WifiManager)getSystemService( Context.WIFI_SERVICE );
if(wifi != null)
{
MulticastLock mcLock = wifi.createMulticastLock("mylock");
mcLock.acquire();
...
Run Code Online (Sandbox Code Playgroud)
然后尝试启动jmDNS以查找服务器:
mdns = JmDNS.create(addr, HOSTNAME);
jmdns.addServiceListener(TOUCH_ABLE_TYPE, listener);
jmdns.addServiceListener(DACP_TYPE, listener);
...
Run Code Online (Sandbox Code Playgroud)
听众永远不会看到任何服务.我已经使用Wireshark验证了请求数据包是否已发送,服务器是否响应,但jmDNS库中的套接字侦听器代码从未看到响应数据包.
所以...我错过了什么?这仍然是一个错误吗?有没有人得到任何东西甚至远程像这样工作???