gpt4 book ai didi

android - 在 Android/多线程上实现 JmDNS

转载 作者:行者123 更新时间:2023-11-30 04:44:02 26 4
gpt4 key购买 nike

我正在尝试让 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();
}

我遇到的问题是我有一个服务管理器对象,它有一个浏览器对象的实例,其中有浏览器方法。我无法让服务管理器对象访问地址变量。因为 JmDNS 在创建它以运行其任务时会产生自己的线程,所以我尝试使用处理程序和可运行的来发送带有变量的消息,但我似乎无法正确处理。谁能帮忙?

最佳答案

我认为您只想使用传递到服务添加方法中的 ServiceEvent 事件对象。它拥有您需要的所有信息。

从我们的开源应用程序中查看这个示例

http://code.google.com/p/tunesremote-plus/source/browse/trunk/src/org/tunesremote/LibraryActivity.java

关于android - 在 Android/多线程上实现 JmDNS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5433400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com