Merge changes from topic "nsd_serviceinfo_network"
* changes: Support discover/resolve on specific networks NSD: Specify on what interface to getAddrInfo
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
|
||||
package android.net.nsd;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.SdkConstant;
|
||||
import android.annotation.SdkConstant.SdkConstantType;
|
||||
import android.annotation.SystemService;
|
||||
@@ -23,6 +25,7 @@ import android.app.compat.CompatChanges;
|
||||
import android.compat.annotation.ChangeId;
|
||||
import android.compat.annotation.EnabledSince;
|
||||
import android.content.Context;
|
||||
import android.net.Network;
|
||||
import android.os.Handler;
|
||||
import android.os.HandlerThread;
|
||||
import android.os.Looper;
|
||||
@@ -633,6 +636,14 @@ public final class NsdManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Same as {@link #discoverServices(String, int, Network, DiscoveryListener)} with a null
|
||||
* {@link Network}.
|
||||
*/
|
||||
public void discoverServices(String serviceType, int protocolType, DiscoveryListener listener) {
|
||||
discoverServices(serviceType, protocolType, null, listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initiate service discovery to browse for instances of a service type. Service discovery
|
||||
* consumes network bandwidth and will continue until the application calls
|
||||
@@ -657,11 +668,13 @@ public final class NsdManager {
|
||||
* @param serviceType The service type being discovered. Examples include "_http._tcp" for
|
||||
* http services or "_ipp._tcp" for printers
|
||||
* @param protocolType The service discovery protocol
|
||||
* @param network Network to discover services on, or null to discover on all available networks
|
||||
* @param listener The listener notifies of a successful discovery and is used
|
||||
* to stop discovery on this serviceType through a call on {@link #stopServiceDiscovery}.
|
||||
* Cannot be null. Cannot be in use for an active service discovery.
|
||||
*/
|
||||
public void discoverServices(String serviceType, int protocolType, DiscoveryListener listener) {
|
||||
public void discoverServices(@NonNull String serviceType, int protocolType,
|
||||
@Nullable Network network, @NonNull DiscoveryListener listener) {
|
||||
if (TextUtils.isEmpty(serviceType)) {
|
||||
throw new IllegalArgumentException("Service type cannot be empty");
|
||||
}
|
||||
@@ -669,6 +682,7 @@ public final class NsdManager {
|
||||
|
||||
NsdServiceInfo s = new NsdServiceInfo();
|
||||
s.setServiceType(serviceType);
|
||||
s.setNetwork(network);
|
||||
|
||||
int key = putListener(listener, s);
|
||||
try {
|
||||
|
||||
@@ -17,7 +17,9 @@
|
||||
package android.net.nsd;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.compat.annotation.UnsupportedAppUsage;
|
||||
import android.net.Network;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.text.TextUtils;
|
||||
@@ -49,6 +51,9 @@ public final class NsdServiceInfo implements Parcelable {
|
||||
|
||||
private int mPort;
|
||||
|
||||
@Nullable
|
||||
private Network mNetwork;
|
||||
|
||||
public NsdServiceInfo() {
|
||||
}
|
||||
|
||||
@@ -307,18 +312,37 @@ public final class NsdServiceInfo implements Parcelable {
|
||||
return txtRecord;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
/**
|
||||
* Get the network where the service can be found.
|
||||
*
|
||||
* This is never null if this {@link NsdServiceInfo} was obtained from
|
||||
* {@link NsdManager#discoverServices} or {@link NsdManager#resolveService}.
|
||||
*/
|
||||
@Nullable
|
||||
public Network getNetwork() {
|
||||
return mNetwork;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the network where the service can be found.
|
||||
* @param network The network, or null to search for, or to announce, the service on all
|
||||
* connected networks.
|
||||
*/
|
||||
public void setNetwork(@Nullable Network network) {
|
||||
mNetwork = network;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("name: ").append(mServiceName)
|
||||
.append(", type: ").append(mServiceType)
|
||||
.append(", host: ").append(mHost)
|
||||
.append(", port: ").append(mPort);
|
||||
.append(", port: ").append(mPort)
|
||||
.append(", network: ").append(mNetwork);
|
||||
|
||||
byte[] txtRecord = getTxtRecord();
|
||||
if (txtRecord != null) {
|
||||
sb.append(", txtRecord: ").append(new String(txtRecord, StandardCharsets.UTF_8));
|
||||
}
|
||||
sb.append(", txtRecord: ").append(new String(txtRecord, StandardCharsets.UTF_8));
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@@ -352,6 +376,8 @@ public final class NsdServiceInfo implements Parcelable {
|
||||
}
|
||||
dest.writeString(key);
|
||||
}
|
||||
|
||||
dest.writeParcelable(mNetwork, 0);
|
||||
}
|
||||
|
||||
/** Implement the Parcelable interface */
|
||||
@@ -381,6 +407,7 @@ public final class NsdServiceInfo implements Parcelable {
|
||||
}
|
||||
info.mTxtRecord.put(in.readString(), valueArray);
|
||||
}
|
||||
info.mNetwork = in.readParcelable(null, Network.class);
|
||||
return info;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user