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