首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android/多线程上实现JmDNS

在Android/多线程上实现JmDNS
EN

Stack Overflow用户
提问于 2011-03-25 21:55:42
回答 1查看 5.2K关注 0票数 1

我正在尝试让JmDNS在我的安卓程序中工作。我能够让它发现我想要的设备,但我不完全理解如何将信息从JmDNS获取到启动JmDNS任务的对象。这是我的代码。

代码语言:javascript
复制
 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();
    }

我遇到的问题是,我有一个服务管理器对象,其中有一个浏览器对象的实例,其中包含浏览方法。我无法让服务管理器对象访问address变量。因为JmDNS在创建运行其任务时会产生自己的线程,所以我尝试使用一个处理程序和runnable来发送包含变量的消息,但我似乎做不到这一点。有人能帮上忙吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-25 22:03:15

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

请参阅我们的开源应用程序中的此示例

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5433400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档