diff --git a/src/com/android/settings/media/MediaOutputSlice.java b/src/com/android/settings/media/MediaOutputSlice.java index 9dbf948ec99..27960e123ea 100644 --- a/src/com/android/settings/media/MediaOutputSlice.java +++ b/src/com/android/settings/media/MediaOutputSlice.java @@ -197,6 +197,8 @@ public class MediaOutputSlice implements CustomSliceable { } listBuilder.addInputRange(builder); } else { + Log.d(TAG, "addRow device = " + device.getName() + " MaxVolume = " + + device.getMaxVolume()); final ListBuilder.RowBuilder builder = getMediaDeviceRow(device); // Check end item visibility if (device.getDeviceType() == MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE @@ -266,16 +268,24 @@ public class MediaOutputSlice implements CustomSliceable { if (device.getDeviceType() == MediaDevice.MediaDeviceType.TYPE_BLUETOOTH_DEVICE && !device.isConnected()) { - // Append status to title only for the disconnected Bluetooth device. - final SpannableString spannableTitle = new SpannableString( - mContext.getString(R.string.media_output_disconnected_status, deviceName)); - spannableTitle.setSpan(new ForegroundColorSpan( - Utils.getColorAttrDefaultColor(mContext, android.R.attr.textColorSecondary)), - deviceName.length(), - spannableTitle.length(), SPAN_EXCLUSIVE_EXCLUSIVE); - rowBuilder.setTitle(spannableTitle); - rowBuilder.setPrimaryAction(SliceAction.create(broadcastAction, deviceIcon, - ListBuilder.ICON_IMAGE, spannableTitle)); + if (device.getState() == LocalMediaManager.MediaDeviceState.STATE_CONNECTING) { + rowBuilder.setTitle(deviceName); + rowBuilder.setPrimaryAction(SliceAction.create(broadcastAction, deviceIcon, + ListBuilder.ICON_IMAGE, deviceName)); + rowBuilder.setSubtitle(mContext.getText(R.string.media_output_switching)); + } else { + // Append status to title only for the disconnected Bluetooth device. + final SpannableString spannableTitle = new SpannableString( + mContext.getString(R.string.media_output_disconnected_status, deviceName)); + spannableTitle.setSpan(new ForegroundColorSpan( + Utils.getColorAttrDefaultColor(mContext, + android.R.attr.textColorSecondary)), + deviceName.length(), + spannableTitle.length(), SPAN_EXCLUSIVE_EXCLUSIVE); + rowBuilder.setTitle(spannableTitle); + rowBuilder.setPrimaryAction(SliceAction.create(broadcastAction, deviceIcon, + ListBuilder.ICON_IMAGE, spannableTitle)); + } } else { rowBuilder.setTitle(deviceName); rowBuilder.setPrimaryAction(SliceAction.create(broadcastAction, deviceIcon, diff --git a/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java b/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java index 305d1ab72b9..d4590b5a455 100644 --- a/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java +++ b/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java @@ -473,6 +473,43 @@ public class MediaOutputSliceTest { R.string.bluetooth_pairing_pref_title))).isEqualTo(-1); } + @Test + public void getSlice_disconnectedBtOnTransferring_containTransferringSubtitle() { + final List mSelectedDevices = new ArrayList<>(); + final List mSelectableDevices = new ArrayList<>(); + mDevices.clear(); + final MediaDevice device = mock(MediaDevice.class); + when(device.getName()).thenReturn(TEST_DEVICE_1_NAME); + when(device.getIcon()).thenReturn(mTestDrawable); + when(device.getMaxVolume()).thenReturn(100); + when(device.isConnected()).thenReturn(true); + when(device.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_BLUETOOTH_DEVICE); + when(device.getId()).thenReturn(TEST_DEVICE_1_ID); + final MediaDevice device2 = mock(MediaDevice.class); + when(device2.getName()).thenReturn(TEST_DEVICE_2_NAME); + when(device2.getIcon()).thenReturn(mTestDrawable); + when(device2.getMaxVolume()).thenReturn(100); + when(device2.isConnected()).thenReturn(false); + when(device2.getState()).thenReturn(LocalMediaManager.MediaDeviceState.STATE_CONNECTING); + when(device2.getDeviceType()).thenReturn(MediaDevice.MediaDeviceType.TYPE_BLUETOOTH_DEVICE); + when(device2.getId()).thenReturn(TEST_DEVICE_2_ID); + mSelectedDevices.add(device); + mSelectableDevices.add(device2); + when(mLocalMediaManager.getCurrentConnectedDevice()).thenReturn(device); + mDevices.add(device); + mDevices.add(device2); + when(mLocalMediaManager.getSelectedMediaDevice()).thenReturn(mSelectedDevices); + when(mLocalMediaManager.getSelectableMediaDevice()).thenReturn(mSelectableDevices); + mMediaDeviceUpdateWorker.onDeviceListUpdate(mDevices); + + final Slice mediaSlice = mMediaOutputSlice.getSlice(); + final String sliceInfo = SliceQuery.findAll(mediaSlice, FORMAT_SLICE, HINT_LIST_ITEM, + null).toString(); + + assertThat(TextUtils.indexOf(sliceInfo, mContext.getText(R.string.media_output_switching))) + .isNotEqualTo(-1); + } + @Test public void onNotifyChange_foundMediaDevice_connect() { mDevices.clear();