アプリがアクティブな間にzeroconfを介してAndroidアプリにサービスを登録させ、アプリの終了後に登録を解除しようとしています。私の onResume メソッドには、次のコードがあります。
// register ourselves with zero conf
try {
JmDNS jmdns = JmDNS.create();
serviceInfo = ServiceInfo.create("_http._tcp.local.", "My App Service", SERVER_PORT, 0, 0, false, "path=/crazycatapp");
jmdns.registerService(serviceInfo);
} catch (Throwable t) {
Debug.e("Error registering service with zeroconf", t);
}
その後、私の onPause メソッドで:
if(serviceInfo != null) {
// unregister ourselves with zero conf
JmDNS jmdns = JmDNS.create();
jmdns.unregisterService(serviceInfo);
}
} catch (Throwable t) {
Debug.e("Error unregistering service with zeroconf", t);
}
マルチキャストの有効化などを行うコードを削除しました。ポイントは、サービスを問題なく登録でき、その後、別のデバイスで zeroconf ブラウザーを使用して表示できることです。ただし、一度登録すると、サービスを登録したデバイスで実際にwifiを無効にしない限り、サービスが消えることはありません。unregisterService の呼び出しは、実際にはサービス登録に影響を与えないようです。unregisterAllServices も効果がないようです。誰にもアイデアはありますか?