diff options
4 files changed, 25 insertions, 9 deletions
diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml index a4b3af990c17..2e64212d298a 100644 --- a/packages/SettingsLib/res/values/strings.xml +++ b/packages/SettingsLib/res/values/strings.xml @@ -1340,11 +1340,11 @@ <string name="notice_header" translatable="false"></string> <!-- Name of the phone device. [CHAR LIMIT=30] --> - <string name="media_transfer_this_device_name" product="default">This phone</string> + <string name="media_transfer_this_device_name">This phone</string> <!-- Name of the tablet device. [CHAR LIMIT=30] --> - <string name="media_transfer_this_device_name" product="tablet">This tablet</string> + <string name="media_transfer_this_device_name_tablet">This tablet</string> <!-- Name of the default media output of the TV. [CHAR LIMIT=30] --> - <string name="media_transfer_this_device_name" product="tv">@string/tv_media_transfer_default</string> + <string name="media_transfer_this_device_name_tv">@string/tv_media_transfer_default</string> <!-- Name of the dock device. [CHAR LIMIT=30] --> <string name="media_transfer_dock_speaker_device_name">Dock speaker</string> <!-- Default name of the external device. [CHAR LIMIT=30] --> diff --git a/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java index 15f33d2cff42..ba9180db0887 100644 --- a/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java @@ -37,6 +37,7 @@ import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.hdmi.HdmiPortInfo; import android.media.MediaRoute2Info; import android.media.RouteListingPreference; +import android.os.SystemProperties; import android.util.Log; import androidx.annotation.NonNull; @@ -45,6 +46,7 @@ import androidx.annotation.VisibleForTesting; import com.android.settingslib.R; import com.android.settingslib.media.flags.Flags; +import java.util.Arrays; import java.util.List; /** @@ -63,6 +65,17 @@ public class PhoneMediaDevice extends MediaDevice { private final DeviceIconUtil mDeviceIconUtil; + /** Returns this device name for media transfer. */ + public static @NonNull String getMediaTransferThisDeviceName(@NonNull Context context) { + if (isTv(context)) { + return context.getString(R.string.media_transfer_this_device_name_tv); + } else if (isTablet()) { + return context.getString(R.string.media_transfer_this_device_name_tablet); + } else { + return context.getString(R.string.media_transfer_this_device_name); + } + } + /** Returns the device name for the given {@code routeInfo}. */ public static String getSystemRouteNameFromType( @NonNull Context context, @NonNull MediaRoute2Info routeInfo) { @@ -80,7 +93,7 @@ public class PhoneMediaDevice extends MediaDevice { name = context.getString(R.string.media_transfer_dock_speaker_device_name); break; case TYPE_BUILTIN_SPEAKER: - name = context.getString(R.string.media_transfer_this_device_name); + name = getMediaTransferThisDeviceName(context); break; case TYPE_HDMI: name = context.getString(isTv ? R.string.tv_media_transfer_default : @@ -135,6 +148,11 @@ public class PhoneMediaDevice extends MediaDevice { && Flags.enableTvMediaOutputDialog(); } + static boolean isTablet() { + return Arrays.asList(SystemProperties.get("ro.build.characteristics").split(",")) + .contains("tablet"); + } + // MediaRoute2Info.getType was made public on API 34, but exists since API 30. @SuppressWarnings("NewApi") @Override 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 ceba9be70487..e2d58d660fd5 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 @@ -24,6 +24,7 @@ import static android.media.MediaRoute2Info.TYPE_WIRED_HEADSET; import static com.android.settingslib.media.PhoneMediaDevice.PHONE_ID; import static com.android.settingslib.media.PhoneMediaDevice.USB_HEADSET_ID; import static com.android.settingslib.media.PhoneMediaDevice.WIRED_HEADSET_ID; +import static com.android.settingslib.media.PhoneMediaDevice.getMediaTransferThisDeviceName; import static com.google.common.truth.Truth.assertThat; @@ -114,7 +115,7 @@ public class PhoneMediaDeviceTest { when(mInfo.getType()).thenReturn(TYPE_BUILTIN_SPEAKER); assertThat(mPhoneMediaDevice.getName()) - .isEqualTo(mContext.getString(R.string.media_transfer_this_device_name)); + .isEqualTo(getMediaTransferThisDeviceName(mContext)); } @EnableFlags(Flags.FLAG_ENABLE_AUDIO_POLICIES_DEVICE_AND_BLUETOOTH_CONTROLLER) diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/pipeline/MediaDeviceManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/pipeline/MediaDeviceManagerTest.kt index 437a35f2fab5..e3c4c2858b3d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/pipeline/MediaDeviceManagerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/pipeline/MediaDeviceManagerTest.kt @@ -475,10 +475,7 @@ public class MediaDeviceManagerTest : SysuiTestCase() { // Then the device name is the PhoneMediaDevice string val data = captureDeviceData(KEY) - assertThat(data.name) - .isEqualTo( - context.getString(com.android.settingslib.R.string.media_transfer_this_device_name) - ) + assertThat(data.name).isEqualTo(PhoneMediaDevice.getMediaTransferThisDeviceName(context)) } @Test |