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