Я пытаюсь заставить JmDNS работать в моей программе для Android.Я могу заставить его обнаружить нужные мне устройства, но не до конца понимаю, как получить информацию из JmDNS к объекту, который запустил задачу JmDNS.Вот мой код
protected void browse() {
try {
jmdns = (JmDNSImpl) JmDNS.create();
jmdns.addServiceListener(type, listener = new ServiceListener() {
public void serviceResolved(ServiceEvent ev) {
}
public void serviceRemoved(ServiceEvent ev) {
}
public void serviceAdded(ServiceEvent event) {
DNSEntry addressEntry = jmdns.getCache().getDNSEntry(name, DNSRecordType.TYPE_A, DNSRecordClass.CLASS_ANY);
if (addressEntry instanceof DNSRecord) {
ServiceInfo cachedAddressInfo = ((DNSRecord) addressEntry).getServiceInfo(true);
if (cachedAddressInfo != null) {
for (Inet4Address address : cachedAddressInfo.getInet4Addresses()) {
//I need to get the address that is here back out of this listener to the main thread
}
}
}
}
});
} catch (IOException e) {
e.printStackTrace();
}
Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть объект менеджера сервисов, в котором есть экземпляр объекта браузера, в котором есть метод browse.Я не могу получить доступ к объекту менеджера служб к переменной адреса.Поскольку JmDNS порождает свой собственный поток, когда он создается для выполнения своих задач, я пытался использовать обработчик и запуск для отправки сообщений с переменной в нем, но я не могу понять, что это правильно.Кто-нибудь может помочь?