Merge "Add new API BluetoothAdapter#removeActiveDevice to replace calls to BluetoothAdapter#setActiveDevice with a null device"
This commit is contained in:
@@ -1302,8 +1302,9 @@ package android.bluetooth {
|
||||
method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public long getDiscoveryEndMillis();
|
||||
method public boolean isBleScanAlwaysAvailable();
|
||||
method public boolean isLeEnabled();
|
||||
method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean removeActiveDevice(int);
|
||||
method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean removeOnMetadataChangedListener(@NonNull android.bluetooth.BluetoothDevice, @NonNull android.bluetooth.BluetoothAdapter.OnMetadataChangedListener);
|
||||
method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setActiveDevice(@Nullable android.bluetooth.BluetoothDevice, int);
|
||||
method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setActiveDevice(@NonNull android.bluetooth.BluetoothDevice, int);
|
||||
method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean setScanMode(int, int);
|
||||
method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean setScanMode(int);
|
||||
field public static final String ACTION_BLE_STATE_CHANGED = "android.bluetooth.adapter.action.BLE_STATE_CHANGED";
|
||||
|
||||
@@ -1766,6 +1766,45 @@ public final class BluetoothAdapter {
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the active device for the grouping of @ActiveDeviceUse specified
|
||||
*
|
||||
* @param profiles represents the purpose for which we are setting this as the active device.
|
||||
* Possible values are:
|
||||
* {@link BluetoothAdapter#ACTIVE_DEVICE_AUDIO},
|
||||
* {@link BluetoothAdapter#ACTIVE_DEVICE_PHONE_CALL},
|
||||
* {@link BluetoothAdapter#ACTIVE_DEVICE_ALL}
|
||||
* @return false on immediate error, true otherwise
|
||||
* @throws IllegalArgumentException if device is null or profiles is not one of
|
||||
* {@link ActiveDeviceUse}
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
|
||||
public boolean removeActiveDevice(@ActiveDeviceUse int profiles) {
|
||||
if (profiles != ACTIVE_DEVICE_AUDIO && profiles != ACTIVE_DEVICE_PHONE_CALL
|
||||
&& profiles != ACTIVE_DEVICE_ALL) {
|
||||
Log.e(TAG, "Invalid profiles param value in removeActiveDevice");
|
||||
throw new IllegalArgumentException("Profiles must be one of "
|
||||
+ "BluetoothAdapter.ACTIVE_DEVICE_AUDIO, "
|
||||
+ "BluetoothAdapter.ACTIVE_DEVICE_PHONE_CALL, or "
|
||||
+ "BluetoothAdapter.ACTIVE_DEVICE_ALL");
|
||||
}
|
||||
try {
|
||||
mServiceLock.readLock().lock();
|
||||
if (mService != null) {
|
||||
return mService.removeActiveDevice(profiles);
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
Log.e(TAG, "", e);
|
||||
} finally {
|
||||
mServiceLock.readLock().unlock();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets device as the active devices for the profiles passed into the function
|
||||
*
|
||||
* @param device is the remote bluetooth device
|
||||
* @param profiles represents the purpose for which we are setting this as the active device.
|
||||
@@ -1774,18 +1813,26 @@ public final class BluetoothAdapter {
|
||||
* {@link BluetoothAdapter#ACTIVE_DEVICE_PHONE_CALL},
|
||||
* {@link BluetoothAdapter#ACTIVE_DEVICE_ALL}
|
||||
* @return false on immediate error, true otherwise
|
||||
* @throws IllegalArgumentException if device is null or profiles is not one of
|
||||
* {@link ActiveDeviceUse}
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
|
||||
public boolean setActiveDevice(@Nullable BluetoothDevice device,
|
||||
@RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
|
||||
public boolean setActiveDevice(@NonNull BluetoothDevice device,
|
||||
@ActiveDeviceUse int profiles) {
|
||||
if (device == null) {
|
||||
Log.e(TAG, "setActiveDevice: Null device passed as parameter");
|
||||
throw new IllegalArgumentException("device cannot be null");
|
||||
}
|
||||
if (profiles != ACTIVE_DEVICE_AUDIO && profiles != ACTIVE_DEVICE_PHONE_CALL
|
||||
&& profiles != ACTIVE_DEVICE_ALL) {
|
||||
Log.e(TAG, "Invalid profiles param value in setActiveDevice");
|
||||
return false;
|
||||
throw new IllegalArgumentException("Profiles must be one of "
|
||||
+ "BluetoothAdapter.ACTIVE_DEVICE_AUDIO, "
|
||||
+ "BluetoothAdapter.ACTIVE_DEVICE_PHONE_CALL, or "
|
||||
+ "BluetoothAdapter.ACTIVE_DEVICE_ALL");
|
||||
}
|
||||
|
||||
try {
|
||||
mServiceLock.readLock().lock();
|
||||
if (mService != null) {
|
||||
|
||||
Reference in New Issue
Block a user