Loading api/system-current.txt +9 −0 Original line number Diff line number Diff line Loading @@ -1343,15 +1343,24 @@ package android.bluetooth { public final class BluetoothDevice implements android.os.Parcelable { method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean cancelBondProcess(); method public boolean cancelPairing(); method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getBatteryLevel(); method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getMessageAccessPermission(); method @Nullable @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public byte[] getMetadata(int); method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getPhonebookAccessPermission(); method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getSimAccessPermission(); method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isBondingInitiatedLocally(); method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isConnected(); method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isEncrypted(); method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean isInSilenceMode(); method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean removeBond(); method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean setAlias(@NonNull String); method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setMessageAccessPermission(int); method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setMetadata(int, @NonNull byte[]); method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setPhonebookAccessPermission(int); method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setPin(@Nullable String); method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setSilenceMode(boolean); method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setSimAccessPermission(int); field public static final int ACCESS_ALLOWED = 1; // 0x1 field public static final int ACCESS_REJECTED = 2; // 0x2 field public static final int ACCESS_UNKNOWN = 0; // 0x0 Loading core/java/android/bluetooth/BluetoothDevice.java +70 −57 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.bluetooth; import android.Manifest; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; Loading @@ -33,8 +34,12 @@ import android.os.Process; import android.os.RemoteException; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.UUID; /** Loading Loading @@ -771,6 +776,13 @@ public final class BluetoothDevice implements Parcelable { @UnsupportedAppUsage public static final String EXTRA_SDP_SEARCH_STATUS = "android.bluetooth.device.extra.SDP_SEARCH_STATUS"; /** @hide */ @IntDef(prefix = "ACCESS_", value = {ACCESS_UNKNOWN, ACCESS_ALLOWED, ACCESS_REJECTED}) @Retention(RetentionPolicy.SOURCE) public @interface AccessPermission{} /** * For {@link #getPhonebookAccessPermission}, {@link #setPhonebookAccessPermission}, * {@link #getMessageAccessPermission} and {@link #setMessageAccessPermission}. Loading Loading @@ -1096,15 +1108,14 @@ public final class BluetoothDevice implements Parcelable { /** * Get the most recent identified battery level of this Bluetooth device * <p>Requires {@link android.Manifest.permission#BLUETOOTH} * * @return Battery level in percents from 0 to 100, or {@link #BATTERY_LEVEL_UNKNOWN} if * Bluetooth is disabled, or device is disconnected, or does not have any battery reporting * service, or return value is invalid * @hide */ @SystemApi @RequiresPermission(Manifest.permission.BLUETOOTH) @UnsupportedAppUsage public int getBatteryLevel() { final IBluetooth service = sService; if (service == null) { Loading Loading @@ -1187,8 +1198,15 @@ public final class BluetoothDevice implements Parcelable { return false; } /** @hide */ @UnsupportedAppUsage /** * Gets whether bonding was initiated locally * * @return true if bonding is initiated locally, false otherwise * * @hide */ @SystemApi @RequiresPermission(Manifest.permission.BLUETOOTH) public boolean isBondingInitiatedLocally() { final IBluetooth service = sService; if (service == null) { Loading Loading @@ -1480,16 +1498,21 @@ public final class BluetoothDevice implements Parcelable { return false; } /** @hide */ @UnsupportedAppUsage public boolean setPasskey(int passkey) { //TODO(BT) /* try { return sService.setPasskey(this, true, 4, passkey); } catch (RemoteException e) {Log.e(TAG, "", e);}*/ /** * Set the pin during pairing when the pairing method is {@link #PAIRING_VARIANT_PIN} * * @return true pin has been set false for error * @hide */ @SystemApi @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN) public boolean setPin(@Nullable String pin) { byte[] pinBytes = convertPinToBytes(pin); if (pinBytes == null) { return false; } return setPin(pinBytes); } /** * Confirm passkey for {@link #PAIRING_VARIANT_PASSKEY_CONFIRMATION} pairing. Loading @@ -1511,22 +1534,18 @@ public final class BluetoothDevice implements Parcelable { return false; } /** @hide */ public boolean setRemoteOutOfBandData() { // TODO(BT) /* try { return sService.setRemoteOutOfBandData(this); } catch (RemoteException e) {Log.e(TAG, "", e);}*/ return false; } /** @hide */ @UnsupportedAppUsage public boolean cancelPairingUserInput() { /** * Cancels pairing to this device * * @return true if pairing cancelled successfully, false otherwise * * @hide */ @SystemApi public boolean cancelPairing() { final IBluetooth service = sService; if (service == null) { Log.e(TAG, "BT not enabled. Cannot create pairing user input"); Log.e(TAG, "BT not enabled. Cannot cancel pairing"); return false; } try { Loading @@ -1537,17 +1556,6 @@ public final class BluetoothDevice implements Parcelable { return false; } /** @hide */ @UnsupportedAppUsage public boolean isBluetoothDock() { // TODO(BT) /* try { return sService.isBluetoothDock(this); } catch (RemoteException e) {Log.e(TAG, "", e);}*/ return false; } boolean isBluetoothEnabled() { boolean ret = false; BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); Loading @@ -1558,13 +1566,14 @@ public final class BluetoothDevice implements Parcelable { } /** * Requires {@link android.Manifest.permission#BLUETOOTH}. * Gets whether the phonebook access is allowed for this bluetooth device * * @return Whether the phonebook access is allowed to this device. Can be {@link * #ACCESS_UNKNOWN}, {@link #ACCESS_ALLOWED} or {@link #ACCESS_REJECTED}. * @hide */ @UnsupportedAppUsage @SystemApi @RequiresPermission(Manifest.permission.BLUETOOTH) public int getPhonebookAccessPermission() { final IBluetooth service = sService; if (service == null) { Loading Loading @@ -1667,14 +1676,14 @@ public final class BluetoothDevice implements Parcelable { } /** * Requires {@link android.Manifest.permission#BLUETOOTH}. * Gets whether message access is allowed to this bluetooth device * * @return Whether the message access is allowed to this device. Can be {@link #ACCESS_UNKNOWN}, * {@link #ACCESS_ALLOWED} or {@link #ACCESS_REJECTED}. * @return Whether the message access is allowed to this device. * @hide */ @UnsupportedAppUsage public int getMessageAccessPermission() { @SystemApi @RequiresPermission(Manifest.permission.BLUETOOTH) public @AccessPermission int getMessageAccessPermission() { final IBluetooth service = sService; if (service == null) { return ACCESS_UNKNOWN; Loading @@ -1689,15 +1698,18 @@ public final class BluetoothDevice implements Parcelable { /** * Sets whether the message access is allowed to this device. * <p>Requires {@link android.Manifest.permission#BLUETOOTH_PRIVILEGED}. * * @param value Can be {@link #ACCESS_UNKNOWN}, {@link #ACCESS_ALLOWED} or {@link * #ACCESS_REJECTED}. * @param value is the value we are setting the message access permission to * @return Whether the value has been successfully set. * @hide */ @UnsupportedAppUsage public boolean setMessageAccessPermission(int value) { @SystemApi @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setMessageAccessPermission(@AccessPermission int value) { // Validates param value is one of the accepted constants if (value != ACCESS_ALLOWED && value != ACCESS_REJECTED && value != ACCESS_UNKNOWN) { throw new IllegalArgumentException(value + "is not a valid AccessPermission value"); } final IBluetooth service = sService; if (service == null) { return false; Loading @@ -1711,13 +1723,14 @@ public final class BluetoothDevice implements Parcelable { } /** * Requires {@link android.Manifest.permission#BLUETOOTH}. * Gets whether sim access is allowed for this bluetooth device * * @return Whether the Sim access is allowed to this device. Can be {@link #ACCESS_UNKNOWN}, * {@link #ACCESS_ALLOWED} or {@link #ACCESS_REJECTED}. * @return Whether the Sim access is allowed to this device. * @hide */ public int getSimAccessPermission() { @SystemApi @RequiresPermission(Manifest.permission.BLUETOOTH) public @AccessPermission int getSimAccessPermission() { final IBluetooth service = sService; if (service == null) { return ACCESS_UNKNOWN; Loading @@ -1732,14 +1745,14 @@ public final class BluetoothDevice implements Parcelable { /** * Sets whether the Sim access is allowed to this device. * <p>Requires {@link android.Manifest.permission#BLUETOOTH_PRIVILEGED}. * * @param value Can be {@link #ACCESS_UNKNOWN}, {@link #ACCESS_ALLOWED} or {@link * #ACCESS_REJECTED}. * @return Whether the value has been successfully set. * @hide */ @UnsupportedAppUsage @SystemApi @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setSimAccessPermission(int value) { final IBluetooth service = sService; if (service == null) { Loading Loading @@ -1970,7 +1983,7 @@ public final class BluetoothDevice implements Parcelable { * @return the pin code as a UTF-8 byte array, or null if it is an invalid Bluetooth pin. * @hide */ @UnsupportedAppUsage @VisibleForTesting public static byte[] convertPinToBytes(String pin) { if (pin == null) { return null; Loading core/tests/bluetoothtests/src/android/bluetooth/BluetoothTestUtils.java +0 −2 Original line number Diff line number Diff line Loading @@ -176,14 +176,12 @@ public class BluetoothTestUtils extends Assert { mDevice.setPin(mPin); break; case BluetoothDevice.PAIRING_VARIANT_PASSKEY: mDevice.setPasskey(mPasskey); break; case BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION: case BluetoothDevice.PAIRING_VARIANT_CONSENT: mDevice.setPairingConfirmation(true); break; case BluetoothDevice.PAIRING_VARIANT_OOB_CONSENT: mDevice.setRemoteOutOfBandData(); break; } } else if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(intent.getAction())) { Loading packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java +2 −6 Original line number Diff line number Diff line Loading @@ -643,14 +643,10 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> refresh(); if (bondState == BluetoothDevice.BOND_BONDED) { if (mDevice.isBluetoothDock()) { onBondingDockConnect(); } else if (mDevice.isBondingInitiatedLocally()) { if (bondState == BluetoothDevice.BOND_BONDED && mDevice.isBondingInitiatedLocally()) { connect(false); } } } public BluetoothClass getBtClass() { return mDevice.getBluetoothClass(); Loading services/core/java/com/android/server/audio/AudioDeviceInventory.java +10 −41 Original line number Diff line number Diff line Loading @@ -62,9 +62,6 @@ public class AudioDeviceInventory { private @NonNull AudioDeviceBroker mDeviceBroker; // cache of the address of the last dock the device was connected to private String mDockAddress; // Monitoring of audio routes. Protected by mAudioRoutes. final AudioRoutesInfo mCurAudioRoutes = new AudioRoutesInfo(); final RemoteCallbackList<IAudioRoutesObserver> mRoutesObservers = Loading Loading @@ -168,7 +165,7 @@ public class AudioDeviceInventory { int a2dpVolume = btInfo.getVolume(); if (AudioService.DEBUG_DEVICES) { Log.d(TAG, "onSetA2dpSinkConnectionState btDevice=" + btDevice + " state=" + state + " is dock=" + btDevice.isBluetoothDock() + " vol=" + a2dpVolume); + state + " vol=" + a2dpVolume); } String address = btDevice.getAddress(); if (!BluetoothAdapter.checkBluetoothAddress(address)) { Loading @@ -195,34 +192,10 @@ public class AudioDeviceInventory { if (a2dpCodec != di.mDeviceCodecFormat) { mDeviceBroker.postBluetoothA2dpDeviceConfigChange(btDevice); } } else { if (btDevice.isBluetoothDock()) { if (state == BluetoothProfile.STATE_DISCONNECTED) { // introduction of a delay for transient disconnections of docks when // power is rapidly turned off/on, this message will be canceled if // we reconnect the dock under a preset delay makeA2dpDeviceUnavailableLater(address, AudioDeviceBroker.BTA2DP_DOCK_TIMEOUT_MS); // the next time isConnected is evaluated, it will be false for the dock } } else { makeA2dpDeviceUnavailableNow(address, di.mDeviceCodecFormat); } } } else if (!isConnected && state == BluetoothProfile.STATE_CONNECTED) { if (btDevice.isBluetoothDock()) { // this could be a reconnection after a transient disconnection mDeviceBroker.cancelA2dpDockTimeout(); mDockAddress = address; } else { // this could be a connection of another A2DP device before the timeout of // a dock: cancel the dock timeout, and make the dock unavailable now if (mDeviceBroker.hasScheduledA2dpDockTimeout() && mDockAddress != null) { mDeviceBroker.cancelA2dpDockTimeout(); makeA2dpDeviceUnavailableNow(mDockAddress, AudioSystem.AUDIO_FORMAT_DEFAULT); } } if (a2dpVolume != -1) { mDeviceBroker.postSetVolumeIndexOnDevice(AudioSystem.STREAM_MUSIC, // convert index to internal representation in VolumeStreamState Loading @@ -233,7 +206,6 @@ public class AudioDeviceInventory { "onSetA2dpSinkConnectionState", a2dpCodec); } } } /*package*/ void onSetA2dpSourceConnectionState( @NonNull BtHelper.BluetoothA2dpDeviceInfo btInfo, int state) { Loading Loading @@ -672,9 +644,6 @@ public class AudioDeviceInventory { DeviceInfo.makeDeviceListKey(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, address)); // Remove A2DP routes as well setCurrentAudioRouteNameIfPossible(null); if (mDockAddress == address) { mDockAddress = null; } } @GuardedBy("mConnectedDevices") Loading Loading
api/system-current.txt +9 −0 Original line number Diff line number Diff line Loading @@ -1343,15 +1343,24 @@ package android.bluetooth { public final class BluetoothDevice implements android.os.Parcelable { method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean cancelBondProcess(); method public boolean cancelPairing(); method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getBatteryLevel(); method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getMessageAccessPermission(); method @Nullable @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public byte[] getMetadata(int); method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getPhonebookAccessPermission(); method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getSimAccessPermission(); method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isBondingInitiatedLocally(); method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isConnected(); method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isEncrypted(); method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean isInSilenceMode(); method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean removeBond(); method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean setAlias(@NonNull String); method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setMessageAccessPermission(int); method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setMetadata(int, @NonNull byte[]); method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setPhonebookAccessPermission(int); method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setPin(@Nullable String); method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setSilenceMode(boolean); method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setSimAccessPermission(int); field public static final int ACCESS_ALLOWED = 1; // 0x1 field public static final int ACCESS_REJECTED = 2; // 0x2 field public static final int ACCESS_UNKNOWN = 0; // 0x0 Loading
core/java/android/bluetooth/BluetoothDevice.java +70 −57 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.bluetooth; import android.Manifest; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; Loading @@ -33,8 +34,12 @@ import android.os.Process; import android.os.RemoteException; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.UUID; /** Loading Loading @@ -771,6 +776,13 @@ public final class BluetoothDevice implements Parcelable { @UnsupportedAppUsage public static final String EXTRA_SDP_SEARCH_STATUS = "android.bluetooth.device.extra.SDP_SEARCH_STATUS"; /** @hide */ @IntDef(prefix = "ACCESS_", value = {ACCESS_UNKNOWN, ACCESS_ALLOWED, ACCESS_REJECTED}) @Retention(RetentionPolicy.SOURCE) public @interface AccessPermission{} /** * For {@link #getPhonebookAccessPermission}, {@link #setPhonebookAccessPermission}, * {@link #getMessageAccessPermission} and {@link #setMessageAccessPermission}. Loading Loading @@ -1096,15 +1108,14 @@ public final class BluetoothDevice implements Parcelable { /** * Get the most recent identified battery level of this Bluetooth device * <p>Requires {@link android.Manifest.permission#BLUETOOTH} * * @return Battery level in percents from 0 to 100, or {@link #BATTERY_LEVEL_UNKNOWN} if * Bluetooth is disabled, or device is disconnected, or does not have any battery reporting * service, or return value is invalid * @hide */ @SystemApi @RequiresPermission(Manifest.permission.BLUETOOTH) @UnsupportedAppUsage public int getBatteryLevel() { final IBluetooth service = sService; if (service == null) { Loading Loading @@ -1187,8 +1198,15 @@ public final class BluetoothDevice implements Parcelable { return false; } /** @hide */ @UnsupportedAppUsage /** * Gets whether bonding was initiated locally * * @return true if bonding is initiated locally, false otherwise * * @hide */ @SystemApi @RequiresPermission(Manifest.permission.BLUETOOTH) public boolean isBondingInitiatedLocally() { final IBluetooth service = sService; if (service == null) { Loading Loading @@ -1480,16 +1498,21 @@ public final class BluetoothDevice implements Parcelable { return false; } /** @hide */ @UnsupportedAppUsage public boolean setPasskey(int passkey) { //TODO(BT) /* try { return sService.setPasskey(this, true, 4, passkey); } catch (RemoteException e) {Log.e(TAG, "", e);}*/ /** * Set the pin during pairing when the pairing method is {@link #PAIRING_VARIANT_PIN} * * @return true pin has been set false for error * @hide */ @SystemApi @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN) public boolean setPin(@Nullable String pin) { byte[] pinBytes = convertPinToBytes(pin); if (pinBytes == null) { return false; } return setPin(pinBytes); } /** * Confirm passkey for {@link #PAIRING_VARIANT_PASSKEY_CONFIRMATION} pairing. Loading @@ -1511,22 +1534,18 @@ public final class BluetoothDevice implements Parcelable { return false; } /** @hide */ public boolean setRemoteOutOfBandData() { // TODO(BT) /* try { return sService.setRemoteOutOfBandData(this); } catch (RemoteException e) {Log.e(TAG, "", e);}*/ return false; } /** @hide */ @UnsupportedAppUsage public boolean cancelPairingUserInput() { /** * Cancels pairing to this device * * @return true if pairing cancelled successfully, false otherwise * * @hide */ @SystemApi public boolean cancelPairing() { final IBluetooth service = sService; if (service == null) { Log.e(TAG, "BT not enabled. Cannot create pairing user input"); Log.e(TAG, "BT not enabled. Cannot cancel pairing"); return false; } try { Loading @@ -1537,17 +1556,6 @@ public final class BluetoothDevice implements Parcelable { return false; } /** @hide */ @UnsupportedAppUsage public boolean isBluetoothDock() { // TODO(BT) /* try { return sService.isBluetoothDock(this); } catch (RemoteException e) {Log.e(TAG, "", e);}*/ return false; } boolean isBluetoothEnabled() { boolean ret = false; BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); Loading @@ -1558,13 +1566,14 @@ public final class BluetoothDevice implements Parcelable { } /** * Requires {@link android.Manifest.permission#BLUETOOTH}. * Gets whether the phonebook access is allowed for this bluetooth device * * @return Whether the phonebook access is allowed to this device. Can be {@link * #ACCESS_UNKNOWN}, {@link #ACCESS_ALLOWED} or {@link #ACCESS_REJECTED}. * @hide */ @UnsupportedAppUsage @SystemApi @RequiresPermission(Manifest.permission.BLUETOOTH) public int getPhonebookAccessPermission() { final IBluetooth service = sService; if (service == null) { Loading Loading @@ -1667,14 +1676,14 @@ public final class BluetoothDevice implements Parcelable { } /** * Requires {@link android.Manifest.permission#BLUETOOTH}. * Gets whether message access is allowed to this bluetooth device * * @return Whether the message access is allowed to this device. Can be {@link #ACCESS_UNKNOWN}, * {@link #ACCESS_ALLOWED} or {@link #ACCESS_REJECTED}. * @return Whether the message access is allowed to this device. * @hide */ @UnsupportedAppUsage public int getMessageAccessPermission() { @SystemApi @RequiresPermission(Manifest.permission.BLUETOOTH) public @AccessPermission int getMessageAccessPermission() { final IBluetooth service = sService; if (service == null) { return ACCESS_UNKNOWN; Loading @@ -1689,15 +1698,18 @@ public final class BluetoothDevice implements Parcelable { /** * Sets whether the message access is allowed to this device. * <p>Requires {@link android.Manifest.permission#BLUETOOTH_PRIVILEGED}. * * @param value Can be {@link #ACCESS_UNKNOWN}, {@link #ACCESS_ALLOWED} or {@link * #ACCESS_REJECTED}. * @param value is the value we are setting the message access permission to * @return Whether the value has been successfully set. * @hide */ @UnsupportedAppUsage public boolean setMessageAccessPermission(int value) { @SystemApi @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setMessageAccessPermission(@AccessPermission int value) { // Validates param value is one of the accepted constants if (value != ACCESS_ALLOWED && value != ACCESS_REJECTED && value != ACCESS_UNKNOWN) { throw new IllegalArgumentException(value + "is not a valid AccessPermission value"); } final IBluetooth service = sService; if (service == null) { return false; Loading @@ -1711,13 +1723,14 @@ public final class BluetoothDevice implements Parcelable { } /** * Requires {@link android.Manifest.permission#BLUETOOTH}. * Gets whether sim access is allowed for this bluetooth device * * @return Whether the Sim access is allowed to this device. Can be {@link #ACCESS_UNKNOWN}, * {@link #ACCESS_ALLOWED} or {@link #ACCESS_REJECTED}. * @return Whether the Sim access is allowed to this device. * @hide */ public int getSimAccessPermission() { @SystemApi @RequiresPermission(Manifest.permission.BLUETOOTH) public @AccessPermission int getSimAccessPermission() { final IBluetooth service = sService; if (service == null) { return ACCESS_UNKNOWN; Loading @@ -1732,14 +1745,14 @@ public final class BluetoothDevice implements Parcelable { /** * Sets whether the Sim access is allowed to this device. * <p>Requires {@link android.Manifest.permission#BLUETOOTH_PRIVILEGED}. * * @param value Can be {@link #ACCESS_UNKNOWN}, {@link #ACCESS_ALLOWED} or {@link * #ACCESS_REJECTED}. * @return Whether the value has been successfully set. * @hide */ @UnsupportedAppUsage @SystemApi @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setSimAccessPermission(int value) { final IBluetooth service = sService; if (service == null) { Loading Loading @@ -1970,7 +1983,7 @@ public final class BluetoothDevice implements Parcelable { * @return the pin code as a UTF-8 byte array, or null if it is an invalid Bluetooth pin. * @hide */ @UnsupportedAppUsage @VisibleForTesting public static byte[] convertPinToBytes(String pin) { if (pin == null) { return null; Loading
core/tests/bluetoothtests/src/android/bluetooth/BluetoothTestUtils.java +0 −2 Original line number Diff line number Diff line Loading @@ -176,14 +176,12 @@ public class BluetoothTestUtils extends Assert { mDevice.setPin(mPin); break; case BluetoothDevice.PAIRING_VARIANT_PASSKEY: mDevice.setPasskey(mPasskey); break; case BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION: case BluetoothDevice.PAIRING_VARIANT_CONSENT: mDevice.setPairingConfirmation(true); break; case BluetoothDevice.PAIRING_VARIANT_OOB_CONSENT: mDevice.setRemoteOutOfBandData(); break; } } else if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(intent.getAction())) { Loading
packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java +2 −6 Original line number Diff line number Diff line Loading @@ -643,14 +643,10 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> refresh(); if (bondState == BluetoothDevice.BOND_BONDED) { if (mDevice.isBluetoothDock()) { onBondingDockConnect(); } else if (mDevice.isBondingInitiatedLocally()) { if (bondState == BluetoothDevice.BOND_BONDED && mDevice.isBondingInitiatedLocally()) { connect(false); } } } public BluetoothClass getBtClass() { return mDevice.getBluetoothClass(); Loading
services/core/java/com/android/server/audio/AudioDeviceInventory.java +10 −41 Original line number Diff line number Diff line Loading @@ -62,9 +62,6 @@ public class AudioDeviceInventory { private @NonNull AudioDeviceBroker mDeviceBroker; // cache of the address of the last dock the device was connected to private String mDockAddress; // Monitoring of audio routes. Protected by mAudioRoutes. final AudioRoutesInfo mCurAudioRoutes = new AudioRoutesInfo(); final RemoteCallbackList<IAudioRoutesObserver> mRoutesObservers = Loading Loading @@ -168,7 +165,7 @@ public class AudioDeviceInventory { int a2dpVolume = btInfo.getVolume(); if (AudioService.DEBUG_DEVICES) { Log.d(TAG, "onSetA2dpSinkConnectionState btDevice=" + btDevice + " state=" + state + " is dock=" + btDevice.isBluetoothDock() + " vol=" + a2dpVolume); + state + " vol=" + a2dpVolume); } String address = btDevice.getAddress(); if (!BluetoothAdapter.checkBluetoothAddress(address)) { Loading @@ -195,34 +192,10 @@ public class AudioDeviceInventory { if (a2dpCodec != di.mDeviceCodecFormat) { mDeviceBroker.postBluetoothA2dpDeviceConfigChange(btDevice); } } else { if (btDevice.isBluetoothDock()) { if (state == BluetoothProfile.STATE_DISCONNECTED) { // introduction of a delay for transient disconnections of docks when // power is rapidly turned off/on, this message will be canceled if // we reconnect the dock under a preset delay makeA2dpDeviceUnavailableLater(address, AudioDeviceBroker.BTA2DP_DOCK_TIMEOUT_MS); // the next time isConnected is evaluated, it will be false for the dock } } else { makeA2dpDeviceUnavailableNow(address, di.mDeviceCodecFormat); } } } else if (!isConnected && state == BluetoothProfile.STATE_CONNECTED) { if (btDevice.isBluetoothDock()) { // this could be a reconnection after a transient disconnection mDeviceBroker.cancelA2dpDockTimeout(); mDockAddress = address; } else { // this could be a connection of another A2DP device before the timeout of // a dock: cancel the dock timeout, and make the dock unavailable now if (mDeviceBroker.hasScheduledA2dpDockTimeout() && mDockAddress != null) { mDeviceBroker.cancelA2dpDockTimeout(); makeA2dpDeviceUnavailableNow(mDockAddress, AudioSystem.AUDIO_FORMAT_DEFAULT); } } if (a2dpVolume != -1) { mDeviceBroker.postSetVolumeIndexOnDevice(AudioSystem.STREAM_MUSIC, // convert index to internal representation in VolumeStreamState Loading @@ -233,7 +206,6 @@ public class AudioDeviceInventory { "onSetA2dpSinkConnectionState", a2dpCodec); } } } /*package*/ void onSetA2dpSourceConnectionState( @NonNull BtHelper.BluetoothA2dpDeviceInfo btInfo, int state) { Loading Loading @@ -672,9 +644,6 @@ public class AudioDeviceInventory { DeviceInfo.makeDeviceListKey(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, address)); // Remove A2DP routes as well setCurrentAudioRouteNameIfPossible(null); if (mDockAddress == address) { mDockAddress = null; } } @GuardedBy("mConnectedDevices") Loading