summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Escande <wescande@google.com>2021-10-01 23:50:44 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2021-10-01 23:50:44 +0000
commitc8852ad54d47bab349a27474619973bbaeadf39c (patch)
tree73f7129594e520d40a05801a575b96fac5b53bcd
parent8dafa60a2fcf8beec61b5ddbc7729b861865b05c (diff)
parentc3d0b147f5a35c6818236b02ec21830778a5d901 (diff)
downloadbase-c8852ad54d47bab349a27474619973bbaeadf39c.tar.gz
Merge "Add getActiveDevices api" into stage-aosp-master
-rw-r--r--core/api/system-current.txt1
-rw-r--r--core/java/android/bluetooth/BluetoothAdapter.java51
2 files changed, 52 insertions, 0 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 6b170bcf14db..35e169ba2953 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -1942,6 +1942,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();
diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java
index 9c69903d5995..3b744a73e75e 100644
--- a/core/java/android/bluetooth/BluetoothAdapter.java
+++ b/core/java/android/bluetooth/BluetoothAdapter.java
@@ -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.
@@ -2009,6 +2015,51 @@ public final class BluetoothAdapter {
}
/**
+ * 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
*
* @return true if Multiple Advertisement feature is supported