2013-03-08 2 views
7

Я пытаюсь реализовать простое приложение для Android, которое транслирует сервис Bonjour на WifiP2p на одном устройстве и обнаруживает и подключается к нему вторым устройством. Я в значительной степени следовал руководству here.Android Wifi Direct Service Discovery

У меня есть действующий Channel объект, DnsSdServiceResponseListener, и DnsSdTxtRecordListener, и установить их с помощью этого вызова:

mManager.setDnsSdResponseListeners(channel, servListener, txtListener); 

Как прямо сейчас оба слушатели просто выплюнуть некоторую информацию отладки, чтобы держать это реальный простой.

Проблема заключается в том, что мой DnsSdServiceResponseListener никогда не называют, но DnsSdTxtRecordListenerдействительно дозвонился и все аргументы, переданный в взгляде законного. Как можно назвать, а не другого?

Я тестирую с использованием двух реальных устройств, работающих под управлением Android 4.2.2.

Спасибо!

ответ

10

И наконец выдумал .. вид. При получении экземпляра запроса на обслуживание, я указав имя экземпляра службы и типа в соответствии со значениями, используемые при создании службы ...

Регистрация сервиса: mServiceInfo = WifiP2pDnsSdServiceInfo.newInstance(Consts.SERVICE_INSTANCE, Consts.SERVICE_REG_TYPE, record);

Создание запроса на обслуживание: mServiceRequest = WifiP2pDnsSdServiceRequest.newInstance(Consts.SERVICE_INSTANCE, Consts.SERVICE_REG_TYPE);

я удалил аргументы метода newInstance при получении запроса на обслуживание ... mServiceRequest = WifiP2pDnsSdServiceRequest.newInstance();

и оба слушатели называют в настоящее время , Похоже, мой первый метод отфильтровывал другие службы, которые транслировались поблизости, поэтому я изначально выбрал эту перегрузку.

+0

спасибо, что вы человек. Ты спасатель жизни! –

Смежные вопросы