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