• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Signature format: 2.0
2package android.bluetooth {
3
4  public final class BluetoothA2dp implements android.bluetooth.BluetoothProfile {
5    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void disableOptionalCodecs(@NonNull android.bluetooth.BluetoothDevice);
6    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void enableOptionalCodecs(@NonNull android.bluetooth.BluetoothDevice);
7    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public android.bluetooth.BufferConstraints getBufferConstraints();
8    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public android.bluetooth.BluetoothCodecStatus getCodecStatus(@NonNull android.bluetooth.BluetoothDevice);
9    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
10    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getDynamicBufferSupport();
11    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int isOptionalCodecsEnabled(@NonNull android.bluetooth.BluetoothDevice);
12    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int isOptionalCodecsSupported(@NonNull android.bluetooth.BluetoothDevice);
13    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void setAvrcpAbsoluteVolume(int);
14    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setBufferLengthMillis(int, int);
15    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void setCodecConfigPreference(@NonNull android.bluetooth.BluetoothDevice, @NonNull android.bluetooth.BluetoothCodecConfig);
16    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
17    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void setOptionalCodecsEnabled(@NonNull android.bluetooth.BluetoothDevice, int);
18    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_ACTIVE_DEVICE_CHANGED = "android.bluetooth.a2dp.profile.action.ACTIVE_DEVICE_CHANGED";
19    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_CODEC_CONFIG_CHANGED = "android.bluetooth.a2dp.profile.action.CODEC_CONFIG_CHANGED";
20    field public static final int DYNAMIC_BUFFER_SUPPORT_A2DP_OFFLOAD = 1; // 0x1
21    field public static final int DYNAMIC_BUFFER_SUPPORT_A2DP_SOFTWARE_ENCODING = 2; // 0x2
22    field public static final int DYNAMIC_BUFFER_SUPPORT_NONE = 0; // 0x0
23    field public static final int OPTIONAL_CODECS_NOT_SUPPORTED = 0; // 0x0
24    field public static final int OPTIONAL_CODECS_PREF_DISABLED = 0; // 0x0
25    field public static final int OPTIONAL_CODECS_PREF_ENABLED = 1; // 0x1
26    field public static final int OPTIONAL_CODECS_PREF_UNKNOWN = -1; // 0xffffffff
27    field public static final int OPTIONAL_CODECS_SUPPORTED = 1; // 0x1
28    field public static final int OPTIONAL_CODECS_SUPPORT_UNKNOWN = -1; // 0xffffffff
29  }
30
31  public final class BluetoothA2dpSink implements android.bluetooth.BluetoothProfile {
32    method public void finalize();
33    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
34    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
35    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public int getConnectionState(android.bluetooth.BluetoothDevice);
36    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
37    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean isAudioPlaying(@NonNull android.bluetooth.BluetoothDevice);
38    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
39    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.a2dp-sink.profile.action.CONNECTION_STATE_CHANGED";
40  }
41
42  public final class BluetoothActivityEnergyInfo implements android.os.Parcelable {
43    method public int describeContents();
44    method public int getBluetoothStackState();
45    method public long getControllerEnergyUsed();
46    method public long getControllerIdleTimeMillis();
47    method public long getControllerRxTimeMillis();
48    method public long getControllerTxTimeMillis();
49    method public long getTimestampMillis();
50    method @NonNull public java.util.List<android.bluetooth.UidTraffic> getUidTraffic();
51    method public boolean isValid();
52    method public void writeToParcel(android.os.Parcel, int);
53    field public static final int BT_STACK_STATE_INVALID = 0; // 0x0
54    field public static final int BT_STACK_STATE_STATE_ACTIVE = 1; // 0x1
55    field public static final int BT_STACK_STATE_STATE_IDLE = 3; // 0x3
56    field public static final int BT_STACK_STATE_STATE_SCANNING = 2; // 0x2
57    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothActivityEnergyInfo> CREATOR;
58  }
59
60  public final class BluetoothAdapter {
61    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean addOnMetadataChangedListener(@NonNull android.bluetooth.BluetoothDevice, @NonNull java.util.concurrent.Executor, @NonNull android.bluetooth.BluetoothAdapter.OnMetadataChangedListener);
62    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean clearBluetooth();
63    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean disable(boolean);
64    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean disableBLE();
65    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean enableBLE();
66    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean enableNoAutoConnect();
67    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void generateLocalOobData(int, @NonNull java.util.concurrent.Executor, @NonNull android.bluetooth.BluetoothAdapter.OobDataCallback);
68    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothDevice> getActiveDevices(int);
69    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getBluetoothHciSnoopLoggingMode();
70    method public int getConnectionState();
71    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public long getDiscoveryEndMillis();
72    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public android.bluetooth.le.DistanceMeasurementManager getDistanceMeasurementManager();
73    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothDevice> getMostRecentlyConnectedDevices();
74    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getOffloadedTransportDiscoveryDataScanSupported();
75    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public android.os.Bundle getPreferredAudioProfiles(@NonNull android.bluetooth.BluetoothDevice);
76    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<java.lang.Integer> getSupportedProfiles();
77    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public java.util.List<android.os.ParcelUuid> getUuidsList();
78    method @FlaggedApi("com.android.bluetooth.flags.auto_on_feature") @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean isAutoOnEnabled();
79    method @FlaggedApi("com.android.bluetooth.flags.auto_on_feature") @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean isAutoOnSupported();
80    method public boolean isBleScanAlwaysAvailable();
81    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int isDistanceMeasurementSupported();
82    method public boolean isLeEnabled();
83    method @NonNull public static String nameForState(int);
84    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int notifyActiveDeviceChangeApplied(@NonNull android.bluetooth.BluetoothDevice);
85    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean registerBluetoothConnectionCallback(@NonNull java.util.concurrent.Executor, @NonNull android.bluetooth.BluetoothAdapter.BluetoothConnectionCallback);
86    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int registerBluetoothQualityReportReadyCallback(@NonNull java.util.concurrent.Executor, @NonNull android.bluetooth.BluetoothAdapter.BluetoothQualityReportReadyCallback);
87    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int registerPreferredAudioProfilesChangedCallback(@NonNull java.util.concurrent.Executor, @NonNull android.bluetooth.BluetoothAdapter.PreferredAudioProfilesChangedCallback);
88    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED, android.Manifest.permission.MODIFY_PHONE_STATE}) public boolean removeActiveDevice(int);
89    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean removeOnMetadataChangedListener(@NonNull android.bluetooth.BluetoothDevice, @NonNull android.bluetooth.BluetoothAdapter.OnMetadataChangedListener);
90    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void requestControllerActivityEnergyInfo(@NonNull java.util.concurrent.Executor, @NonNull android.bluetooth.BluetoothAdapter.OnBluetoothActivityEnergyInfoCallback);
91    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public android.bluetooth.BluetoothSocket retrieveConnectedRfcommSocket(@NonNull java.util.UUID);
92    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED, android.Manifest.permission.MODIFY_PHONE_STATE}) public boolean setActiveDevice(@NonNull android.bluetooth.BluetoothDevice, int);
93    method @FlaggedApi("com.android.bluetooth.flags.auto_on_feature") @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public void setAutoOnEnabled(boolean);
94    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int setBluetoothHciSnoopLoggingMode(int);
95    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int setDiscoverableTimeout(@NonNull java.time.Duration);
96    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int setPreferredAudioProfiles(@NonNull android.bluetooth.BluetoothDevice, @NonNull android.os.Bundle);
97    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int setScanMode(int);
98    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int startRfcommServer(@NonNull String, @NonNull java.util.UUID, @NonNull android.app.PendingIntent);
99    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int stopRfcommServer(@NonNull java.util.UUID);
100    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean unregisterBluetoothConnectionCallback(@NonNull android.bluetooth.BluetoothAdapter.BluetoothConnectionCallback);
101    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int unregisterBluetoothQualityReportReadyCallback(@NonNull android.bluetooth.BluetoothAdapter.BluetoothQualityReportReadyCallback);
102    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int unregisterPreferredAudioProfilesChangedCallback(@NonNull android.bluetooth.BluetoothAdapter.PreferredAudioProfilesChangedCallback);
103    field @FlaggedApi("com.android.bluetooth.flags.auto_on_feature") @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public static final String ACTION_AUTO_ON_STATE_CHANGED = "android.bluetooth.action.AUTO_ON_STATE_CHANGED";
104    field public static final String ACTION_BLE_STATE_CHANGED = "android.bluetooth.adapter.action.BLE_STATE_CHANGED";
105    field public static final String ACTION_REQUEST_BLE_SCAN_ALWAYS_AVAILABLE = "android.bluetooth.adapter.action.REQUEST_BLE_SCAN_ALWAYS_AVAILABLE";
106    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_REQUEST_DISABLE = "android.bluetooth.adapter.action.REQUEST_DISABLE";
107    field public static final int ACTIVE_DEVICE_ALL = 2; // 0x2
108    field public static final int ACTIVE_DEVICE_AUDIO = 0; // 0x0
109    field public static final int ACTIVE_DEVICE_PHONE_CALL = 1; // 0x1
110    field public static final String AUDIO_MODE_DUPLEX = "audio_mode_duplex";
111    field public static final String AUDIO_MODE_OUTPUT_ONLY = "audio_mode_output_only";
112    field @FlaggedApi("com.android.bluetooth.flags.auto_on_feature") public static final int AUTO_ON_STATE_DISABLED = 1; // 0x1
113    field @FlaggedApi("com.android.bluetooth.flags.auto_on_feature") public static final int AUTO_ON_STATE_ENABLED = 2; // 0x2
114    field public static final int BT_SNOOP_LOG_MODE_DISABLED = 0; // 0x0
115    field public static final int BT_SNOOP_LOG_MODE_FILTERED = 1; // 0x1
116    field public static final int BT_SNOOP_LOG_MODE_FULL = 2; // 0x2
117    field @FlaggedApi("com.android.bluetooth.flags.auto_on_feature") public static final String EXTRA_AUTO_ON_STATE = "android.bluetooth.extra.AUTO_ON_STATE";
118    field public static final String EXTRA_RFCOMM_LISTENER_ID = "android.bluetooth.adapter.extra.RFCOMM_LISTENER_ID";
119    field public static final int STATE_BLE_ON = 15; // 0xf
120  }
121
122  public abstract static class BluetoothAdapter.BluetoothConnectionCallback {
123    ctor public BluetoothAdapter.BluetoothConnectionCallback();
124    method @NonNull public static String disconnectReasonToString(int);
125    method public void onDeviceConnected(@NonNull android.bluetooth.BluetoothDevice);
126    method public void onDeviceDisconnected(@NonNull android.bluetooth.BluetoothDevice, int);
127  }
128
129  public static interface BluetoothAdapter.BluetoothQualityReportReadyCallback {
130    method public void onBluetoothQualityReportReady(@NonNull android.bluetooth.BluetoothDevice, @NonNull android.bluetooth.BluetoothQualityReport, int);
131  }
132
133  public static interface BluetoothAdapter.OnBluetoothActivityEnergyInfoCallback {
134    method public void onBluetoothActivityEnergyInfoAvailable(@NonNull android.bluetooth.BluetoothActivityEnergyInfo);
135    method public void onBluetoothActivityEnergyInfoError(int);
136  }
137
138  public static interface BluetoothAdapter.OnMetadataChangedListener {
139    method public void onMetadataChanged(@NonNull android.bluetooth.BluetoothDevice, int, @Nullable byte[]);
140  }
141
142  public static interface BluetoothAdapter.OobDataCallback {
143    method public void onError(int);
144    method public void onOobData(int, @NonNull android.bluetooth.OobData);
145  }
146
147  public static interface BluetoothAdapter.PreferredAudioProfilesChangedCallback {
148    method public void onPreferredAudioProfilesChanged(@NonNull android.bluetooth.BluetoothDevice, @NonNull android.os.Bundle, int);
149  }
150
151  public static class BluetoothAssignedNumbers.OrganizationId {
152    field public static final int BLUETOOTH_SIG = 1; // 0x1
153    field public static final int WIFI_ALLIANCE_NEIGHBOR_AWARENESS_NETWORKING = 2; // 0x2
154    field public static final int WIFI_ALLIANCE_SERVICE_ADVERTISEMENT = 3; // 0x3
155  }
156
157  public final class BluetoothClass implements android.os.Parcelable {
158    field public static final int PROFILE_A2DP_SINK = 6; // 0x6
159    field public static final int PROFILE_NAP = 5; // 0x5
160    field public static final int PROFILE_OPP = 2; // 0x2
161    field public static final int PROFILE_PANU = 4; // 0x4
162  }
163
164  @FlaggedApi("com.android.bluetooth.flags.a2dp_offload_codec_extensibility") public final class BluetoothCodecType implements android.os.Parcelable {
165    ctor public BluetoothCodecType(int, long, @NonNull String);
166    method @FlaggedApi("com.android.bluetooth.flags.a2dp_offload_codec_extensibility") @Nullable public static android.bluetooth.BluetoothCodecType createFromType(int);
167  }
168
169  public final class BluetoothCsipSetCoordinator implements java.lang.AutoCloseable android.bluetooth.BluetoothProfile {
170    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public java.util.List<java.lang.Integer> getAllGroupIds(@Nullable android.os.ParcelUuid);
171    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionPolicy(@Nullable android.bluetooth.BluetoothDevice);
172    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public java.util.Map<java.lang.Integer,android.os.ParcelUuid> getGroupUuidMapByDevice(@Nullable android.bluetooth.BluetoothDevice);
173    method @Nullable @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public java.util.UUID lockGroup(int, @NonNull java.util.concurrent.Executor, @NonNull android.bluetooth.BluetoothCsipSetCoordinator.ClientLockCallback);
174    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@Nullable android.bluetooth.BluetoothDevice, int);
175    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean unlockGroup(@NonNull java.util.UUID);
176    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public static final String ACTION_CSIS_DEVICE_AVAILABLE = "android.bluetooth.action.CSIS_DEVICE_AVAILABLE";
177    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public static final String ACTION_CSIS_SET_MEMBER_AVAILABLE = "android.bluetooth.action.CSIS_SET_MEMBER_AVAILABLE";
178    field public static final String EXTRA_CSIS_GROUP_ID = "android.bluetooth.extra.CSIS_GROUP_ID";
179    field public static final int GROUP_ID_INVALID = -1; // 0xffffffff
180  }
181
182  public static interface BluetoothCsipSetCoordinator.ClientLockCallback {
183    method public void onGroupLockSet(int, int, boolean);
184  }
185
186  public final class BluetoothDevice implements android.os.Parcelable {
187    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean canBondWithoutDialog();
188    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean cancelBondProcess();
189    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED, android.Manifest.permission.MODIFY_PHONE_STATE}) public int connect();
190    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean createBond(int);
191    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean createBondOutOfBand(int, @Nullable android.bluetooth.OobData, @Nullable android.bluetooth.OobData);
192    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int disconnect();
193    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean fetchUuidsWithSdp(int);
194    method @FlaggedApi("com.android.bluetooth.flags.metadata_api_inactive_audio_device_upon_connection") @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getActiveAudioDevicePolicy();
195    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public String getAnonymizedAddress();
196    method @IntRange(from=0xffffff9c, to=100) @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public int getBatteryLevel();
197    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionHandle(int);
198    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public String getIdentityAddress();
199    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public int getMessageAccessPermission();
200    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public byte[] getMetadata(int);
201    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public String getPackageNameOfBondingApplication();
202    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public int getPhonebookAccessPermission();
203    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public android.bluetooth.BluetoothSinkAudioPolicy getRequestedAudioPolicyAsSink();
204    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public int getSimAccessPermission();
205    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean isBondingInitiatedLocally();
206    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean isConnected();
207    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean isEncrypted();
208    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean isInSilenceMode();
209    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int isRequestAudioPolicyAsSinkSupported();
210    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public void prepareToEnterProcess(@NonNull android.content.AttributionSource);
211    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean removeBond();
212    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int requestAudioPolicyAsSink(@NonNull android.bluetooth.BluetoothSinkAudioPolicy);
213    method @FlaggedApi("com.android.bluetooth.flags.metadata_api_inactive_audio_device_upon_connection") @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int setActiveAudioDevicePolicy(int);
214    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setLowLatencyAudioAllowed(boolean);
215    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setMessageAccessPermission(int);
216    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setMetadata(int, @NonNull byte[]);
217    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setPhonebookAccessPermission(int);
218    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean setPin(@NonNull String);
219    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setSilenceMode(boolean);
220    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setSimAccessPermission(int);
221    field public static final int ACCESS_ALLOWED = 1; // 0x1
222    field public static final int ACCESS_REJECTED = 2; // 0x2
223    field public static final int ACCESS_UNKNOWN = 0; // 0x0
224    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_BATTERY_LEVEL_CHANGED = "android.bluetooth.device.action.BATTERY_LEVEL_CHANGED";
225    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_CONNECTION_ACCESS_CANCEL = "android.bluetooth.device.action.CONNECTION_ACCESS_CANCEL";
226    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_CONNECTION_ACCESS_REPLY = "android.bluetooth.device.action.CONNECTION_ACCESS_REPLY";
227    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_CONNECTION_ACCESS_REQUEST = "android.bluetooth.device.action.CONNECTION_ACCESS_REQUEST";
228    field @FlaggedApi("com.android.bluetooth.flags.key_missing_broadcast") @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public static final String ACTION_KEY_MISSING = "android.bluetooth.device.action.KEY_MISSING";
229    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_PAIRING_CANCEL = "android.bluetooth.device.action.PAIRING_CANCEL";
230    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_SILENCE_MODE_CHANGED = "android.bluetooth.device.action.SILENCE_MODE_CHANGED";
231    field @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public static final String ACTION_SWITCH_BUFFER_SIZE = "android.bluetooth.device.action.SWITCH_BUFFER_SIZE";
232    field @FlaggedApi("com.android.bluetooth.flags.metadata_api_inactive_audio_device_upon_connection") public static final int ACTIVE_AUDIO_DEVICE_POLICY_ALL_PROFILES_ACTIVE_UPON_CONNECTION = 1; // 0x1
233    field @FlaggedApi("com.android.bluetooth.flags.metadata_api_inactive_audio_device_upon_connection") public static final int ACTIVE_AUDIO_DEVICE_POLICY_ALL_PROFILES_INACTIVE_UPON_CONNECTION = 2; // 0x2
234    field @FlaggedApi("com.android.bluetooth.flags.metadata_api_inactive_audio_device_upon_connection") public static final int ACTIVE_AUDIO_DEVICE_POLICY_DEFAULT = 0; // 0x0
235    field public static final int BATTERY_LEVEL_BLUETOOTH_OFF = -100; // 0xffffff9c
236    field public static final int BATTERY_LEVEL_UNKNOWN = -1; // 0xffffffff
237    field public static final int CONNECTION_ACCESS_NO = 2; // 0x2
238    field public static final int CONNECTION_ACCESS_YES = 1; // 0x1
239    field @FlaggedApi("com.android.bluetooth.flags.support_metadata_device_types_apis") public static final String DEVICE_TYPE_CARKIT = "Carkit";
240    field public static final String DEVICE_TYPE_DEFAULT = "Default";
241    field @FlaggedApi("com.android.bluetooth.flags.support_metadata_device_types_apis") public static final String DEVICE_TYPE_HEADSET = "Headset";
242    field @FlaggedApi("com.android.bluetooth.flags.support_metadata_device_types_apis") public static final String DEVICE_TYPE_HEARING_AID = "HearingAid";
243    field @FlaggedApi("com.android.bluetooth.flags.support_metadata_device_types_apis") public static final String DEVICE_TYPE_SPEAKER = "Speaker";
244    field public static final String DEVICE_TYPE_STYLUS = "Stylus";
245    field public static final String DEVICE_TYPE_UNTETHERED_HEADSET = "Untethered Headset";
246    field public static final String DEVICE_TYPE_WATCH = "Watch";
247    field public static final String EXTRA_ACCESS_REQUEST_TYPE = "android.bluetooth.device.extra.ACCESS_REQUEST_TYPE";
248    field public static final String EXTRA_ALWAYS_ALLOWED = "android.bluetooth.device.extra.ALWAYS_ALLOWED";
249    field public static final String EXTRA_BATTERY_LEVEL = "android.bluetooth.device.extra.BATTERY_LEVEL";
250    field public static final String EXTRA_CONNECTION_ACCESS_RESULT = "android.bluetooth.device.extra.CONNECTION_ACCESS_RESULT";
251    field public static final String EXTRA_LOW_LATENCY_BUFFER_SIZE = "android.bluetooth.device.extra.LOW_LATENCY_BUFFER_SIZE";
252    field public static final String EXTRA_PAIRING_INITIATOR = "android.bluetooth.device.extra.PAIRING_INITIATOR";
253    field public static final int EXTRA_PAIRING_INITIATOR_BACKGROUND = 2; // 0x2
254    field public static final int EXTRA_PAIRING_INITIATOR_FOREGROUND = 1; // 0x1
255    field public static final String EXTRA_UNBOND_REASON = "android.bluetooth.device.extra.REASON";
256    field public static final int METADATA_COMPANION_APP = 4; // 0x4
257    field public static final int METADATA_DEVICE_TYPE = 17; // 0x11
258    field public static final int METADATA_ENHANCED_SETTINGS_UI_URI = 16; // 0x10
259    field @FlaggedApi("com.android.bluetooth.flags.support_exclusive_manager") public static final int METADATA_EXCLUSIVE_MANAGER = 29; // 0x1d
260    field public static final int METADATA_HARDWARE_VERSION = 3; // 0x3
261    field public static final int METADATA_IS_UNTETHERED_HEADSET = 6; // 0x6
262    field public static final int METADATA_LE_AUDIO = 26; // 0x1a
263    field public static final int METADATA_MAIN_BATTERY = 18; // 0x12
264    field public static final int METADATA_MAIN_CHARGING = 19; // 0x13
265    field public static final int METADATA_MAIN_ICON = 5; // 0x5
266    field public static final int METADATA_MAIN_LOW_BATTERY_THRESHOLD = 20; // 0x14
267    field public static final int METADATA_MANUFACTURER_NAME = 0; // 0x0
268    field public static final int METADATA_MAX_LENGTH = 2048; // 0x800
269    field public static final int METADATA_MODEL_NAME = 1; // 0x1
270    field public static final int METADATA_SOFTWARE_VERSION = 2; // 0x2
271    field public static final int METADATA_UNTETHERED_CASE_BATTERY = 12; // 0xc
272    field public static final int METADATA_UNTETHERED_CASE_CHARGING = 15; // 0xf
273    field public static final int METADATA_UNTETHERED_CASE_ICON = 9; // 0x9
274    field public static final int METADATA_UNTETHERED_CASE_LOW_BATTERY_THRESHOLD = 23; // 0x17
275    field public static final int METADATA_UNTETHERED_LEFT_BATTERY = 10; // 0xa
276    field public static final int METADATA_UNTETHERED_LEFT_CHARGING = 13; // 0xd
277    field public static final int METADATA_UNTETHERED_LEFT_ICON = 7; // 0x7
278    field public static final int METADATA_UNTETHERED_LEFT_LOW_BATTERY_THRESHOLD = 21; // 0x15
279    field public static final int METADATA_UNTETHERED_RIGHT_BATTERY = 11; // 0xb
280    field public static final int METADATA_UNTETHERED_RIGHT_CHARGING = 14; // 0xe
281    field public static final int METADATA_UNTETHERED_RIGHT_ICON = 8; // 0x8
282    field public static final int METADATA_UNTETHERED_RIGHT_LOW_BATTERY_THRESHOLD = 22; // 0x16
283    field public static final int PAIRING_VARIANT_CONSENT = 3; // 0x3
284    field public static final int PAIRING_VARIANT_DISPLAY_PASSKEY = 4; // 0x4
285    field public static final int PAIRING_VARIANT_DISPLAY_PIN = 5; // 0x5
286    field public static final int PAIRING_VARIANT_OOB_CONSENT = 6; // 0x6
287    field public static final int PAIRING_VARIANT_PASSKEY = 1; // 0x1
288    field public static final int PAIRING_VARIANT_PIN_16_DIGITS = 7; // 0x7
289    field public static final int REQUEST_TYPE_MESSAGE_ACCESS = 3; // 0x3
290    field public static final int REQUEST_TYPE_PHONEBOOK_ACCESS = 2; // 0x2
291    field public static final int REQUEST_TYPE_PROFILE_CONNECTION = 1; // 0x1
292    field public static final int REQUEST_TYPE_SIM_ACCESS = 4; // 0x4
293    field public static final int UNBOND_REASON_AUTH_CANCELED = 3; // 0x3
294    field public static final int UNBOND_REASON_AUTH_FAILED = 1; // 0x1
295    field public static final int UNBOND_REASON_AUTH_REJECTED = 2; // 0x2
296    field public static final int UNBOND_REASON_AUTH_TIMEOUT = 6; // 0x6
297    field public static final int UNBOND_REASON_DISCOVERY_IN_PROGRESS = 5; // 0x5
298    field public static final int UNBOND_REASON_REMOTE_AUTH_CANCELED = 8; // 0x8
299    field public static final int UNBOND_REASON_REMOTE_DEVICE_DOWN = 4; // 0x4
300    field public static final int UNBOND_REASON_REMOVED = 9; // 0x9
301    field public static final int UNBOND_REASON_REPEATED_ATTEMPTS = 7; // 0x7
302  }
303
304  public interface BluetoothDevicePicker {
305    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_DEVICE_SELECTED = "android.bluetooth.devicepicker.action.DEVICE_SELECTED";
306    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_LAUNCH = "android.bluetooth.devicepicker.action.LAUNCH";
307    field public static final String EXTRA_FILTER_TYPE = "android.bluetooth.devicepicker.extra.FILTER_TYPE";
308    field public static final String EXTRA_LAUNCH_CLASS = "android.bluetooth.devicepicker.extra.DEVICE_PICKER_LAUNCH_CLASS";
309    field public static final String EXTRA_LAUNCH_PACKAGE = "android.bluetooth.devicepicker.extra.LAUNCH_PACKAGE";
310    field public static final String EXTRA_NEED_AUTH = "android.bluetooth.devicepicker.extra.NEED_AUTH";
311    field public static final int FILTER_TYPE_ALL = 0; // 0x0
312    field public static final int FILTER_TYPE_AUDIO = 1; // 0x1
313    field public static final int FILTER_TYPE_NAP = 4; // 0x4
314    field public static final int FILTER_TYPE_PANU = 3; // 0x3
315    field public static final int FILTER_TYPE_TRANSFER = 2; // 0x2
316  }
317
318  public final class BluetoothHapClient implements java.lang.AutoCloseable android.bluetooth.BluetoothProfile {
319    method public void close();
320    method protected void finalize();
321    method @FlaggedApi("com.android.bluetooth.flags.settings_can_control_hap_preset") @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getActivePresetIndex(@NonNull android.bluetooth.BluetoothDevice);
322    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public android.bluetooth.BluetoothHapPresetInfo getActivePresetInfo(@NonNull android.bluetooth.BluetoothDevice);
323    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothHapPresetInfo> getAllPresetInfo(@NonNull android.bluetooth.BluetoothDevice);
324    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
325    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionPolicy(@Nullable android.bluetooth.BluetoothDevice);
326    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
327    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(@NonNull int[]);
328    method @FlaggedApi("com.android.bluetooth.flags.settings_can_control_hap_preset") @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getHapGroup(@NonNull android.bluetooth.BluetoothDevice);
329    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getHearingAidType(@NonNull android.bluetooth.BluetoothDevice);
330    method @FlaggedApi("com.android.bluetooth.flags.settings_can_control_hap_preset") @Nullable @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public android.bluetooth.BluetoothHapPresetInfo getPresetInfo(@NonNull android.bluetooth.BluetoothDevice, int);
331    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void registerCallback(@NonNull java.util.concurrent.Executor, @NonNull android.bluetooth.BluetoothHapClient.Callback);
332    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void selectPreset(@NonNull android.bluetooth.BluetoothDevice, int);
333    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void selectPresetForGroup(int, int);
334    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
335    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void setPresetName(@NonNull android.bluetooth.BluetoothDevice, int, @NonNull String);
336    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void setPresetNameForGroup(int, int, @NonNull String);
337    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean supportsDynamicPresets(@NonNull android.bluetooth.BluetoothDevice);
338    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean supportsIndependentPresets(@NonNull android.bluetooth.BluetoothDevice);
339    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean supportsSynchronizedPresets(@NonNull android.bluetooth.BluetoothDevice);
340    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean supportsWritablePresets(@NonNull android.bluetooth.BluetoothDevice);
341    method @FlaggedApi("com.android.bluetooth.flags.settings_can_control_hap_preset") @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void switchToNextPreset(@NonNull android.bluetooth.BluetoothDevice);
342    method @FlaggedApi("com.android.bluetooth.flags.settings_can_control_hap_preset") @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void switchToNextPresetForGroup(int);
343    method @FlaggedApi("com.android.bluetooth.flags.settings_can_control_hap_preset") @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void switchToPreviousPreset(@NonNull android.bluetooth.BluetoothDevice);
344    method @FlaggedApi("com.android.bluetooth.flags.settings_can_control_hap_preset") @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void switchToPreviousPresetForGroup(int);
345    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void unregisterCallback(@NonNull android.bluetooth.BluetoothHapClient.Callback);
346    field @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public static final String ACTION_HAP_CONNECTION_STATE_CHANGED = "android.bluetooth.action.HAP_CONNECTION_STATE_CHANGED";
347    field @FlaggedApi("com.android.bluetooth.flags.settings_can_control_hap_preset") public static final int PRESET_INDEX_UNAVAILABLE = 0; // 0x0
348    field public static final int TYPE_BANDED = 2; // 0x2
349    field public static final int TYPE_BINAURAL = 0; // 0x0
350    field public static final int TYPE_MONAURAL = 1; // 0x1
351    field public static final int TYPE_RFU = 3; // 0x3
352  }
353
354  public static interface BluetoothHapClient.Callback {
355    method public void onPresetInfoChanged(@NonNull android.bluetooth.BluetoothDevice, @NonNull java.util.List<android.bluetooth.BluetoothHapPresetInfo>, int);
356    method public void onPresetSelected(@NonNull android.bluetooth.BluetoothDevice, int, int);
357    method public void onPresetSelectionFailed(@NonNull android.bluetooth.BluetoothDevice, int);
358    method public void onPresetSelectionForGroupFailed(int, int);
359    method public void onSetPresetNameFailed(@NonNull android.bluetooth.BluetoothDevice, int);
360    method public void onSetPresetNameForGroupFailed(int, int);
361  }
362
363  public final class BluetoothHapPresetInfo implements android.os.Parcelable {
364    method public int describeContents();
365    method public int getIndex();
366    method @NonNull public String getName();
367    method public boolean isAvailable();
368    method public boolean isWritable();
369    method public void writeToParcel(@NonNull android.os.Parcel, int);
370    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothHapPresetInfo> CREATOR;
371  }
372
373  public final class BluetoothHeadset implements android.bluetooth.BluetoothProfile {
374    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.MODIFY_PHONE_STATE}) public boolean connect(android.bluetooth.BluetoothDevice);
375    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int connectAudio();
376    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean disconnect(android.bluetooth.BluetoothDevice);
377    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int disconnectAudio();
378    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getAudioRouteAllowed();
379    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getAudioState(@NonNull android.bluetooth.BluetoothDevice);
380    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
381    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean isInbandRingingEnabled();
382    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int setAudioRouteAllowed(boolean);
383    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED, android.Manifest.permission.MODIFY_PHONE_STATE}) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
384    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean startScoUsingVirtualVoiceCall();
385    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean stopScoUsingVirtualVoiceCall();
386    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_ACTIVE_DEVICE_CHANGED = "android.bluetooth.headset.profile.action.ACTIVE_DEVICE_CHANGED";
387  }
388
389  public final class BluetoothHeadsetClient implements java.lang.AutoCloseable android.bluetooth.BluetoothProfile {
390    method public void close();
391    method protected void finalize();
392    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
393    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
394    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
395    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(@NonNull int[]);
396    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public android.bluetooth.BluetoothHeadsetClient.NetworkServiceState getNetworkServiceState(@NonNull android.bluetooth.BluetoothDevice);
397    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
398    field @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.headsetclient.profile.action.CONNECTION_STATE_CHANGED";
399    field @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public static final String ACTION_NETWORK_SERVICE_STATE_CHANGED = "android.bluetooth.headsetclient.profile.action.NETWORK_SERVICE_STATE_CHANGED";
400    field public static final String EXTRA_NETWORK_SERVICE_STATE = "android.bluetooth.headsetclient.extra.EXTRA_NETWORK_SERVICE_STATE";
401  }
402
403  public static final class BluetoothHeadsetClient.NetworkServiceState implements android.os.Parcelable {
404    method public int describeContents();
405    method @NonNull public android.bluetooth.BluetoothDevice getDevice();
406    method @Nullable public String getNetworkOperatorName();
407    method @IntRange(from=0, to=5) public int getSignalStrength();
408    method public boolean isRoaming();
409    method public boolean isServiceAvailable();
410    method public void writeToParcel(@NonNull android.os.Parcel, int);
411    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothHeadsetClient.NetworkServiceState> CREATOR;
412  }
413
414  public final class BluetoothHearingAid implements android.bluetooth.BluetoothProfile {
415    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public android.bluetooth.BluetoothHearingAid.AdvertisementServiceData getAdvertisementServiceData(@NonNull android.bluetooth.BluetoothDevice);
416    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
417    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public int getDeviceMode(@NonNull android.bluetooth.BluetoothDevice);
418    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public int getDeviceSide(@NonNull android.bluetooth.BluetoothDevice);
419    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public long getHiSyncId(@NonNull android.bluetooth.BluetoothDevice);
420    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
421    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void setVolume(int);
422    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_ACTIVE_DEVICE_CHANGED = "android.bluetooth.hearingaid.profile.action.ACTIVE_DEVICE_CHANGED";
423    field public static final long HI_SYNC_ID_INVALID = 0L; // 0x0L
424    field public static final int MODE_BINAURAL = 1; // 0x1
425    field public static final int MODE_MONAURAL = 0; // 0x0
426    field public static final int MODE_UNKNOWN = -1; // 0xffffffff
427    field public static final int SIDE_LEFT = 0; // 0x0
428    field public static final int SIDE_RIGHT = 1; // 0x1
429    field public static final int SIDE_UNKNOWN = -1; // 0xffffffff
430  }
431
432  public static final class BluetoothHearingAid.AdvertisementServiceData implements android.os.Parcelable {
433    method public int describeContents();
434    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getDeviceMode();
435    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getDeviceSide();
436    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getTruncatedHiSyncId();
437    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean isCsipSupported();
438    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean isInPairWith(@Nullable android.bluetooth.BluetoothHearingAid.AdvertisementServiceData);
439    method public void writeToParcel(@NonNull android.os.Parcel, int);
440    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothHearingAid.AdvertisementServiceData> CREATOR;
441  }
442
443  public final class BluetoothHidDevice implements android.bluetooth.BluetoothProfile {
444    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
445  }
446
447  public final class BluetoothHidHost implements android.bluetooth.BluetoothProfile {
448    method @NonNull @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
449    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
450    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
451    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
452    method @FlaggedApi("com.android.bluetooth.flags.allow_switching_hid_and_hogp") @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getPreferredTransport(@NonNull android.bluetooth.BluetoothDevice);
453    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
454    method @FlaggedApi("com.android.bluetooth.flags.allow_switching_hid_and_hogp") @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setPreferredTransport(@NonNull android.bluetooth.BluetoothDevice, int);
455    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.input.profile.action.CONNECTION_STATE_CHANGED";
456  }
457
458  public final class BluetoothLeAudio implements java.lang.AutoCloseable android.bluetooth.BluetoothProfile {
459    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getAudioLocation(@NonNull android.bluetooth.BluetoothDevice);
460    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public android.bluetooth.BluetoothLeAudioCodecStatus getCodecStatus(int);
461    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionPolicy(@Nullable android.bluetooth.BluetoothDevice);
462    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean isInbandRingtoneEnabled(int);
463    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void registerCallback(@NonNull java.util.concurrent.Executor, @NonNull android.bluetooth.BluetoothLeAudio.Callback);
464    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void setCodecConfigPreference(int, @NonNull android.bluetooth.BluetoothLeAudioCodecConfig, @NonNull android.bluetooth.BluetoothLeAudioCodecConfig);
465    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
466    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void setVolume(@IntRange(from=0, to=255) int);
467    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void unregisterCallback(@NonNull android.bluetooth.BluetoothLeAudio.Callback);
468    field @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public static final String ACTION_LE_AUDIO_ACTIVE_DEVICE_CHANGED = "android.bluetooth.action.LE_AUDIO_ACTIVE_DEVICE_CHANGED";
469    field public static final int AUDIO_LOCATION_BACK_CENTER = 256; // 0x100
470    field public static final int AUDIO_LOCATION_BACK_LEFT = 16; // 0x10
471    field public static final int AUDIO_LOCATION_BACK_RIGHT = 32; // 0x20
472    field public static final int AUDIO_LOCATION_BOTTOM_FRONT_CENTER = 2097152; // 0x200000
473    field public static final int AUDIO_LOCATION_BOTTOM_FRONT_LEFT = 4194304; // 0x400000
474    field public static final int AUDIO_LOCATION_BOTTOM_FRONT_RIGHT = 8388608; // 0x800000
475    field public static final int AUDIO_LOCATION_FRONT_CENTER = 4; // 0x4
476    field public static final int AUDIO_LOCATION_FRONT_LEFT = 1; // 0x1
477    field public static final int AUDIO_LOCATION_FRONT_LEFT_OF_CENTER = 64; // 0x40
478    field public static final int AUDIO_LOCATION_FRONT_LEFT_WIDE = 16777216; // 0x1000000
479    field public static final int AUDIO_LOCATION_FRONT_RIGHT = 2; // 0x2
480    field public static final int AUDIO_LOCATION_FRONT_RIGHT_OF_CENTER = 128; // 0x80
481    field public static final int AUDIO_LOCATION_FRONT_RIGHT_WIDE = 33554432; // 0x2000000
482    field public static final int AUDIO_LOCATION_INVALID = 0; // 0x0
483    field public static final int AUDIO_LOCATION_LEFT_SURROUND = 67108864; // 0x4000000
484    field public static final int AUDIO_LOCATION_LOW_FREQ_EFFECTS_ONE = 8; // 0x8
485    field public static final int AUDIO_LOCATION_LOW_FREQ_EFFECTS_TWO = 512; // 0x200
486    field public static final int AUDIO_LOCATION_RIGHT_SURROUND = 134217728; // 0x8000000
487    field public static final int AUDIO_LOCATION_SIDE_LEFT = 1024; // 0x400
488    field public static final int AUDIO_LOCATION_SIDE_RIGHT = 2048; // 0x800
489    field public static final int AUDIO_LOCATION_TOP_BACK_CENTER = 1048576; // 0x100000
490    field public static final int AUDIO_LOCATION_TOP_BACK_LEFT = 65536; // 0x10000
491    field public static final int AUDIO_LOCATION_TOP_BACK_RIGHT = 131072; // 0x20000
492    field public static final int AUDIO_LOCATION_TOP_CENTER = 32768; // 0x8000
493    field public static final int AUDIO_LOCATION_TOP_FRONT_CENTER = 16384; // 0x4000
494    field public static final int AUDIO_LOCATION_TOP_FRONT_LEFT = 4096; // 0x1000
495    field public static final int AUDIO_LOCATION_TOP_FRONT_RIGHT = 8192; // 0x2000
496    field public static final int AUDIO_LOCATION_TOP_SIDE_LEFT = 262144; // 0x40000
497    field public static final int AUDIO_LOCATION_TOP_SIDE_RIGHT = 524288; // 0x80000
498    field public static final String EXTRA_LE_AUDIO_GROUP_ID = "android.bluetooth.extra.LE_AUDIO_GROUP_ID";
499    field @FlaggedApi("com.android.bluetooth.flags.leaudio_callback_on_group_stream_status") public static final int GROUP_STREAM_STATUS_IDLE = 0; // 0x0
500    field @FlaggedApi("com.android.bluetooth.flags.leaudio_callback_on_group_stream_status") public static final int GROUP_STREAM_STATUS_STREAMING = 1; // 0x1
501  }
502
503  public static interface BluetoothLeAudio.Callback {
504    method public void onCodecConfigChanged(int, @NonNull android.bluetooth.BluetoothLeAudioCodecStatus);
505    method public void onGroupNodeAdded(@NonNull android.bluetooth.BluetoothDevice, int);
506    method public void onGroupNodeRemoved(@NonNull android.bluetooth.BluetoothDevice, int);
507    method public void onGroupStatusChanged(int, int);
508    method @FlaggedApi("com.android.bluetooth.flags.leaudio_callback_on_group_stream_status") public default void onGroupStreamStatusChanged(int, int);
509  }
510
511  public final class BluetoothLeAudioCodecConfigMetadata implements android.os.Parcelable {
512    method public int describeContents();
513    method @NonNull public static android.bluetooth.BluetoothLeAudioCodecConfigMetadata fromRawBytes(@NonNull byte[]);
514    method public long getAudioLocation();
515    method public int getFrameDuration();
516    method public int getOctetsPerFrame();
517    method @NonNull public byte[] getRawMetadata();
518    method public int getSampleRate();
519    method public void writeToParcel(android.os.Parcel, int);
520    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothLeAudioCodecConfigMetadata> CREATOR;
521  }
522
523  public static final class BluetoothLeAudioCodecConfigMetadata.Builder {
524    ctor public BluetoothLeAudioCodecConfigMetadata.Builder();
525    ctor public BluetoothLeAudioCodecConfigMetadata.Builder(@NonNull android.bluetooth.BluetoothLeAudioCodecConfigMetadata);
526    method @NonNull public android.bluetooth.BluetoothLeAudioCodecConfigMetadata build();
527    method @NonNull public android.bluetooth.BluetoothLeAudioCodecConfigMetadata.Builder setAudioLocation(long);
528    method @NonNull public android.bluetooth.BluetoothLeAudioCodecConfigMetadata.Builder setFrameDuration(int);
529    method @NonNull public android.bluetooth.BluetoothLeAudioCodecConfigMetadata.Builder setOctetsPerFrame(int);
530    method @NonNull public android.bluetooth.BluetoothLeAudioCodecConfigMetadata.Builder setSampleRate(int);
531  }
532
533  public final class BluetoothLeAudioContentMetadata implements android.os.Parcelable {
534    method public int describeContents();
535    method @NonNull public static android.bluetooth.BluetoothLeAudioContentMetadata fromRawBytes(@NonNull byte[]);
536    method @Nullable public String getLanguage();
537    method @Nullable public String getProgramInfo();
538    method @NonNull public byte[] getRawMetadata();
539    method public void writeToParcel(android.os.Parcel, int);
540    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothLeAudioContentMetadata> CREATOR;
541  }
542
543  public static final class BluetoothLeAudioContentMetadata.Builder {
544    ctor public BluetoothLeAudioContentMetadata.Builder();
545    ctor public BluetoothLeAudioContentMetadata.Builder(@NonNull android.bluetooth.BluetoothLeAudioContentMetadata);
546    method @NonNull public android.bluetooth.BluetoothLeAudioContentMetadata build();
547    method @NonNull public android.bluetooth.BluetoothLeAudioContentMetadata.Builder setLanguage(@Nullable String);
548    method @NonNull public android.bluetooth.BluetoothLeAudioContentMetadata.Builder setProgramInfo(@Nullable String);
549  }
550
551  public final class BluetoothLeBroadcast implements java.lang.AutoCloseable android.bluetooth.BluetoothProfile {
552    method public void close();
553    method protected void finalize();
554    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothLeBroadcastMetadata> getAllBroadcastMetadata();
555    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
556    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
557    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(@NonNull int[]);
558    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getMaximumNumberOfBroadcasts();
559    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getMaximumStreamsPerBroadcast();
560    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getMaximumSubgroupsPerBroadcast();
561    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean isPlaying(int);
562    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void registerCallback(@NonNull java.util.concurrent.Executor, @NonNull android.bluetooth.BluetoothLeBroadcast.Callback);
563    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void startBroadcast(@NonNull android.bluetooth.BluetoothLeAudioContentMetadata, @Nullable byte[]);
564    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void startBroadcast(@NonNull android.bluetooth.BluetoothLeBroadcastSettings);
565    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void stopBroadcast(int);
566    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void unregisterCallback(@NonNull android.bluetooth.BluetoothLeBroadcast.Callback);
567    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void updateBroadcast(int, @NonNull android.bluetooth.BluetoothLeAudioContentMetadata);
568    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void updateBroadcast(int, @NonNull android.bluetooth.BluetoothLeBroadcastSettings);
569  }
570
571  public static interface BluetoothLeBroadcast.Callback {
572    method public void onBroadcastMetadataChanged(int, @NonNull android.bluetooth.BluetoothLeBroadcastMetadata);
573    method public void onBroadcastStartFailed(int);
574    method public void onBroadcastStarted(int, int);
575    method public void onBroadcastStopFailed(int);
576    method public void onBroadcastStopped(int, int);
577    method public void onBroadcastUpdateFailed(int, int);
578    method public void onBroadcastUpdated(int, int);
579    method public void onPlaybackStarted(int, int);
580    method public void onPlaybackStopped(int, int);
581  }
582
583  public final class BluetoothLeBroadcastAssistant implements java.lang.AutoCloseable android.bluetooth.BluetoothProfile {
584    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void addSource(@NonNull android.bluetooth.BluetoothDevice, @NonNull android.bluetooth.BluetoothLeBroadcastMetadata, boolean);
585    method public void close();
586    method protected void finalize();
587    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothLeBroadcastReceiveState> getAllSources(@NonNull android.bluetooth.BluetoothDevice);
588    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
589    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
590    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
591    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(@NonNull int[]);
592    method public int getMaximumSourceCapacity(@NonNull android.bluetooth.BluetoothDevice);
593    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean isSearchInProgress();
594    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void modifySource(@NonNull android.bluetooth.BluetoothDevice, int, @NonNull android.bluetooth.BluetoothLeBroadcastMetadata);
595    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void registerCallback(@NonNull java.util.concurrent.Executor, @NonNull android.bluetooth.BluetoothLeBroadcastAssistant.Callback);
596    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void removeSource(@NonNull android.bluetooth.BluetoothDevice, int);
597    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
598    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void startSearchingForSources(@NonNull java.util.List<android.bluetooth.le.ScanFilter>);
599    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void stopSearchingForSources();
600    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void unregisterCallback(@NonNull android.bluetooth.BluetoothLeBroadcastAssistant.Callback);
601    field @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.action.CONNECTION_STATE_CHANGED";
602  }
603
604  public static interface BluetoothLeBroadcastAssistant.Callback {
605    method public void onReceiveStateChanged(@NonNull android.bluetooth.BluetoothDevice, int, @NonNull android.bluetooth.BluetoothLeBroadcastReceiveState);
606    method public void onSearchStartFailed(int);
607    method public void onSearchStarted(int);
608    method public void onSearchStopFailed(int);
609    method public void onSearchStopped(int);
610    method public void onSourceAddFailed(@NonNull android.bluetooth.BluetoothDevice, @NonNull android.bluetooth.BluetoothLeBroadcastMetadata, int);
611    method public void onSourceAdded(@NonNull android.bluetooth.BluetoothDevice, int, int);
612    method public void onSourceFound(@NonNull android.bluetooth.BluetoothLeBroadcastMetadata);
613    method @FlaggedApi("com.android.bluetooth.flags.leaudio_broadcast_monitor_source_sync_status") public default void onSourceLost(int);
614    method public void onSourceModified(@NonNull android.bluetooth.BluetoothDevice, int, int);
615    method public void onSourceModifyFailed(@NonNull android.bluetooth.BluetoothDevice, int, int);
616    method public void onSourceRemoveFailed(@NonNull android.bluetooth.BluetoothDevice, int, int);
617    method public void onSourceRemoved(@NonNull android.bluetooth.BluetoothDevice, int, int);
618  }
619
620  public final class BluetoothLeBroadcastChannel implements android.os.Parcelable {
621    method public int describeContents();
622    method public int getChannelIndex();
623    method @NonNull public android.bluetooth.BluetoothLeAudioCodecConfigMetadata getCodecMetadata();
624    method public boolean isSelected();
625    method public void writeToParcel(android.os.Parcel, int);
626    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothLeBroadcastChannel> CREATOR;
627  }
628
629  public static final class BluetoothLeBroadcastChannel.Builder {
630    ctor public BluetoothLeBroadcastChannel.Builder();
631    ctor public BluetoothLeBroadcastChannel.Builder(@NonNull android.bluetooth.BluetoothLeBroadcastChannel);
632    method @NonNull public android.bluetooth.BluetoothLeBroadcastChannel build();
633    method @NonNull public android.bluetooth.BluetoothLeBroadcastChannel.Builder setChannelIndex(int);
634    method @NonNull public android.bluetooth.BluetoothLeBroadcastChannel.Builder setCodecMetadata(@NonNull android.bluetooth.BluetoothLeAudioCodecConfigMetadata);
635    method @NonNull public android.bluetooth.BluetoothLeBroadcastChannel.Builder setSelected(boolean);
636  }
637
638  public final class BluetoothLeBroadcastMetadata implements android.os.Parcelable {
639    method public int describeContents();
640    method public int getAudioConfigQuality();
641    method @Nullable public byte[] getBroadcastCode();
642    method public int getBroadcastId();
643    method @Nullable public String getBroadcastName();
644    method public int getPaSyncInterval();
645    method @IntRange(from=0, to=16777215) public int getPresentationDelayMicros();
646    method @Nullable public android.bluetooth.BluetoothLeAudioContentMetadata getPublicBroadcastMetadata();
647    method @FlaggedApi("com.android.bluetooth.flags.leaudio_broadcast_monitor_source_sync_status") @IntRange(from=0xffffff81, to=127) public int getRssi();
648    method public int getSourceAddressType();
649    method public int getSourceAdvertisingSid();
650    method @NonNull public android.bluetooth.BluetoothDevice getSourceDevice();
651    method @NonNull public java.util.List<android.bluetooth.BluetoothLeBroadcastSubgroup> getSubgroups();
652    method public boolean isEncrypted();
653    method public boolean isPublicBroadcast();
654    method public void writeToParcel(android.os.Parcel, int);
655    field public static final int AUDIO_CONFIG_QUALITY_HIGH = 2; // 0x2
656    field public static final int AUDIO_CONFIG_QUALITY_NONE = 0; // 0x0
657    field public static final int AUDIO_CONFIG_QUALITY_STANDARD = 1; // 0x1
658    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothLeBroadcastMetadata> CREATOR;
659    field public static final int PA_SYNC_INTERVAL_UNKNOWN = 65535; // 0xffff
660    field @FlaggedApi("com.android.bluetooth.flags.leaudio_broadcast_monitor_source_sync_status") public static final int RSSI_UNKNOWN = 127; // 0x7f
661  }
662
663  public static final class BluetoothLeBroadcastMetadata.Builder {
664    ctor public BluetoothLeBroadcastMetadata.Builder();
665    ctor public BluetoothLeBroadcastMetadata.Builder(@NonNull android.bluetooth.BluetoothLeBroadcastMetadata);
666    method @NonNull public android.bluetooth.BluetoothLeBroadcastMetadata.Builder addSubgroup(@NonNull android.bluetooth.BluetoothLeBroadcastSubgroup);
667    method @NonNull public android.bluetooth.BluetoothLeBroadcastMetadata build();
668    method @NonNull public android.bluetooth.BluetoothLeBroadcastMetadata.Builder clearSubgroup();
669    method @NonNull public android.bluetooth.BluetoothLeBroadcastMetadata.Builder setAudioConfigQuality(int);
670    method @NonNull public android.bluetooth.BluetoothLeBroadcastMetadata.Builder setBroadcastCode(@Nullable byte[]);
671    method @NonNull public android.bluetooth.BluetoothLeBroadcastMetadata.Builder setBroadcastId(int);
672    method @NonNull public android.bluetooth.BluetoothLeBroadcastMetadata.Builder setBroadcastName(@Nullable String);
673    method @NonNull public android.bluetooth.BluetoothLeBroadcastMetadata.Builder setEncrypted(boolean);
674    method @NonNull public android.bluetooth.BluetoothLeBroadcastMetadata.Builder setPaSyncInterval(int);
675    method @NonNull public android.bluetooth.BluetoothLeBroadcastMetadata.Builder setPresentationDelayMicros(@IntRange(from=0, to=16777215) int);
676    method @NonNull public android.bluetooth.BluetoothLeBroadcastMetadata.Builder setPublicBroadcast(boolean);
677    method @NonNull public android.bluetooth.BluetoothLeBroadcastMetadata.Builder setPublicBroadcastMetadata(@Nullable android.bluetooth.BluetoothLeAudioContentMetadata);
678    method @FlaggedApi("com.android.bluetooth.flags.leaudio_broadcast_monitor_source_sync_status") @NonNull public android.bluetooth.BluetoothLeBroadcastMetadata.Builder setRssi(@IntRange(from=0xffffff81, to=127) int);
679    method @NonNull public android.bluetooth.BluetoothLeBroadcastMetadata.Builder setSourceAdvertisingSid(int);
680    method @NonNull public android.bluetooth.BluetoothLeBroadcastMetadata.Builder setSourceDevice(@NonNull android.bluetooth.BluetoothDevice, int);
681  }
682
683  public final class BluetoothLeBroadcastReceiveState implements android.os.Parcelable {
684    method public int describeContents();
685    method @Nullable public byte[] getBadCode();
686    method public int getBigEncryptionState();
687    method @NonNull public java.util.List<java.lang.Long> getBisSyncState();
688    method public int getBroadcastId();
689    method public int getNumSubgroups();
690    method public int getPaSyncState();
691    method public int getSourceAddressType();
692    method public int getSourceAdvertisingSid();
693    method @NonNull public android.bluetooth.BluetoothDevice getSourceDevice();
694    method @IntRange(from=0, to=255) public int getSourceId();
695    method @NonNull public java.util.List<android.bluetooth.BluetoothLeAudioContentMetadata> getSubgroupMetadata();
696    method public void writeToParcel(android.os.Parcel, int);
697    field public static final int BIG_ENCRYPTION_STATE_BAD_CODE = 3; // 0x3
698    field public static final int BIG_ENCRYPTION_STATE_CODE_REQUIRED = 1; // 0x1
699    field public static final int BIG_ENCRYPTION_STATE_DECRYPTING = 2; // 0x2
700    field public static final int BIG_ENCRYPTION_STATE_NOT_ENCRYPTED = 0; // 0x0
701    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothLeBroadcastReceiveState> CREATOR;
702    field public static final int PA_SYNC_STATE_FAILED_TO_SYNCHRONIZE = 3; // 0x3
703    field public static final int PA_SYNC_STATE_IDLE = 0; // 0x0
704    field public static final int PA_SYNC_STATE_NO_PAST = 4; // 0x4
705    field public static final int PA_SYNC_STATE_SYNCHRONIZED = 2; // 0x2
706    field public static final int PA_SYNC_STATE_SYNCINFO_REQUEST = 1; // 0x1
707  }
708
709  public final class BluetoothLeBroadcastSettings implements android.os.Parcelable {
710    method public int describeContents();
711    method @Nullable public byte[] getBroadcastCode();
712    method @Nullable public String getBroadcastName();
713    method @Nullable public android.bluetooth.BluetoothLeAudioContentMetadata getPublicBroadcastMetadata();
714    method @NonNull public java.util.List<android.bluetooth.BluetoothLeBroadcastSubgroupSettings> getSubgroupSettings();
715    method public boolean isPublicBroadcast();
716    method public void writeToParcel(android.os.Parcel, int);
717    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothLeBroadcastSettings> CREATOR;
718  }
719
720  public static final class BluetoothLeBroadcastSettings.Builder {
721    ctor public BluetoothLeBroadcastSettings.Builder();
722    ctor public BluetoothLeBroadcastSettings.Builder(@NonNull android.bluetooth.BluetoothLeBroadcastSettings);
723    method @NonNull public android.bluetooth.BluetoothLeBroadcastSettings.Builder addSubgroupSettings(@NonNull android.bluetooth.BluetoothLeBroadcastSubgroupSettings);
724    method @NonNull public android.bluetooth.BluetoothLeBroadcastSettings build();
725    method @NonNull public android.bluetooth.BluetoothLeBroadcastSettings.Builder clearSubgroupSettings();
726    method @NonNull public android.bluetooth.BluetoothLeBroadcastSettings.Builder setBroadcastCode(@Nullable byte[]);
727    method @NonNull public android.bluetooth.BluetoothLeBroadcastSettings.Builder setBroadcastName(@Nullable String);
728    method @NonNull public android.bluetooth.BluetoothLeBroadcastSettings.Builder setPublicBroadcast(boolean);
729    method @NonNull public android.bluetooth.BluetoothLeBroadcastSettings.Builder setPublicBroadcastMetadata(@Nullable android.bluetooth.BluetoothLeAudioContentMetadata);
730  }
731
732  public final class BluetoothLeBroadcastSubgroup implements android.os.Parcelable {
733    method public int describeContents();
734    method @NonNull public java.util.List<android.bluetooth.BluetoothLeBroadcastChannel> getChannels();
735    method public long getCodecId();
736    method @NonNull public android.bluetooth.BluetoothLeAudioCodecConfigMetadata getCodecSpecificConfig();
737    method @NonNull public android.bluetooth.BluetoothLeAudioContentMetadata getContentMetadata();
738    method public boolean hasChannelPreference();
739    method public void writeToParcel(android.os.Parcel, int);
740    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothLeBroadcastSubgroup> CREATOR;
741  }
742
743  public static final class BluetoothLeBroadcastSubgroup.Builder {
744    ctor public BluetoothLeBroadcastSubgroup.Builder();
745    ctor public BluetoothLeBroadcastSubgroup.Builder(@NonNull android.bluetooth.BluetoothLeBroadcastSubgroup);
746    method @NonNull public android.bluetooth.BluetoothLeBroadcastSubgroup.Builder addChannel(@NonNull android.bluetooth.BluetoothLeBroadcastChannel);
747    method @NonNull public android.bluetooth.BluetoothLeBroadcastSubgroup build();
748    method @NonNull public android.bluetooth.BluetoothLeBroadcastSubgroup.Builder clearChannel();
749    method @NonNull public android.bluetooth.BluetoothLeBroadcastSubgroup.Builder setCodecId(long);
750    method @NonNull public android.bluetooth.BluetoothLeBroadcastSubgroup.Builder setCodecSpecificConfig(@NonNull android.bluetooth.BluetoothLeAudioCodecConfigMetadata);
751    method @NonNull public android.bluetooth.BluetoothLeBroadcastSubgroup.Builder setContentMetadata(@NonNull android.bluetooth.BluetoothLeAudioContentMetadata);
752  }
753
754  public final class BluetoothLeBroadcastSubgroupSettings implements android.os.Parcelable {
755    method public int describeContents();
756    method @NonNull public android.bluetooth.BluetoothLeAudioContentMetadata getContentMetadata();
757    method public int getPreferredQuality();
758    method public void writeToParcel(android.os.Parcel, int);
759    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothLeBroadcastSubgroupSettings> CREATOR;
760    field public static final int QUALITY_HIGH = 1; // 0x1
761    field public static final int QUALITY_STANDARD = 0; // 0x0
762  }
763
764  public static final class BluetoothLeBroadcastSubgroupSettings.Builder {
765    ctor public BluetoothLeBroadcastSubgroupSettings.Builder();
766    ctor public BluetoothLeBroadcastSubgroupSettings.Builder(@NonNull android.bluetooth.BluetoothLeBroadcastSubgroupSettings);
767    method @NonNull public android.bluetooth.BluetoothLeBroadcastSubgroupSettings build();
768    method @NonNull public android.bluetooth.BluetoothLeBroadcastSubgroupSettings.Builder setContentMetadata(@NonNull android.bluetooth.BluetoothLeAudioContentMetadata);
769    method @NonNull public android.bluetooth.BluetoothLeBroadcastSubgroupSettings.Builder setPreferredQuality(int);
770  }
771
772  public final class BluetoothMap implements java.lang.AutoCloseable android.bluetooth.BluetoothProfile {
773    method public void close();
774    method protected void finalize();
775    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
776    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
777    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public int getConnectionState(android.bluetooth.BluetoothDevice);
778    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
779    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
780    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.map.profile.action.CONNECTION_STATE_CHANGED";
781  }
782
783  public final class BluetoothMapClient implements java.lang.AutoCloseable android.bluetooth.BluetoothProfile {
784    method public void close();
785    method protected void finalize();
786    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
787    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
788    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
789    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(@NonNull int[]);
790    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.SEND_SMS}) public boolean sendMessage(@NonNull android.bluetooth.BluetoothDevice, @NonNull java.util.Collection<android.net.Uri>, @NonNull String, @Nullable android.app.PendingIntent, @Nullable android.app.PendingIntent);
791    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
792    field @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.mapmce.profile.action.CONNECTION_STATE_CHANGED";
793  }
794
795  public final class BluetoothPan implements android.bluetooth.BluetoothProfile {
796    method protected void finalize();
797    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
798    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
799    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
800    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean isTetheringOn();
801    method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED, android.Manifest.permission.TETHER_PRIVILEGED}) public void setBluetoothTethering(boolean);
802    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
803    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.pan.profile.action.CONNECTION_STATE_CHANGED";
804    field public static final String ACTION_TETHERING_STATE_CHANGED = "android.bluetooth.action.TETHERING_STATE_CHANGED";
805    field public static final String EXTRA_LOCAL_ROLE = "android.bluetooth.pan.extra.LOCAL_ROLE";
806    field public static final String EXTRA_TETHERING_STATE = "android.bluetooth.extra.TETHERING_STATE";
807    field public static final int LOCAL_NAP_ROLE = 1; // 0x1
808    field public static final int LOCAL_PANU_ROLE = 2; // 0x2
809    field public static final int PAN_ROLE_NONE = 0; // 0x0
810    field public static final int REMOTE_NAP_ROLE = 1; // 0x1
811    field public static final int REMOTE_PANU_ROLE = 2; // 0x2
812    field public static final int TETHERING_STATE_OFF = 1; // 0x1
813    field public static final int TETHERING_STATE_ON = 2; // 0x2
814  }
815
816  public class BluetoothPbap implements android.bluetooth.BluetoothProfile {
817    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
818    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
819    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
820    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
821    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.pbap.profile.action.CONNECTION_STATE_CHANGED";
822  }
823
824  public final class BluetoothPbapClient implements java.lang.AutoCloseable android.bluetooth.BluetoothProfile {
825    method public void close();
826    method protected void finalize();
827    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
828    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
829    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionState(@NonNull android.bluetooth.BluetoothDevice);
830    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(@NonNull int[]);
831    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
832    field @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.pbapclient.profile.action.CONNECTION_STATE_CHANGED";
833  }
834
835  public interface BluetoothProfile {
836    method @NonNull public static String getConnectionStateName(int);
837    method @NonNull public static String getProfileName(int);
838    field public static final int A2DP_SINK = 11; // 0xb
839    field public static final int AVRCP_CONTROLLER = 12; // 0xc
840    field public static final int CONNECTION_POLICY_ALLOWED = 100; // 0x64
841    field public static final int CONNECTION_POLICY_FORBIDDEN = 0; // 0x0
842    field public static final int CONNECTION_POLICY_UNKNOWN = -1; // 0xffffffff
843    field public static final int HEADSET_CLIENT = 16; // 0x10
844    field public static final int HID_HOST = 4; // 0x4
845    field public static final int LE_AUDIO_BROADCAST = 26; // 0x1a
846    field public static final int LE_AUDIO_BROADCAST_ASSISTANT = 29; // 0x1d
847    field public static final int MAP = 9; // 0x9
848    field public static final int MAP_CLIENT = 18; // 0x12
849    field public static final int OPP = 20; // 0x14
850    field public static final int PAN = 5; // 0x5
851    field public static final int PBAP = 6; // 0x6
852    field public static final int PBAP_CLIENT = 17; // 0x11
853    field @Deprecated public static final int PRIORITY_OFF = 0; // 0x0
854    field @Deprecated public static final int PRIORITY_ON = 100; // 0x64
855    field public static final int VOLUME_CONTROL = 23; // 0x17
856  }
857
858  public final class BluetoothQualityReport implements android.os.Parcelable {
859    method public int describeContents();
860    method @Nullable public android.bluetooth.BluetoothClass getBluetoothClass();
861    method @Nullable public android.bluetooth.BluetoothQualityReport.BqrCommon getBqrCommon();
862    method @Nullable public android.os.Parcelable getBqrEvent();
863    method public int getLmpSubVersion();
864    method public int getLmpVersion();
865    method public int getManufacturerId();
866    method public int getQualityReportId();
867    method @Nullable public String getRemoteAddress();
868    method @Nullable public String getRemoteName();
869    method @NonNull public static String qualityReportIdToString(int);
870    method public void writeToParcel(@NonNull android.os.Parcel, int);
871    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothQualityReport> CREATOR;
872    field public static final int QUALITY_REPORT_ID_A2DP_CHOPPY = 3; // 0x3
873    field public static final int QUALITY_REPORT_ID_APPROACH_LSTO = 2; // 0x2
874    field public static final int QUALITY_REPORT_ID_CONN_FAIL = 8; // 0x8
875    field public static final int QUALITY_REPORT_ID_MONITOR = 1; // 0x1
876    field public static final int QUALITY_REPORT_ID_SCO_CHOPPY = 4; // 0x4
877  }
878
879  public static final class BluetoothQualityReport.BqrCommon implements android.os.Parcelable {
880    method @NonNull public static String connectionRoleToString(int);
881    method public int describeContents();
882    method public int getAfhSelectUnidealChannelCount();
883    method public int getCalFailedItemCount();
884    method public int getConnectionHandle();
885    method public int getConnectionRole();
886    method public long getFlowOffCount();
887    method public long getLastFlowOnTimestamp();
888    method public long getLastTxAckTimestamp();
889    method public int getLsto();
890    method public long getNakCount();
891    method public long getNoRxCount();
892    method public long getOverflowCount();
893    method public int getPacketType();
894    method public long getPiconetClock();
895    method public long getRetransmissionCount();
896    method public int getRssi();
897    method public int getSnr();
898    method public int getTxPowerLevel();
899    method public long getUnderflowCount();
900    method public int getUnusedAfhChannelCount();
901    method @Nullable public static String packetTypeToString(int);
902    method public void writeToParcel(@NonNull android.os.Parcel, int);
903    field public static final int CONNECTION_ROLE_CENTRAL = 0; // 0x0
904    field public static final int CONNECTION_ROLE_PERIPHERAL = 1; // 0x1
905    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothQualityReport.BqrCommon> CREATOR;
906  }
907
908  public static final class BluetoothQualityReport.BqrConnectFail implements android.os.Parcelable {
909    method @NonNull public static String connectFailIdToString(int);
910    method public int describeContents();
911    method public int getFailReason();
912    method public void writeToParcel(@NonNull android.os.Parcel, int);
913    field public static final int CONNECT_FAIL_ID_ACL_ALREADY_EXIST = 11; // 0xb
914    field public static final int CONNECT_FAIL_ID_CONNECTION_TIMEOUT = 8; // 0x8
915    field public static final int CONNECT_FAIL_ID_CONTROLLER_BUSY = 58; // 0x3a
916    field public static final int CONNECT_FAIL_ID_NO_ERROR = 0; // 0x0
917    field public static final int CONNECT_FAIL_ID_PAGE_TIMEOUT = 4; // 0x4
918    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothQualityReport.BqrConnectFail> CREATOR;
919  }
920
921  public static final class BluetoothQualityReport.BqrVsA2dpChoppy implements android.os.Parcelable {
922    method public int describeContents();
923    method public int getAclTxQueueLength();
924    method public long getArrivalTime();
925    method public int getGlitchCount();
926    method public int getLinkQuality();
927    method public int getRxCxmDenials();
928    method public long getScheduleTime();
929    method public int getTxCxmDenials();
930    method @Nullable public static String linkQualityToString(int);
931    method public void writeToParcel(@NonNull android.os.Parcel, int);
932    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothQualityReport.BqrVsA2dpChoppy> CREATOR;
933  }
934
935  public static final class BluetoothQualityReport.BqrVsLsto implements android.os.Parcelable {
936    method @Nullable public static String connStateToString(int);
937    method public int describeContents();
938    method public long getBasebandStats();
939    method public int getConnState();
940    method public int getCxmDenials();
941    method public long getLastTxAckTimestamp();
942    method public long getNativeClock();
943    method public int getRfLoss();
944    method public long getSlotsUsed();
945    method public int getTxSkipped();
946    method public void writeToParcel(@NonNull android.os.Parcel, int);
947    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothQualityReport.BqrVsLsto> CREATOR;
948  }
949
950  public static final class BluetoothQualityReport.BqrVsScoChoppy implements android.os.Parcelable {
951    method @Nullable public static String airFormatToString(int);
952    method public int describeContents();
953    method public int getAirFormat();
954    method public int getGlitchCount();
955    method public int getGoodRxFrameCount();
956    method public int getInstanceCount();
957    method public int getIntervalEsco();
958    method public int getLateDispatch();
959    method public int getLpaIntrMiss();
960    method public int getMicIntrMiss();
961    method public int getMissedInstanceCount();
962    method public int getPlcDiscardCount();
963    method public int getPlcFillCount();
964    method public int getRxCxmDenials();
965    method public int getRxRetransmitSlotCount();
966    method public int getSprIntrMiss();
967    method public int getTxAbortCount();
968    method public int getTxCxmDenials();
969    method public int getTxRetransmitSlotCount();
970    method public int getWindowEsco();
971    method public void writeToParcel(@NonNull android.os.Parcel, int);
972    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothQualityReport.BqrVsScoChoppy> CREATOR;
973  }
974
975  public static final class BluetoothQualityReport.Builder {
976    ctor public BluetoothQualityReport.Builder(@NonNull byte[]);
977    method @NonNull public android.bluetooth.BluetoothQualityReport build();
978    method @NonNull public android.bluetooth.BluetoothQualityReport.Builder setBluetoothClass(@Nullable android.bluetooth.BluetoothClass);
979    method @NonNull public android.bluetooth.BluetoothQualityReport.Builder setLmpSubVersion(int);
980    method @NonNull public android.bluetooth.BluetoothQualityReport.Builder setLmpVersion(int);
981    method @NonNull public android.bluetooth.BluetoothQualityReport.Builder setManufacturerId(int);
982    method @NonNull public android.bluetooth.BluetoothQualityReport.Builder setRemoteAddress(@Nullable String);
983    method @NonNull public android.bluetooth.BluetoothQualityReport.Builder setRemoteName(@Nullable String);
984  }
985
986  public final class BluetoothSap implements java.lang.AutoCloseable android.bluetooth.BluetoothProfile {
987    method public void close();
988    method protected void finalize();
989    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
990    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
991    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public int getConnectionState(android.bluetooth.BluetoothDevice);
992    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
993    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
994    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.sap.profile.action.CONNECTION_STATE_CHANGED";
995  }
996
997  public final class BluetoothSinkAudioPolicy implements android.os.Parcelable {
998    method public int describeContents();
999    method public int getActiveDevicePolicyAfterConnection();
1000    method public int getCallEstablishPolicy();
1001    method public int getInBandRingtonePolicy();
1002    method public void writeToParcel(@NonNull android.os.Parcel, int);
1003    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BluetoothSinkAudioPolicy> CREATOR;
1004    field public static final int POLICY_ALLOWED = 1; // 0x1
1005    field public static final int POLICY_NOT_ALLOWED = 2; // 0x2
1006    field public static final int POLICY_UNCONFIGURED = 0; // 0x0
1007  }
1008
1009  public static final class BluetoothSinkAudioPolicy.Builder {
1010    ctor public BluetoothSinkAudioPolicy.Builder();
1011    ctor public BluetoothSinkAudioPolicy.Builder(@NonNull android.bluetooth.BluetoothSinkAudioPolicy);
1012    method @NonNull public android.bluetooth.BluetoothSinkAudioPolicy build();
1013    method @NonNull public android.bluetooth.BluetoothSinkAudioPolicy.Builder setActiveDevicePolicyAfterConnection(int);
1014    method @NonNull public android.bluetooth.BluetoothSinkAudioPolicy.Builder setCallEstablishPolicy(int);
1015    method @NonNull public android.bluetooth.BluetoothSinkAudioPolicy.Builder setInBandRingtonePolicy(int);
1016  }
1017
1018  public final class BluetoothSocket implements java.io.Closeable {
1019    method @FlaggedApi("com.android.bluetooth.flags.bt_socket_api_l2cap_cid") @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getL2capLocalChannelId() throws java.io.IOException;
1020    method @FlaggedApi("com.android.bluetooth.flags.bt_socket_api_l2cap_cid") @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getL2capRemoteChannelId() throws java.io.IOException;
1021  }
1022
1023  public final class BluetoothStatusCodes {
1024    field public static final int ALLOWED = 400; // 0x190
1025    field public static final int ERROR_ALREADY_IN_TARGET_STATE = 26; // 0x1a
1026    field public static final int ERROR_ANOTHER_ACTIVE_OOB_REQUEST = 1000; // 0x3e8
1027    field public static final int ERROR_ANOTHER_ACTIVE_REQUEST = 29; // 0x1d
1028    field public static final int ERROR_AUDIO_DEVICE_ALREADY_CONNECTED = 1116; // 0x45c
1029    field public static final int ERROR_AUDIO_DEVICE_ALREADY_DISCONNECTED = 1117; // 0x45d
1030    field public static final int ERROR_AUDIO_ROUTE_BLOCKED = 1118; // 0x45e
1031    field public static final int ERROR_BAD_PARAMETERS = 21; // 0x15
1032    field public static final int ERROR_CALLBACK_NOT_REGISTERED = 28; // 0x1c
1033    field public static final int ERROR_CALL_ACTIVE = 1119; // 0x45f
1034    field public static final int ERROR_CSIP_GROUP_LOCKED_BY_OTHER = 1208; // 0x4b8
1035    field public static final int ERROR_CSIP_INVALID_GROUP_ID = 1207; // 0x4b7
1036    field public static final int ERROR_CSIP_LOCKED_GROUP_MEMBER_LOST = 1209; // 0x4b9
1037    field public static final int ERROR_DISTANCE_MEASUREMENT_INTERNAL = 1301; // 0x515
1038    field public static final int ERROR_HAP_INVALID_PRESET_INDEX = 1211; // 0x4bb
1039    field public static final int ERROR_HAP_PRESET_NAME_TOO_LONG = 1210; // 0x4ba
1040    field public static final int ERROR_HARDWARE_GENERIC = 20; // 0x14
1041    field public static final int ERROR_LE_BROADCAST_ASSISTANT_DUPLICATE_ADDITION = 1203; // 0x4b3
1042    field public static final int ERROR_LE_BROADCAST_ASSISTANT_INVALID_SOURCE_ID = 1202; // 0x4b2
1043    field public static final int ERROR_LE_BROADCAST_INVALID_BROADCAST_ID = 1200; // 0x4b0
1044    field public static final int ERROR_LE_BROADCAST_INVALID_CODE = 1201; // 0x4b1
1045    field public static final int ERROR_LE_CONTENT_METADATA_INVALID_LANGUAGE = 1205; // 0x4b5
1046    field public static final int ERROR_LE_CONTENT_METADATA_INVALID_OTHER = 1206; // 0x4b6
1047    field public static final int ERROR_LE_CONTENT_METADATA_INVALID_PROGRAM_INFO = 1204; // 0x4b4
1048    field public static final int ERROR_LOCAL_NOT_ENOUGH_RESOURCES = 22; // 0x16
1049    field public static final int ERROR_NOT_ACTIVE_DEVICE = 12; // 0xc
1050    field public static final int ERROR_NOT_DUAL_MODE_AUDIO_DEVICE = 3000; // 0xbb8
1051    field public static final int ERROR_NO_ACTIVE_DEVICES = 13; // 0xd
1052    field public static final int ERROR_NO_LE_CONNECTION = 1300; // 0x514
1053    field public static final int ERROR_PROFILE_NOT_CONNECTED = 14; // 0xe
1054    field public static final int ERROR_REMOTE_LINK_ERROR = 25; // 0x19
1055    field public static final int ERROR_REMOTE_NOT_ENOUGH_RESOURCES = 23; // 0x17
1056    field public static final int ERROR_REMOTE_OPERATION_NOT_SUPPORTED = 27; // 0x1b
1057    field public static final int ERROR_REMOTE_OPERATION_REJECTED = 24; // 0x18
1058    field public static final int ERROR_TIMEOUT = 15; // 0xf
1059    field public static final int NOT_ALLOWED = 401; // 0x191
1060    field public static final int REASON_LOCAL_APP_REQUEST = 16; // 0x10
1061    field public static final int REASON_LOCAL_STACK_REQUEST = 17; // 0x11
1062    field public static final int REASON_REMOTE_REQUEST = 18; // 0x12
1063    field public static final int REASON_SYSTEM_POLICY = 19; // 0x13
1064    field public static final int RFCOMM_LISTENER_FAILED_TO_CLOSE_SERVER_SOCKET = 2004; // 0x7d4
1065    field public static final int RFCOMM_LISTENER_FAILED_TO_CREATE_SERVER_SOCKET = 2003; // 0x7d3
1066    field public static final int RFCOMM_LISTENER_NO_SOCKET_AVAILABLE = 2005; // 0x7d5
1067    field public static final int RFCOMM_LISTENER_OPERATION_FAILED_DIFFERENT_APP = 2002; // 0x7d2
1068    field public static final int RFCOMM_LISTENER_OPERATION_FAILED_NO_MATCHING_SERVICE_RECORD = 2001; // 0x7d1
1069    field public static final int RFCOMM_LISTENER_START_FAILED_UUID_IN_USE = 2000; // 0x7d0
1070  }
1071
1072  public final class BluetoothUuid {
1073    method public static boolean containsAnyUuid(@Nullable android.os.ParcelUuid[], @Nullable android.os.ParcelUuid[]);
1074    method @NonNull public static android.os.ParcelUuid parseUuidFrom(@Nullable byte[]);
1075    field @NonNull public static final android.os.ParcelUuid A2DP_SINK;
1076    field @NonNull public static final android.os.ParcelUuid A2DP_SOURCE;
1077    field @NonNull public static final android.os.ParcelUuid ADV_AUDIO_DIST;
1078    field @NonNull public static final android.os.ParcelUuid AVRCP;
1079    field @NonNull public static final android.os.ParcelUuid AVRCP_CONTROLLER;
1080    field @NonNull public static final android.os.ParcelUuid AVRCP_TARGET;
1081    field @NonNull public static final android.os.ParcelUuid BASE_UUID;
1082    field @NonNull public static final android.os.ParcelUuid BASS;
1083    field @NonNull public static final android.os.ParcelUuid BNEP;
1084    field @NonNull public static final android.os.ParcelUuid CAP;
1085    field @NonNull public static final android.os.ParcelUuid COORDINATED_SET;
1086    field @NonNull public static final android.os.ParcelUuid DIP;
1087    field @NonNull public static final android.os.ParcelUuid GENERIC_MEDIA_CONTROL;
1088    field @NonNull public static final android.os.ParcelUuid HAS;
1089    field @NonNull public static final android.os.ParcelUuid HEARING_AID;
1090    field @NonNull public static final android.os.ParcelUuid HFP;
1091    field @NonNull public static final android.os.ParcelUuid HFP_AG;
1092    field @NonNull public static final android.os.ParcelUuid HID;
1093    field @NonNull public static final android.os.ParcelUuid HOGP;
1094    field @NonNull public static final android.os.ParcelUuid HSP;
1095    field @NonNull public static final android.os.ParcelUuid HSP_AG;
1096    field @NonNull public static final android.os.ParcelUuid LE_AUDIO;
1097    field @NonNull public static final android.os.ParcelUuid MAP;
1098    field @NonNull public static final android.os.ParcelUuid MAS;
1099    field @NonNull public static final android.os.ParcelUuid MEDIA_CONTROL;
1100    field @FlaggedApi("com.android.bluetooth.flags.mfi_has_uuid") @NonNull public static final android.os.ParcelUuid MFI_HAS;
1101    field @NonNull public static final android.os.ParcelUuid MNS;
1102    field @NonNull public static final android.os.ParcelUuid NAP;
1103    field @NonNull public static final android.os.ParcelUuid OBEX_OBJECT_PUSH;
1104    field @NonNull public static final android.os.ParcelUuid PANU;
1105    field @NonNull public static final android.os.ParcelUuid PBAP_PCE;
1106    field @NonNull public static final android.os.ParcelUuid PBAP_PSE;
1107    field @NonNull public static final android.os.ParcelUuid SAP;
1108    field public static final int UUID_BYTES_128_BIT = 16; // 0x10
1109    field public static final int UUID_BYTES_16_BIT = 2; // 0x2
1110    field public static final int UUID_BYTES_32_BIT = 4; // 0x4
1111    field @NonNull public static final android.os.ParcelUuid VOLUME_CONTROL;
1112  }
1113
1114  public final class BluetoothVolumeControl implements java.lang.AutoCloseable android.bluetooth.BluetoothProfile {
1115    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public void close();
1116    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) protected void finalize();
1117    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
1118    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice);
1119    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public int getConnectionState(android.bluetooth.BluetoothDevice);
1120    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public java.util.List<android.bluetooth.BluetoothDevice> getDevicesMatchingConnectionStates(int[]);
1121    method @FlaggedApi("com.android.bluetooth.flags.leaudio_multiple_vocs_instances_api") @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getNumberOfVolumeOffsetInstances(@NonNull android.bluetooth.BluetoothDevice);
1122    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean isVolumeOffsetAvailable(@NonNull android.bluetooth.BluetoothDevice);
1123    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void registerCallback(@NonNull java.util.concurrent.Executor, @NonNull android.bluetooth.BluetoothVolumeControl.Callback);
1124    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
1125    method @FlaggedApi("com.android.bluetooth.flags.leaudio_broadcast_volume_control_for_connected_devices") @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void setDeviceVolume(@NonNull android.bluetooth.BluetoothDevice, @IntRange(from=0, to=255) int, boolean);
1126    method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void setVolumeOffset(@NonNull android.bluetooth.BluetoothDevice, @IntRange(from=0xffffff01, to=255) int);
1127    method @FlaggedApi("com.android.bluetooth.flags.leaudio_multiple_vocs_instances_api") @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void setVolumeOffset(@NonNull android.bluetooth.BluetoothDevice, @IntRange(from=1, to=255) int, @IntRange(from=0xffffff01, to=255) int);
1128    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public void unregisterCallback(@NonNull android.bluetooth.BluetoothVolumeControl.Callback);
1129    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.volume-control.profile.action.CONNECTION_STATE_CHANGED";
1130  }
1131
1132  public static interface BluetoothVolumeControl.Callback {
1133    method @FlaggedApi("com.android.bluetooth.flags.leaudio_broadcast_volume_control_for_connected_devices") public default void onDeviceVolumeChanged(@NonNull android.bluetooth.BluetoothDevice, @IntRange(from=0, to=255) int);
1134    method @FlaggedApi("com.android.bluetooth.flags.leaudio_multiple_vocs_instances_api") public default void onVolumeOffsetAudioDescriptionChanged(@NonNull android.bluetooth.BluetoothDevice, @IntRange(from=1, to=255) int, @NonNull String);
1135    method @FlaggedApi("com.android.bluetooth.flags.leaudio_multiple_vocs_instances_api") public default void onVolumeOffsetAudioLocationChanged(@NonNull android.bluetooth.BluetoothDevice, @IntRange(from=1, to=255) int, @IntRange(from=0xffffff01, to=255) int);
1136    method @Deprecated public default void onVolumeOffsetChanged(@NonNull android.bluetooth.BluetoothDevice, @IntRange(from=0xffffff01, to=255) int);
1137    method @FlaggedApi("com.android.bluetooth.flags.leaudio_multiple_vocs_instances_api") public default void onVolumeOffsetChanged(@NonNull android.bluetooth.BluetoothDevice, @IntRange(from=1, to=255) int, @IntRange(from=0xffffff01, to=255) int);
1138  }
1139
1140  public final class BufferConstraint implements android.os.Parcelable {
1141    ctor public BufferConstraint(int, int, int);
1142    method public int describeContents();
1143    method public int getDefaultMillis();
1144    method public int getMaxMillis();
1145    method public int getMinMillis();
1146    method public void writeToParcel(@NonNull android.os.Parcel, int);
1147    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BufferConstraint> CREATOR;
1148  }
1149
1150  public final class BufferConstraints implements android.os.Parcelable {
1151    ctor public BufferConstraints(@NonNull java.util.List<android.bluetooth.BufferConstraint>);
1152    method public int describeContents();
1153    method @Nullable public android.bluetooth.BufferConstraint forCodec(int);
1154    method public void writeToParcel(@NonNull android.os.Parcel, int);
1155    field public static final int BUFFER_CODEC_MAX_NUM = 32; // 0x20
1156    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.BufferConstraints> CREATOR;
1157  }
1158
1159  public final class OobData implements android.os.Parcelable {
1160    method public int describeContents();
1161    method @NonNull public byte[] getClassOfDevice();
1162    method @NonNull public byte[] getClassicLength();
1163    method @NonNull public byte[] getConfirmationHash();
1164    method @NonNull public byte[] getDeviceAddressWithType();
1165    method @Nullable public byte[] getDeviceName();
1166    method @Nullable public byte[] getLeAppearance();
1167    method @NonNull public int getLeDeviceRole();
1168    method @NonNull public int getLeFlags();
1169    method @Nullable public byte[] getLeTemporaryKey();
1170    method @NonNull public byte[] getRandomizerHash();
1171    method public void writeToParcel(@NonNull android.os.Parcel, int);
1172    field public static final int CLASS_OF_DEVICE_OCTETS = 3; // 0x3
1173    field public static final int CONFIRMATION_OCTETS = 16; // 0x10
1174    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.OobData> CREATOR;
1175    field public static final int DEVICE_ADDRESS_OCTETS = 7; // 0x7
1176    field public static final int LE_APPEARANCE_OCTETS = 2; // 0x2
1177    field public static final int LE_DEVICE_FLAG_OCTETS = 1; // 0x1
1178    field public static final int LE_DEVICE_ROLE_BOTH_PREFER_CENTRAL = 3; // 0x3
1179    field public static final int LE_DEVICE_ROLE_BOTH_PREFER_PERIPHERAL = 2; // 0x2
1180    field public static final int LE_DEVICE_ROLE_CENTRAL_ONLY = 1; // 0x1
1181    field public static final int LE_DEVICE_ROLE_OCTETS = 1; // 0x1
1182    field public static final int LE_DEVICE_ROLE_PERIPHERAL_ONLY = 0; // 0x0
1183    field public static final int LE_FLAG_BREDR_NOT_SUPPORTED = 2; // 0x2
1184    field public static final int LE_FLAG_GENERAL_DISCOVERY_MODE = 1; // 0x1
1185    field public static final int LE_FLAG_LIMITED_DISCOVERY_MODE = 0; // 0x0
1186    field public static final int LE_FLAG_SIMULTANEOUS_CONTROLLER = 3; // 0x3
1187    field public static final int LE_FLAG_SIMULTANEOUS_HOST = 4; // 0x4
1188    field public static final int LE_TK_OCTETS = 16; // 0x10
1189    field public static final int OOB_LENGTH_OCTETS = 2; // 0x2
1190    field public static final int RANDOMIZER_OCTETS = 16; // 0x10
1191  }
1192
1193  public static final class OobData.ClassicBuilder {
1194    ctor public OobData.ClassicBuilder(@NonNull byte[], @NonNull byte[], @NonNull byte[]);
1195    method @NonNull public android.bluetooth.OobData build();
1196    method @NonNull public android.bluetooth.OobData.ClassicBuilder setClassOfDevice(@NonNull byte[]);
1197    method @NonNull public android.bluetooth.OobData.ClassicBuilder setDeviceName(@NonNull byte[]);
1198    method @NonNull public android.bluetooth.OobData.ClassicBuilder setRandomizerHash(@NonNull byte[]);
1199  }
1200
1201  public static final class OobData.LeBuilder {
1202    ctor public OobData.LeBuilder(@NonNull byte[], @NonNull byte[], int);
1203    method @NonNull public android.bluetooth.OobData build();
1204    method @NonNull public android.bluetooth.OobData.LeBuilder setDeviceName(@NonNull byte[]);
1205    method @NonNull public android.bluetooth.OobData.LeBuilder setLeFlags(int);
1206    method @NonNull public android.bluetooth.OobData.LeBuilder setLeTemporaryKey(@NonNull byte[]);
1207    method @NonNull public android.bluetooth.OobData.LeBuilder setRandomizerHash(@NonNull byte[]);
1208  }
1209
1210  public final class UidTraffic implements java.lang.Cloneable android.os.Parcelable {
1211    method public android.bluetooth.UidTraffic clone();
1212    method public int describeContents();
1213    method public long getRxBytes();
1214    method public long getTxBytes();
1215    method public int getUid();
1216    method public void writeToParcel(android.os.Parcel, int);
1217    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.UidTraffic> CREATOR;
1218  }
1219
1220}
1221
1222package android.bluetooth.le {
1223
1224  public final class AdvertiseSettings implements android.os.Parcelable {
1225    method public int getOwnAddressType();
1226  }
1227
1228  public static final class AdvertiseSettings.Builder {
1229    method @NonNull public android.bluetooth.le.AdvertiseSettings.Builder setOwnAddressType(int);
1230  }
1231
1232  public final class AdvertisingSet {
1233    method public int getAdvertiserId();
1234  }
1235
1236  public final class AdvertisingSetParameters implements android.os.Parcelable {
1237    method public int getOwnAddressType();
1238    field public static final int ADDRESS_TYPE_DEFAULT = -1; // 0xffffffff
1239    field public static final int ADDRESS_TYPE_PUBLIC = 0; // 0x0
1240    field public static final int ADDRESS_TYPE_RANDOM = 1; // 0x1
1241    field public static final int ADDRESS_TYPE_RANDOM_NON_RESOLVABLE = 2; // 0x2
1242  }
1243
1244  public static final class AdvertisingSetParameters.Builder {
1245    method @NonNull public android.bluetooth.le.AdvertisingSetParameters.Builder setOwnAddressType(int);
1246  }
1247
1248  public final class BluetoothLeAdvertiser {
1249    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_PRIVILEGED, android.Manifest.permission.BLUETOOTH_ADVERTISE, android.Manifest.permission.BLUETOOTH_CONNECT}) public void startAdvertisingSet(@NonNull android.bluetooth.le.AdvertisingSetParameters, @Nullable android.bluetooth.le.AdvertiseData, @Nullable android.bluetooth.le.AdvertiseData, @Nullable android.bluetooth.le.PeriodicAdvertisingParameters, @Nullable android.bluetooth.le.AdvertiseData, int, int, @Nullable android.bluetooth.BluetoothGattServer, @Nullable android.bluetooth.le.AdvertisingSetCallback, @NonNull android.os.Handler);
1250  }
1251
1252  public final class BluetoothLeScanner {
1253    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.UPDATE_DEVICE_STATS}) public void startScanFromSource(android.os.WorkSource, android.bluetooth.le.ScanCallback);
1254    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.UPDATE_DEVICE_STATS}) public void startScanFromSource(java.util.List<android.bluetooth.le.ScanFilter>, android.bluetooth.le.ScanSettings, android.os.WorkSource, android.bluetooth.le.ScanCallback);
1255    method @Deprecated @RequiresPermission(android.Manifest.permission.BLUETOOTH_SCAN) public void startTruncatedScan(java.util.List<android.bluetooth.le.TruncatedFilter>, android.bluetooth.le.ScanSettings, android.bluetooth.le.ScanCallback);
1256  }
1257
1258  @FlaggedApi("com.android.bluetooth.flags.channel_sounding") public final class ChannelSoundingParams implements android.os.Parcelable {
1259    method public int describeContents();
1260    method public int getCsSecurityLevel();
1261    method public int getLocationType();
1262    method public int getSightType();
1263    method public void writeToParcel(@NonNull android.os.Parcel, int);
1264    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.ChannelSoundingParams> CREATOR;
1265    field public static final int CS_SECURITY_LEVEL_FOUR = 4; // 0x4
1266    field public static final int CS_SECURITY_LEVEL_ONE = 1; // 0x1
1267    field public static final int CS_SECURITY_LEVEL_THREE = 3; // 0x3
1268    field public static final int CS_SECURITY_LEVEL_TWO = 2; // 0x2
1269    field public static final int CS_SECURITY_LEVEL_UNKNOWN = 0; // 0x0
1270    field public static final int LOCATION_TYPE_INDOOR = 1; // 0x1
1271    field public static final int LOCATION_TYPE_OUTDOOR = 2; // 0x2
1272    field public static final int LOCATION_TYPE_UNKNOWN = 0; // 0x0
1273    field public static final int SIGHT_TYPE_LINE_OF_SIGHT = 1; // 0x1
1274    field public static final int SIGHT_TYPE_NON_LINE_OF_SIGHT = 2; // 0x2
1275    field public static final int SIGHT_TYPE_UNKNOWN = 0; // 0x0
1276  }
1277
1278  public static final class ChannelSoundingParams.Builder {
1279    ctor public ChannelSoundingParams.Builder();
1280    method @NonNull public android.bluetooth.le.ChannelSoundingParams build();
1281    method @NonNull public android.bluetooth.le.ChannelSoundingParams.Builder setCsSecurityLevel(int);
1282    method @NonNull public android.bluetooth.le.ChannelSoundingParams.Builder setLocationType(int);
1283    method @NonNull public android.bluetooth.le.ChannelSoundingParams.Builder setSightType(int);
1284  }
1285
1286  public final class DistanceMeasurementManager {
1287    method @FlaggedApi("com.android.bluetooth.flags.channel_sounding") @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getChannelSoundingMaxSupportedSecurityLevel(@NonNull android.bluetooth.BluetoothDevice);
1288    method @FlaggedApi("com.android.bluetooth.flags.channel_sounding") @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int getLocalChannelSoundingMaxSupportedSecurityLevel();
1289    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.le.DistanceMeasurementMethod> getSupportedMethods();
1290    method @Nullable @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public android.os.CancellationSignal startMeasurementSession(@NonNull android.bluetooth.le.DistanceMeasurementParams, @NonNull java.util.concurrent.Executor, @NonNull android.bluetooth.le.DistanceMeasurementSession.Callback);
1291  }
1292
1293  public final class DistanceMeasurementMethod implements android.os.Parcelable {
1294    method public int describeContents();
1295    method public double getId();
1296    method public boolean isAltitudeAngleSupported();
1297    method public boolean isAzimuthAngleSupported();
1298    method public void writeToParcel(android.os.Parcel, int);
1299    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.DistanceMeasurementMethod> CREATOR;
1300    field public static final int DISTANCE_MEASUREMENT_METHOD_AUTO = 0; // 0x0
1301    field @FlaggedApi("com.android.bluetooth.flags.channel_sounding") public static final int DISTANCE_MEASUREMENT_METHOD_CHANNEL_SOUNDING = 2; // 0x2
1302    field public static final int DISTANCE_MEASUREMENT_METHOD_RSSI = 1; // 0x1
1303  }
1304
1305  public static final class DistanceMeasurementMethod.Builder {
1306    ctor public DistanceMeasurementMethod.Builder(int);
1307    method @NonNull public android.bluetooth.le.DistanceMeasurementMethod build();
1308    method @NonNull public android.bluetooth.le.DistanceMeasurementMethod.Builder setAltitudeAngleSupported(boolean);
1309    method @NonNull public android.bluetooth.le.DistanceMeasurementMethod.Builder setAzimuthAngleSupported(boolean);
1310  }
1311
1312  public final class DistanceMeasurementParams implements android.os.Parcelable {
1313    method public int describeContents();
1314    method @FlaggedApi("com.android.bluetooth.flags.channel_sounding") @Nullable public android.bluetooth.le.ChannelSoundingParams getChannelSoundingParams();
1315    method public static int getDefaultDurationSeconds();
1316    method @NonNull public android.bluetooth.BluetoothDevice getDevice();
1317    method @IntRange(from=0) public int getDurationSeconds();
1318    method public int getFrequency();
1319    method public static int getMaxDurationSeconds();
1320    method public int getMethodId();
1321    method public void writeToParcel(android.os.Parcel, int);
1322    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.DistanceMeasurementParams> CREATOR;
1323    field public static final int REPORT_FREQUENCY_HIGH = 2; // 0x2
1324    field public static final int REPORT_FREQUENCY_LOW = 0; // 0x0
1325    field public static final int REPORT_FREQUENCY_MEDIUM = 1; // 0x1
1326  }
1327
1328  public static final class DistanceMeasurementParams.Builder {
1329    ctor public DistanceMeasurementParams.Builder(@NonNull android.bluetooth.BluetoothDevice);
1330    method @NonNull public android.bluetooth.le.DistanceMeasurementParams build();
1331    method @FlaggedApi("com.android.bluetooth.flags.channel_sounding") @NonNull public android.bluetooth.le.DistanceMeasurementParams.Builder setChannelSoundingParams(@NonNull android.bluetooth.le.ChannelSoundingParams);
1332    method @NonNull public android.bluetooth.le.DistanceMeasurementParams.Builder setDurationSeconds(@IntRange(from=0) int);
1333    method @NonNull public android.bluetooth.le.DistanceMeasurementParams.Builder setFrequency(int);
1334    method @NonNull public android.bluetooth.le.DistanceMeasurementParams.Builder setMethodId(int);
1335  }
1336
1337  public final class DistanceMeasurementResult implements android.os.Parcelable {
1338    method public int describeContents();
1339    method @FloatRange(from=-90.0, to=90.0) public double getAltitudeAngle();
1340    method @FloatRange(from=0.0, to=360.0) public double getAzimuthAngle();
1341    method @FlaggedApi("com.android.bluetooth.flags.channel_sounding") @FloatRange(from=0.0, to=1.0) public double getConfidenceLevel();
1342    method @FlaggedApi("com.android.bluetooth.flags.channel_sounding") public double getDelaySpreadMeters();
1343    method @FlaggedApi("com.android.bluetooth.flags.channel_sounding") public int getDetectedAttackLevel();
1344    method public double getErrorAltitudeAngle();
1345    method public double getErrorAzimuthAngle();
1346    method @FloatRange(from=0.0) public double getErrorMeters();
1347    method public double getResultMeters();
1348    method @FlaggedApi("com.android.bluetooth.flags.channel_sounding") public double getVelocityMetersPerSecond();
1349    method public void writeToParcel(android.os.Parcel, int);
1350    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.DistanceMeasurementResult> CREATOR;
1351    field @FlaggedApi("com.android.bluetooth.flags.channel_sounding") public static final int NADM_ATTACK_IS_EXTREMELY_LIKELY = 6; // 0x6
1352    field @FlaggedApi("com.android.bluetooth.flags.channel_sounding") public static final int NADM_ATTACK_IS_EXTREMELY_UNLIKELY = 0; // 0x0
1353    field @FlaggedApi("com.android.bluetooth.flags.channel_sounding") public static final int NADM_ATTACK_IS_LIKELY = 4; // 0x4
1354    field @FlaggedApi("com.android.bluetooth.flags.channel_sounding") public static final int NADM_ATTACK_IS_POSSIBLE = 3; // 0x3
1355    field @FlaggedApi("com.android.bluetooth.flags.channel_sounding") public static final int NADM_ATTACK_IS_UNLIKELY = 2; // 0x2
1356    field @FlaggedApi("com.android.bluetooth.flags.channel_sounding") public static final int NADM_ATTACK_IS_VERY_LIKELY = 5; // 0x5
1357    field @FlaggedApi("com.android.bluetooth.flags.channel_sounding") public static final int NADM_ATTACK_IS_VERY_UNLIKELY = 1; // 0x1
1358    field @FlaggedApi("com.android.bluetooth.flags.channel_sounding") public static final int NADM_UNKNOWN = 255; // 0xff
1359  }
1360
1361  public static final class DistanceMeasurementResult.Builder {
1362    ctor public DistanceMeasurementResult.Builder(@FloatRange(from=0.0) double, @FloatRange(from=0.0) double);
1363    method @NonNull public android.bluetooth.le.DistanceMeasurementResult build();
1364    method @NonNull public android.bluetooth.le.DistanceMeasurementResult.Builder setAltitudeAngle(@FloatRange(from=-90.0, to=90.0) double);
1365    method @NonNull public android.bluetooth.le.DistanceMeasurementResult.Builder setAzimuthAngle(@FloatRange(from=0.0, to=360.0) double);
1366    method @FlaggedApi("com.android.bluetooth.flags.channel_sounding") @NonNull public android.bluetooth.le.DistanceMeasurementResult.Builder setConfidenceLevel(@FloatRange(from=0.0, to=1.0) double);
1367    method @FlaggedApi("com.android.bluetooth.flags.channel_sounding") @NonNull public android.bluetooth.le.DistanceMeasurementResult.Builder setDelaySpreadMeters(double);
1368    method @FlaggedApi("com.android.bluetooth.flags.channel_sounding") @NonNull public android.bluetooth.le.DistanceMeasurementResult.Builder setDetectedAttackLevel(int);
1369    method @NonNull public android.bluetooth.le.DistanceMeasurementResult.Builder setErrorAltitudeAngle(@FloatRange(from=0.0, to=180.0) double);
1370    method @NonNull public android.bluetooth.le.DistanceMeasurementResult.Builder setErrorAzimuthAngle(@FloatRange(from=0.0, to=360.0) double);
1371    method @FlaggedApi("com.android.bluetooth.flags.channel_sounding") @NonNull public android.bluetooth.le.DistanceMeasurementResult.Builder setVelocityMetersPerSecond(double);
1372  }
1373
1374  public final class DistanceMeasurementSession {
1375    method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public int stopSession();
1376  }
1377
1378  public static interface DistanceMeasurementSession.Callback {
1379    method public void onResult(@NonNull android.bluetooth.BluetoothDevice, @NonNull android.bluetooth.le.DistanceMeasurementResult);
1380    method public void onStartFail(@NonNull int);
1381    method public void onStarted(@NonNull android.bluetooth.le.DistanceMeasurementSession);
1382    method public void onStopped(@NonNull android.bluetooth.le.DistanceMeasurementSession, @NonNull int);
1383  }
1384
1385  @Deprecated public final class ResultStorageDescriptor implements android.os.Parcelable {
1386    ctor @Deprecated public ResultStorageDescriptor(int, int, int);
1387    method @Deprecated public int describeContents();
1388    method @Deprecated public int getLength();
1389    method @Deprecated public int getOffset();
1390    method @Deprecated public int getType();
1391    method @Deprecated public void writeToParcel(android.os.Parcel, int);
1392    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.ResultStorageDescriptor> CREATOR;
1393  }
1394
1395  public final class ScanFilter implements android.os.Parcelable {
1396    method public int getAddressType();
1397    method @Nullable public byte[] getIrk();
1398    method @Nullable public android.bluetooth.le.TransportBlockFilter getTransportBlockFilter();
1399  }
1400
1401  public static final class ScanFilter.Builder {
1402    method @NonNull public android.bluetooth.le.ScanFilter.Builder setDeviceAddress(@NonNull String, int);
1403    method @NonNull public android.bluetooth.le.ScanFilter.Builder setDeviceAddress(@NonNull String, int, @NonNull byte[]);
1404    method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public android.bluetooth.le.ScanFilter.Builder setTransportBlockFilter(@NonNull android.bluetooth.le.TransportBlockFilter);
1405    field public static final int LEN_IRK_OCTETS = 16; // 0x10
1406  }
1407
1408  public final class ScanRecord {
1409    method @Nullable public android.bluetooth.le.TransportDiscoveryData getTransportDiscoveryData();
1410  }
1411
1412  public final class ScanSettings implements android.os.Parcelable {
1413    field public static final int SCAN_MODE_AMBIENT_DISCOVERY = 3; // 0x3
1414    field public static final int SCAN_RESULT_TYPE_ABBREVIATED = 1; // 0x1
1415    field public static final int SCAN_RESULT_TYPE_FULL = 0; // 0x0
1416  }
1417
1418  public static final class ScanSettings.Builder {
1419    method public android.bluetooth.le.ScanSettings.Builder setScanResultType(int);
1420  }
1421
1422  public final class TransportBlockFilter implements android.os.Parcelable {
1423    method public int describeContents();
1424    method public int getOrgId();
1425    method public int getTdsFlags();
1426    method public int getTdsFlagsMask();
1427    method @Nullable public byte[] getTransportData();
1428    method @Nullable public byte[] getTransportDataMask();
1429    method @Nullable public byte[] getWifiNanHash();
1430    method public void writeToParcel(@NonNull android.os.Parcel, int);
1431    field @NonNull public static final android.os.Parcelable.Creator<android.bluetooth.le.TransportBlockFilter> CREATOR;
1432    field public static final int WIFI_NAN_HASH_LENGTH_BYTES = 8; // 0x8
1433  }
1434
1435  public static final class TransportBlockFilter.Builder {
1436    ctor public TransportBlockFilter.Builder(int);
1437    method @NonNull public android.bluetooth.le.TransportBlockFilter build();
1438    method @NonNull public android.bluetooth.le.TransportBlockFilter.Builder setTdsFlags(int, int);
1439    method @NonNull public android.bluetooth.le.TransportBlockFilter.Builder setTransportData(@NonNull byte[], @NonNull byte[]);
1440    method @NonNull public android.bluetooth.le.TransportBlockFilter.Builder setWifiNanHash(@NonNull byte[]);
1441  }
1442
1443  @Deprecated public final class TruncatedFilter {
1444    ctor @Deprecated public TruncatedFilter(android.bluetooth.le.ScanFilter, java.util.List<android.bluetooth.le.ResultStorageDescriptor>);
1445    method @Deprecated public android.bluetooth.le.ScanFilter getFilter();
1446    method @Deprecated public java.util.List<android.bluetooth.le.ResultStorageDescriptor> getStorageDescriptors();
1447  }
1448
1449}
1450
1451