Merge "Add SystemApi to setActiveDevice in BluetoothAdapter"

This commit is contained in:
Treehugger Robot
2019-12-03 21:51:44 +00:00
committed by Gerrit Code Review
2 changed files with 70 additions and 0 deletions

View File

@@ -1260,10 +1260,14 @@ package android.bluetooth {
method public boolean isBleScanAlwaysAvailable();
method public boolean isLeEnabled();
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) 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";
field public static final String ACTION_REQUEST_BLE_SCAN_ALWAYS_AVAILABLE = "android.bluetooth.adapter.action.REQUEST_BLE_SCAN_ALWAYS_AVAILABLE";
field public static final int ACTIVE_DEVICE_ALL = 2; // 0x2
field public static final int ACTIVE_DEVICE_AUDIO = 0; // 0x0
field public static final int ACTIVE_DEVICE_PHONE_CALL = 1; // 0x1
}
public static interface BluetoothAdapter.OnMetadataChangedListener {

View File

@@ -456,6 +456,37 @@ public final class BluetoothAdapter {
@Retention(RetentionPolicy.SOURCE)
public @interface IoCapability {}
/** @hide */
@IntDef(prefix = "ACTIVE_DEVICE_", value = {ACTIVE_DEVICE_AUDIO,
ACTIVE_DEVICE_PHONE_CALL, ACTIVE_DEVICE_ALL})
@Retention(RetentionPolicy.SOURCE)
public @interface ActiveDeviceUse {}
/**
* Use the specified device for audio (a2dp and hearing aid profile)
*
* @hide
*/
@SystemApi
public static final int ACTIVE_DEVICE_AUDIO = 0;
/**
* Use the specified device for phone calls (headset profile and hearing
* aid profile)
*
* @hide
*/
@SystemApi
public static final int ACTIVE_DEVICE_PHONE_CALL = 1;
/**
* Use the specified device for a2dp, hearing aid profile, and headset profile
*
* @hide
*/
@SystemApi
public static final int ACTIVE_DEVICE_ALL = 2;
/**
* Broadcast Action: The local Bluetooth adapter has started the remote
* device discovery process.
@@ -1733,6 +1764,41 @@ public final class BluetoothAdapter {
return false;
}
/**
*
* @param device is the remote bluetooth device
* @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
* @hide
*/
@SystemApi
@RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
public boolean setActiveDevice(@Nullable BluetoothDevice device,
@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 setActiveDevice");
return false;
}
try {
mServiceLock.readLock().lock();
if (mService != null) {
return mService.setActiveDevice(device, profiles);
}
} catch (RemoteException e) {
Log.e(TAG, "", e);
} finally {
mServiceLock.readLock().unlock();
}
return false;
}
/**
* Connects all enabled and supported bluetooth profiles between the local and remote device
*