aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLive Channels Team <no-reply@google.com>2018-04-27 14:17:31 -0700
committerNick Chalko <nchalko@google.com>2018-05-16 15:55:44 -0700
commit0b389cbec4b66034a0391cb651c0a26781bf4f04 (patch)
treefad1d2220e0465256909289790b8196093c4ad02
parent3654ae7288c2365c6379ff6e74cdbf0b606c55db (diff)
downloadTV-0b389cbec4b66034a0391cb651c0a26781bf4f04.tar.gz
Move needToShowSampleRate and getMultiAudioString from Utils to TvTrackInfoUtils.
PiperOrigin-RevId: 194591872 Change-Id: Ied0a5b3c23d092c8f2b7269424552ea12f0394f1
-rw-r--r--src/com/android/tv/MainActivity.java8
-rw-r--r--src/com/android/tv/ui/sidepanel/MultiAudioFragment.java7
-rw-r--r--src/com/android/tv/util/TvTrackInfoUtils.java94
-rw-r--r--src/com/android/tv/util/Utils.java87
-rw-r--r--tests/unit/src/com/android/tv/util/TvTrackInfoUtilsTest.java127
5 files changed, 104 insertions, 219 deletions
diff --git a/src/com/android/tv/MainActivity.java b/src/com/android/tv/MainActivity.java
index dba3acd0..4a33643f 100644
--- a/src/com/android/tv/MainActivity.java
+++ b/src/com/android/tv/MainActivity.java
@@ -1899,7 +1899,8 @@ public class MainActivity extends Activity
selectTrack(TvTrackInfo.TYPE_AUDIO, bestTrack, UNDEFINED_TRACK_INDEX);
} else {
mTvOptionsManager.onMultiAudioChanged(
- Utils.getMultiAudioString(this, bestTrack, false));
+ TvTrackInfoUtils
+ .getMultiAudioString(this, bestTrack, false));
}
return;
}
@@ -2548,7 +2549,10 @@ public class MainActivity extends Activity
mTvView.selectTrack(type, track == null ? null : track.getId());
if (type == TvTrackInfo.TYPE_AUDIO) {
mTvOptionsManager.onMultiAudioChanged(
- track == null ? null : Utils.getMultiAudioString(this, track, false));
+ track == null
+ ? null
+ : TvTrackInfoUtils
+ .getMultiAudioString(this, track, false));
} else if (type == TvTrackInfo.TYPE_SUBTITLE) {
mTvOptionsManager.onClosedCaptionsChanged(track, trackIndex);
}
diff --git a/src/com/android/tv/ui/sidepanel/MultiAudioFragment.java b/src/com/android/tv/ui/sidepanel/MultiAudioFragment.java
index 03b71c8c..7a65247f 100644
--- a/src/com/android/tv/ui/sidepanel/MultiAudioFragment.java
+++ b/src/com/android/tv/ui/sidepanel/MultiAudioFragment.java
@@ -20,7 +20,7 @@ import android.media.tv.TvTrackInfo;
import android.text.TextUtils;
import android.view.KeyEvent;
import com.android.tv.R;
-import com.android.tv.util.Utils;
+import com.android.tv.util.TvTrackInfoUtils;
import java.util.ArrayList;
import java.util.List;
@@ -51,12 +51,13 @@ public class MultiAudioFragment extends SideFragment {
List<Item> items = new ArrayList<>();
if (tracks != null) {
- boolean needToShowSampleRate = Utils.needToShowSampleRate(getActivity(), tracks);
+ boolean needToShowSampleRate = TvTrackInfoUtils
+ .needToShowSampleRate(getActivity(), tracks);
int pos = 0;
for (final TvTrackInfo track : tracks) {
RadioButtonItem item =
new MultiAudioOptionItem(
- Utils.getMultiAudioString(
+ TvTrackInfoUtils.getMultiAudioString(
getActivity(), track, needToShowSampleRate),
track.getId());
if (track.getId().equals(mSelectedTrackId)) {
diff --git a/src/com/android/tv/util/TvTrackInfoUtils.java b/src/com/android/tv/util/TvTrackInfoUtils.java
index c73a0622..0eeb8894 100644
--- a/src/com/android/tv/util/TvTrackInfoUtils.java
+++ b/src/com/android/tv/util/TvTrackInfoUtils.java
@@ -15,14 +15,28 @@
*/
package com.android.tv.util;
+import android.content.Context;
import android.media.tv.TvTrackInfo;
+import android.text.TextUtils;
+import android.util.Log;
+import com.android.tv.R;
import java.util.Comparator;
+import java.util.HashSet;
import java.util.List;
+import java.util.Locale;
import java.util.Objects;
+import java.util.Set;
/** Static utilities for {@link TvTrackInfo}. */
public class TvTrackInfoUtils {
+ private static final String TAG = "TvTrackInfoUtils";
+ private static final int AUDIO_CHANNEL_NONE = 0;
+ private static final int AUDIO_CHANNEL_MONO = 1;
+ private static final int AUDIO_CHANNEL_STEREO = 2;
+ private static final int AUDIO_CHANNEL_SURROUND_6 = 6;
+ private static final int AUDIO_CHANNEL_SURROUND_8 = 8;
+
/**
* Compares how closely two {@link android.media.tv.TvTrackInfo}s match {@code language}, {@code
* channelCount} and {@code id} in that precedence.
@@ -93,5 +107,85 @@ public class TvTrackInfoUtils {
return best;
}
+ public static boolean needToShowSampleRate(Context context, List<TvTrackInfo> tracks) {
+ Set<String> multiAudioStrings = new HashSet<>();
+ for (TvTrackInfo track : tracks) {
+ String multiAudioString = getMultiAudioString(context, track, false);
+ if (multiAudioStrings.contains(multiAudioString)) {
+ return true;
+ }
+ multiAudioStrings.add(multiAudioString);
+ }
+ return false;
+ }
+
+ public static String getMultiAudioString(
+ Context context, TvTrackInfo track, boolean showSampleRate) {
+ if (track.getType() != TvTrackInfo.TYPE_AUDIO) {
+ throw new IllegalArgumentException("Not an audio track: " + track);
+ }
+ String language = context.getString(R.string.multi_audio_unknown_language);
+ if (!TextUtils.isEmpty(track.getLanguage())) {
+ language = new Locale(track.getLanguage()).getDisplayName();
+ } else {
+ Log.d(TAG, "No language information found for the audio track: " + track);
+ }
+
+ StringBuilder metadata = new StringBuilder();
+ switch (track.getAudioChannelCount()) {
+ case AUDIO_CHANNEL_NONE:
+ break;
+ case AUDIO_CHANNEL_MONO:
+ metadata.append(context.getString(R.string.multi_audio_channel_mono));
+ break;
+ case AUDIO_CHANNEL_STEREO:
+ metadata.append(context.getString(R.string.multi_audio_channel_stereo));
+ break;
+ case AUDIO_CHANNEL_SURROUND_6:
+ metadata.append(context.getString(R.string.multi_audio_channel_surround_6));
+ break;
+ case AUDIO_CHANNEL_SURROUND_8:
+ metadata.append(context.getString(R.string.multi_audio_channel_surround_8));
+ break;
+ default:
+ if (track.getAudioChannelCount() > 0) {
+ metadata.append(
+ context.getString(
+ R.string.multi_audio_channel_suffix,
+ track.getAudioChannelCount()));
+ } else {
+ Log.d(
+ TAG,
+ "Invalid audio channel count ("
+ + track.getAudioChannelCount()
+ + ") found for the audio track: "
+ + track);
+ }
+ break;
+ }
+ if (showSampleRate) {
+ int sampleRate = track.getAudioSampleRate();
+ if (sampleRate > 0) {
+ if (metadata.length() > 0) {
+ metadata.append(", ");
+ }
+ int integerPart = sampleRate / 1000;
+ int tenths = (sampleRate % 1000) / 100;
+ metadata.append(integerPart);
+ if (tenths != 0) {
+ metadata.append(".");
+ metadata.append(tenths);
+ }
+ metadata.append("kHz");
+ }
+ }
+
+ if (metadata.length() == 0) {
+ return language;
+ }
+ return context.getString(
+ R.string.multi_audio_display_string_with_channel, language, metadata.toString());
+ }
+
private TvTrackInfoUtils() {}
}
diff --git a/src/com/android/tv/util/Utils.java b/src/com/android/tv/util/Utils.java
index ed57f1d3..ca1e2112 100644
--- a/src/com/android/tv/util/Utils.java
+++ b/src/com/android/tv/util/Utils.java
@@ -29,7 +29,6 @@ import android.media.tv.TvContract;
import android.media.tv.TvContract.Channels;
import android.media.tv.TvContract.Programs.Genres;
import android.media.tv.TvInputInfo;
-import android.media.tv.TvTrackInfo;
import android.net.Uri;
import android.os.Looper;
import android.preference.PreferenceManager;
@@ -99,12 +98,6 @@ public class Utils {
private static final int VIDEO_ULTRA_HD_WIDTH = 2048;
private static final int VIDEO_ULTRA_HD_HEIGHT = 1536;
- private static final int AUDIO_CHANNEL_NONE = 0;
- private static final int AUDIO_CHANNEL_MONO = 1;
- private static final int AUDIO_CHANNEL_STEREO = 2;
- private static final int AUDIO_CHANNEL_SURROUND_6 = 6;
- private static final int AUDIO_CHANNEL_SURROUND_8 = 8;
-
private static final long RECORDING_FAILED_REASON_NONE = 0;
private static final long HALF_MINUTE_MS = TimeUnit.SECONDS.toMillis(30);
private static final long ONE_DAY_MS = TimeUnit.DAYS.toMillis(1);
@@ -587,86 +580,6 @@ public class Utils {
return "";
}
- public static boolean needToShowSampleRate(Context context, List<TvTrackInfo> tracks) {
- Set<String> multiAudioStrings = new HashSet<>();
- for (TvTrackInfo track : tracks) {
- String multiAudioString = getMultiAudioString(context, track, false);
- if (multiAudioStrings.contains(multiAudioString)) {
- return true;
- }
- multiAudioStrings.add(multiAudioString);
- }
- return false;
- }
-
- public static String getMultiAudioString(
- Context context, TvTrackInfo track, boolean showSampleRate) {
- if (track.getType() != TvTrackInfo.TYPE_AUDIO) {
- throw new IllegalArgumentException("Not an audio track: " + track);
- }
- String language = context.getString(R.string.multi_audio_unknown_language);
- if (!TextUtils.isEmpty(track.getLanguage())) {
- language = new Locale(track.getLanguage()).getDisplayName();
- } else {
- Log.d(TAG, "No language information found for the audio track: " + track);
- }
-
- StringBuilder metadata = new StringBuilder();
- switch (track.getAudioChannelCount()) {
- case AUDIO_CHANNEL_NONE:
- break;
- case AUDIO_CHANNEL_MONO:
- metadata.append(context.getString(R.string.multi_audio_channel_mono));
- break;
- case AUDIO_CHANNEL_STEREO:
- metadata.append(context.getString(R.string.multi_audio_channel_stereo));
- break;
- case AUDIO_CHANNEL_SURROUND_6:
- metadata.append(context.getString(R.string.multi_audio_channel_surround_6));
- break;
- case AUDIO_CHANNEL_SURROUND_8:
- metadata.append(context.getString(R.string.multi_audio_channel_surround_8));
- break;
- default:
- if (track.getAudioChannelCount() > 0) {
- metadata.append(
- context.getString(
- R.string.multi_audio_channel_suffix,
- track.getAudioChannelCount()));
- } else {
- Log.d(
- TAG,
- "Invalid audio channel count ("
- + track.getAudioChannelCount()
- + ") found for the audio track: "
- + track);
- }
- break;
- }
- if (showSampleRate) {
- int sampleRate = track.getAudioSampleRate();
- if (sampleRate > 0) {
- if (metadata.length() > 0) {
- metadata.append(", ");
- }
- int integerPart = sampleRate / 1000;
- int tenths = (sampleRate % 1000) / 100;
- metadata.append(integerPart);
- if (tenths != 0) {
- metadata.append(".");
- metadata.append(tenths);
- }
- metadata.append("kHz");
- }
- }
-
- if (metadata.length() == 0) {
- return language;
- }
- return context.getString(
- R.string.multi_audio_display_string_with_channel, language, metadata.toString());
- }
-
public static boolean isEqualLanguage(String lang1, String lang2) {
if (lang1 == null) {
return lang2 == null;
diff --git a/tests/unit/src/com/android/tv/util/TvTrackInfoUtilsTest.java b/tests/unit/src/com/android/tv/util/TvTrackInfoUtilsTest.java
deleted file mode 100644
index d84a90d4..00000000
--- a/tests/unit/src/com/android/tv/util/TvTrackInfoUtilsTest.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright (C) 2015 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.
- */
-package com.android.tv.util;
-
-import static com.android.tv.util.TvTrackInfoUtils.getBestTrackInfo;
-import static com.google.common.truth.Truth.assertWithMessage;
-
-import android.media.tv.TvTrackInfo;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
-import com.android.tv.testing.ComparatorTester;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-/** Tests for {@link com.android.tv.util.TvTrackInfoUtils}. */
-@SmallTest
-@RunWith(AndroidJUnit4.class)
-public class TvTrackInfoUtilsTest {
- private static final String UN_MATCHED_ID = "no matching ID";
-
- private static final TvTrackInfo INFO_1_EN_1 = create("1", "en", 1);
-
- private static final TvTrackInfo INFO_2_EN_5 = create("2", "en", 5);
-
- private static final TvTrackInfo INFO_3_FR_8 = create("3", "fr", 8);
-
- private static final TvTrackInfo INFO_4_NULL_2 = create("4", null, 2);
-
- private static final TvTrackInfo INFO_5_NULL_6 = create("5", null, 6);
-
- private static TvTrackInfo create(String id, String fr, int audioChannelCount) {
- return new TvTrackInfo.Builder(TvTrackInfo.TYPE_AUDIO, id)
- .setLanguage(fr)
- .setAudioChannelCount(audioChannelCount)
- .build();
- }
-
- private static final List<TvTrackInfo> ALL =
- Arrays.asList(INFO_1_EN_1, INFO_2_EN_5, INFO_3_FR_8, INFO_4_NULL_2, INFO_5_NULL_6);
- private static final List<TvTrackInfo> NULL_LANGUAGE_TRACKS =
- Arrays.asList(INFO_4_NULL_2, INFO_5_NULL_6);
-
- @Test
- public void testGetBestTrackInfo_empty() {
- TvTrackInfo result = getBestTrackInfo(Collections.emptyList(), UN_MATCHED_ID, "en", 1);
- assertWithMessage("best track ").that(result).isEqualTo(null);
- }
-
- @Test
- public void testGetBestTrackInfo_exactMatch() {
- TvTrackInfo result = getBestTrackInfo(ALL, "1", "en", 1);
- assertWithMessage("best track ").that(result).isEqualTo(INFO_1_EN_1);
- }
-
- @Test
- public void testGetBestTrackInfo_langAndChannelCountMatch() {
- TvTrackInfo result = getBestTrackInfo(ALL, UN_MATCHED_ID, "en", 5);
- assertWithMessage("best track ").that(result).isEqualTo(INFO_2_EN_5);
- }
-
- @Test
- public void testGetBestTrackInfo_languageOnlyMatch() {
- TvTrackInfo result = getBestTrackInfo(ALL, UN_MATCHED_ID, "fr", 1);
- assertWithMessage("best track ").that(result).isEqualTo(INFO_3_FR_8);
- }
-
- @Test
- public void testGetBestTrackInfo_channelCountOnlyMatchWithNullLanguage() {
- TvTrackInfo result = getBestTrackInfo(ALL, UN_MATCHED_ID, null, 8);
- assertWithMessage("best track ").that(result).isEqualTo(INFO_3_FR_8);
- }
-
- @Test
- public void testGetBestTrackInfo_noMatches() {
- TvTrackInfo result = getBestTrackInfo(ALL, UN_MATCHED_ID, "kr", 1);
- assertWithMessage("best track ").that(result).isEqualTo(INFO_1_EN_1);
- }
-
- @Test
- public void testGetBestTrackInfo_noMatchesWithNullLanguage() {
- TvTrackInfo result = getBestTrackInfo(ALL, UN_MATCHED_ID, null, 0);
- assertWithMessage("best track ").that(result).isEqualTo(INFO_1_EN_1);
- }
-
- @Test
- public void testGetBestTrackInfo_channelCountAndIdMatch() {
- TvTrackInfo result = getBestTrackInfo(NULL_LANGUAGE_TRACKS, "5", null, 6);
- assertWithMessage("best track ").that(result).isEqualTo(INFO_5_NULL_6);
- }
-
- @Test
- public void testComparator() {
- Comparator<TvTrackInfo> comparator = TvTrackInfoUtils.createComparator("1", "en", 1);
- ComparatorTester.withoutEqualsTest(comparator)
- // lang not match
- .addComparableGroup(
- create("1", "kr", 1),
- create("2", "kr", 2),
- create("1", "ja", 1),
- create("1", "ch", 1))
- // lang match not count match
- .addComparableGroup(
- create("2", "en", 2), create("3", "en", 3), create("1", "en", 2))
- // lang and count match
- .addComparableGroup(create("2", "en", 1), create("3", "en", 1))
- // all match
- .addComparableGroup(create("1", "en", 1), create("1", "en", 1))
- .test();
- }
-}