1

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は、タスクを実行するために作成されたときに独自のスレッドを生成するため、ハンドラーと実行可能ファイルを使用して、変数を含むメッセージを送信しようとしましたが、正しく実行できないようです。誰か助けてもらえますか?

4

1 に答える 1

1

サービス追加メソッドに渡されたServiceEventイベントオブジェクトを使用したいと思います。それはあなたが必要とするすべての情報を持っています。

オープンソースアプリケーションからこの例を参照してください

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

于 2011-03-25T14:03:15.000 に答える