blob: 9f26bcff7699be8f1886f9baaee22bc1db2d79e1 [file] [log] [blame]
paulhu667e8fb2021-12-14 01:30:22 +00001// Signature format: 2.0
Junyu Lai2ef865e2022-01-17 11:52:57 +00002package android.app.usage {
3
4 public class NetworkStatsManager {
junyulaib59e5422022-03-01 17:08:01 +08005 method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STATS_PROVIDER, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void registerNetworkStatsProvider(@NonNull String, @NonNull android.net.netstats.provider.NetworkStatsProvider);
6 method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STATS_PROVIDER, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void unregisterNetworkStatsProvider(@NonNull android.net.netstats.provider.NetworkStatsProvider);
Junyu Lai2ef865e2022-01-17 11:52:57 +00007 }
8
9}
10
Remi NGUYEN VAN51935fc2022-01-07 13:18:54 +090011package android.nearby {
12
Wei Wangb15b5a82022-02-01 17:08:08 -080013 public interface BroadcastCallback {
Wei Wang88c48442022-03-05 12:14:12 -080014 method public void onStatusChanged(int);
Wei Wangb15b5a82022-02-01 17:08:08 -080015 field public static final int STATUS_FAILURE = 1; // 0x1
16 field public static final int STATUS_FAILURE_ALREADY_REGISTERED = 2; // 0x2
17 field public static final int STATUS_FAILURE_MISSING_PERMISSIONS = 4; // 0x4
18 field public static final int STATUS_FAILURE_SIZE_EXCEED_LIMIT = 3; // 0x3
19 field public static final int STATUS_OK = 0; // 0x0
20 }
21
Wei Wang24e2cb22022-03-12 12:15:34 -080022 public abstract class BroadcastRequest {
Wei Wangb15b5a82022-02-01 17:08:08 -080023 method @NonNull public java.util.List<java.lang.Integer> getMediums();
24 method @IntRange(from=0xffffff81, to=126) public int getTxPower();
25 method public int getType();
26 method public int getVersion();
Wei Wangb15b5a82022-02-01 17:08:08 -080027 field public static final int BROADCAST_TYPE_NEARBY_PRESENCE = 3; // 0x3
Wei Wang88c48442022-03-05 12:14:12 -080028 field public static final int BROADCAST_TYPE_UNKNOWN = -1; // 0xffffffff
Wei Wangf5bb26f2022-03-25 10:30:06 -070029 field public static final int MEDIUM_BLE = 1; // 0x1
Wei Wang88c48442022-03-05 12:14:12 -080030 field public static final int PRESENCE_VERSION_UNKNOWN = -1; // 0xffffffff
Wei Wangb15b5a82022-02-01 17:08:08 -080031 field public static final int PRESENCE_VERSION_V0 = 0; // 0x0
32 field public static final int PRESENCE_VERSION_V1 = 1; // 0x1
Wei Wang88c48442022-03-05 12:14:12 -080033 field public static final int UNKNOWN_TX_POWER = -127; // 0xffffff81
Wei Wangb15b5a82022-02-01 17:08:08 -080034 }
35
36 public final class CredentialElement implements android.os.Parcelable {
37 ctor public CredentialElement(@NonNull String, @NonNull byte[]);
38 method public int describeContents();
39 method @NonNull public String getKey();
40 method @NonNull public byte[] getValue();
41 method public void writeToParcel(@NonNull android.os.Parcel, int);
42 field @NonNull public static final android.os.Parcelable.Creator<android.nearby.CredentialElement> CREATOR;
43 }
44
45 public final class DataElement implements android.os.Parcelable {
46 ctor public DataElement(int, @NonNull byte[]);
47 method public int describeContents();
48 method public int getKey();
49 method @NonNull public byte[] getValue();
50 method public void writeToParcel(@NonNull android.os.Parcel, int);
51 field @NonNull public static final android.os.Parcelable.Creator<android.nearby.DataElement> CREATOR;
52 }
53
Remi NGUYEN VAN51935fc2022-01-07 13:18:54 +090054 public abstract class NearbyDevice {
Wei Wangb15b5a82022-02-01 17:08:08 -080055 method @NonNull public java.util.List<java.lang.Integer> getMediums();
56 method @Nullable public String getName();
Remi NGUYEN VAN51935fc2022-01-07 13:18:54 +090057 method @IntRange(from=0xffffff81, to=126) public int getRssi();
58 method public static boolean isValidMedium(int);
59 }
60
Remi NGUYEN VAN51935fc2022-01-07 13:18:54 +090061 public class NearbyManager {
Yahav Nussbaumc712a572024-01-29 12:23:28 +000062 method @FlaggedApi("com.android.nearby.flags.powered_off_finding") @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getPoweredOffFindingMode();
Xinyi Zhoue73c76f2023-01-27 16:47:00 -080063 method public void queryOffloadCapability(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.nearby.OffloadCapability>);
Yahav Nussbaumc712a572024-01-29 12:23:28 +000064 method @FlaggedApi("com.android.nearby.flags.powered_off_finding") @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public void setPoweredOffFindingEphemeralIds(@NonNull java.util.List<byte[]>);
65 method @FlaggedApi("com.android.nearby.flags.powered_off_finding") @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public void setPoweredOffFindingMode(int);
Xinyi Zhoub4efda82022-03-15 18:22:35 -070066 method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADVERTISE, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void startBroadcast(@NonNull android.nearby.BroadcastRequest, @NonNull java.util.concurrent.Executor, @NonNull android.nearby.BroadcastCallback);
67 method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int startScan(@NonNull android.nearby.ScanRequest, @NonNull java.util.concurrent.Executor, @NonNull android.nearby.ScanCallback);
68 method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_ADVERTISE, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void stopBroadcast(@NonNull android.nearby.BroadcastCallback);
69 method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void stopScan(@NonNull android.nearby.ScanCallback);
Yahav Nussbaumc712a572024-01-29 12:23:28 +000070 field @FlaggedApi("com.android.nearby.flags.powered_off_finding") public static final int POWERED_OFF_FINDING_MODE_DISABLED = 1; // 0x1
71 field @FlaggedApi("com.android.nearby.flags.powered_off_finding") public static final int POWERED_OFF_FINDING_MODE_ENABLED = 2; // 0x2
72 field @FlaggedApi("com.android.nearby.flags.powered_off_finding") public static final int POWERED_OFF_FINDING_MODE_UNSUPPORTED = 0; // 0x0
Remi NGUYEN VAN51935fc2022-01-07 13:18:54 +090073 }
74
Xinyi Zhoue73c76f2023-01-27 16:47:00 -080075 public final class OffloadCapability implements android.os.Parcelable {
76 method public int describeContents();
77 method public long getVersion();
78 method public boolean isFastPairSupported();
79 method public boolean isNearbyShareSupported();
80 method public void writeToParcel(@NonNull android.os.Parcel, int);
81 field @NonNull public static final android.os.Parcelable.Creator<android.nearby.OffloadCapability> CREATOR;
82 }
83
84 public static final class OffloadCapability.Builder {
85 ctor public OffloadCapability.Builder();
86 method @NonNull public android.nearby.OffloadCapability build();
87 method @NonNull public android.nearby.OffloadCapability.Builder setFastPairSupported(boolean);
88 method @NonNull public android.nearby.OffloadCapability.Builder setNearbyShareSupported(boolean);
89 method @NonNull public android.nearby.OffloadCapability.Builder setVersion(long);
90 }
91
Wei Wangb15b5a82022-02-01 17:08:08 -080092 public final class PresenceBroadcastRequest extends android.nearby.BroadcastRequest implements android.os.Parcelable {
Wei Wang24e2cb22022-03-12 12:15:34 -080093 method public int describeContents();
Wei Wangb15b5a82022-02-01 17:08:08 -080094 method @NonNull public java.util.List<java.lang.Integer> getActions();
95 method @NonNull public android.nearby.PrivateCredential getCredential();
96 method @NonNull public java.util.List<android.nearby.DataElement> getExtendedProperties();
97 method @NonNull public byte[] getSalt();
Wei Wang24e2cb22022-03-12 12:15:34 -080098 method public void writeToParcel(@NonNull android.os.Parcel, int);
Wei Wangb15b5a82022-02-01 17:08:08 -080099 field @NonNull public static final android.os.Parcelable.Creator<android.nearby.PresenceBroadcastRequest> CREATOR;
100 }
101
102 public static final class PresenceBroadcastRequest.Builder {
Wei Wang88c48442022-03-05 12:14:12 -0800103 ctor public PresenceBroadcastRequest.Builder(@NonNull java.util.List<java.lang.Integer>, @NonNull byte[], @NonNull android.nearby.PrivateCredential);
Wei Wangb15b5a82022-02-01 17:08:08 -0800104 method @NonNull public android.nearby.PresenceBroadcastRequest.Builder addAction(@IntRange(from=1, to=255) int);
105 method @NonNull public android.nearby.PresenceBroadcastRequest.Builder addExtendedProperty(@NonNull android.nearby.DataElement);
106 method @NonNull public android.nearby.PresenceBroadcastRequest build();
Wei Wangb15b5a82022-02-01 17:08:08 -0800107 method @NonNull public android.nearby.PresenceBroadcastRequest.Builder setTxPower(@IntRange(from=0xffffff81, to=126) int);
108 method @NonNull public android.nearby.PresenceBroadcastRequest.Builder setVersion(int);
109 }
110
Wei Wang24e2cb22022-03-12 12:15:34 -0800111 public abstract class PresenceCredential {
Wei Wangb15b5a82022-02-01 17:08:08 -0800112 method @NonNull public byte[] getAuthenticityKey();
113 method @NonNull public java.util.List<android.nearby.CredentialElement> getCredentialElements();
114 method public int getIdentityType();
115 method @NonNull public byte[] getSecretId();
116 method public int getType();
Wei Wangb15b5a82022-02-01 17:08:08 -0800117 field public static final int CREDENTIAL_TYPE_PRIVATE = 0; // 0x0
118 field public static final int CREDENTIAL_TYPE_PUBLIC = 1; // 0x1
119 field public static final int IDENTITY_TYPE_PRIVATE = 1; // 0x1
120 field public static final int IDENTITY_TYPE_PROVISIONED = 2; // 0x2
Wei Wangb15b5a82022-02-01 17:08:08 -0800121 field public static final int IDENTITY_TYPE_TRUSTED = 3; // 0x3
122 field public static final int IDENTITY_TYPE_UNKNOWN = 0; // 0x0
123 }
124
125 public final class PresenceDevice extends android.nearby.NearbyDevice implements android.os.Parcelable {
126 method public int describeContents();
127 method @NonNull public String getDeviceId();
128 method @Nullable public String getDeviceImageUrl();
129 method public int getDeviceType();
130 method public long getDiscoveryTimestampMillis();
131 method @NonNull public byte[] getEncryptedIdentity();
132 method @NonNull public java.util.List<android.nearby.DataElement> getExtendedProperties();
133 method @NonNull public byte[] getSalt();
134 method @NonNull public byte[] getSecretId();
135 method public void writeToParcel(@NonNull android.os.Parcel, int);
136 field @NonNull public static final android.os.Parcelable.Creator<android.nearby.PresenceDevice> CREATOR;
137 }
138
139 public static final class PresenceDevice.Builder {
Wei Wang88c48442022-03-05 12:14:12 -0800140 ctor public PresenceDevice.Builder(@NonNull String, @NonNull byte[], @NonNull byte[], @NonNull byte[]);
Wei Wangb15b5a82022-02-01 17:08:08 -0800141 method @NonNull public android.nearby.PresenceDevice.Builder addExtendedProperty(@NonNull android.nearby.DataElement);
142 method @NonNull public android.nearby.PresenceDevice.Builder addMedium(int);
143 method @NonNull public android.nearby.PresenceDevice build();
Wei Wangb15b5a82022-02-01 17:08:08 -0800144 method @NonNull public android.nearby.PresenceDevice.Builder setDeviceImageUrl(@Nullable String);
145 method @NonNull public android.nearby.PresenceDevice.Builder setDeviceType(int);
146 method @NonNull public android.nearby.PresenceDevice.Builder setDiscoveryTimestampMillis(long);
Wei Wangb15b5a82022-02-01 17:08:08 -0800147 method @NonNull public android.nearby.PresenceDevice.Builder setName(@Nullable String);
148 method @NonNull public android.nearby.PresenceDevice.Builder setRssi(int);
Wei Wangb15b5a82022-02-01 17:08:08 -0800149 }
150
151 public final class PresenceScanFilter extends android.nearby.ScanFilter implements android.os.Parcelable {
Wei Wang24e2cb22022-03-12 12:15:34 -0800152 method public int describeContents();
Wei Wangb15b5a82022-02-01 17:08:08 -0800153 method @NonNull public java.util.List<android.nearby.PublicCredential> getCredentials();
154 method @NonNull public java.util.List<android.nearby.DataElement> getExtendedProperties();
155 method @NonNull public java.util.List<java.lang.Integer> getPresenceActions();
Wei Wang24e2cb22022-03-12 12:15:34 -0800156 method public void writeToParcel(@NonNull android.os.Parcel, int);
Wei Wangb15b5a82022-02-01 17:08:08 -0800157 field @NonNull public static final android.os.Parcelable.Creator<android.nearby.PresenceScanFilter> CREATOR;
158 }
159
160 public static final class PresenceScanFilter.Builder {
161 ctor public PresenceScanFilter.Builder();
162 method @NonNull public android.nearby.PresenceScanFilter.Builder addCredential(@NonNull android.nearby.PublicCredential);
163 method @NonNull public android.nearby.PresenceScanFilter.Builder addExtendedProperty(@NonNull android.nearby.DataElement);
164 method @NonNull public android.nearby.PresenceScanFilter.Builder addPresenceAction(@IntRange(from=1, to=255) int);
165 method @NonNull public android.nearby.PresenceScanFilter build();
166 method @NonNull public android.nearby.PresenceScanFilter.Builder setMaxPathLoss(@IntRange(from=0, to=127) int);
167 }
168
169 public final class PrivateCredential extends android.nearby.PresenceCredential implements android.os.Parcelable {
Wei Wang24e2cb22022-03-12 12:15:34 -0800170 method public int describeContents();
Wei Wangb15b5a82022-02-01 17:08:08 -0800171 method @NonNull public String getDeviceName();
172 method @NonNull public byte[] getMetadataEncryptionKey();
Wei Wang24e2cb22022-03-12 12:15:34 -0800173 method public void writeToParcel(@NonNull android.os.Parcel, int);
Wei Wangb15b5a82022-02-01 17:08:08 -0800174 field @NonNull public static final android.os.Parcelable.Creator<android.nearby.PrivateCredential> CREATOR;
175 }
176
177 public static final class PrivateCredential.Builder {
Wei Wang24e2cb22022-03-12 12:15:34 -0800178 ctor public PrivateCredential.Builder(@NonNull byte[], @NonNull byte[], @NonNull byte[], @NonNull String);
Wei Wangb15b5a82022-02-01 17:08:08 -0800179 method @NonNull public android.nearby.PrivateCredential.Builder addCredentialElement(@NonNull android.nearby.CredentialElement);
180 method @NonNull public android.nearby.PrivateCredential build();
Wei Wangb15b5a82022-02-01 17:08:08 -0800181 method @NonNull public android.nearby.PrivateCredential.Builder setIdentityType(int);
Wei Wangb15b5a82022-02-01 17:08:08 -0800182 }
183
184 public final class PublicCredential extends android.nearby.PresenceCredential implements android.os.Parcelable {
Wei Wang24e2cb22022-03-12 12:15:34 -0800185 method public int describeContents();
Wei Wangb15b5a82022-02-01 17:08:08 -0800186 method @NonNull public byte[] getEncryptedMetadata();
187 method @NonNull public byte[] getEncryptedMetadataKeyTag();
188 method @NonNull public byte[] getPublicKey();
Wei Wang24e2cb22022-03-12 12:15:34 -0800189 method public void writeToParcel(@NonNull android.os.Parcel, int);
Wei Wangb15b5a82022-02-01 17:08:08 -0800190 field @NonNull public static final android.os.Parcelable.Creator<android.nearby.PublicCredential> CREATOR;
191 }
192
193 public static final class PublicCredential.Builder {
Wei Wang24e2cb22022-03-12 12:15:34 -0800194 ctor public PublicCredential.Builder(@NonNull byte[], @NonNull byte[], @NonNull byte[], @NonNull byte[], @NonNull byte[]);
Wei Wangb15b5a82022-02-01 17:08:08 -0800195 method @NonNull public android.nearby.PublicCredential.Builder addCredentialElement(@NonNull android.nearby.CredentialElement);
196 method @NonNull public android.nearby.PublicCredential build();
Wei Wangb15b5a82022-02-01 17:08:08 -0800197 method @NonNull public android.nearby.PublicCredential.Builder setIdentityType(int);
Wei Wangb15b5a82022-02-01 17:08:08 -0800198 }
199
Remi NGUYEN VAN51935fc2022-01-07 13:18:54 +0900200 public interface ScanCallback {
201 method public void onDiscovered(@NonNull android.nearby.NearbyDevice);
Xinyi Zhou9afce392023-01-10 18:28:56 -0800202 method public default void onError(int);
Remi NGUYEN VAN51935fc2022-01-07 13:18:54 +0900203 method public void onLost(@NonNull android.nearby.NearbyDevice);
204 method public void onUpdated(@NonNull android.nearby.NearbyDevice);
Xinyi Zhou75200b12023-02-10 23:13:52 -0800205 field public static final int ERROR_INVALID_ARGUMENT = 2; // 0x2
206 field public static final int ERROR_PERMISSION_DENIED = 3; // 0x3
207 field public static final int ERROR_RESOURCE_EXHAUSTED = 4; // 0x4
Xinyi Zhou9afce392023-01-10 18:28:56 -0800208 field public static final int ERROR_UNKNOWN = 0; // 0x0
209 field public static final int ERROR_UNSUPPORTED = 1; // 0x1
Remi NGUYEN VAN51935fc2022-01-07 13:18:54 +0900210 }
211
Wei Wang24e2cb22022-03-12 12:15:34 -0800212 public abstract class ScanFilter {
Wei Wangb15b5a82022-02-01 17:08:08 -0800213 method @IntRange(from=0, to=127) public int getMaxPathLoss();
214 method public int getType();
Wei Wangb15b5a82022-02-01 17:08:08 -0800215 }
216
Remi NGUYEN VAN51935fc2022-01-07 13:18:54 +0900217 public final class ScanRequest implements android.os.Parcelable {
218 method public int describeContents();
Wei Wangb15b5a82022-02-01 17:08:08 -0800219 method @NonNull public java.util.List<android.nearby.ScanFilter> getScanFilters();
Remi NGUYEN VAN51935fc2022-01-07 13:18:54 +0900220 method public int getScanMode();
221 method public int getScanType();
222 method @NonNull public android.os.WorkSource getWorkSource();
Xinyi Zhouff987502022-03-09 17:38:41 -0800223 method public boolean isBleEnabled();
Xinyi Zhou8fe45412023-01-20 16:21:14 -0800224 method public boolean isOffloadOnly();
Remi NGUYEN VAN51935fc2022-01-07 13:18:54 +0900225 method public static boolean isValidScanMode(int);
226 method public static boolean isValidScanType(int);
227 method @NonNull public static String scanModeToString(int);
228 method public void writeToParcel(@NonNull android.os.Parcel, int);
229 field @NonNull public static final android.os.Parcelable.Creator<android.nearby.ScanRequest> CREATOR;
230 field public static final int SCAN_MODE_BALANCED = 1; // 0x1
231 field public static final int SCAN_MODE_LOW_LATENCY = 2; // 0x2
232 field public static final int SCAN_MODE_LOW_POWER = 0; // 0x0
233 field public static final int SCAN_MODE_NO_POWER = -1; // 0xffffffff
Remi NGUYEN VAN51935fc2022-01-07 13:18:54 +0900234 field public static final int SCAN_TYPE_FAST_PAIR = 1; // 0x1
Chun Zhange4440de2022-03-24 22:40:56 -0700235 field public static final int SCAN_TYPE_NEARBY_PRESENCE = 2; // 0x2
Remi NGUYEN VAN51935fc2022-01-07 13:18:54 +0900236 }
237
238 public static final class ScanRequest.Builder {
239 ctor public ScanRequest.Builder();
Wei Wangb15b5a82022-02-01 17:08:08 -0800240 method @NonNull public android.nearby.ScanRequest.Builder addScanFilter(@NonNull android.nearby.ScanFilter);
Remi NGUYEN VAN51935fc2022-01-07 13:18:54 +0900241 method @NonNull public android.nearby.ScanRequest build();
Xinyi Zhouff987502022-03-09 17:38:41 -0800242 method @NonNull public android.nearby.ScanRequest.Builder setBleEnabled(boolean);
Xinyi Zhou8fe45412023-01-20 16:21:14 -0800243 method @NonNull public android.nearby.ScanRequest.Builder setOffloadOnly(boolean);
Remi NGUYEN VAN51935fc2022-01-07 13:18:54 +0900244 method @NonNull public android.nearby.ScanRequest.Builder setScanMode(int);
245 method @NonNull public android.nearby.ScanRequest.Builder setScanType(int);
246 method @NonNull @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public android.nearby.ScanRequest.Builder setWorkSource(@Nullable android.os.WorkSource);
247 }
248
249}
250
Aaron Huang68ca3732022-01-06 19:30:43 +0800251package android.net {
252
Xiao Maeaaf7d32022-01-23 16:14:51 +0000253 public class EthernetManager {
Patrick Rohrfa376a52022-03-16 20:16:09 +0100254 method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.MANAGE_ETHERNET_NETWORKS}) public void disableInterface(@NonNull String, @Nullable java.util.concurrent.Executor, @Nullable android.os.OutcomeReceiver<java.lang.String,android.net.EthernetNetworkManagementException>);
255 method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.MANAGE_ETHERNET_NETWORKS}) public void enableInterface(@NonNull String, @Nullable java.util.concurrent.Executor, @Nullable android.os.OutcomeReceiver<java.lang.String,android.net.EthernetNetworkManagementException>);
Xiao Maeaaf7d32022-01-23 16:14:51 +0000256 method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public android.net.EthernetManager.TetheredInterfaceRequest requestTetheredInterface(@NonNull java.util.concurrent.Executor, @NonNull android.net.EthernetManager.TetheredInterfaceCallback);
Patrick Rohrc551ebb2022-03-16 20:15:18 +0100257 method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.MANAGE_ETHERNET_NETWORKS}) public void updateConfiguration(@NonNull String, @NonNull android.net.EthernetNetworkUpdateRequest, @Nullable java.util.concurrent.Executor, @Nullable android.os.OutcomeReceiver<java.lang.String,android.net.EthernetNetworkManagementException>);
Xiao Maeaaf7d32022-01-23 16:14:51 +0000258 }
259
260 public static interface EthernetManager.TetheredInterfaceCallback {
261 method public void onAvailable(@NonNull String);
262 method public void onUnavailable();
263 }
264
265 public static class EthernetManager.TetheredInterfaceRequest {
266 method public void release();
267 }
268
269 public final class EthernetNetworkManagementException extends java.lang.RuntimeException implements android.os.Parcelable {
270 ctor public EthernetNetworkManagementException(@NonNull String);
271 method public int describeContents();
272 method public void writeToParcel(@NonNull android.os.Parcel, int);
273 field @NonNull public static final android.os.Parcelable.Creator<android.net.EthernetNetworkManagementException> CREATOR;
274 }
275
276 public final class EthernetNetworkUpdateRequest implements android.os.Parcelable {
277 method public int describeContents();
Patrick Rohr8a910f42022-03-16 20:07:23 +0100278 method @Nullable public android.net.IpConfiguration getIpConfiguration();
Xiao Maeaaf7d32022-01-23 16:14:51 +0000279 method @Nullable public android.net.NetworkCapabilities getNetworkCapabilities();
280 method public void writeToParcel(@NonNull android.os.Parcel, int);
281 field @NonNull public static final android.os.Parcelable.Creator<android.net.EthernetNetworkUpdateRequest> CREATOR;
282 }
283
284 public static final class EthernetNetworkUpdateRequest.Builder {
285 ctor public EthernetNetworkUpdateRequest.Builder();
286 ctor public EthernetNetworkUpdateRequest.Builder(@NonNull android.net.EthernetNetworkUpdateRequest);
287 method @NonNull public android.net.EthernetNetworkUpdateRequest build();
Patrick Rohr8a910f42022-03-16 20:07:23 +0100288 method @NonNull public android.net.EthernetNetworkUpdateRequest.Builder setIpConfiguration(@Nullable android.net.IpConfiguration);
Xiao Maeaaf7d32022-01-23 16:14:51 +0000289 method @NonNull public android.net.EthernetNetworkUpdateRequest.Builder setNetworkCapabilities(@Nullable android.net.NetworkCapabilities);
290 }
291
Yan Yanf8063e32022-02-08 19:26:29 -0800292 public class IpSecManager {
Aaron Huang68ca3732022-01-06 19:30:43 +0800293 method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void applyTunnelModeTransform(@NonNull android.net.IpSecManager.IpSecTunnelInterface, int, @NonNull android.net.IpSecTransform) throws java.io.IOException;
294 method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public android.net.IpSecManager.IpSecTunnelInterface createIpSecTunnelInterface(@NonNull java.net.InetAddress, @NonNull java.net.InetAddress, @NonNull android.net.Network) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException;
Yan Yan81c21602022-10-20 22:23:15 +0000295 method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void startTunnelModeTransformMigration(@NonNull android.net.IpSecTransform, @NonNull java.net.InetAddress, @NonNull java.net.InetAddress);
Aaron Huang68ca3732022-01-06 19:30:43 +0800296 }
297
298 public static final class IpSecManager.IpSecTunnelInterface implements java.lang.AutoCloseable {
299 method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void addAddress(@NonNull java.net.InetAddress, int) throws java.io.IOException;
300 method public void close();
301 method @NonNull public String getInterfaceName();
302 method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void removeAddress(@NonNull java.net.InetAddress, int) throws java.io.IOException;
303 method @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public void setUnderlyingNetwork(@NonNull android.net.Network) throws java.io.IOException;
304 }
305
306 public static class IpSecTransform.Builder {
307 method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_IPSEC_TUNNELS) public android.net.IpSecTransform buildTunnelModeTransform(@NonNull java.net.InetAddress, @NonNull android.net.IpSecManager.SecurityParameterIndex) throws java.io.IOException, android.net.IpSecManager.ResourceUnavailableException, android.net.IpSecManager.SpiUnavailableException;
308 }
309
Junyu Lai2ef865e2022-01-17 11:52:57 +0000310 public final class NetworkStats implements java.lang.Iterable<android.net.NetworkStats.Entry> android.os.Parcelable {
311 ctor public NetworkStats(long, int);
312 method @NonNull public android.net.NetworkStats add(@NonNull android.net.NetworkStats);
Junyu Laid0e04942024-07-10 18:10:05 +0800313 method @FlaggedApi("com.android.net.flags.netstats_add_entries") @NonNull public android.net.NetworkStats addEntries(@NonNull java.util.List<android.net.NetworkStats.Entry>);
Junyu Lai2ef865e2022-01-17 11:52:57 +0000314 method @NonNull public android.net.NetworkStats addEntry(@NonNull android.net.NetworkStats.Entry);
Paul Duffinb3c3f2e2023-10-12 18:48:37 +0100315 method public android.net.NetworkStats clone();
Junyu Lai2ef865e2022-01-17 11:52:57 +0000316 method public int describeContents();
junyulai68016902022-03-28 15:39:12 +0800317 method @NonNull public java.util.Iterator<android.net.NetworkStats.Entry> iterator();
Junyu Lai2ef865e2022-01-17 11:52:57 +0000318 method @NonNull public android.net.NetworkStats subtract(@NonNull android.net.NetworkStats);
319 method public void writeToParcel(@NonNull android.os.Parcel, int);
320 field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkStats> CREATOR;
321 field public static final int DEFAULT_NETWORK_ALL = -1; // 0xffffffff
322 field public static final int DEFAULT_NETWORK_NO = 0; // 0x0
323 field public static final int DEFAULT_NETWORK_YES = 1; // 0x1
324 field public static final String IFACE_VT = "vt_data0";
325 field public static final int METERED_ALL = -1; // 0xffffffff
326 field public static final int METERED_NO = 0; // 0x0
327 field public static final int METERED_YES = 1; // 0x1
328 field public static final int ROAMING_ALL = -1; // 0xffffffff
329 field public static final int ROAMING_NO = 0; // 0x0
330 field public static final int ROAMING_YES = 1; // 0x1
331 field public static final int SET_ALL = -1; // 0xffffffff
332 field public static final int SET_DEFAULT = 0; // 0x0
333 field public static final int SET_FOREGROUND = 1; // 0x1
334 field public static final int TAG_NONE = 0; // 0x0
335 field public static final int UID_ALL = -1; // 0xffffffff
336 field public static final int UID_TETHERING = -5; // 0xfffffffb
337 }
338
339 public static class NetworkStats.Entry {
340 ctor public NetworkStats.Entry(@Nullable String, int, int, int, int, int, int, long, long, long, long, long);
junyulai68016902022-03-28 15:39:12 +0800341 method public int getDefaultNetwork();
342 method public int getMetered();
343 method public long getOperations();
344 method public int getRoaming();
345 method public long getRxBytes();
346 method public long getRxPackets();
347 method public int getSet();
348 method public int getTag();
349 method public long getTxBytes();
350 method public long getTxPackets();
351 method public int getUid();
Junyu Lai2ef865e2022-01-17 11:52:57 +0000352 }
353
354 public class TrafficStats {
355 method public static void setThreadStatsTagApp();
356 method public static void setThreadStatsTagBackup();
Junyu Lai2ef865e2022-01-17 11:52:57 +0000357 method public static void setThreadStatsTagRestore();
358 field public static final int TAG_NETWORK_STACK_IMPERSONATION_RANGE_END = -113; // 0xffffff8f
359 field public static final int TAG_NETWORK_STACK_IMPERSONATION_RANGE_START = -128; // 0xffffff80
360 field public static final int TAG_NETWORK_STACK_RANGE_END = -257; // 0xfffffeff
361 field public static final int TAG_NETWORK_STACK_RANGE_START = -768; // 0xfffffd00
362 field public static final int TAG_SYSTEM_IMPERSONATION_RANGE_END = -241; // 0xffffff0f
363 field public static final int TAG_SYSTEM_IMPERSONATION_RANGE_START = -256; // 0xffffff00
364 }
365
366}
367
368package android.net.netstats.provider {
369
370 public abstract class NetworkStatsProvider {
371 ctor public NetworkStatsProvider();
372 method public void notifyAlertReached();
373 method public void notifyLimitReached();
374 method public void notifyStatsUpdated(int, @NonNull android.net.NetworkStats, @NonNull android.net.NetworkStats);
375 method public void notifyWarningReached();
376 method public abstract void onRequestStatsUpdate(int);
377 method public abstract void onSetAlert(long);
378 method public abstract void onSetLimit(@NonNull String, long);
379 method public void onSetWarningAndLimit(@NonNull String, long, long);
380 field public static final int QUOTA_UNLIMITED = -1; // 0xffffffff
381 }
382
Aaron Huang68ca3732022-01-06 19:30:43 +0800383}
384
Yuyang Huang00cf7ed2023-05-15 10:54:07 +0900385package android.net.nsd {
386
387 public final class NsdManager {
Motomu Utsumice23d842023-11-28 16:18:00 +0900388 method @FlaggedApi("com.android.net.flags.register_nsd_offload_engine_api") @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK}) public void registerOffloadEngine(@NonNull String, long, long, @NonNull java.util.concurrent.Executor, @NonNull android.net.nsd.OffloadEngine);
389 method @FlaggedApi("com.android.net.flags.register_nsd_offload_engine_api") @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK}) public void unregisterOffloadEngine(@NonNull android.net.nsd.OffloadEngine);
Yuyang Huang00cf7ed2023-05-15 10:54:07 +0900390 }
391
Motomu Utsumice23d842023-11-28 16:18:00 +0900392 @FlaggedApi("com.android.net.flags.register_nsd_offload_engine_api") public interface OffloadEngine {
Yuyang Huang00cf7ed2023-05-15 10:54:07 +0900393 method public void onOffloadServiceRemoved(@NonNull android.net.nsd.OffloadServiceInfo);
394 method public void onOffloadServiceUpdated(@NonNull android.net.nsd.OffloadServiceInfo);
395 field public static final int OFFLOAD_CAPABILITY_BYPASS_MULTICAST_LOCK = 1; // 0x1
396 field public static final int OFFLOAD_TYPE_FILTER_QUERIES = 2; // 0x2
397 field public static final int OFFLOAD_TYPE_FILTER_REPLIES = 4; // 0x4
398 field public static final int OFFLOAD_TYPE_REPLY = 1; // 0x1
399 }
400
Motomu Utsumice23d842023-11-28 16:18:00 +0900401 @FlaggedApi("com.android.net.flags.register_nsd_offload_engine_api") public final class OffloadServiceInfo implements android.os.Parcelable {
Yuyang Huang00cf7ed2023-05-15 10:54:07 +0900402 ctor public OffloadServiceInfo(@NonNull android.net.nsd.OffloadServiceInfo.Key, @NonNull java.util.List<java.lang.String>, @NonNull String, @Nullable byte[], @IntRange(from=0, to=java.lang.Integer.MAX_VALUE) int, long);
403 method public int describeContents();
404 method @NonNull public String getHostname();
405 method @NonNull public android.net.nsd.OffloadServiceInfo.Key getKey();
406 method @Nullable public byte[] getOffloadPayload();
407 method public long getOffloadType();
408 method public int getPriority();
409 method @NonNull public java.util.List<java.lang.String> getSubtypes();
410 method public void writeToParcel(@NonNull android.os.Parcel, int);
411 field @NonNull public static final android.os.Parcelable.Creator<android.net.nsd.OffloadServiceInfo> CREATOR;
412 }
413
414 public static final class OffloadServiceInfo.Key implements android.os.Parcelable {
415 ctor public OffloadServiceInfo.Key(@NonNull String, @NonNull String);
416 method public int describeContents();
417 method @NonNull public String getServiceName();
418 method @NonNull public String getServiceType();
419 method public void writeToParcel(@NonNull android.os.Parcel, int);
420 field @NonNull public static final android.os.Parcelable.Creator<android.net.nsd.OffloadServiceInfo.Key> CREATOR;
421 }
422
423}
424
Kangping Dong1cec48f2023-08-21 18:48:14 +0800425package android.net.thread {
426
Kangping Dong7fea5fa2023-08-30 17:25:34 +0800427 @FlaggedApi("com.android.net.thread.flags.thread_enabled") public final class ActiveOperationalDataset implements android.os.Parcelable {
Kangping Dong7fea5fa2023-08-30 17:25:34 +0800428 method public int describeContents();
429 method @NonNull public static android.net.thread.ActiveOperationalDataset fromThreadTlvs(@NonNull byte[]);
430 method @NonNull public android.net.thread.OperationalDatasetTimestamp getActiveTimestamp();
431 method @IntRange(from=0, to=65535) public int getChannel();
432 method @NonNull @Size(min=1) public android.util.SparseArray<byte[]> getChannelMask();
433 method @IntRange(from=0, to=255) public int getChannelPage();
434 method @NonNull @Size(android.net.thread.ActiveOperationalDataset.LENGTH_EXTENDED_PAN_ID) public byte[] getExtendedPanId();
435 method @NonNull public android.net.IpPrefix getMeshLocalPrefix();
436 method @NonNull @Size(android.net.thread.ActiveOperationalDataset.LENGTH_NETWORK_KEY) public byte[] getNetworkKey();
437 method @NonNull @Size(min=android.net.thread.ActiveOperationalDataset.LENGTH_MIN_NETWORK_NAME_BYTES, max=android.net.thread.ActiveOperationalDataset.LENGTH_MAX_NETWORK_NAME_BYTES) public String getNetworkName();
438 method @IntRange(from=0, to=65534) public int getPanId();
439 method @NonNull @Size(android.net.thread.ActiveOperationalDataset.LENGTH_PSKC) public byte[] getPskc();
440 method @NonNull public android.net.thread.ActiveOperationalDataset.SecurityPolicy getSecurityPolicy();
441 method @NonNull public byte[] toThreadTlvs();
442 method public void writeToParcel(@NonNull android.os.Parcel, int);
443 field public static final int CHANNEL_MAX_24_GHZ = 26; // 0x1a
444 field public static final int CHANNEL_MIN_24_GHZ = 11; // 0xb
445 field public static final int CHANNEL_PAGE_24_GHZ = 0; // 0x0
446 field @NonNull public static final android.os.Parcelable.Creator<android.net.thread.ActiveOperationalDataset> CREATOR;
447 field public static final int LENGTH_EXTENDED_PAN_ID = 8; // 0x8
448 field public static final int LENGTH_MAX_DATASET_TLVS = 254; // 0xfe
449 field public static final int LENGTH_MAX_NETWORK_NAME_BYTES = 16; // 0x10
450 field public static final int LENGTH_MESH_LOCAL_PREFIX_BITS = 64; // 0x40
451 field public static final int LENGTH_MIN_NETWORK_NAME_BYTES = 1; // 0x1
452 field public static final int LENGTH_NETWORK_KEY = 16; // 0x10
453 field public static final int LENGTH_PSKC = 16; // 0x10
454 }
455
456 public static final class ActiveOperationalDataset.Builder {
457 ctor public ActiveOperationalDataset.Builder(@NonNull android.net.thread.ActiveOperationalDataset);
458 ctor public ActiveOperationalDataset.Builder();
459 method @NonNull public android.net.thread.ActiveOperationalDataset build();
460 method @NonNull public android.net.thread.ActiveOperationalDataset.Builder setActiveTimestamp(@NonNull android.net.thread.OperationalDatasetTimestamp);
461 method @NonNull public android.net.thread.ActiveOperationalDataset.Builder setChannel(@IntRange(from=0, to=255) int, @IntRange(from=0, to=65535) int);
462 method @NonNull public android.net.thread.ActiveOperationalDataset.Builder setChannelMask(@NonNull @Size(min=1) android.util.SparseArray<byte[]>);
463 method @NonNull public android.net.thread.ActiveOperationalDataset.Builder setExtendedPanId(@NonNull @Size(android.net.thread.ActiveOperationalDataset.LENGTH_EXTENDED_PAN_ID) byte[]);
464 method @NonNull public android.net.thread.ActiveOperationalDataset.Builder setMeshLocalPrefix(@NonNull android.net.IpPrefix);
465 method @NonNull public android.net.thread.ActiveOperationalDataset.Builder setNetworkKey(@NonNull @Size(android.net.thread.ActiveOperationalDataset.LENGTH_NETWORK_KEY) byte[]);
466 method @NonNull public android.net.thread.ActiveOperationalDataset.Builder setNetworkName(@NonNull @Size(min=android.net.thread.ActiveOperationalDataset.LENGTH_MIN_NETWORK_NAME_BYTES, max=android.net.thread.ActiveOperationalDataset.LENGTH_MAX_NETWORK_NAME_BYTES) String);
467 method @NonNull public android.net.thread.ActiveOperationalDataset.Builder setPanId(@IntRange(from=0, to=65534) int);
468 method @NonNull public android.net.thread.ActiveOperationalDataset.Builder setPskc(@NonNull @Size(android.net.thread.ActiveOperationalDataset.LENGTH_PSKC) byte[]);
469 method @NonNull public android.net.thread.ActiveOperationalDataset.Builder setSecurityPolicy(@NonNull android.net.thread.ActiveOperationalDataset.SecurityPolicy);
470 }
471
472 public static final class ActiveOperationalDataset.SecurityPolicy {
473 ctor public ActiveOperationalDataset.SecurityPolicy(@IntRange(from=1, to=65535) int, @NonNull @Size(min=android.net.thread.ActiveOperationalDataset.SecurityPolicy.LENGTH_MIN_SECURITY_POLICY_FLAGS) byte[]);
474 method @NonNull @Size(min=android.net.thread.ActiveOperationalDataset.SecurityPolicy.LENGTH_MIN_SECURITY_POLICY_FLAGS) public byte[] getFlags();
475 method @IntRange(from=1, to=65535) public int getRotationTimeHours();
476 field public static final int DEFAULT_ROTATION_TIME_HOURS = 672; // 0x2a0
477 field public static final int LENGTH_MIN_SECURITY_POLICY_FLAGS = 1; // 0x1
478 }
479
480 @FlaggedApi("com.android.net.thread.flags.thread_enabled") public final class OperationalDatasetTimestamp {
481 ctor public OperationalDatasetTimestamp(@IntRange(from=0, to=281474976710655L) long, @IntRange(from=0, to=32767) int, boolean);
482 method @NonNull public static android.net.thread.OperationalDatasetTimestamp fromInstant(@NonNull java.time.Instant);
483 method @IntRange(from=0, to=281474976710655L) public long getSeconds();
484 method @IntRange(from=0, to=32767) public int getTicks();
485 method public boolean isAuthoritativeSource();
486 method @NonNull public java.time.Instant toInstant();
487 }
488
489 @FlaggedApi("com.android.net.thread.flags.thread_enabled") public final class PendingOperationalDataset implements android.os.Parcelable {
490 ctor public PendingOperationalDataset(@NonNull android.net.thread.ActiveOperationalDataset, @NonNull android.net.thread.OperationalDatasetTimestamp, @NonNull java.time.Duration);
491 method public int describeContents();
492 method @NonNull public static android.net.thread.PendingOperationalDataset fromThreadTlvs(@NonNull byte[]);
493 method @NonNull public android.net.thread.ActiveOperationalDataset getActiveOperationalDataset();
494 method @NonNull public java.time.Duration getDelayTimer();
495 method @NonNull public android.net.thread.OperationalDatasetTimestamp getPendingTimestamp();
496 method @NonNull public byte[] toThreadTlvs();
497 method public void writeToParcel(@NonNull android.os.Parcel, int);
498 field @NonNull public static final android.os.Parcelable.Creator<android.net.thread.PendingOperationalDataset> CREATOR;
499 }
500
Handa Wang5fc74b92024-06-20 09:44:49 +0000501 @FlaggedApi("com.android.net.thread.flags.configuration_enabled") public final class ThreadConfiguration implements android.os.Parcelable {
502 method public int describeContents();
503 method public boolean isDhcpv6PdEnabled();
504 method public boolean isNat64Enabled();
505 method public void writeToParcel(@NonNull android.os.Parcel, int);
506 field @NonNull public static final android.os.Parcelable.Creator<android.net.thread.ThreadConfiguration> CREATOR;
507 }
508
Kangping Dong5e1d4302023-10-17 21:55:19 +0800509 @FlaggedApi("com.android.net.thread.flags.thread_enabled") public final class ThreadNetworkController {
Kangping Dongaf4f1f52023-10-27 19:32:10 +0800510 method public void createRandomizedDataset(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<android.net.thread.ActiveOperationalDataset,android.net.thread.ThreadNetworkException>);
Kangping Dong1cec48f2023-08-21 18:48:14 +0800511 method public int getThreadVersion();
Kangping Dongb1c75db2023-08-30 19:15:04 +0800512 method public static boolean isAttached(int);
513 method @RequiresPermission("android.permission.THREAD_NETWORK_PRIVILEGED") public void join(@NonNull android.net.thread.ActiveOperationalDataset, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,android.net.thread.ThreadNetworkException>);
514 method @RequiresPermission("android.permission.THREAD_NETWORK_PRIVILEGED") public void leave(@NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,android.net.thread.ThreadNetworkException>);
Handa Wang5fc74b92024-06-20 09:44:49 +0000515 method @FlaggedApi("com.android.net.thread.flags.configuration_enabled") @RequiresPermission(android.Manifest.permission.THREAD_NETWORK_PRIVILEGED) public void registerConfigurationCallback(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.net.thread.ThreadConfiguration>);
Kangping Dongb1c75db2023-08-30 19:15:04 +0800516 method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_NETWORK_STATE, "android.permission.THREAD_NETWORK_PRIVILEGED"}) public void registerOperationalDatasetCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.thread.ThreadNetworkController.OperationalDatasetCallback);
517 method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.thread.ThreadNetworkController.StateCallback);
518 method @RequiresPermission("android.permission.THREAD_NETWORK_PRIVILEGED") public void scheduleMigration(@NonNull android.net.thread.PendingOperationalDataset, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,android.net.thread.ThreadNetworkException>);
Zhanglong Xia5bbfd912024-06-20 13:04:29 +0800519 method @FlaggedApi("com.android.net.thread.flags.channel_max_powers_enabled") @RequiresPermission("android.permission.THREAD_NETWORK_PRIVILEGED") public void setChannelMaxPowers(@NonNull @Size(min=1) android.util.SparseIntArray, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,android.net.thread.ThreadNetworkException>);
Yang Sun0797d9d2024-01-06 17:41:46 +0800520 method @RequiresPermission("android.permission.THREAD_NETWORK_PRIVILEGED") public void setEnabled(boolean, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,android.net.thread.ThreadNetworkException>);
Handa Wang5fc74b92024-06-20 09:44:49 +0000521 method @FlaggedApi("com.android.net.thread.flags.configuration_enabled") @RequiresPermission(android.Manifest.permission.THREAD_NETWORK_PRIVILEGED) public void unregisterConfigurationCallback(@NonNull java.util.function.Consumer<android.net.thread.ThreadConfiguration>);
Kangping Dong8e444122023-11-13 17:29:07 +0800522 method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_NETWORK_STATE, "android.permission.THREAD_NETWORK_PRIVILEGED"}) public void unregisterOperationalDatasetCallback(@NonNull android.net.thread.ThreadNetworkController.OperationalDatasetCallback);
523 method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void unregisterStateCallback(@NonNull android.net.thread.ThreadNetworkController.StateCallback);
Kangping Dongb1c75db2023-08-30 19:15:04 +0800524 field public static final int DEVICE_ROLE_CHILD = 2; // 0x2
525 field public static final int DEVICE_ROLE_DETACHED = 1; // 0x1
526 field public static final int DEVICE_ROLE_LEADER = 4; // 0x4
527 field public static final int DEVICE_ROLE_ROUTER = 3; // 0x3
528 field public static final int DEVICE_ROLE_STOPPED = 0; // 0x0
Zhanglong Xia5bbfd912024-06-20 13:04:29 +0800529 field public static final int MAX_POWER_CHANNEL_DISABLED = -2147483648; // 0x80000000
Yang Sun0797d9d2024-01-06 17:41:46 +0800530 field public static final int STATE_DISABLED = 0; // 0x0
531 field public static final int STATE_DISABLING = 2; // 0x2
532 field public static final int STATE_ENABLED = 1; // 0x1
Kangping Dong1cec48f2023-08-21 18:48:14 +0800533 field public static final int THREAD_VERSION_1_3 = 4; // 0x4
534 }
535
Kangping Dongb1c75db2023-08-30 19:15:04 +0800536 public static interface ThreadNetworkController.OperationalDatasetCallback {
537 method public void onActiveOperationalDatasetChanged(@Nullable android.net.thread.ActiveOperationalDataset);
538 method public default void onPendingOperationalDatasetChanged(@Nullable android.net.thread.PendingOperationalDataset);
539 }
540
541 public static interface ThreadNetworkController.StateCallback {
542 method public void onDeviceRoleChanged(int);
543 method public default void onPartitionIdChanged(long);
Yang Sun0797d9d2024-01-06 17:41:46 +0800544 method public default void onThreadEnableStateChanged(int);
Kangping Dongb1c75db2023-08-30 19:15:04 +0800545 }
546
547 @FlaggedApi("com.android.net.thread.flags.thread_enabled") public class ThreadNetworkException extends java.lang.Exception {
548 ctor public ThreadNetworkException(int, @NonNull String);
549 method public int getErrorCode();
550 field public static final int ERROR_ABORTED = 2; // 0x2
551 field public static final int ERROR_BUSY = 5; // 0x5
552 field public static final int ERROR_FAILED_PRECONDITION = 6; // 0x6
553 field public static final int ERROR_INTERNAL_ERROR = 1; // 0x1
554 field public static final int ERROR_REJECTED_BY_PEER = 8; // 0x8
555 field public static final int ERROR_RESOURCE_EXHAUSTED = 10; // 0xa
556 field public static final int ERROR_RESPONSE_BAD_FORMAT = 9; // 0x9
Yang Sun0797d9d2024-01-06 17:41:46 +0800557 field public static final int ERROR_THREAD_DISABLED = 12; // 0xc
Kangping Dongb1c75db2023-08-30 19:15:04 +0800558 field public static final int ERROR_TIMEOUT = 3; // 0x3
559 field public static final int ERROR_UNAVAILABLE = 4; // 0x4
Kangping Dong2c83e2f2024-01-16 15:43:45 +0800560 field public static final int ERROR_UNKNOWN = 11; // 0xb
Kangping Dongb1c75db2023-08-30 19:15:04 +0800561 field public static final int ERROR_UNSUPPORTED_CHANNEL = 7; // 0x7
Zhanglong Xia5bbfd912024-06-20 13:04:29 +0800562 field public static final int ERROR_UNSUPPORTED_FEATURE = 13; // 0xd
Kangping Dongb1c75db2023-08-30 19:15:04 +0800563 }
564
Kangping Dong5e1d4302023-10-17 21:55:19 +0800565 @FlaggedApi("com.android.net.thread.flags.thread_enabled") public final class ThreadNetworkManager {
Kangping Dong1cec48f2023-08-21 18:48:14 +0800566 method @NonNull public java.util.List<android.net.thread.ThreadNetworkController> getAllThreadNetworkControllers();
567 }
568
569}
570