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