diff options
author | 2021-10-19 06:32:08 +0000 | |
---|---|---|
committer | 2021-10-19 06:32:08 +0000 | |
commit | 93ef99202a844f68cdecff77f85c3099d7d3a5e4 (patch) | |
tree | dc0bfb3142c54ac20297e85b68d1d67ec5152241 | |
parent | 9dcb0345f6bdba7dd43fddcc5415bd73db508162 (diff) | |
parent | 3fb7312ce9392d2a27eea28ec738734b74da13ed (diff) |
Merge "settingslib/media: Add LeAudio support" am: 10d9b01f61 am: 8588ef52ac am: f02e22d3cc am: 5032d10a70 am: 3fb7312ce9
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1857733
Change-Id: Ib333661a43f76e43c55cb1fa2a6f8ffafa446ce6
4 files changed, 20 insertions, 4 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java index dd8f604395db..aede665fe9a7 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java @@ -21,6 +21,7 @@ import static android.media.MediaRoute2Info.TYPE_DOCK; import static android.media.MediaRoute2Info.TYPE_GROUP; import static android.media.MediaRoute2Info.TYPE_HDMI; import static android.media.MediaRoute2Info.TYPE_HEARING_AID; +import static android.media.MediaRoute2Info.TYPE_BLE_HEADSET; import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER; import static android.media.MediaRoute2Info.TYPE_REMOTE_TV; import static android.media.MediaRoute2Info.TYPE_UNKNOWN; @@ -482,6 +483,7 @@ public class InfoMediaManager extends MediaManager { break; case TYPE_HEARING_AID: case TYPE_BLUETOOTH_A2DP: + case TYPE_BLE_HEADSET: final BluetoothDevice device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(route.getAddress()); final CachedBluetoothDevice cachedDevice = diff --git a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java index 22001c9c925a..215e2a06e442 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java @@ -38,6 +38,7 @@ import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager; import com.android.settingslib.bluetooth.HearingAidProfile; import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.settingslib.bluetooth.LocalBluetoothProfile; +import com.android.settingslib.bluetooth.LeAudioProfile; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -440,6 +441,7 @@ public class LocalMediaManager implements BluetoothCallback { private boolean isActiveDevice(CachedBluetoothDevice device) { boolean isActiveDeviceA2dp = false; boolean isActiveDeviceHearingAid = false; + boolean isActiveLeAudio = false; final A2dpProfile a2dpProfile = mLocalBluetoothManager.getProfileManager().getA2dpProfile(); if (a2dpProfile != null) { isActiveDeviceA2dp = device.getDevice().equals(a2dpProfile.getActiveDevice()); @@ -453,7 +455,15 @@ public class LocalMediaManager implements BluetoothCallback { } } - return isActiveDeviceA2dp || isActiveDeviceHearingAid; + if (!isActiveDeviceA2dp && !isActiveDeviceHearingAid) { + final LeAudioProfile leAudioProfile = mLocalBluetoothManager.getProfileManager() + .getLeAudioProfile(); + if (leAudioProfile != null) { + isActiveLeAudio = leAudioProfile.getActiveDevices().contains(device.getDevice()); + } + } + + return isActiveDeviceA2dp || isActiveDeviceHearingAid || isActiveLeAudio; } private Collection<DeviceCallback> getCallbacks() { @@ -526,7 +536,7 @@ public class LocalMediaManager implements BluetoothCallback { if (cachedDevice != null) { if (cachedDevice.getBondState() == BluetoothDevice.BOND_BONDED && !cachedDevice.isConnected() - && isA2dpOrHearingAidDevice(cachedDevice)) { + && isMediaDevice(cachedDevice)) { deviceCount++; cachedBluetoothDeviceList.add(cachedDevice); if (deviceCount >= MAX_DISCONNECTED_DEVICE_NUM) { @@ -550,9 +560,10 @@ public class LocalMediaManager implements BluetoothCallback { return new ArrayList<>(mDisconnectedMediaDevices); } - private boolean isA2dpOrHearingAidDevice(CachedBluetoothDevice device) { + private boolean isMediaDevice(CachedBluetoothDevice device) { for (LocalBluetoothProfile profile : device.getConnectableProfiles()) { - if (profile instanceof A2dpProfile || profile instanceof HearingAidProfile) { + if (profile instanceof A2dpProfile || profile instanceof HearingAidProfile || + profile instanceof LeAudioProfile) { return true; } } diff --git a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java index f21c3598a23d..a49d7f60a479 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java @@ -29,6 +29,7 @@ import static android.media.MediaRoute2Info.TYPE_USB_DEVICE; import static android.media.MediaRoute2Info.TYPE_USB_HEADSET; import static android.media.MediaRoute2Info.TYPE_WIRED_HEADPHONES; import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET; +import static android.media.MediaRoute2Info.TYPE_BLE_HEADSET; import android.content.Context; import android.content.res.ColorStateList; @@ -122,6 +123,7 @@ public abstract class MediaDevice implements Comparable<MediaDevice> { break; case TYPE_HEARING_AID: case TYPE_BLUETOOTH_A2DP: + case TYPE_BLE_HEADSET: mType = MediaDeviceType.TYPE_BLUETOOTH_DEVICE; break; case TYPE_UNKNOWN: diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/BluetoothMediaDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/BluetoothMediaDeviceTest.java index e887c45083c0..f50802a1702e 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/BluetoothMediaDeviceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/BluetoothMediaDeviceTest.java @@ -52,6 +52,7 @@ public class BluetoothMediaDeviceTest { when(mDevice.isActiveDevice(BluetoothProfile.A2DP)).thenReturn(true); when(mDevice.isActiveDevice(BluetoothProfile.HEARING_AID)).thenReturn(true); + when(mDevice.isActiveDevice(BluetoothProfile.LE_AUDIO)).thenReturn(true); mBluetoothMediaDevice = new BluetoothMediaDevice(mContext, mDevice, null, null, null); } |