diff options
| author | 2020-03-18 09:05:50 +0000 | |
|---|---|---|
| committer | 2020-03-18 09:05:50 +0000 | |
| commit | ea93f91f2cbe3d8e2ffa34f8fc84c4f4d3a43feb (patch) | |
| tree | 6aead0e4319fd62c99609be0556d7cf8e00eceb6 | |
| parent | 6beb092933d2fee9135f3734b70d1ba0117c3e9b (diff) | |
| parent | 61ca7efbd1c9a044967c62221b4d8c803f8fb493 (diff) | |
Merge "Use device type to show corresponding icon and name" into rvc-dev
5 files changed, 159 insertions, 4 deletions
diff --git a/packages/SettingsLib/res/drawable/ic_media_group_device.xml b/packages/SettingsLib/res/drawable/ic_media_group_device.xml new file mode 100644 index 000000000000..ba5e65119ead --- /dev/null +++ b/packages/SettingsLib/res/drawable/ic_media_group_device.xml @@ -0,0 +1,32 @@ +<!-- + Copyright (C) 2020 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License + --> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24" + android:tint="?android:attr/colorControlNormal"> + <path + android:pathData="M18.2,1L9.8,1C8.81,1 8,1.81 8,2.8v14.4c0,0.99 0.81,1.79 1.8,1.79l8.4,0.01c0.99,0 1.8,-0.81 1.8,-1.8L20,2.8c0,-0.99 -0.81,-1.8 -1.8,-1.8zM14,3c1.1,0 2,0.89 2,2s-0.9,2 -2,2 -2,-0.89 -2,-2 0.9,-2 2,-2zM14,16.5c-2.21,0 -4,-1.79 -4,-4s1.79,-4 4,-4 4,1.79 4,4 -1.79,4 -4,4z" + android:fillColor="#000000"/> + <path + android:pathData="M14,12.5m-2.5,0a2.5,2.5 0,1 1,5 0a2.5,2.5 0,1 1,-5 0" + android:fillColor="#000000"/> + <path + android:pathData="M6,5H4v16c0,1.1 0.89,2 2,2h10v-2H6V5z" + android:fillColor="#000000"/> +</vector>
\ 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 b725ba5b8748..85fa988a866e 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java @@ -15,11 +15,17 @@ */ package com.android.settingslib.media; +import static android.media.MediaRoute2Info.TYPE_GROUP; +import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER; +import static android.media.MediaRoute2Info.TYPE_REMOTE_TV; + import android.content.Context; import android.graphics.drawable.Drawable; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; +import androidx.annotation.VisibleForTesting; + import com.android.settingslib.R; import com.android.settingslib.bluetooth.BluetoothUtils; @@ -51,7 +57,23 @@ public class InfoMediaDevice extends MediaDevice { public Drawable getIcon() { //TODO(b/120669861): Return remote device icon uri once api is ready. return BluetoothUtils.buildBtRainbowDrawable(mContext, - mContext.getDrawable(R.drawable.ic_media_device), getId().hashCode()); + mContext.getDrawable(getDrawableResId()), getId().hashCode()); + } + + @VisibleForTesting + int getDrawableResId() { + int resId; + switch (mRouteInfo.getType()) { + case TYPE_GROUP: + resId = R.drawable.ic_media_group_device; + break; + case TYPE_REMOTE_TV: + case TYPE_REMOTE_SPEAKER: + default: + resId = R.drawable.ic_media_device; + break; + } + return resId; } @Override diff --git a/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java index 166fbaa2a337..af88723c6249 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java @@ -15,11 +15,17 @@ */ package com.android.settingslib.media; +import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER; +import static android.media.MediaRoute2Info.TYPE_WIRED_HEADPHONES; +import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET; + import android.content.Context; import android.graphics.drawable.Drawable; import android.media.MediaRoute2Info; import android.media.MediaRouter2Manager; +import androidx.annotation.VisibleForTesting; + import com.android.settingslib.R; import com.android.settingslib.bluetooth.BluetoothUtils; @@ -43,7 +49,18 @@ public class PhoneMediaDevice extends MediaDevice { @Override public String getName() { - return mContext.getString(R.string.media_transfer_this_device_name); + CharSequence name; + switch (mRouteInfo.getType()) { + case TYPE_WIRED_HEADSET: + case TYPE_WIRED_HEADPHONES: + name = mRouteInfo.getName(); + break; + case TYPE_BUILTIN_SPEAKER: + default: + name = mContext.getString(R.string.media_transfer_this_device_name); + break; + } + return name.toString(); } @Override @@ -54,7 +71,23 @@ public class PhoneMediaDevice extends MediaDevice { @Override public Drawable getIcon() { return BluetoothUtils.buildBtRainbowDrawable(mContext, - mContext.getDrawable(R.drawable.ic_smartphone), getId().hashCode()); + mContext.getDrawable(getDrawableResId()), getId().hashCode()); + } + + @VisibleForTesting + int getDrawableResId() { + int resId; + switch (mRouteInfo.getType()) { + case TYPE_WIRED_HEADSET: + case TYPE_WIRED_HEADPHONES: + resId = com.android.internal.R.drawable.ic_bt_headphones_a2dp; + break; + case TYPE_BUILTIN_SPEAKER: + default: + resId = R.drawable.ic_smartphone; + break; + } + return resId; } @Override 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 77a67c286989..685c834ff328 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,10 @@ package com.android.settingslib.media; +import static android.media.MediaRoute2Info.TYPE_GROUP; +import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER; +import static android.media.MediaRoute2Info.TYPE_REMOTE_TV; + import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.when; @@ -86,4 +90,19 @@ public class InfoMediaDeviceTest { assertThat(mInfoMediaDevice.getId()).isEqualTo(TEST_ID); } + + @Test + public void getDrawableResId_returnCorrectResId() { + when(mRouteInfo.getType()).thenReturn(TYPE_REMOTE_TV); + + assertThat(mInfoMediaDevice.getDrawableResId()).isEqualTo(R.drawable.ic_media_device); + + when(mRouteInfo.getType()).thenReturn(TYPE_REMOTE_SPEAKER); + + assertThat(mInfoMediaDevice.getDrawableResId()).isEqualTo(R.drawable.ic_media_device); + + when(mRouteInfo.getType()).thenReturn(TYPE_GROUP); + + assertThat(mInfoMediaDevice.getDrawableResId()).isEqualTo(R.drawable.ic_media_group_device); + } } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java index db984fb8dc26..4c5cd9682b0f 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java @@ -16,15 +16,23 @@ package com.android.settingslib.media; +import static android.media.MediaRoute2Info.TYPE_BUILTIN_SPEAKER; +import static android.media.MediaRoute2Info.TYPE_WIRED_HEADPHONES; +import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET; + import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.when; + import android.content.Context; +import android.media.MediaRoute2Info; import com.android.settingslib.R; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; @@ -32,6 +40,9 @@ import org.robolectric.RuntimeEnvironment; @RunWith(RobolectricTestRunner.class) public class PhoneMediaDeviceTest { + @Mock + private MediaRoute2Info mInfo; + private Context mContext; private PhoneMediaDevice mPhoneMediaDevice; @@ -41,7 +52,7 @@ public class PhoneMediaDeviceTest { mContext = RuntimeEnvironment.application; mPhoneMediaDevice = - new PhoneMediaDevice(mContext, null, null, null); + new PhoneMediaDevice(mContext, null, mInfo, null); } @Test @@ -58,4 +69,42 @@ public class PhoneMediaDeviceTest { assertThat(mPhoneMediaDevice.getSummary()).isEmpty(); } + + @Test + public void getDrawableResId_returnCorrectResId() { + when(mInfo.getType()).thenReturn(TYPE_WIRED_HEADPHONES); + + assertThat(mPhoneMediaDevice.getDrawableResId()) + .isEqualTo(com.android.internal.R.drawable.ic_bt_headphones_a2dp); + + when(mInfo.getType()).thenReturn(TYPE_WIRED_HEADSET); + + assertThat(mPhoneMediaDevice.getDrawableResId()) + .isEqualTo(com.android.internal.R.drawable.ic_bt_headphones_a2dp); + + when(mInfo.getType()).thenReturn(TYPE_BUILTIN_SPEAKER); + + assertThat(mPhoneMediaDevice.getDrawableResId()).isEqualTo(R.drawable.ic_smartphone); + } + + @Test + public void getName_returnCorrectName() { + final String deviceName = "test_name"; + + when(mInfo.getType()).thenReturn(TYPE_WIRED_HEADPHONES); + when(mInfo.getName()).thenReturn(deviceName); + + assertThat(mPhoneMediaDevice.getName()) + .isEqualTo(deviceName); + + when(mInfo.getType()).thenReturn(TYPE_WIRED_HEADSET); + + assertThat(mPhoneMediaDevice.getName()) + .isEqualTo(deviceName); + + when(mInfo.getType()).thenReturn(TYPE_BUILTIN_SPEAKER); + + assertThat(mPhoneMediaDevice.getName()) + .isEqualTo(mContext.getString(R.string.media_transfer_this_device_name)); + } } |