Кто-нибудь получил Multicast для работы на Android 2.2, в частности, JmDNS для обнаружения службы Bonjour. Существует много вопросов и ответов с таймфрейма Android 1.5- > 2.0, в том числе на stackOverflow, которые указывают на различные уровни успеха, а также ошибку в трекере ошибок, которые указывают, что он был исправлен и закрыт для 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"/>
Я получаю блокировку многоадресной рассылки:
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);
...
Слушатель никогда не видит никаких сервисов. Я проверил использование Wireshark, что пакеты запросов отправлены, и что сервер отвечает, но пакет ответа никогда не просматривается кодом прослушивателя сокета в библиотеке jmDNS.
Итак... я что-то упустил? Это еще ошибка? ЛЮБОЙ получил что-то даже отдаленно, как это, чтобы работать???