NsdManager.DiscoveryListener.onServiceFound() にパラメーターとして渡された NsdServiceInfo の mHost を取得しようとしていますが、null です。デバイス 1 がサーバーでデバイス 2 がクライアントである 2 つの Android デバイスがあります。
これは、デバイス1にサーバーを登録する方法です
public void registerService(int port, InetAddress myIp) {
NsdServiceInfo serviceInfo = new NsdServiceInfo();
serviceInfo.setPort(port);
serviceInfo.setServiceName(this.serviceName);
serviceInfo.setServiceType(SERVICE_TYPE);
serviceInfo.setHost(myIp);
this.nsdManager.registerService(
serviceInfo, NsdManager.PROTOCOL_DNS_SD, registrationListener);
}
そして、これが DiscoveryListener を初期化する方法です
public void initializeDiscoveryListener() {
discoveryListener = new NsdManager.DiscoveryListener() {
@Override
public void onServiceFound(NsdServiceInfo service) {
Log.d(TAG, "Service discovery success" + service);
if (!service.getServiceType().equals(SERVICE_TYPE)) {
Log.d(TAG, "Unknown Service Type: " + service.getServiceType());
} else if (service.getHost() == myIp) {
Log.d(TAG, "Same machine: " + service.getHost());
} else if (service.getServiceName().contains(serviceName)){
nsdManager.resolveService(service, resolveListener);
}
}
...
}
}
しかし、service.getHost()は null を返します。
なにか提案を?