diff --git a/packages/SettingsLib/res/drawable/ic_media_display_device.xml b/packages/SettingsLib/res/drawable/ic_media_display_device.xml index 78b4e2a23d45a..54fec782c7d12 100644 --- a/packages/SettingsLib/res/drawable/ic_media_display_device.xml +++ b/packages/SettingsLib/res/drawable/ic_media_display_device.xml @@ -15,16 +15,12 @@ limitations under the License. --> + android:width="18dp" + android:height="18dp" + android:viewportWidth="18" + android:viewportHeight="18"> \ No newline at end of file diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java index ea71e52dc9c97..949b2456042cd 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java @@ -15,6 +15,8 @@ */ package com.android.settingslib.media; +import static android.media.MediaRoute2Info.FEATURE_REMOTE_GROUP_PLAYBACK; +import static android.media.MediaRoute2Info.FEATURE_REMOTE_VIDEO_PLAYBACK; import static android.media.MediaRoute2Info.TYPE_GROUP; import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER; import static android.media.MediaRoute2Info.TYPE_REMOTE_TV; @@ -29,6 +31,8 @@ import androidx.annotation.VisibleForTesting; import com.android.settingslib.R; import com.android.settingslib.bluetooth.BluetoothUtils; +import java.util.List; + /** * InfoMediaDevice extends MediaDevice to represents wifi device. */ @@ -62,7 +66,7 @@ public class InfoMediaDevice extends MediaDevice { @Override public Drawable getIconWithoutBackground() { - return mContext.getDrawable(getDrawableResId()); + return mContext.getDrawable(getDrawableResIdByFeature()); } @VisibleForTesting @@ -83,6 +87,21 @@ public class InfoMediaDevice extends MediaDevice { return resId; } + @VisibleForTesting + int getDrawableResIdByFeature() { + int resId; + final List features = mRouteInfo.getFeatures(); + if (features.contains(FEATURE_REMOTE_GROUP_PLAYBACK)) { + resId = R.drawable.ic_media_group_device; + } else if (features.contains(FEATURE_REMOTE_VIDEO_PLAYBACK)) { + resId = R.drawable.ic_media_display_device; + } else { + resId = R.drawable.ic_media_speaker_device; + } + + return resId; + } + @Override public String getId() { return MediaDeviceUtils.getId(mRouteInfo); diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaDeviceTest.java index 49b236a2188f4..c45b7f333fa1a 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaDeviceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaDeviceTest.java @@ -16,6 +16,9 @@ package com.android.settingslib.media; +import static android.media.MediaRoute2Info.FEATURE_REMOTE_AUDIO_PLAYBACK; +import static android.media.MediaRoute2Info.FEATURE_REMOTE_GROUP_PLAYBACK; +import static android.media.MediaRoute2Info.FEATURE_REMOTE_VIDEO_PLAYBACK; import static android.media.MediaRoute2Info.TYPE_GROUP; import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER; import static android.media.MediaRoute2Info.TYPE_REMOTE_TV; @@ -38,6 +41,8 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; +import java.util.ArrayList; + @RunWith(RobolectricTestRunner.class) public class InfoMediaDeviceTest { @@ -107,4 +112,28 @@ public class InfoMediaDeviceTest { assertThat(mInfoMediaDevice.getDrawableResId()).isEqualTo(R.drawable.ic_media_group_device); } + + @Test + public void getDrawableResIdByFeature_returnCorrectResId() { + final ArrayList features = new ArrayList<>(); + features.add(FEATURE_REMOTE_VIDEO_PLAYBACK); + when(mRouteInfo.getFeatures()).thenReturn(features); + + assertThat(mInfoMediaDevice.getDrawableResIdByFeature()).isEqualTo( + R.drawable.ic_media_display_device); + + features.clear(); + features.add(FEATURE_REMOTE_AUDIO_PLAYBACK); + when(mRouteInfo.getFeatures()).thenReturn(features); + + assertThat(mInfoMediaDevice.getDrawableResIdByFeature()).isEqualTo( + R.drawable.ic_media_speaker_device); + + features.clear(); + features.add(FEATURE_REMOTE_GROUP_PLAYBACK); + when(mRouteInfo.getFeatures()).thenReturn(features); + + assertThat(mInfoMediaDevice.getDrawableResIdByFeature()).isEqualTo( + R.drawable.ic_media_group_device); + } }