aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornchalko <nchalko@google.com>2018-02-11 11:25:47 -0800
committerNick Chalko <nchalko@google.com>2018-02-15 21:23:03 +0000
commita4902090d0672e6f058096fa0bc29de1f8b31d3b (patch)
tree7c7d7300fc081ead71de07708ec7e8e8fb119a7f
parentf73fbd5f7254787a79d93c0912baefd9afd7870e (diff)
downloadTV-a4902090d0672e6f058096fa0bc29de1f8b31d3b.tar.gz
Add getEpisodeContentDescription to BaseProgram.
PiperOrigin-RevId: 185309704 Change-Id: Icd87d0d6d03bef298351820d3127536b0f69d878
-rw-r--r--common/res/values/strings.xml8
-rw-r--r--src/com/android/tv/data/BaseProgram.java29
2 files changed, 37 insertions, 0 deletions
diff --git a/common/res/values/strings.xml b/common/res/values/strings.xml
index aa7adac4..1c8a990c 100644
--- a/common/res/values/strings.xml
+++ b/common/res/values/strings.xml
@@ -35,6 +35,14 @@
"Ep." is an abbreviation for episode.
For example, "Ep. 1807 Headline News". -->
<string name="display_episode_title_format_no_season_number">Ep. <xliff:g id="episode_number" example="1807">%1$s</xliff:g> <xliff:g id="episode_title" example="Headline News">%2$s</xliff:g></string>
+
+ <!-- The content description for an episode. It will be spoken by accessibility service when needed.
+ For example, "Season 1 Episode 1 Winter is coming". -->
+ <string name="content_description_episode_format">Season <xliff:g id="season_number" example="1">%1$s</xliff:g> Episode <xliff:g id="episode_number" example="1">%2$s</xliff:g> <xliff:g id="episode_title" example="Winter is Coming">%3$s</xliff:g></string>
+ <!-- The content description for an episode. It will be spoken by accessibility service when needed.
+ For example, "Episode 1807 Headline News". -->
+ <string name="content_description_episode_format_no_season_number">Episode <xliff:g id="episode_number" example="1807">%1$s</xliff:g> <xliff:g id="episode_title" example="Headline News">%2$s</xliff:g></string>
+
<!-- Program title with season and episode number used in DVR card views.
HTML tag <i> is a placeholder for styling episode number part.
"S" is an abbreviation for Season and "Ep." is an abbreviation for episode. ":" is used as a separator.
diff --git a/src/com/android/tv/data/BaseProgram.java b/src/com/android/tv/data/BaseProgram.java
index dba18fba..0fb1e58d 100644
--- a/src/com/android/tv/data/BaseProgram.java
+++ b/src/com/android/tv/data/BaseProgram.java
@@ -117,6 +117,35 @@ public abstract class BaseProgram {
return episodeTitle;
}
+ /**
+ * Returns the content description of the program episode, suitable for being spoken by an
+ * accessibility service.
+ */
+ public String getEpisodeContentDescription(Context context) {
+ String episodeNumber = getEpisodeNumber();
+ String episodeTitle = getEpisodeTitle();
+ if (!TextUtils.isEmpty(episodeNumber)) {
+ episodeTitle = episodeTitle == null ? "" : episodeTitle;
+ String seasonNumber = getSeasonNumber();
+ if (TextUtils.isEmpty(seasonNumber) || TextUtils.equals(seasonNumber, "0")) {
+ // Do not list season if it is empty or 0
+ return context.getResources()
+ .getString(
+ R.string.content_description_episode_format_no_season_number,
+ episodeNumber,
+ episodeTitle);
+ } else {
+ return context.getResources()
+ .getString(
+ R.string.content_description_episode_format,
+ seasonNumber,
+ episodeNumber,
+ episodeTitle);
+ }
+ }
+ return episodeTitle;
+ }
+
/** Returns the description of the program. */
public abstract String getDescription();