1

Android デバイス (Captivate、Android 2.2) で開始された zeroconf サービスの解決に問題があります。Ubuntu で avahi-discover を使用すると、登録されたサービスは問題なく表示されますが、解決しようとすると「エラー: org.freedesktop.Avahi.TimeoutError: タイムアウトに達しました」というエラーが表示されます。これは、ポートと共に IP またはリンクローカル名を受け取るためにサービスを解決する必要がある私のアプリ (救援活動/活動のためのアドホック メッセージ共有) に問題を引き起こしています。

注: 私の Android デバイスは、他のデバイス (Ubuntu マシンなど) に登録されている zeroconf サービスを正常に解決できるため、これは前に尋ねた問題とは異なります。

Android 側では、コードはこれ以上単純ではありません。

serviceInfo = ServiceInfo.create("_fluidnexus._tcp.local.", "Fluid Nexus", 17894, "Fluid Nexus Zeroconf server for android");
jmdns.registerService(serviceInfo);

このコードは、メインのアクティビティによって開始される Android サービスによって開始されるスレッドの一部です。すべての jmdns 呼び出しは、同じスレッド内から行われます。別のスレッドがそのポートで接続を受け入れ、jmdns コードを呼び出しません。

他の zeroconf サービスを問題なく検出/解決できるため、これはロックの問題ではないように見えますが、正直なところ、Android で独自のサービスを登録するときのロックのライフサイクルの使用については完全に明確ではありません。

コードをコンテキストで見たい場合は、githubで入手できます。

どんな助けでも大歓迎です!ありがとう。

4

0 に答える 0