Fallback to including track language name if display name is not found
Issue: androidx/media#988 PiperOrigin-RevId: 606193299
This commit is contained in:
parent
adc23e8e8b
commit
0b0c419c73
@ -22,6 +22,9 @@
|
|||||||
* IMA extension:
|
* IMA extension:
|
||||||
* Session:
|
* Session:
|
||||||
* UI:
|
* UI:
|
||||||
|
* Fallback to include audio track language name if `Locale` cannot
|
||||||
|
identify a display name
|
||||||
|
([#988](https://github.com/androidx/media/issues/988)).
|
||||||
* Downloads:
|
* Downloads:
|
||||||
* OkHttp Extension:
|
* OkHttp Extension:
|
||||||
* Cronet Extension:
|
* Cronet Extension:
|
||||||
|
@ -56,7 +56,13 @@ public class DefaultTrackNameProvider implements TrackNameProvider {
|
|||||||
} else {
|
} else {
|
||||||
trackName = buildLanguageOrLabelString(format);
|
trackName = buildLanguageOrLabelString(format);
|
||||||
}
|
}
|
||||||
return trackName.length() == 0 ? resources.getString(R.string.exo_track_unknown) : trackName;
|
if (trackName.length() != 0) {
|
||||||
|
return trackName;
|
||||||
|
}
|
||||||
|
@Nullable String language = format.language;
|
||||||
|
return (language == null || language.trim().isEmpty())
|
||||||
|
? resources.getString(R.string.exo_track_unknown)
|
||||||
|
: resources.getString(R.string.exo_track_unknown_name, language);
|
||||||
}
|
}
|
||||||
|
|
||||||
private String buildResolutionString(Format format) {
|
private String buildResolutionString(Format format) {
|
||||||
|
@ -100,6 +100,8 @@
|
|||||||
<string name="exo_track_selection_auto">Auto</string>
|
<string name="exo_track_selection_auto">Auto</string>
|
||||||
<!-- Name of a media track about which nothing is known. Shown in a list view that allows the user to choose between multiple media tracks. [CHAR LIMIT=20] -->
|
<!-- Name of a media track about which nothing is known. Shown in a list view that allows the user to choose between multiple media tracks. [CHAR LIMIT=20] -->
|
||||||
<string name="exo_track_unknown">Unknown</string>
|
<string name="exo_track_unknown">Unknown</string>
|
||||||
|
<!-- Name of a media track of which the language name could not be identified. Shown in a list view that allows the user to choose between multiple media tracks. [CHAR LIMIT=20] -->
|
||||||
|
<string name="exo_track_unknown_name">Unknown (<xliff:g id="name" example="Frengligian">%1$s</xliff:g>)</string>
|
||||||
<!-- Resolution of a video track. [CHAR LIMIT=20] -->
|
<!-- Resolution of a video track. [CHAR LIMIT=20] -->
|
||||||
<string name="exo_track_resolution"><xliff:g id="width" example="1024">%1$d</xliff:g> × <xliff:g id="height" example="768">%2$d</xliff:g></string>
|
<string name="exo_track_resolution"><xliff:g id="width" example="1024">%1$d</xliff:g> × <xliff:g id="height" example="768">%2$d</xliff:g></string>
|
||||||
<!-- Describes an audio track with one channel. Shown in a list view that allows the user to choose between multiple audio tracks. [CHAR LIMIT=20] -->
|
<!-- Describes an audio track with one channel. Shown in a list view that allows the user to choose between multiple audio tracks. [CHAR LIMIT=20] -->
|
||||||
|
@ -29,13 +29,46 @@ import org.junit.runner.RunWith;
|
|||||||
public class DefaultTrackNameProviderTest {
|
public class DefaultTrackNameProviderTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getTrackName_handlesInvalidLanguage() {
|
public void getTrackName_withInvalidLanguage_returnsUnknownWithLanguage() {
|
||||||
Resources resources = ApplicationProvider.getApplicationContext().getResources();
|
Resources resources = ApplicationProvider.getApplicationContext().getResources();
|
||||||
DefaultTrackNameProvider provider = new DefaultTrackNameProvider(resources);
|
DefaultTrackNameProvider provider = new DefaultTrackNameProvider(resources);
|
||||||
Format format = new Format.Builder().setLanguage("```").build();
|
Format format = new Format.Builder().setLanguage("```").build();
|
||||||
|
|
||||||
String name = provider.getTrackName(format);
|
String name = provider.getTrackName(format);
|
||||||
|
|
||||||
|
assertThat(name).isEqualTo(resources.getString(R.string.exo_track_unknown_name, "```"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getTrackName_withLanguageEmptyString_returnsUnknown() {
|
||||||
|
Resources resources = ApplicationProvider.getApplicationContext().getResources();
|
||||||
|
DefaultTrackNameProvider provider = new DefaultTrackNameProvider(resources);
|
||||||
|
Format format = new Format.Builder().setLanguage("").build();
|
||||||
|
|
||||||
|
String name = provider.getTrackName(format);
|
||||||
|
|
||||||
assertThat(name).isEqualTo(resources.getString(R.string.exo_track_unknown));
|
assertThat(name).isEqualTo(resources.getString(R.string.exo_track_unknown));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getTrackName_withLanguageSpacesNewLine_returnsUnknown() {
|
||||||
|
Resources resources = ApplicationProvider.getApplicationContext().getResources();
|
||||||
|
DefaultTrackNameProvider provider = new DefaultTrackNameProvider(resources);
|
||||||
|
Format format = new Format.Builder().setLanguage(" \n ").build();
|
||||||
|
|
||||||
|
String name = provider.getTrackName(format);
|
||||||
|
|
||||||
|
assertThat(name).isEqualTo(resources.getString(R.string.exo_track_unknown));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getTrackName_withLanguageEmptyStringAndLabel_returnsLabel() {
|
||||||
|
Resources resources = ApplicationProvider.getApplicationContext().getResources();
|
||||||
|
DefaultTrackNameProvider provider = new DefaultTrackNameProvider(resources);
|
||||||
|
Format format = new Format.Builder().setLanguage("").setLabel("Main").build();
|
||||||
|
|
||||||
|
String name = provider.getTrackName(format);
|
||||||
|
|
||||||
|
assertThat(name).isEqualTo("Main");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user