Add getActiveDevices api

Bug: 195149213
Test: Manual
Tag: #feature
Change-Id: I0836f7bd0009a49b4db7f08e9f347fe3e1a76f84
This commit is contained in:
wescande
2021-08-11 14:56:06 +02:00
committed by William Escande
parent c0da9473bc
commit c3d0b147f5
2 changed files with 52 additions and 0 deletions

View File

@@ -1941,6 +1941,7 @@ package android.bluetooth {
method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean enableBLE();
method @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean enableNoAutoConnect();
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);
method @NonNull @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public java.util.List<android.bluetooth.BluetoothDevice> getActiveDevices(int);
method @RequiresPermission(allOf={android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_PRIVILEGED}) public long getDiscoveryEndMillis();
method public boolean isBleScanAlwaysAvailable();
method public boolean isLeEnabled();

View File

@@ -511,6 +511,12 @@ public final class BluetoothAdapter {
@SystemApi
public static final int ACTIVE_DEVICE_ALL = 2;
/** @hide */
@IntDef({BluetoothProfile.HEADSET, BluetoothProfile.A2DP,
BluetoothProfile.HEARING_AID})
@Retention(RetentionPolicy.SOURCE)
public @interface ActiveDeviceProfile {}
/**
* Broadcast Action: The local Bluetooth adapter has started the remote
* device discovery process.
@@ -2004,6 +2010,51 @@ public final class BluetoothAdapter {
return false;
}
/**
* Get the active devices for the BluetoothProfile specified
*
* @param profile is the profile from which we want the active devices.
* Possible values are:
* {@link BluetoothProfile#HEADSET},
* {@link BluetoothProfile#A2DP},
* {@link BluetoothProfile#HEARING_AID}
* @return A list of active bluetooth devices
* @throws IllegalArgumentException If profile is not one of {@link ActiveDeviceProfile}
* @hide
*/
@SystemApi
@RequiresPermission(allOf = {
android.Manifest.permission.BLUETOOTH_CONNECT,
android.Manifest.permission.BLUETOOTH_PRIVILEGED,
})
public @NonNull List<BluetoothDevice> getActiveDevices(@ActiveDeviceProfile int profile) {
if (profile != BluetoothProfile.HEADSET
&& profile != BluetoothProfile.A2DP
&& profile != BluetoothProfile.HEARING_AID) {
Log.e(TAG, "Invalid profile param value in getActiveDevices");
throw new IllegalArgumentException("Profiles must be one of "
+ "BluetoothProfile.A2DP, "
+ "BluetoothProfile.HEARING_AID, or"
+ "BluetoothProfile.HEARING_AID");
}
try {
mServiceLock.readLock().lock();
if (mService != null) {
if (DBG) {
Log.d(TAG, "getActiveDevices(profile= "
+ BluetoothProfile.getProfileName(profile) + ")");
}
return mService.getActiveDevices(profile, mAttributionSource);
}
} catch (RemoteException e) {
Log.e(TAG, "", e);
} finally {
mServiceLock.readLock().unlock();
}
return new ArrayList<>();
}
/**
* Return true if the multi advertisement is supported by the chipset
*