From 44cc57cd9d964b04a01f27345b0c044d1cfc6c8c Mon Sep 17 00:00:00 2001 From: timhypeng Date: Tue, 11 Aug 2020 10:52:57 +0800 Subject: [PATCH] Display "pair new" only when local output device is available. -If media app does not support cast->phone transferring, local output audio device is unavailable. "pair new" is for Bluetooth which should be also unavilable. -These types are local output audio devices: TYPE_BUILTIN_SPEAKER TYPE_WIRED_HEADSET TYPE_WIRED_HEADPHONES TYPE_USB_DEVICE TYPE_USB_HEADSET TYPE_USB_ACCESSORY TYPE_DOCK TYPE_HDMI Bug: 163095048 Test: make -j50 RunSettingsRoboTests Change-Id: Ib844c7546e1946cb87fac04cb8b2b8f4acf06451 (cherry picked from commit 113ac8102aa1db6a1d901e6acbd41ca8f9cb934d) --- src/com/android/settings/media/MediaOutputSlice.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/media/MediaOutputSlice.java b/src/com/android/settings/media/MediaOutputSlice.java index 94a4f50fac1..b9d43b465b9 100644 --- a/src/com/android/settings/media/MediaOutputSlice.java +++ b/src/com/android/settings/media/MediaOutputSlice.java @@ -106,10 +106,15 @@ public class MediaOutputSlice implements CustomSliceable { final MediaDevice connectedDevice = worker.getCurrentConnectedMediaDevice(); if (devices.size() == 1) { // Zero state - for (MediaDevice device : devices) { - addRow(device, device, listBuilder); + final MediaDevice device = devices.iterator().next(); + addRow(device, device, listBuilder); + // Add "pair new" only when local output device exists + final int type = device.getDeviceType(); + if (type == MediaDevice.MediaDeviceType.TYPE_PHONE_DEVICE + || type == MediaDevice.MediaDeviceType.TYPE_3POINT5_MM_AUDIO_DEVICE + || type == MediaDevice.MediaDeviceType.TYPE_USB_C_AUDIO_DEVICE) { + listBuilder.addRow(getPairNewRow()); } - listBuilder.addRow(getPairNewRow()); } else { final boolean isTouched = worker.getIsTouched(); // Fix the last top device when user press device to transfer.