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