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 @RequiresPermission(android.Manifest.permission.BLUETOOTH) public long getDiscoveryEndMillis();
|
||||||
method public boolean isBleScanAlwaysAvailable();
|
method public boolean isBleScanAlwaysAvailable();
|
||||||
method public boolean isLeEnabled();
|
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_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, int);
|
||||||
method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean setScanMode(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";
|
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 device is the remote bluetooth device
|
||||||
* @param profiles represents the purpose for which we are setting this as the active 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_PHONE_CALL},
|
||||||
* {@link BluetoothAdapter#ACTIVE_DEVICE_ALL}
|
* {@link BluetoothAdapter#ACTIVE_DEVICE_ALL}
|
||||||
* @return false on immediate error, true otherwise
|
* @return false on immediate error, true otherwise
|
||||||
|
* @throws IllegalArgumentException if device is null or profiles is not one of
|
||||||
|
* {@link ActiveDeviceUse}
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@SystemApi
|
@SystemApi
|
||||||
@RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
|
@RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
|
||||||
public boolean setActiveDevice(@Nullable BluetoothDevice device,
|
public boolean setActiveDevice(@NonNull BluetoothDevice device,
|
||||||
@ActiveDeviceUse int profiles) {
|
@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
|
if (profiles != ACTIVE_DEVICE_AUDIO && profiles != ACTIVE_DEVICE_PHONE_CALL
|
||||||
&& profiles != ACTIVE_DEVICE_ALL) {
|
&& profiles != ACTIVE_DEVICE_ALL) {
|
||||||
Log.e(TAG, "Invalid profiles param value in setActiveDevice");
|
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 {
|
try {
|
||||||
mServiceLock.readLock().lock();
|
mServiceLock.readLock().lock();
|
||||||
if (mService != null) {
|
if (mService != null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user