diff options
author | Youngsang Cho <youngsang@google.com> | 2016-05-09 18:52:12 -0700 |
---|---|---|
committer | Youngsang Cho <youngsang@google.com> | 2016-05-17 15:14:50 -0700 |
commit | 48dadb49248271b01997862e1335912a4f2e189f (patch) | |
tree | fb402e0e2bda1328fd9858b28a98e1c29563f038 /common | |
parent | 3a72b93e554bd22a5c64e71a6956d9604ce05108 (diff) | |
download | TV-48dadb49248271b01997862e1335912a4f2e189f.tar.gz |
DO NOT MERGE Sync to joey ub-tv-dev at e7fbaa585b1eb7afec05f05032d2e8d99fb595d4
Bug: 28469968
Change-Id: I74e368f5f58b433755932b806a90178e37bea7f9
Diffstat (limited to 'common')
184 files changed, 1078 insertions, 4171 deletions
diff --git a/common/Android.mk b/common/Android.mk index 96913a1b..bd4d99bc 100644 --- a/common/Android.mk +++ b/common/Android.mk @@ -1,11 +1,11 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) -# Include all test java files. -LOCAL_SRC_FILES := $(call all-java-files-under, src) \ - $(LOCAL_BUILDCONFIG_CLASS) +# Include all common java files. +LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_MODULE := tv-common +LOCAL_MODULE_CLASS := STATIC_JAVA_LIBRARIES LOCAL_MODULE_TAGS := optional LOCAL_SDK_VERSION := system_current @@ -13,7 +13,6 @@ LOCAL_RESOURCE_DIR := \ $(TOP)/prebuilts/sdk/current/support/v7/recyclerview/res \ $(TOP)/prebuilts/sdk/current/support/v17/leanback/res \ $(LOCAL_PATH)/res \ - $(LOCAL_PATH)/res_leanback \ LOCAL_STATIC_JAVA_LIBRARIES := \ android-support-annotations \ @@ -26,4 +25,6 @@ LOCAL_AAPT_FLAGS := --auto-add-overlay \ --extra-packages android.support.v17.leanback \ +include $(LOCAL_PATH)/buildconfig.mk + include $(BUILD_STATIC_JAVA_LIBRARY) diff --git a/common/BuildConfig.java.in b/common/BuildConfig.java.in new file mode 100644 index 00000000..f4631340 --- /dev/null +++ b/common/BuildConfig.java.in @@ -0,0 +1,8 @@ +/* This file is auto generated. Do not modify. */ +package com.android.tv.common; + +public final class BuildConfig { + public static final boolean DEBUG = %DEBUG%; + public static final boolean ENG = %ENG%; + private BuildConfig() {} +}
\ No newline at end of file diff --git a/common/buildconfig.mk b/common/buildconfig.mk index 93fcbcb0..cece7f2b 100644 --- a/common/buildconfig.mk +++ b/common/buildconfig.mk @@ -17,27 +17,23 @@ # Emulate gradles BuildConfig.java ifeq "$(TARGET_BUILD_VARIANT)" "eng" - BC_DEBUG_STATUS := "true" + BC_DEBUG_STATUS := true else ifeq "$(TARGET_BUILD_VARIANT)" "userdebug" - BC_DEBUG_STATUS := "true" + BC_DEBUG_STATUS := true else - BC_DEBUG_STATUS := "false" + BC_DEBUG_STATUS := false endif ifeq "$(TARGET_BUILD_VARIANT)" "eng" - BC_ENG_STATUS := "true" + BC_ENG_STATUS := true else - BC_ENG_STATUS := "false" + BC_ENG_STATUS := false endif -$(BC_OUT_DIR)/$(LOCAL_BUILDCONFIG_CLASS): FORCE - echo "/**" > $(BC_OUT_DIR)/$(LOCAL_BUILDCONFIG_CLASS) - echo "* Automatically generated file. DO NOT MODIFY" >> $(BC_OUT_DIR)/$(LOCAL_BUILDCONFIG_CLASS) - echo "*/" >> $(BC_OUT_DIR)/$(LOCAL_BUILDCONFIG_CLASS) - echo "package "$(BC_APPLICATION_ID)";" >> $(BC_OUT_DIR)/$(LOCAL_BUILDCONFIG_CLASS) - echo "public final class BuildConfig {" >> $(BC_OUT_DIR)/$(LOCAL_BUILDCONFIG_CLASS) - echo " public static final boolean DEBUG = "$(BC_DEBUG_STATUS)";" >> $(BC_OUT_DIR)/$(LOCAL_BUILDCONFIG_CLASS) - echo " public static final boolean ENG = "$(BC_ENG_STATUS)";" >> $(BC_OUT_DIR)/$(LOCAL_BUILDCONFIG_CLASS) - echo " private BuildConfig() {}" >> $(BC_OUT_DIR)/$(LOCAL_BUILDCONFIG_CLASS) - echo "}" >> $(BC_OUT_DIR)/$(LOCAL_BUILDCONFIG_CLASS) -FORCE: +gen := $(local-generated-sources-dir)/$(TARGET_BUILD_VARIANT)/BuildConfig.java +$(gen): PRIVATE_CUSTOM_TOOL = sed -e \ + 's/%DEBUG%/$(BC_DEBUG_STATUS)/;s/%ENG%/$(BC_ENG_STATUS)/' \ + $< > $@ +$(gen) : $(LOCAL_PATH)/BuildConfig.java.in + $(transform-generated-source) +LOCAL_GENERATED_SOURCES += $(gen)
\ No newline at end of file diff --git a/common/res/drawable/setup_action_button_done.xml b/common/res/drawable/setup_action_button_done.xml index 64592b69..9015367a 100644 --- a/common/res/drawable/setup_action_button_done.xml +++ b/common/res/drawable/setup_action_button_done.xml @@ -15,7 +15,6 @@ ~ limitations under the License. --> -<!-- STOPSHIP: Remove this resource once setup page is implemented correctly. --> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_focused="true"> <shape> diff --git a/common/res/values-af/strings.xml b/common/res/values-af/strings.xml index 11b3990a..83ad9ae6 100644 --- a/common/res/values-af/strings.xml +++ b/common/res/values-af/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Klaar"</string> + <string name="episode_format" msgid="5985513854870276591">"S<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: ep. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-am/strings.xml b/common/res/values-am/strings.xml index b72ab7d0..17442b05 100644 --- a/common/res/values-am/strings.xml +++ b/common/res/values-am/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"ተከናውኗል"</string> + <string name="episode_format" msgid="5985513854870276591">"ምዕ <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>፦ ክፍል <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g><xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-ar/strings.xml b/common/res/values-ar/strings.xml index d234a33b..27d6ce66 100644 --- a/common/res/values-ar/strings.xml +++ b/common/res/values-ar/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"تم"</string> + <string name="episode_format" msgid="5985513854870276591">"الموسم <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: الحلقة <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-az-rAZ/strings.xml b/common/res/values-az-rAZ/strings.xml index 4770dd1e..35e847a9 100644 --- a/common/res/values-az-rAZ/strings.xml +++ b/common/res/values-az-rAZ/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Hazırdır"</string> + <string name="episode_format" msgid="5985513854870276591">"S<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Ep. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-bg/strings.xml b/common/res/values-bg/strings.xml index a8d42c3a..87c5c919 100644 --- a/common/res/values-bg/strings.xml +++ b/common/res/values-bg/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Готово"</string> + <string name="episode_format" msgid="5985513854870276591">"Сезон <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Еп. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> – „<xliff:g id="EPISODE_TITLE">%3$s</xliff:g>“"</string> </resources> diff --git a/common/res/values-bn-rBD/strings.xml b/common/res/values-bn-rBD/strings.xml index ef20cd3f..5a7614f8 100644 --- a/common/res/values-bn-rBD/strings.xml +++ b/common/res/values-bn-rBD/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"সম্পন্ন"</string> + <string name="episode_format" msgid="5985513854870276591">"সিঃ<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: এপিঃ <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-ca/strings.xml b/common/res/values-ca/strings.xml index 790c58aa..c3c62cc0 100644 --- a/common/res/values-ca/strings.xml +++ b/common/res/values-ca/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Fet"</string> + <string name="episode_format" msgid="5985513854870276591">"Temporada <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: episodi <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g>, <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-cs/strings.xml b/common/res/values-cs/strings.xml index 6bc7a34d..8550e53c 100644 --- a/common/res/values-cs/strings.xml +++ b/common/res/values-cs/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Hotovo"</string> + <string name="episode_format" msgid="5985513854870276591">"S<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Ep. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-da/strings.xml b/common/res/values-da/strings.xml index a3ff65d6..ccc2d53c 100644 --- a/common/res/values-da/strings.xml +++ b/common/res/values-da/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Udført"</string> + <string name="episode_format" msgid="5985513854870276591">"S. <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>, afsn. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g>, <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-de/strings.xml b/common/res/values-de/strings.xml index 08cecfa4..965c63fb 100644 --- a/common/res/values-de/strings.xml +++ b/common/res/values-de/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Fertig"</string> + <string name="episode_format" msgid="5985513854870276591">"Staffel <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Folge <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-el/strings.xml b/common/res/values-el/strings.xml index 8d178e29..361a0d55 100644 --- a/common/res/values-el/strings.xml +++ b/common/res/values-el/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Τέλος"</string> + <string name="episode_format" msgid="5985513854870276591">"Σεζ. <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Επ. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-en-rAU/strings.xml b/common/res/values-en-rAU/strings.xml index 5b24567c..423dc885 100644 --- a/common/res/values-en-rAU/strings.xml +++ b/common/res/values-en-rAU/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Finished"</string> + <string name="episode_format" msgid="5985513854870276591">"S<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Ep. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-en-rGB/strings.xml b/common/res/values-en-rGB/strings.xml index 5b24567c..423dc885 100644 --- a/common/res/values-en-rGB/strings.xml +++ b/common/res/values-en-rGB/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Finished"</string> + <string name="episode_format" msgid="5985513854870276591">"S<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Ep. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-en-rIN/strings.xml b/common/res/values-en-rIN/strings.xml index 5b24567c..423dc885 100644 --- a/common/res/values-en-rIN/strings.xml +++ b/common/res/values-en-rIN/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Finished"</string> + <string name="episode_format" msgid="5985513854870276591">"S<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Ep. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-es-rUS/strings.xml b/common/res/values-es-rUS/strings.xml index 76f39ab4..ac34b685 100644 --- a/common/res/values-es-rUS/strings.xml +++ b/common/res/values-es-rUS/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Listo"</string> + <string name="episode_format" msgid="5985513854870276591">"Temporada <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>. Episodio <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g>: <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-es/strings.xml b/common/res/values-es/strings.xml index 76f39ab4..5d21f0a5 100644 --- a/common/res/values-es/strings.xml +++ b/common/res/values-es/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Listo"</string> + <string name="episode_format" msgid="5985513854870276591">"Temporada <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: episodio <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-et-rEE/strings.xml b/common/res/values-et-rEE/strings.xml index 58a71664..d97e467a 100644 --- a/common/res/values-et-rEE/strings.xml +++ b/common/res/values-et-rEE/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Valmis"</string> + <string name="episode_format" msgid="5985513854870276591">"<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>. hooaeg: jagu <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-eu-rES/strings.xml b/common/res/values-eu-rES/strings.xml index bdc86896..4e84f936 100644 --- a/common/res/values-eu-rES/strings.xml +++ b/common/res/values-eu-rES/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Eginda"</string> + <string name="episode_format" msgid="5985513854870276591">"<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>. denboraldiko <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g>. atala: <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-fa/strings.xml b/common/res/values-fa/strings.xml index 919c37fe..3f531a2b 100644 --- a/common/res/values-fa/strings.xml +++ b/common/res/values-fa/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"تمام"</string> + <string name="episode_format" msgid="5985513854870276591">"ف<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: ق <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-fi/strings.xml b/common/res/values-fi/strings.xml index 58a71664..566ca328 100644 --- a/common/res/values-fi/strings.xml +++ b/common/res/values-fi/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Valmis"</string> + <string name="episode_format" msgid="5985513854870276591">"Kausi <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: jakso <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g>, <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-fr-rCA/strings.xml b/common/res/values-fr-rCA/strings.xml index a5334fed..59d6bbf2 100644 --- a/common/res/values-fr-rCA/strings.xml +++ b/common/res/values-fr-rCA/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Terminé"</string> + <string name="episode_format" msgid="5985513854870276591">"Saison <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>, épisode <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g>, « <xliff:g id="EPISODE_TITLE">%3$s</xliff:g> »"</string> </resources> diff --git a/common/res/values-fr/strings.xml b/common/res/values-fr/strings.xml index a018b053..10a0b5ee 100644 --- a/common/res/values-fr/strings.xml +++ b/common/res/values-fr/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"OK"</string> + <string name="episode_format" msgid="5985513854870276591">"S<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>, ép. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> : <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-gl-rES/strings.xml b/common/res/values-gl-rES/strings.xml index 04167ec0..356e84d2 100644 --- a/common/res/values-gl-rES/strings.xml +++ b/common/res/values-gl-rES/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Feito"</string> + <string name="episode_format" msgid="5985513854870276591">"T<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: ep. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-hi/strings.xml b/common/res/values-hi/strings.xml index 93ddf14d..2aaad475 100644 --- a/common/res/values-hi/strings.xml +++ b/common/res/values-hi/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"हो गया"</string> + <string name="episode_format" msgid="5985513854870276591">"सीज़न<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: एपिसोड <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-hr/strings.xml b/common/res/values-hr/strings.xml index e359fa47..6ab8b924 100644 --- a/common/res/values-hr/strings.xml +++ b/common/res/values-hr/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Gotovo"</string> + <string name="episode_format" msgid="5985513854870276591">"S. <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: ep. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g>, <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-hu/strings.xml b/common/res/values-hu/strings.xml index c7edacc5..d73e295c 100644 --- a/common/res/values-hu/strings.xml +++ b/common/res/values-hu/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Kész"</string> + <string name="episode_format" msgid="5985513854870276591">"<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>. évad, <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g>. rész: <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-hy-rAM/strings.xml b/common/res/values-hy-rAM/strings.xml index 2832c576..b9b2b5d6 100644 --- a/common/res/values-hy-rAM/strings.xml +++ b/common/res/values-hy-rAM/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Պատրաստ է"</string> + <string name="episode_format" msgid="5985513854870276591">"Ե<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>՝ դրվ. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-in/strings.xml b/common/res/values-in/strings.xml index 315e2eac..7435341c 100644 --- a/common/res/values-in/strings.xml +++ b/common/res/values-in/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Selesai"</string> + <string name="episode_format" msgid="5985513854870276591">"S<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Ep. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-is-rIS/strings.xml b/common/res/values-is-rIS/strings.xml index a2d8da79..f699ea19 100644 --- a/common/res/values-is-rIS/strings.xml +++ b/common/res/values-is-rIS/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Lokið"</string> + <string name="episode_format" msgid="5985513854870276591">"S<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Þ. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-it/strings.xml b/common/res/values-it/strings.xml index ba1ecc42..48a7751b 100644 --- a/common/res/values-it/strings.xml +++ b/common/res/values-it/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Fine"</string> + <string name="episode_format" msgid="5985513854870276591">"Stag. <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Punt. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-iw/strings.xml b/common/res/values-iw/strings.xml index 106e5453..b0e49d7f 100644 --- a/common/res/values-iw/strings.xml +++ b/common/res/values-iw/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"סיום"</string> + <string name="episode_format" msgid="5985513854870276591">"עונה <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: פרק <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-ja/strings.xml b/common/res/values-ja/strings.xml index 9cf0ba31..d5f072f3 100644 --- a/common/res/values-ja/strings.xml +++ b/common/res/values-ja/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"完了"</string> + <string name="episode_format" msgid="5985513854870276591">"シーズン <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: エピソード <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g>「<xliff:g id="EPISODE_TITLE">%3$s</xliff:g>」"</string> </resources> diff --git a/common/res/values-ka-rGE/strings.xml b/common/res/values-ka-rGE/strings.xml index d7297b9d..b209520a 100644 --- a/common/res/values-ka-rGE/strings.xml +++ b/common/res/values-ka-rGE/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"მზადაა"</string> + <string name="episode_format" msgid="5985513854870276591">"სეზ. <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>, ეპ. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g>: <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-kk-rKZ/strings.xml b/common/res/values-kk-rKZ/strings.xml index 9994dc20..5f732dc0 100644 --- a/common/res/values-kk-rKZ/strings.xml +++ b/common/res/values-kk-rKZ/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Орындалды"</string> + <string name="episode_format" msgid="5985513854870276591">"<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>-маусым, <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g>-эпизод: <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-km-rKH/strings.xml b/common/res/values-km-rKH/strings.xml index f12663fb..0a83185a 100644 --- a/common/res/values-km-rKH/strings.xml +++ b/common/res/values-km-rKH/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"រួចរាល់"</string> + <string name="episode_format" msgid="5985513854870276591">"រដូវកាលទី <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>៖ វគ្គ <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-kn-rIN/strings.xml b/common/res/values-kn-rIN/strings.xml index 589ff1be..27821741 100644 --- a/common/res/values-kn-rIN/strings.xml +++ b/common/res/values-kn-rIN/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"ಮುಗಿದಿದೆ"</string> + <string name="episode_format" msgid="5985513854870276591">"ಸೀ<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: ಸಂಚಿಕೆ <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-ko/strings.xml b/common/res/values-ko/strings.xml index e2e47fa4..e5ca8d69 100644 --- a/common/res/values-ko/strings.xml +++ b/common/res/values-ko/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"완료"</string> + <string name="episode_format" msgid="5985513854870276591">"시즌 <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: 에피소드 <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-ky-rKG/strings.xml b/common/res/values-ky-rKG/strings.xml index 3397fc32..333232af 100644 --- a/common/res/values-ky-rKG/strings.xml +++ b/common/res/values-ky-rKG/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Бүттү"</string> + <string name="episode_format" msgid="5985513854870276591">"<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>-м.: Эп. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-lo-rLA/strings.xml b/common/res/values-lo-rLA/strings.xml index 88653b54..a448b0b8 100644 --- a/common/res/values-lo-rLA/strings.xml +++ b/common/res/values-lo-rLA/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"ສຳເລັດແລ້ວ"</string> + <string name="episode_format" msgid="5985513854870276591">"S<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: ຕອນ <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-lt/strings.xml b/common/res/values-lt/strings.xml index 6f51b3fc..46e4adef 100644 --- a/common/res/values-lt/strings.xml +++ b/common/res/values-lt/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Atlikta"</string> + <string name="episode_format" msgid="5985513854870276591">"<xliff:g id="SEASON_NUMBER">%1$s</xliff:g> sezonas: <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> serija „<xliff:g id="EPISODE_TITLE">%3$s</xliff:g>“"</string> </resources> diff --git a/common/res/values-lv/strings.xml b/common/res/values-lv/strings.xml index 8660efbd..0b2c91d3 100644 --- a/common/res/values-lv/strings.xml +++ b/common/res/values-lv/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Gatavs"</string> + <string name="episode_format" msgid="5985513854870276591">"<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>. sezona, <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g>. sērija “<xliff:g id="EPISODE_TITLE">%3$s</xliff:g>”"</string> </resources> diff --git a/common/res/values-mk-rMK/strings.xml b/common/res/values-mk-rMK/strings.xml index a8d42c3a..406bd745 100644 --- a/common/res/values-mk-rMK/strings.xml +++ b/common/res/values-mk-rMK/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Готово"</string> + <string name="episode_format" msgid="5985513854870276591">"Сез. <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Еп. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-ml-rIN/strings.xml b/common/res/values-ml-rIN/strings.xml index 81e9a8c6..5b40e844 100644 --- a/common/res/values-ml-rIN/strings.xml +++ b/common/res/values-ml-rIN/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"പൂർത്തിയായി"</string> + <string name="episode_format" msgid="5985513854870276591">"സീസൺ<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: എപ്പിസോഡ് <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-mn-rMN/strings.xml b/common/res/values-mn-rMN/strings.xml index ac4435f3..3a6295b0 100644 --- a/common/res/values-mn-rMN/strings.xml +++ b/common/res/values-mn-rMN/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Дууссан"</string> + <string name="episode_format" msgid="5985513854870276591">"Бүлэг<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Анги. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-mr-rIN/strings.xml b/common/res/values-mr-rIN/strings.xml index 82edcb03..2709733e 100644 --- a/common/res/values-mr-rIN/strings.xml +++ b/common/res/values-mr-rIN/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"पूर्ण झाले"</string> + <string name="episode_format" msgid="5985513854870276591">"हंगाम<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: भाग. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-ms-rMY/strings.xml b/common/res/values-ms-rMY/strings.xml index 315e2eac..c0372b30 100644 --- a/common/res/values-ms-rMY/strings.xml +++ b/common/res/values-ms-rMY/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Selesai"</string> + <string name="episode_format" msgid="5985513854870276591">"M<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Ep. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-my-rMM/strings.xml b/common/res/values-my-rMM/strings.xml index a7faa7d9..6577fbed 100644 --- a/common/res/values-my-rMM/strings.xml +++ b/common/res/values-my-rMM/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"ပြီးပါပြီ"</string> + <string name="episode_format" msgid="5985513854870276591">"ဇာတ်လမ်းတွဲ<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>− အပိုင်းငယ် <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-nb/strings.xml b/common/res/values-nb/strings.xml index 3ff3ede1..e9bf0493 100644 --- a/common/res/values-nb/strings.xml +++ b/common/res/values-nb/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Ferdig"</string> + <string name="episode_format" msgid="5985513854870276591">"Sesong <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Ep. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-ne-rNP/strings.xml b/common/res/values-ne-rNP/strings.xml index 4a08d5ef..265ec91d 100644 --- a/common/res/values-ne-rNP/strings.xml +++ b/common/res/values-ne-rNP/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"सम्पन्न भयो"</string> + <string name="episode_format" msgid="5985513854870276591">"सिजन <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: एपिसोड <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-nl/strings.xml b/common/res/values-nl/strings.xml index 8756e624..cc3ee7eb 100644 --- a/common/res/values-nl/strings.xml +++ b/common/res/values-nl/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Gereed"</string> + <string name="episode_format" msgid="5985513854870276591">"S. <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: afl. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-pl/strings.xml b/common/res/values-pl/strings.xml index 97beca37..ddcd5614 100644 --- a/common/res/values-pl/strings.xml +++ b/common/res/values-pl/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Gotowe"</string> + <string name="episode_format" msgid="5985513854870276591">"Sez. <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>, odc. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g>: <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-pt-rPT/strings.xml b/common/res/values-pt-rPT/strings.xml index a967a341..b08d7084 100644 --- a/common/res/values-pt-rPT/strings.xml +++ b/common/res/values-pt-rPT/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Concluído"</string> + <string name="episode_format" msgid="5985513854870276591">"T<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: ep. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-pt/strings.xml b/common/res/values-pt/strings.xml index a967a341..a6d69e48 100644 --- a/common/res/values-pt/strings.xml +++ b/common/res/values-pt/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Concluído"</string> + <string name="episode_format" msgid="5985513854870276591">"S<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Ep. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-ro/strings.xml b/common/res/values-ro/strings.xml index 2cbda306..5cb24634 100644 --- a/common/res/values-ro/strings.xml +++ b/common/res/values-ro/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Terminat"</string> + <string name="episode_format" msgid="5985513854870276591">"Sezonul <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>, episodul <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g>: <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-ru/strings.xml b/common/res/values-ru/strings.xml index a8d42c3a..52e06816 100644 --- a/common/res/values-ru/strings.xml +++ b/common/res/values-ru/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Готово"</string> + <string name="episode_format" msgid="5985513854870276591">"Сезон <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: серия <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g>, \"<xliff:g id="EPISODE_TITLE">%3$s</xliff:g>\""</string> </resources> diff --git a/common/res/values-si-rLK/strings.xml b/common/res/values-si-rLK/strings.xml index 6293bbec..4b62ae21 100644 --- a/common/res/values-si-rLK/strings.xml +++ b/common/res/values-si-rLK/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"නිමයි"</string> + <string name="episode_format" msgid="5985513854870276591">"වාරය<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: කථාංගය <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-sk/strings.xml b/common/res/values-sk/strings.xml index 6bc7a34d..aa0345ff 100644 --- a/common/res/values-sk/strings.xml +++ b/common/res/values-sk/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Hotovo"</string> + <string name="episode_format" msgid="5985513854870276591">"S <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: ep. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-sl/strings.xml b/common/res/values-sl/strings.xml index 29c414ac..06e4218a 100644 --- a/common/res/values-sl/strings.xml +++ b/common/res/values-sl/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Končano"</string> + <string name="episode_format" msgid="5985513854870276591">"<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>. sezona – <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g>. epizoda: <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-sr/strings.xml b/common/res/values-sr/strings.xml index a8d42c3a..780d096e 100644 --- a/common/res/values-sr/strings.xml +++ b/common/res/values-sr/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Готово"</string> + <string name="episode_format" msgid="5985513854870276591">"<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>. серијал: <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g>. епизода, <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-sv/strings.xml b/common/res/values-sv/strings.xml index ded93590..4cf53a0c 100644 --- a/common/res/values-sv/strings.xml +++ b/common/res/values-sv/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Klar"</string> + <string name="episode_format" msgid="5985513854870276591">"Säsong <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: avsnitt <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> – <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-sw/strings.xml b/common/res/values-sw/strings.xml index 1cce7469..7ad2f1e5 100644 --- a/common/res/values-sw/strings.xml +++ b/common/res/values-sw/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Nimemaliza"</string> + <string name="episode_format" msgid="5985513854870276591">"Msimu wa <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Kipindi cha <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-ta-rIN/strings.xml b/common/res/values-ta-rIN/strings.xml index df4ce9ab..fb7b541a 100644 --- a/common/res/values-ta-rIN/strings.xml +++ b/common/res/values-ta-rIN/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"முடிந்தது"</string> + <string name="episode_format" msgid="5985513854870276591">"சீ<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: எபி. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-te-rIN/strings.xml b/common/res/values-te-rIN/strings.xml index 527f9e02..be10c428 100644 --- a/common/res/values-te-rIN/strings.xml +++ b/common/res/values-te-rIN/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"పూర్తయింది"</string> + <string name="episode_format" msgid="5985513854870276591">"సీ<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: ఎపి. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-th/strings.xml b/common/res/values-th/strings.xml index ca4158ef..3acaefd0 100644 --- a/common/res/values-th/strings.xml +++ b/common/res/values-th/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"เสร็จสิ้น"</string> + <string name="episode_format" msgid="5985513854870276591">"ซีซัน <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: ตอนที่ <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-tl/strings.xml b/common/res/values-tl/strings.xml index 4b53b66e..0e176018 100644 --- a/common/res/values-tl/strings.xml +++ b/common/res/values-tl/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Tapos Na"</string> + <string name="episode_format" msgid="5985513854870276591">"S<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Ep. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-tr/strings.xml b/common/res/values-tr/strings.xml index 34e0cb58..63000a1d 100644 --- a/common/res/values-tr/strings.xml +++ b/common/res/values-tr/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Bitti"</string> + <string name="episode_format" msgid="5985513854870276591">"S<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Böl. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-uk/strings.xml b/common/res/values-uk/strings.xml index a8d42c3a..b229340b 100644 --- a/common/res/values-uk/strings.xml +++ b/common/res/values-uk/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Готово"</string> + <string name="episode_format" msgid="5985513854870276591">"Сезон <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: серія <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> \"<xliff:g id="EPISODE_TITLE">%3$s</xliff:g>\""</string> </resources> diff --git a/common/res/values-ur-rPK/strings.xml b/common/res/values-ur-rPK/strings.xml index 87b1cec4..0baab923 100644 --- a/common/res/values-ur-rPK/strings.xml +++ b/common/res/values-ur-rPK/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"ہو گیا"</string> + <string name="episode_format" msgid="5985513854870276591">"سیزن <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: قسط <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-uz-rUZ/strings.xml b/common/res/values-uz-rUZ/strings.xml index 67468cec..d595a5ff 100644 --- a/common/res/values-uz-rUZ/strings.xml +++ b/common/res/values-uz-rUZ/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Tayyor"</string> + <string name="episode_format" msgid="5985513854870276591">"<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>-fasl <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g>-qism: <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-vi/strings.xml b/common/res/values-vi/strings.xml index 756fb991..bad8efcb 100644 --- a/common/res/values-vi/strings.xml +++ b/common/res/values-vi/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Xong"</string> + <string name="episode_format" msgid="5985513854870276591">"Phần <xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Tập <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-zh-rCN/strings.xml b/common/res/values-zh-rCN/strings.xml index b8bd7736..0865cb50 100644 --- a/common/res/values-zh-rCN/strings.xml +++ b/common/res/values-zh-rCN/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"完成"</string> + <string name="episode_format" msgid="5985513854870276591">"第 <xliff:g id="SEASON_NUMBER">%1$s</xliff:g> 季第 <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> 集《<xliff:g id="EPISODE_TITLE">%3$s</xliff:g>》"</string> </resources> diff --git a/common/res/values-zh-rHK/strings.xml b/common/res/values-zh-rHK/strings.xml index b8bd7736..d8e8a030 100644 --- a/common/res/values-zh-rHK/strings.xml +++ b/common/res/values-zh-rHK/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"完成"</string> + <string name="episode_format" msgid="5985513854870276591">"第 <xliff:g id="SEASON_NUMBER">%1$s</xliff:g> 季:第 <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> 集 <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values-zh-rTW/strings.xml b/common/res/values-zh-rTW/strings.xml index b8bd7736..4c318bc1 100644 --- a/common/res/values-zh-rTW/strings.xml +++ b/common/res/values-zh-rTW/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"完成"</string> + <string name="episode_format" msgid="5985513854870276591">"第 <xliff:g id="SEASON_NUMBER">%1$s</xliff:g> 季:第 <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> 集「<xliff:g id="EPISODE_TITLE">%3$s</xliff:g>」"</string> </resources> diff --git a/common/res/values-zu/strings.xml b/common/res/values-zu/strings.xml index 91b5042c..138dca92 100644 --- a/common/res/values-zu/strings.xml +++ b/common/res/values-zu/strings.xml @@ -18,4 +18,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done" msgid="298287050387266501">"Kwenziwe"</string> + <string name="episode_format" msgid="5985513854870276591">"S<xliff:g id="SEASON_NUMBER">%1$s</xliff:g>: Ep. <xliff:g id="EPISODE_NUMBER">%2$s</xliff:g> <xliff:g id="EPISODE_TITLE">%3$s</xliff:g>"</string> </resources> diff --git a/common/res/values/strings.xml b/common/res/values/strings.xml index f337af42..0d1d3514 100644 --- a/common/res/values/strings.xml +++ b/common/res/values/strings.xml @@ -15,6 +15,8 @@ ~ limitations under the License. --> -<resources> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="action_text_done">Done</string> + <!-- The episode title format displayed on the info banner. For example, "S1: Ep. 1 Winter is coming". --> + <string name="episode_format">S<xliff:g id="season_number" example="1">%1$s</xliff:g>: Ep. <xliff:g id="episode_number" example="1">%2$s</xliff:g> <xliff:g id="episode_title" example="Winder is coming">%3$s</xliff:g></string> </resources> diff --git a/common/res_leanback/animator/lb_onboarding_description_enter.xml b/common/res_leanback/animator/lb_onboarding_description_enter.xml deleted file mode 100644 index 5f26cdd1..00000000 --- a/common/res_leanback/animator/lb_onboarding_description_enter.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ 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. - --> - -<set xmlns:android="http://schemas.android.com/apk/res/android"> - <objectAnimator - android:propertyName="alpha" - android:valueFrom="0.0" - android:valueTo="1.0" - android:duration="533" - android:interpolator="@android:interpolator/fast_out_slow_in" /> - <objectAnimator - android:propertyName="translationY" - android:valueFrom="60dp" - android:valueTo="0dp" - android:duration="533" - android:interpolator="@android:interpolator/fast_out_slow_in" /> -</set> diff --git a/common/res_leanback/animator/lb_onboarding_logo_enter.xml b/common/res_leanback/animator/lb_onboarding_logo_enter.xml deleted file mode 100644 index 76a4609a..00000000 --- a/common/res_leanback/animator/lb_onboarding_logo_enter.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ 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. - --> - -<set xmlns:android="http://schemas.android.com/apk/res/android"> - <objectAnimator - android:propertyName="alpha" - android:valueFrom="0.0" - android:valueTo="1.0" - android:duration="333" - android:interpolator="@android:interpolator/linear_out_slow_in" /> -</set> diff --git a/common/res_leanback/animator/lb_onboarding_logo_exit.xml b/common/res_leanback/animator/lb_onboarding_logo_exit.xml deleted file mode 100644 index 40b618e6..00000000 --- a/common/res_leanback/animator/lb_onboarding_logo_exit.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ 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. - --> - -<set xmlns:android="http://schemas.android.com/apk/res/android"> - <objectAnimator - android:propertyName="alpha" - android:valueFrom="1.0" - android:valueTo="0.0" - android:duration="666" - android:interpolator="@android:interpolator/fast_out_slow_in" /> -</set> diff --git a/common/res_leanback/animator/lb_onboarding_page_indicator_enter.xml b/common/res_leanback/animator/lb_onboarding_page_indicator_enter.xml deleted file mode 100644 index e9fc46ef..00000000 --- a/common/res_leanback/animator/lb_onboarding_page_indicator_enter.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ 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. - --> - -<set xmlns:android="http://schemas.android.com/apk/res/android"> - <objectAnimator - android:propertyName="alpha" - android:valueFrom="0.0" - android:valueTo="1.0" - android:duration="500" - android:interpolator="@android:interpolator/fast_out_slow_in" /> -</set> diff --git a/common/res_leanback/animator/lb_onboarding_page_indicator_fade_in.xml b/common/res_leanback/animator/lb_onboarding_page_indicator_fade_in.xml deleted file mode 100644 index f21fc23b..00000000 --- a/common/res_leanback/animator/lb_onboarding_page_indicator_fade_in.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ 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. - --> - -<set xmlns:android="http://schemas.android.com/apk/res/android"> - <objectAnimator - android:propertyName="alpha" - android:valueFrom="0.0" - android:valueTo="1.0" - android:duration="417" - android:interpolator="@android:anim/decelerate_interpolator" /> -</set> diff --git a/common/res_leanback/animator/lb_onboarding_page_indicator_fade_out.xml b/common/res_leanback/animator/lb_onboarding_page_indicator_fade_out.xml deleted file mode 100644 index 4c69c5d0..00000000 --- a/common/res_leanback/animator/lb_onboarding_page_indicator_fade_out.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ 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. - --> - -<set xmlns:android="http://schemas.android.com/apk/res/android"> - <objectAnimator - android:propertyName="alpha" - android:valueFrom="1.0" - android:valueTo="0.0" - android:duration="417" - android:interpolator="@android:anim/decelerate_interpolator" /> -</set> diff --git a/common/res_leanback/animator/lb_onboarding_start_button_fade_in.xml b/common/res_leanback/animator/lb_onboarding_start_button_fade_in.xml deleted file mode 100644 index 4125622b..00000000 --- a/common/res_leanback/animator/lb_onboarding_start_button_fade_in.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ 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. - --> - -<set xmlns:android="http://schemas.android.com/apk/res/android"> - <objectAnimator - android:propertyName="alpha" - android:valueFrom="0.0" - android:valueTo="1.0" - android:duration="417" - android:interpolator="@android:anim/decelerate_interpolator" /> - <objectAnimator - android:propertyName="translationX" - android:valueFrom="16dp" - android:valueTo="0dp" - android:duration="417" - android:interpolator="@android:anim/decelerate_interpolator" /> -</set> diff --git a/common/res_leanback/animator/lb_onboarding_start_button_fade_out.xml b/common/res_leanback/animator/lb_onboarding_start_button_fade_out.xml deleted file mode 100644 index 26590ecd..00000000 --- a/common/res_leanback/animator/lb_onboarding_start_button_fade_out.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ 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. - --> - -<set xmlns:android="http://schemas.android.com/apk/res/android"> - <objectAnimator - android:propertyName="alpha" - android:valueFrom="1.0" - android:valueTo="0.0" - android:duration="417" - android:interpolator="@android:anim/decelerate_interpolator" /> - <objectAnimator - android:propertyName="translationX" - android:valueFrom="0dp" - android:valueTo="16dp" - android:duration="417" - android:interpolator="@android:anim/decelerate_interpolator" /> -</set> diff --git a/common/res_leanback/animator/lb_onboarding_title_enter.xml b/common/res_leanback/animator/lb_onboarding_title_enter.xml deleted file mode 100644 index 5f26cdd1..00000000 --- a/common/res_leanback/animator/lb_onboarding_title_enter.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ 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. - --> - -<set xmlns:android="http://schemas.android.com/apk/res/android"> - <objectAnimator - android:propertyName="alpha" - android:valueFrom="0.0" - android:valueTo="1.0" - android:duration="533" - android:interpolator="@android:interpolator/fast_out_slow_in" /> - <objectAnimator - android:propertyName="translationY" - android:valueFrom="60dp" - android:valueTo="0dp" - android:duration="533" - android:interpolator="@android:interpolator/fast_out_slow_in" /> -</set> diff --git a/common/res_leanback/animator/lb_page_indicator_dot_hide.xml b/common/res_leanback/animator/lb_page_indicator_dot_hide.xml deleted file mode 100644 index fdd60342..00000000 --- a/common/res_leanback/animator/lb_page_indicator_dot_hide.xml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ 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. - --> - -<set xmlns:android="http://schemas.android.com/apk/res/android"> - <objectAnimator - android:propertyName="alpha" - android:valueFrom="1.0" - android:valueTo="0.0" - android:duration="167" - android:interpolator="@android:anim/decelerate_interpolator" /> - <objectAnimator - android:propertyName="diameter" - android:valueFrom="36dp" - android:valueTo="10dp" - android:duration="417" - android:interpolator="@android:anim/decelerate_interpolator" /> - <objectAnimator - android:propertyName="translationX" - android:valueFrom="-16dp" - android:valueTo="0dp" - android:duration="417" - android:interpolator="@android:anim/decelerate_interpolator" /> -</set> diff --git a/common/res_leanback/animator/lb_page_indicator_dot_show.xml b/common/res_leanback/animator/lb_page_indicator_dot_show.xml deleted file mode 100644 index 392fb2c6..00000000 --- a/common/res_leanback/animator/lb_page_indicator_dot_show.xml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ 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. - --> - -<set xmlns:android="http://schemas.android.com/apk/res/android"> - <objectAnimator - android:propertyName="alpha" - android:valueFrom="0.0" - android:valueTo="1.0" - android:duration="167" - android:interpolator="@android:anim/decelerate_interpolator" /> - <objectAnimator - android:propertyName="diameter" - android:valueFrom="10dp" - android:valueTo="36dp" - android:duration="417" - android:interpolator="@android:anim/decelerate_interpolator" /> - <objectAnimator - android:propertyName="translationX" - android:valueFrom="-16dp" - android:valueTo="0dp" - android:duration="417" - android:interpolator="@android:anim/decelerate_interpolator" /> -</set> diff --git a/common/res_leanback/drawable-xhdpi/lb_ic_nav_arrow.png b/common/res_leanback/drawable-xhdpi/lb_ic_nav_arrow.png Binary files differdeleted file mode 100644 index 04578a75..00000000 --- a/common/res_leanback/drawable-xhdpi/lb_ic_nav_arrow.png +++ /dev/null diff --git a/common/res_leanback/drawable/lb_onboarding_start_button_background.xml b/common/res_leanback/drawable/lb_onboarding_start_button_background.xml deleted file mode 100644 index 57c31387..00000000 --- a/common/res_leanback/drawable/lb_onboarding_start_button_background.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ 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. - --> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item> - <shape> - <solid android:color="#EEEEEE"/> - <corners android:radius="2dp" /> - </shape> - </item> -</selector> diff --git a/common/res_leanback/layout/lb_onboarding_fragment.xml b/common/res_leanback/layout/lb_onboarding_fragment.xml deleted file mode 100644 index 20489ed0..00000000 --- a/common/res_leanback/layout/lb_onboarding_fragment.xml +++ /dev/null @@ -1,120 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ 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. - --> - -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/onboarding_fragment_root" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:clipChildren="false" - android:clipToPadding="false"> - - <FrameLayout - android:id="@+id/background_container" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:visibility="gone" /> - - <LinearLayout - android:id="@+id/page_container" - android:layout_width="@dimen/lb_onboarding_content_width" - android:layout_height="@dimen/lb_onboarding_header_height" - android:layout_alignParentTop="true" - android:layout_centerHorizontal="true" - android:layout_marginTop="@dimen/lb_onboarding_header_margin_top" - android:clipChildren="false" - android:clipToPadding="false" - android:orientation="vertical" - android:visibility="gone"> - <TextView - android:id="@+id/title" - android:layout_width="match_parent" - android:layout_height="0dp" - android:layout_weight="0.5" - android:layout_marginBottom="3dp" - android:fontFamily="sans-serif-light" - android:gravity="center" - android:textColor="#EEEEEE" - android:textSize="34sp" - android:lineSpacingExtra="14sp"/> - <TextView - android:id="@+id/description" - android:layout_width="match_parent" - android:layout_height="0dp" - android:layout_weight="0.5" - android:layout_marginTop="3dp" - android:fontFamily="sans-serif-light" - android:gravity="center" - android:textColor="#B3EEEEEE" - android:textSize="14sp" - android:lineSpacingExtra="10sp" /> - </LinearLayout> - - <FrameLayout - android:id="@+id/content_container" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_above="@+id/page_indicator" - android:layout_below="@id/page_container" - android:layout_centerHorizontal="true" - android:visibility="gone" /> - - <com.android.tv.common.ui.setup.leanback.PagingIndicator - android:id="@id/page_indicator" - android:layout_width="@dimen/lb_onboarding_content_width" - android:layout_height="@dimen/lb_onboarding_navigation_height" - android:layout_centerHorizontal="true" - android:layout_alignParentBottom="true" - android:layout_marginBottom="58dp" - android:focusable="true" - android:contentDescription="@string/lb_onboarding_accessibility_next" - android:visibility="gone" /> - - <Button - android:id="@+id/button_start" - android:layout_width="wrap_content" - android:layout_height="36dp" - android:layout_centerHorizontal="true" - android:layout_alignParentBottom="true" - android:layout_marginBottom="62dp" - android:alpha="0.0" - android:background="@drawable/lb_onboarding_start_button_background" - android:elevation="1.5dp" - android:fontFamily="sans-serif" - android:gravity="center_vertical" - android:paddingEnd="24dp" - android:paddingStart="24dp" - android:stateListAnimator="@null" - android:text="@string/lb_onboarding_get_started" - android:textAllCaps="true" - android:textColor="#014269" - android:textSize="16sp" - android:visibility="gone"/> - - <FrameLayout - android:id="@+id/foreground_container" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:visibility="gone" /> - - <ImageView - android:id="@+id/logo" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerInParent="true" - android:contentDescription="@null" /> - -</RelativeLayout> diff --git a/common/res_leanback/values-af/strings.xml b/common/res_leanback/values-af/strings.xml deleted file mode 100644 index d683758b..00000000 --- a/common/res_leanback/values-af/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"BEGIN HIER"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Volgende"</string> -</resources> diff --git a/common/res_leanback/values-am/strings.xml b/common/res_leanback/values-am/strings.xml deleted file mode 100644 index e70214dc..00000000 --- a/common/res_leanback/values-am/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ይጀምሩ"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"ቀጣይ"</string> -</resources> diff --git a/common/res_leanback/values-ar/strings.xml b/common/res_leanback/values-ar/strings.xml deleted file mode 100644 index f7ba5716..00000000 --- a/common/res_leanback/values-ar/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"البدء"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"التالية"</string> -</resources> diff --git a/common/res_leanback/values-az-rAZ/strings.xml b/common/res_leanback/values-az-rAZ/strings.xml deleted file mode 100644 index 2293accf..00000000 --- a/common/res_leanback/values-az-rAZ/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"BAŞLAYIN"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Növbəti"</string> -</resources> diff --git a/common/res_leanback/values-bg/strings.xml b/common/res_leanback/values-bg/strings.xml deleted file mode 100644 index a6c3cc03..00000000 --- a/common/res_leanback/values-bg/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ПЪРВИ СТЪПКИ"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Напред"</string> -</resources> diff --git a/common/res_leanback/values-bn-rBD/strings.xml b/common/res_leanback/values-bn-rBD/strings.xml deleted file mode 100644 index 31b7a515..00000000 --- a/common/res_leanback/values-bn-rBD/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"শুরু করা যাক"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"পরবর্তী"</string> -</resources> diff --git a/common/res_leanback/values-ca/strings.xml b/common/res_leanback/values-ca/strings.xml deleted file mode 100644 index 8de1bb62..00000000 --- a/common/res_leanback/values-ca/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"COMENÇA"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Següent"</string> -</resources> diff --git a/common/res_leanback/values-cs/strings.xml b/common/res_leanback/values-cs/strings.xml deleted file mode 100644 index 231f92e7..00000000 --- a/common/res_leanback/values-cs/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ZAČÍNÁME"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Další"</string> -</resources> diff --git a/common/res_leanback/values-da/strings.xml b/common/res_leanback/values-da/strings.xml deleted file mode 100644 index 25375bc2..00000000 --- a/common/res_leanback/values-da/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"KOM GODT I GANG"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Næste"</string> -</resources> diff --git a/common/res_leanback/values-de/strings.xml b/common/res_leanback/values-de/strings.xml deleted file mode 100644 index 0f492e2f..00000000 --- a/common/res_leanback/values-de/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"JETZT STARTEN"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Weiter"</string> -</resources> diff --git a/common/res_leanback/values-el/strings.xml b/common/res_leanback/values-el/strings.xml deleted file mode 100644 index 1df4b216..00000000 --- a/common/res_leanback/values-el/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ΕΝΑΡΞΗ"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Επόμενο"</string> -</resources> diff --git a/common/res_leanback/values-en-rAU/strings.xml b/common/res_leanback/values-en-rAU/strings.xml deleted file mode 100644 index d6995936..00000000 --- a/common/res_leanback/values-en-rAU/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"GET STARTED"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Next"</string> -</resources> diff --git a/common/res_leanback/values-en-rGB/strings.xml b/common/res_leanback/values-en-rGB/strings.xml deleted file mode 100644 index d6995936..00000000 --- a/common/res_leanback/values-en-rGB/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"GET STARTED"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Next"</string> -</resources> diff --git a/common/res_leanback/values-en-rIN/strings.xml b/common/res_leanback/values-en-rIN/strings.xml deleted file mode 100644 index d6995936..00000000 --- a/common/res_leanback/values-en-rIN/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"GET STARTED"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Next"</string> -</resources> diff --git a/common/res_leanback/values-es-rUS/strings.xml b/common/res_leanback/values-es-rUS/strings.xml deleted file mode 100644 index 0a1bb255..00000000 --- a/common/res_leanback/values-es-rUS/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"COMENZAR"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Siguiente"</string> -</resources> diff --git a/common/res_leanback/values-es/strings.xml b/common/res_leanback/values-es/strings.xml deleted file mode 100644 index 0a17e9f2..00000000 --- a/common/res_leanback/values-es/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"EMPEZAR"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Siguiente"</string> -</resources> diff --git a/common/res_leanback/values-et-rEE/strings.xml b/common/res_leanback/values-et-rEE/strings.xml deleted file mode 100644 index f74e1773..00000000 --- a/common/res_leanback/values-et-rEE/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ALUSTAGE"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Järgmine"</string> -</resources> diff --git a/common/res_leanback/values-eu-rES/strings.xml b/common/res_leanback/values-eu-rES/strings.xml deleted file mode 100644 index 25dadb75..00000000 --- a/common/res_leanback/values-eu-rES/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"LEHEN URRATSAK"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Hurrengoa"</string> -</resources> diff --git a/common/res_leanback/values-fa/strings.xml b/common/res_leanback/values-fa/strings.xml deleted file mode 100644 index 21b1f969..00000000 --- a/common/res_leanback/values-fa/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"شروع به کار"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"بعدی"</string> -</resources> diff --git a/common/res_leanback/values-fi/strings.xml b/common/res_leanback/values-fi/strings.xml deleted file mode 100644 index c8474c4a..00000000 --- a/common/res_leanback/values-fi/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ALOITA"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Seuraava"</string> -</resources> diff --git a/common/res_leanback/values-fr-rCA/strings.xml b/common/res_leanback/values-fr-rCA/strings.xml deleted file mode 100644 index 9f7933bc..00000000 --- a/common/res_leanback/values-fr-rCA/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"COMMENCER"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Suivant"</string> -</resources> diff --git a/common/res_leanback/values-fr/strings.xml b/common/res_leanback/values-fr/strings.xml deleted file mode 100644 index 9f7933bc..00000000 --- a/common/res_leanback/values-fr/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"COMMENCER"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Suivant"</string> -</resources> diff --git a/common/res_leanback/values-gl-rES/strings.xml b/common/res_leanback/values-gl-rES/strings.xml deleted file mode 100644 index 8fa1ed80..00000000 --- a/common/res_leanback/values-gl-rES/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"COMEZAR"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Seguinte"</string> -</resources> diff --git a/common/res_leanback/values-hi/strings.xml b/common/res_leanback/values-hi/strings.xml deleted file mode 100644 index c966d80d..00000000 --- a/common/res_leanback/values-hi/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"प्रारंभ करें"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"अगला"</string> -</resources> diff --git a/common/res_leanback/values-hr/strings.xml b/common/res_leanback/values-hr/strings.xml deleted file mode 100644 index 31676fcf..00000000 --- a/common/res_leanback/values-hr/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"POČETAK"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Dalje"</string> -</resources> diff --git a/common/res_leanback/values-hu/strings.xml b/common/res_leanback/values-hu/strings.xml deleted file mode 100644 index cfd19a8d..00000000 --- a/common/res_leanback/values-hu/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"KEZDŐ LÉPÉSEK"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Következő"</string> -</resources> diff --git a/common/res_leanback/values-hy-rAM/strings.xml b/common/res_leanback/values-hy-rAM/strings.xml deleted file mode 100644 index 7b99acad..00000000 --- a/common/res_leanback/values-hy-rAM/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ՍԿՍԵԼ"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Հաջորդը"</string> -</resources> diff --git a/common/res_leanback/values-in/strings.xml b/common/res_leanback/values-in/strings.xml deleted file mode 100644 index 940a5060..00000000 --- a/common/res_leanback/values-in/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"MULAI"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Berikutnya"</string> -</resources> diff --git a/common/res_leanback/values-is-rIS/strings.xml b/common/res_leanback/values-is-rIS/strings.xml deleted file mode 100644 index 0cbf8935..00000000 --- a/common/res_leanback/values-is-rIS/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"HEFJAST HANDA"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Áfram"</string> -</resources> diff --git a/common/res_leanback/values-it/strings.xml b/common/res_leanback/values-it/strings.xml deleted file mode 100644 index 68681952..00000000 --- a/common/res_leanback/values-it/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"INIZIA"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Avanti"</string> -</resources> diff --git a/common/res_leanback/values-iw/strings.xml b/common/res_leanback/values-iw/strings.xml deleted file mode 100644 index 1df4245e..00000000 --- a/common/res_leanback/values-iw/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"התחל"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"הבא"</string> -</resources> diff --git a/common/res_leanback/values-ja/strings.xml b/common/res_leanback/values-ja/strings.xml deleted file mode 100644 index 67183065..00000000 --- a/common/res_leanback/values-ja/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"使ってみる"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"次へ"</string> -</resources> diff --git a/common/res_leanback/values-ka-rGE/strings.xml b/common/res_leanback/values-ka-rGE/strings.xml deleted file mode 100644 index d5238fc7..00000000 --- a/common/res_leanback/values-ka-rGE/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"დაწყება"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"შემდეგი"</string> -</resources> diff --git a/common/res_leanback/values-kk-rKZ/strings.xml b/common/res_leanback/values-kk-rKZ/strings.xml deleted file mode 100644 index bf67ae09..00000000 --- a/common/res_leanback/values-kk-rKZ/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ІСКЕ КІРІСУ"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Келесі"</string> -</resources> diff --git a/common/res_leanback/values-km-rKH/strings.xml b/common/res_leanback/values-km-rKH/strings.xml deleted file mode 100644 index 39b3a3c4..00000000 --- a/common/res_leanback/values-km-rKH/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ចាប់ផ្ដើម"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"បន្ទាប់"</string> -</resources> diff --git a/common/res_leanback/values-kn-rIN/strings.xml b/common/res_leanback/values-kn-rIN/strings.xml deleted file mode 100644 index 8113d1ac..00000000 --- a/common/res_leanback/values-kn-rIN/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ಪ್ರಾರಂಭಿಸು"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"ಮುಂದೆ"</string> -</resources> diff --git a/common/res_leanback/values-ko/strings.xml b/common/res_leanback/values-ko/strings.xml deleted file mode 100644 index b64e2d96..00000000 --- a/common/res_leanback/values-ko/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"시작하기"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"다음"</string> -</resources> diff --git a/common/res_leanback/values-ky-rKG/strings.xml b/common/res_leanback/values-ky-rKG/strings.xml deleted file mode 100644 index d789e873..00000000 --- a/common/res_leanback/values-ky-rKG/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"БАШТАДЫК"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Кийинки"</string> -</resources> diff --git a/common/res_leanback/values-lo-rLA/strings.xml b/common/res_leanback/values-lo-rLA/strings.xml deleted file mode 100644 index de4d7ead..00000000 --- a/common/res_leanback/values-lo-rLA/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ເລີ່ມຕົ້ນນຳໃຊ້"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"ຕໍ່ໄປ"</string> -</resources> diff --git a/common/res_leanback/values-lt/strings.xml b/common/res_leanback/values-lt/strings.xml deleted file mode 100644 index 2938c289..00000000 --- a/common/res_leanback/values-lt/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"PRADĖTI"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Kitas"</string> -</resources> diff --git a/common/res_leanback/values-lv/strings.xml b/common/res_leanback/values-lv/strings.xml deleted file mode 100644 index a65b8919..00000000 --- a/common/res_leanback/values-lv/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"SĀKT DARBU"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Tālāk"</string> -</resources> diff --git a/common/res_leanback/values-mk-rMK/strings.xml b/common/res_leanback/values-mk-rMK/strings.xml deleted file mode 100644 index a7df3e64..00000000 --- a/common/res_leanback/values-mk-rMK/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ЗАПОЧНИ"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Следно"</string> -</resources> diff --git a/common/res_leanback/values-ml-rIN/strings.xml b/common/res_leanback/values-ml-rIN/strings.xml deleted file mode 100644 index dc051da9..00000000 --- a/common/res_leanback/values-ml-rIN/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ആരംഭിക്കുക"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"അടുത്തത്"</string> -</resources> diff --git a/common/res_leanback/values-mn-rMN/strings.xml b/common/res_leanback/values-mn-rMN/strings.xml deleted file mode 100644 index eb4b74bd..00000000 --- a/common/res_leanback/values-mn-rMN/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ЭХЭЛЦГЭЭЕ"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Дараах"</string> -</resources> diff --git a/common/res_leanback/values-mr-rIN/strings.xml b/common/res_leanback/values-mr-rIN/strings.xml deleted file mode 100644 index 293aa75b..00000000 --- a/common/res_leanback/values-mr-rIN/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"प्रारंभ करा"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"पुढील"</string> -</resources> diff --git a/common/res_leanback/values-ms-rMY/strings.xml b/common/res_leanback/values-ms-rMY/strings.xml deleted file mode 100644 index 08e6a0a6..00000000 --- a/common/res_leanback/values-ms-rMY/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"MULAKAN"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Seterusnya"</string> -</resources> diff --git a/common/res_leanback/values-my-rMM/strings.xml b/common/res_leanback/values-my-rMM/strings.xml deleted file mode 100644 index 37ca64e0..00000000 --- a/common/res_leanback/values-my-rMM/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"စတင်ပါ"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"ရှေ့သို့"</string> -</resources> diff --git a/common/res_leanback/values-nb/strings.xml b/common/res_leanback/values-nb/strings.xml deleted file mode 100644 index f79a3fb5..00000000 --- a/common/res_leanback/values-nb/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"KOM I GANG"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Neste"</string> -</resources> diff --git a/common/res_leanback/values-ne-rNP/strings.xml b/common/res_leanback/values-ne-rNP/strings.xml deleted file mode 100644 index 0b479416..00000000 --- a/common/res_leanback/values-ne-rNP/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"सुरू गरौँ"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"अर्को"</string> -</resources> diff --git a/common/res_leanback/values-nl/strings.xml b/common/res_leanback/values-nl/strings.xml deleted file mode 100644 index 98580f53..00000000 --- a/common/res_leanback/values-nl/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"AAN DE SLAG"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Volgende"</string> -</resources> diff --git a/common/res_leanback/values-pl/strings.xml b/common/res_leanback/values-pl/strings.xml deleted file mode 100644 index 59482365..00000000 --- a/common/res_leanback/values-pl/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"WYPRÓBUJ"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Dalej"</string> -</resources> diff --git a/common/res_leanback/values-pt-rPT/strings.xml b/common/res_leanback/values-pt-rPT/strings.xml deleted file mode 100644 index 1529e3aa..00000000 --- a/common/res_leanback/values-pt-rPT/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"INICIAR"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Seguinte"</string> -</resources> diff --git a/common/res_leanback/values-pt/strings.xml b/common/res_leanback/values-pt/strings.xml deleted file mode 100644 index 596351c5..00000000 --- a/common/res_leanback/values-pt/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"PRIMEIROS PASSOS"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Próxima"</string> -</resources> diff --git a/common/res_leanback/values-ro/strings.xml b/common/res_leanback/values-ro/strings.xml deleted file mode 100644 index 0a993f46..00000000 --- a/common/res_leanback/values-ro/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ÎNCEPEȚI"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Înainte"</string> -</resources> diff --git a/common/res_leanback/values-ru/strings.xml b/common/res_leanback/values-ru/strings.xml deleted file mode 100644 index 1c07da67..00000000 --- a/common/res_leanback/values-ru/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"НАЧАТЬ"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Далее"</string> -</resources> diff --git a/common/res_leanback/values-si-rLK/strings.xml b/common/res_leanback/values-si-rLK/strings.xml deleted file mode 100644 index 78dee7c6..00000000 --- a/common/res_leanback/values-si-rLK/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ආරම්භ කරන්න"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"ඊළඟ"</string> -</resources> diff --git a/common/res_leanback/values-sk/strings.xml b/common/res_leanback/values-sk/strings.xml deleted file mode 100644 index 998585dc..00000000 --- a/common/res_leanback/values-sk/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ZAČÍNAME"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Ďalej"</string> -</resources> diff --git a/common/res_leanback/values-sl/strings.xml b/common/res_leanback/values-sl/strings.xml deleted file mode 100644 index ec5e4719..00000000 --- a/common/res_leanback/values-sl/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ZAČNITE"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Naprej"</string> -</resources> diff --git a/common/res_leanback/values-sr/strings.xml b/common/res_leanback/values-sr/strings.xml deleted file mode 100644 index e65e0e56..00000000 --- a/common/res_leanback/values-sr/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ЗАПОЧНИТЕ"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Следећа"</string> -</resources> diff --git a/common/res_leanback/values-sv/strings.xml b/common/res_leanback/values-sv/strings.xml deleted file mode 100644 index 6866b1d2..00000000 --- a/common/res_leanback/values-sv/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"KOM IGÅNG"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Nästa"</string> -</resources> diff --git a/common/res_leanback/values-sw/strings.xml b/common/res_leanback/values-sw/strings.xml deleted file mode 100644 index 5f921c04..00000000 --- a/common/res_leanback/values-sw/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ANZA KUTUMIA"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Inayofuata"</string> -</resources> diff --git a/common/res_leanback/values-ta-rIN/strings.xml b/common/res_leanback/values-ta-rIN/strings.xml deleted file mode 100644 index 5b3c2749..00000000 --- a/common/res_leanback/values-ta-rIN/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"தொடங்குக"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"அடுத்து"</string> -</resources> diff --git a/common/res_leanback/values-te-rIN/strings.xml b/common/res_leanback/values-te-rIN/strings.xml deleted file mode 100644 index dc1954d5..00000000 --- a/common/res_leanback/values-te-rIN/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ప్రారంభించు"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"తదుపరి"</string> -</resources> diff --git a/common/res_leanback/values-th/strings.xml b/common/res_leanback/values-th/strings.xml deleted file mode 100644 index 00e40d11..00000000 --- a/common/res_leanback/values-th/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"เริ่มต้นใช้งาน"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"ถัดไป"</string> -</resources> diff --git a/common/res_leanback/values-tl/strings.xml b/common/res_leanback/values-tl/strings.xml deleted file mode 100644 index f4a93e7f..00000000 --- a/common/res_leanback/values-tl/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"MAGSIMULA"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Susunod"</string> -</resources> diff --git a/common/res_leanback/values-tr/strings.xml b/common/res_leanback/values-tr/strings.xml deleted file mode 100644 index 126fe3b5..00000000 --- a/common/res_leanback/values-tr/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"BAŞLA"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Sonraki"</string> -</resources> diff --git a/common/res_leanback/values-uk/strings.xml b/common/res_leanback/values-uk/strings.xml deleted file mode 100644 index 61dd2034..00000000 --- a/common/res_leanback/values-uk/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"ПОЧАТИ"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Далі"</string> -</resources> diff --git a/common/res_leanback/values-ur-rPK/strings.xml b/common/res_leanback/values-ur-rPK/strings.xml deleted file mode 100644 index 2a3299ff..00000000 --- a/common/res_leanback/values-ur-rPK/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"شروع کریں"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"اگلا"</string> -</resources> diff --git a/common/res_leanback/values-uz-rUZ/strings.xml b/common/res_leanback/values-uz-rUZ/strings.xml deleted file mode 100644 index 923ea077..00000000 --- a/common/res_leanback/values-uz-rUZ/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"BOSHLADIK"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Keyingi"</string> -</resources> diff --git a/common/res_leanback/values-vi/strings.xml b/common/res_leanback/values-vi/strings.xml deleted file mode 100644 index 5e2c4c07..00000000 --- a/common/res_leanback/values-vi/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"BẮT ĐẦU"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Tiếp theo"</string> -</resources> diff --git a/common/res_leanback/values-zh-rCN/strings.xml b/common/res_leanback/values-zh-rCN/strings.xml deleted file mode 100644 index 7e032d76..00000000 --- a/common/res_leanback/values-zh-rCN/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"开始使用"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"下一页"</string> -</resources> diff --git a/common/res_leanback/values-zh-rHK/strings.xml b/common/res_leanback/values-zh-rHK/strings.xml deleted file mode 100644 index 4c054d96..00000000 --- a/common/res_leanback/values-zh-rHK/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"開始使用"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"下一頁"</string> -</resources> diff --git a/common/res_leanback/values-zh-rTW/strings.xml b/common/res_leanback/values-zh-rTW/strings.xml deleted file mode 100644 index 4c054d96..00000000 --- a/common/res_leanback/values-zh-rTW/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"開始使用"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"下一頁"</string> -</resources> diff --git a/common/res_leanback/values-zu/strings.xml b/common/res_leanback/values-zu/strings.xml deleted file mode 100644 index fe862d14..00000000 --- a/common/res_leanback/values-zu/strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="lb_onboarding_get_started" msgid="1724006991213712878">"QALISA"</string> - <string name="lb_onboarding_accessibility_next" msgid="113416166336573484">"Okulandelayo"</string> -</resources> diff --git a/common/res_leanback/values/colors.xml b/common/res_leanback/values/colors.xml deleted file mode 100644 index 5230dfb8..00000000 --- a/common/res_leanback/values/colors.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - ~ 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. - --> - -<resources> - <!-- Onboarding screen --> - <color name="lb_page_indicator_dot">#014269</color> - <color name="lb_page_indicator_arrow_background">#EEEEEE</color> - <color name="lb_page_indicator_arrow_shadow">#4C000000</color> -</resources> diff --git a/common/res_leanback/values/dimens.xml b/common/res_leanback/values/dimens.xml deleted file mode 100644 index 275d22ae..00000000 --- a/common/res_leanback/values/dimens.xml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ 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. - --> - -<resources> - <!-- Onboarding screen --> - <dimen name="lb_onboarding_content_width">536dp</dimen> - <dimen name="lb_onboarding_header_height">100dp</dimen> - <dimen name="lb_onboarding_header_margin_top">64dp</dimen> - <dimen name="lb_onboarding_start_button_height">36dp</dimen> - <dimen name="lb_onboarding_start_button_margin_bottom">62dp</dimen> - <!-- This value should be lb_onboarding_header_margin_top + lb_onboarding_header_height --> - <dimen name="lb_onboarding_content_margin_top">164dp</dimen> - <!-- This value should be lb_onboarding_start_button_height + lb_onboarding_start_button_margin_bottom --> - <dimen name="lb_onboarding_content_margin_bottom">98dp</dimen> - <!-- This value should be lb_page_indicator_arrow_diameter + 2 * lb_page_indicator_arrow_shadow_radius --> - <dimen name="lb_onboarding_navigation_height">40dp</dimen> - <dimen name="lb_page_indicator_arrow_diameter">36dp</dimen> - <dimen name="lb_page_indicator_arrow_shadow_radius">2dp</dimen> - <dimen name="lb_page_indicator_arrow_shadow_offset">1dp</dimen> - <dimen name="lb_page_indicator_arrow_gap">32dp</dimen> - <!-- This value must be lb_twice page_indicator_dot_radius --> - <dimen name="lb_page_indicator_dot_diameter">10dp</dimen> - <dimen name="lb_page_indicator_dot_radius">5dp</dimen> - <dimen name="lb_page_indicator_dot_gap">16dp</dimen> -</resources> diff --git a/common/res_leanback/values/strings.xml b/common/res_leanback/values/strings.xml deleted file mode 100644 index 2f585c0b..00000000 --- a/common/res_leanback/values/strings.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ 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. - --> - -<resources> - <!-- Onboarding screen.--> - <eat-comment /> - <!-- Text for "GET STARTED" button. This text should be in ALL CAPS. --> - <string name="lb_onboarding_get_started">GET STARTED</string> - <!-- Content description for page navigator. --> - <string name="lb_onboarding_accessibility_next">Next</string> -</resources> diff --git a/common/src/com/android/tv/common/BuildConfig.java b/common/src/com/android/tv/common/BuildConfig.java deleted file mode 100644 index 635903c3..00000000 --- a/common/src/com/android/tv/common/BuildConfig.java +++ /dev/null @@ -1,10 +0,0 @@ -/** - * TODO: It's manually generated file to fix build breakage. - * It should be automatically generated. - */ -package com.android.tv.common; -public final class BuildConfig { - public static final boolean DEBUG = false; - public static final boolean ENG = false; - private BuildConfig() {} -} diff --git a/common/src/com/android/tv/common/CollectionUtils.java b/common/src/com/android/tv/common/CollectionUtils.java index 4a7a81f2..f81e51a5 100644 --- a/common/src/com/android/tv/common/CollectionUtils.java +++ b/common/src/com/android/tv/common/CollectionUtils.java @@ -16,45 +16,12 @@ package com.android.tv.common; -import android.os.Build; -import android.util.ArrayMap; -import android.util.ArraySet; - import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; /** * Static utilities for collections */ public class CollectionUtils { - /** - * Returns a new Set suitable for small data sets. - * - * <p>In M and above this is a {@link ArraySet} otherwise it is a {@link HashSet}. - */ - public static <T> Set<T> createSmallSet() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - return new ArraySet<>(); - } else { - return new HashSet<>(); - } - } - - /** - * Returns a new Map suitable for small data sets. - * - * <p>In M and above this is a {@link ArrayMap} otherwise it is a {@link HashMap}. - */ - public static <K, V> Map<K, V> createSmallMap() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - return new ArrayMap<>(); - } else { - return new HashMap<>(); - } - } /** * Returns an array with the arrays concatenated together. diff --git a/common/src/com/android/tv/common/SoftPreconditions.java b/common/src/com/android/tv/common/SoftPreconditions.java new file mode 100644 index 00000000..9b7713f6 --- /dev/null +++ b/common/src/com/android/tv/common/SoftPreconditions.java @@ -0,0 +1,164 @@ +/* + * 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.common; + +import android.content.Context; +import android.text.TextUtils; +import android.util.Log; + +import com.android.tv.common.BuildConfig; +import com.android.tv.common.feature.Feature; + +/** + * Simple static methods to be called at the start of your own methods to verify + * correct arguments and state. + * + * <p>{@code checkXXX} methods throw exceptions when {@link BuildConfig#ENG} is true, and + * logs a warning when it is false. + * + * <p>This is based on com.android.internal.util.Preconditions. + */ +public final class SoftPreconditions { + private static final String TAG = "SoftPreconditions"; + + /** + * Throws or logs if an expression involving the parameter of the calling + * method is not true. + * + * @param expression a boolean expression + * @param tag Used to identify the source of a log message. It usually + * identifies the class or activity where the log call occurs. + * @param msg The message you would like logged. + * @throws IllegalArgumentException if {@code expression} is true + */ + public static void checkArgument(final boolean expression, String tag, String msg) { + if (!expression) { + warn(tag, "Illegal argument", msg, new IllegalArgumentException(msg)); + } + } + + /** + * Throws or logs if an expression involving the parameter of the calling + * method is not true. + * + * @param expression a boolean expression + * @throws IllegalArgumentException if {@code expression} is true + */ + public static void checkArgument(final boolean expression) { + checkArgument(expression, null, null); + } + + /** + * Throws or logs if an and object is null. + * + * @param reference an object reference + * @param tag Used to identify the source of a log message. It usually + * identifies the class or activity where the log call occurs. + * @param msg The message you would like logged. + * @return true if the object is null + * @throws NullPointerException if {@code reference} is null + */ + public static <T> T checkNotNull(final T reference, String tag, String msg) { + if (reference == null) { + warn(tag, "Null Pointer", msg, new NullPointerException(msg)); + } + return reference; + } + + /** + * Throws or logs if an and object is null. + * + * @param reference an object reference + * @return true if the object is null + * @throws NullPointerException if {@code reference} is null + */ + public static <T> T checkNotNull(final T reference) { + return checkNotNull(reference, null, null); + } + + /** + * Throws or logs if an expression involving the state of the calling + * instance, but not involving any parameters to the calling method is not true. + * + * @param expression a boolean expression + * @param tag Used to identify the source of a log message. It usually + * identifies the class or activity where the log call occurs. + * @param msg The message you would like logged. + * @throws IllegalStateException if {@code expression} is true + */ + public static void checkState(final boolean expression, String tag, String msg) { + if (!expression) { + warn(tag, "Illegal State", msg, new IllegalStateException(msg)); + } + } + + /** + * Throws or logs if an expression involving the state of the calling + * instance, but not involving any parameters to the calling method is not true. + * + * @param expression a boolean expression + * @throws IllegalStateException if {@code expression} is true + */ + public static void checkState(final boolean expression) { + checkState(expression, null, null); + } + + /** + * Throws or logs if the Feature is not enabled + * + * @param context an android context + * @param feature the required feature + * @param tag used to identify the source of a log message. It usually + * identifies the class or activity where the log call occurs + * @throws IllegalStateException if {@code feature} is not enabled + */ + public static void checkFeatureEnabled(Context context, Feature feature, String tag) { + checkState(feature.isEnabled(context), tag, feature.toString()); + } + + /** + * Throws a {@link RuntimeException} if {@link BuildConfig#ENG} is true, else log a warning. + * + * @param tag Used to identify the source of a log message. It usually + * identifies the class or activity where the log call occurs. + * @param msg The message you would like logged + * @param e The exception to wrap with a RuntimeException when thrown. + */ + public static void warn(String tag, String prefix, String msg, Exception e) + throws RuntimeException { + if (TextUtils.isEmpty(tag)) { + tag = TAG; + } + String logMessage; + if (TextUtils.isEmpty(msg)) { + logMessage = prefix; + } else if (TextUtils.isEmpty(prefix)) { + logMessage = msg; + } else { + logMessage = prefix + ": " + msg; + } + + if (BuildConfig.ENG) { + throw new RuntimeException(msg, e); + } else { + Log.w(tag, logMessage, e); + } + } + + private SoftPreconditions() { + } +} diff --git a/common/src/com/android/tv/common/TvContentRatingCache.java b/common/src/com/android/tv/common/TvContentRatingCache.java index 5ca780e3..7ea86287 100644 --- a/common/src/com/android/tv/common/TvContentRatingCache.java +++ b/common/src/com/android/tv/common/TvContentRatingCache.java @@ -20,6 +20,7 @@ import android.media.tv.TvContentRating; import android.support.annotation.Nullable; import android.support.annotation.VisibleForTesting; import android.text.TextUtils; +import android.util.ArrayMap; import android.util.Log; import java.util.ArrayList; @@ -42,8 +43,7 @@ public final class TvContentRatingCache implements MemoryManageable { return INSTANCE; } - private final Map<String, TvContentRating[]> mRatingsMultiMap = CollectionUtils - .createSmallMap(); + private final Map<String, TvContentRating[]> mRatingsMultiMap = new ArrayMap<>(); /** * Returns an array TvContentRatings from a string of comma separated set of rating strings diff --git a/common/src/com/android/tv/common/feature/CommonFeatures.java b/common/src/com/android/tv/common/feature/CommonFeatures.java index bfef19a6..9925833f 100644 --- a/common/src/com/android/tv/common/feature/CommonFeatures.java +++ b/common/src/com/android/tv/common/feature/CommonFeatures.java @@ -17,7 +17,7 @@ package com.android.tv.common.feature; import static com.android.tv.common.feature.EngOnlyFeature.ENG_ONLY_FEATURE; -import static com.android.tv.common.feature.FeatureUtils.AND; +import static com.android.tv.common.feature.FeatureUtils.OR; import static com.android.tv.common.feature.TestableFeature.createTestableFeature; /** @@ -32,9 +32,12 @@ public class CommonFeatures { * <p>See <a href="https://goto.google.com/atv-dvr-onepager">go/atv-dvr-onepager</a> */ public static TestableFeature DVR = createTestableFeature( - AND( - ENG_ONLY_FEATURE, - new PropertyFeature("dvr_enabled", false), - Sdk.M_FEATURE // TODO(dvr): Sdk.N_PREVIEW_FEATURE - )); + OR(ENG_ONLY_FEATURE, Sdk.N_PRE_2_OR_HIGHER)); + + /** + * USE_SW_CODEC_FOR_SD + * + * Prefer software based codec for SD channels. + */ + public static Feature USE_SW_CODEC_FOR_SD = new PropertyFeature("use_sw_codec_for_sd", true); } diff --git a/common/src/com/android/tv/common/feature/Sdk.java b/common/src/com/android/tv/common/feature/Sdk.java index 1efefd89..268eaea7 100644 --- a/common/src/com/android/tv/common/feature/Sdk.java +++ b/common/src/com/android/tv/common/feature/Sdk.java @@ -18,25 +18,50 @@ package com.android.tv.common.feature; import android.content.Context; import android.os.Build; +import android.support.v4.os.BuildCompat; /** * Holder for SDK version features */ public class Sdk { - public static Feature M_FEATURE = new SdkVersionFeature(Build.VERSION_CODES.M); - private static class SdkVersionFeature implements Feature { + public static Feature N_PRE_2_OR_HIGHER = + new SdkPreviewVersionFeature(Build.VERSION_CODES.M, 2, true); + + private static class SdkPreviewVersionFeature implements Feature { private final int mVersionCode; + private final int mPreviewCode; + private final boolean mAllowHigherPreview; - private SdkVersionFeature(int versionCode) { + private SdkPreviewVersionFeature(int versionCode, int previewCode, + boolean allowHigerPreview) { mVersionCode = versionCode; + mPreviewCode = previewCode; + mAllowHigherPreview = allowHigerPreview; } @Override public boolean isEnabled(Context context) { - return Build.VERSION.SDK_INT >= mVersionCode; + try { + if (mAllowHigherPreview) { + return Build.VERSION.SDK_INT == mVersionCode + && Build.VERSION.PREVIEW_SDK_INT >= mPreviewCode; + } else { + return Build.VERSION.SDK_INT == mVersionCode + && Build.VERSION.PREVIEW_SDK_INT == mPreviewCode; + } + } catch (NoSuchFieldError e) { + return false; + } } } + public static Feature AT_LEAST_N = new Feature() { + @Override + public boolean isEnabled(Context context) { + return BuildCompat.isAtLeastN(); + } + }; + private Sdk() {} } diff --git a/common/src/com/android/tv/common/recording/PlaybackTvView.java b/common/src/com/android/tv/common/recording/PlaybackTvView.java deleted file mode 100644 index e62ee06f..00000000 --- a/common/src/com/android/tv/common/recording/PlaybackTvView.java +++ /dev/null @@ -1,191 +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.common.recording; - -import android.annotation.TargetApi; -import android.content.Context; -import android.media.tv.TvContentRating; -import android.media.tv.TvContract; -import android.media.tv.TvTrackInfo; -import android.media.tv.TvView; -import android.net.Uri; -import android.os.Build; -import android.os.Bundle; -import android.util.AttributeSet; - -import com.android.tv.common.feature.CommonFeatures; - -import java.util.List; - -/** - * Extend {@link TvView} to support recording playback. - */ -@TargetApi(Build.VERSION_CODES.M) // TODO(DVR): set to N -public class PlaybackTvView extends TvView { - - final TvInputCallback mInternalCallback = new TvInputCallback() { - @Override - public void onChannelRetuned(String inputId, Uri channelUri) { - if (mCallback != null) { - mCallback.onChannelRetuned(inputId, channelUri); - } - } - - @Override - public void onConnectionFailed(String inputId) { - if (mCallback != null) { - mCallback.onConnectionFailed(inputId); - } - } - - @Override - public void onContentAllowed(String inputId) { - if (mCallback != null) { - mCallback.onContentAllowed(inputId); - } - } - - @Override - public void onContentBlocked(String inputId, TvContentRating rating) { - if (mCallback != null) { - mCallback.onContentBlocked(inputId, rating); - } - } - - @Override - public void onDisconnected(String inputId) { - if (mCallback != null) { - mCallback.onDisconnected(inputId); - } - } - - @Override - public void onEvent(String inputId, String eventType, Bundle eventArgs) { - if (mCallback != null) { - if (eventType.equals(RecordingUtils.EVENT_TYPE_TIMESHIFT_END_POSITION)) { - if (mTimeshiftCallback != null) { - mTimeshiftCallback.onTimeShiftEndPositionChanged(inputId, - eventArgs.getLong(RecordingUtils.BUNDLE_TIMESHIFT_END_POSITION)); - } - return; - } - mCallback.onEvent(inputId, eventType, eventArgs); - } - } - - @Override - public void onTimeShiftStatusChanged(String inputId, int status) { - if (mCallback != null) { - mCallback.onTimeShiftStatusChanged(inputId, status); - } - } - - @Override - public void onTracksChanged(String inputId, List<TvTrackInfo> tracks) { - if (mCallback != null) { - mCallback.onTracksChanged(inputId, tracks); - } - } - - @Override - public void onTrackSelected(String inputId, int type, String trackId) { - if (mCallback != null) { - mCallback.onTrackSelected(inputId, type, trackId); - } - } - - @Override - public void onVideoAvailable(String inputId) { - if (mCallback != null) { - mCallback.onVideoAvailable(inputId); - } - } - - @Override - public void onVideoSizeChanged(String inputId, int width, int height) { - if (mCallback != null) { - mCallback.onVideoSizeChanged(inputId, width, height); - } - } - - @Override - public void onVideoUnavailable(String inputId, int reason) { - if (mCallback != null) { - mCallback.onVideoUnavailable(inputId, reason); - } - } - }; - - private TvInputCallback mCallback; - private TimeShiftPositionCallback2 mTimeshiftCallback; - - public PlaybackTvView(Context context) { - this(context, null, 0); - } - - public PlaybackTvView(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public PlaybackTvView(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - } - - /** - * Start playback of recording. Once TvInput is ready to play, onVideoAvailable will be called. - * Playback control will be done with timeshift method for seek, play, pause. - */ - public void playMedia(String inputId, Uri mediaUri) { - tune(inputId, TvContract.buildChannelUri(0), RecordingUtils.buildMediaUri(mediaUri)); - } - - @Override - public void tune(String inputId, Uri channelUri, Bundle params) { - super.tune(inputId, channelUri, params); - if (CommonFeatures.DVR.isEnabled(getContext())) { - sendAppPrivateCommand(RecordingUtils.APP_PRIV_CREATE_PLAYBACK_SESSION, null); - } - } - - public void setTimeShiftPositionCallback(TimeShiftPositionCallback2 callback) { - if (CommonFeatures.DVR.isEnabled(getContext())) { - mTimeshiftCallback = callback; - } - super.setTimeShiftPositionCallback(callback); - } - - @Override - public void setCallback(TvInputCallback callback) { - if (CommonFeatures.DVR.isEnabled(getContext())) { - mCallback = callback; - if (callback == null) { - super.setCallback(null); - } else { - super.setCallback(mInternalCallback); - } - } else { - super.setCallback(callback); - } - } - - /** - * We need end position for recording playback. - */ - public abstract static class TimeShiftPositionCallback2 extends TimeShiftPositionCallback { - public void onTimeShiftEndPositionChanged(String inputId, long timeMs) { } - } -} diff --git a/common/src/com/android/tv/common/recording/RecordedProgram.java b/common/src/com/android/tv/common/recording/RecordedProgram.java new file mode 100644 index 00000000..63ce6ff9 --- /dev/null +++ b/common/src/com/android/tv/common/recording/RecordedProgram.java @@ -0,0 +1,760 @@ +/* + * Copyright (C) 2016 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.common.recording; + +import static android.media.tv.TvContract.RecordedPrograms; + +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.media.tv.TvContract; +import android.net.Uri; +import android.support.annotation.Nullable; +import android.text.TextUtils; + +import com.android.tv.common.R; + +import java.util.Arrays; +import java.util.Comparator; +import java.util.Objects; + +/** + * Immutable instance of {@link android.media.tv.TvContract.RecordedPrograms}. + */ +public class RecordedProgram { + public static final int ID_NOT_SET = -1; + + public final static String[] PROJECTION = { + // These are in exactly the order listed in RecordedPrograms + RecordedPrograms._ID, + RecordedPrograms.COLUMN_INPUT_ID, + RecordedPrograms.COLUMN_CHANNEL_ID, + RecordedPrograms.COLUMN_TITLE, + RecordedPrograms.COLUMN_SEASON_DISPLAY_NUMBER, + RecordedPrograms.COLUMN_SEASON_TITLE, + RecordedPrograms.COLUMN_EPISODE_DISPLAY_NUMBER, + RecordedPrograms.COLUMN_EPISODE_TITLE, + RecordedPrograms.COLUMN_START_TIME_UTC_MILLIS, + RecordedPrograms.COLUMN_END_TIME_UTC_MILLIS, + RecordedPrograms.COLUMN_BROADCAST_GENRE, + RecordedPrograms.COLUMN_CANONICAL_GENRE, + RecordedPrograms.COLUMN_SHORT_DESCRIPTION, + RecordedPrograms.COLUMN_LONG_DESCRIPTION, + RecordedPrograms.COLUMN_VIDEO_WIDTH, + RecordedPrograms.COLUMN_VIDEO_HEIGHT, + RecordedPrograms.COLUMN_AUDIO_LANGUAGE, + RecordedPrograms.COLUMN_CONTENT_RATING, + RecordedPrograms.COLUMN_POSTER_ART_URI, + RecordedPrograms.COLUMN_THUMBNAIL_URI, + RecordedPrograms.COLUMN_SEARCHABLE, + RecordedPrograms.COLUMN_RECORDING_DATA_URI, + RecordedPrograms.COLUMN_RECORDING_DATA_BYTES, + RecordedPrograms.COLUMN_RECORDING_DURATION_MILLIS, + RecordedPrograms.COLUMN_RECORDING_EXPIRE_TIME_UTC_MILLIS, + RecordedPrograms.COLUMN_INTERNAL_PROVIDER_DATA, + RecordedPrograms.COLUMN_INTERNAL_PROVIDER_FLAG1, + RecordedPrograms.COLUMN_INTERNAL_PROVIDER_FLAG2, + RecordedPrograms.COLUMN_INTERNAL_PROVIDER_FLAG3, + RecordedPrograms.COLUMN_INTERNAL_PROVIDER_FLAG4, + RecordedPrograms.COLUMN_VERSION_NUMBER, + }; + + public static final RecordedProgram fromCursor(Cursor cursor) { + int index = 0; + return builder() + .setId(cursor.getLong(index++)) + .setInputId(cursor.getString(index++)) + .setChannelId(cursor.getLong(index++)) + .setTitle(cursor.getString(index++)) + .setSeasonNumber(cursor.getString(index++)) + .setSeasonTitle(cursor.getString(index++)) + .setEpisodeNumber(cursor.getString(index++)) + .setEpisodeTitle(cursor.getString(index++)) + .setStartTimeUtcMillis(cursor.getLong(index++)) + .setEndTimeUtcMillis(cursor.getLong(index++)) + .setBroadcastGenres(cursor.getString(index++)) + .setCanonicalGenres(cursor.getString(index++)) + .setShortDescription(cursor.getString(index++)) + .setLongDescription(cursor.getString(index++)) + .setVideoWidth(cursor.getInt(index++)) + .setVideoHeight(cursor.getInt(index++)) + .setAudioLanguage(cursor.getString(index++)) + .setContentRating(cursor.getString(index++)) + .setPosterArt(cursor.getString(index++)) + .setThumbnail(cursor.getString(index++)) + .setSearchable(cursor.getInt(index++) == 1) + .setDataUri(cursor.getString(index++)) + .setDataBytes(cursor.getLong(index++)) + .setDurationMillis(cursor.getLong(index++)) + .setExpireTimeUtcMillis(cursor.getLong(index++)) + .setInternalProviderData(cursor.getBlob(index++)) + .setInternalProviderFlag1(cursor.getInt(index++)) + .setInternalProviderFlag2(cursor.getInt(index++)) + .setInternalProviderFlag3(cursor.getInt(index++)) + .setInternalProviderFlag4(cursor.getInt(index++)) + .setVersionNumber(cursor.getInt(index++)) + .build(); + } + + public static ContentValues toValues(RecordedProgram recordedProgram) { + ContentValues values = new ContentValues(); + if (recordedProgram.mId != ID_NOT_SET) { + values.put(RecordedPrograms._ID, recordedProgram.mId); + } + values.put(RecordedPrograms.COLUMN_INPUT_ID, recordedProgram.mInputId); + values.put(RecordedPrograms.COLUMN_CHANNEL_ID, recordedProgram.mChannelId); + values.put(RecordedPrograms.COLUMN_TITLE, recordedProgram.mTitle); + values.put(RecordedPrograms.COLUMN_SEASON_DISPLAY_NUMBER, recordedProgram.mSeasonNumber); + values.put(RecordedPrograms.COLUMN_SEASON_TITLE, recordedProgram.mSeasonTitle); + values.put(RecordedPrograms.COLUMN_EPISODE_DISPLAY_NUMBER, recordedProgram.mEpisodeNumber); + values.put(RecordedPrograms.COLUMN_EPISODE_TITLE, recordedProgram.mTitle); + values.put(RecordedPrograms.COLUMN_START_TIME_UTC_MILLIS, + recordedProgram.mStartTimeUtcMillis); + values.put(RecordedPrograms.COLUMN_END_TIME_UTC_MILLIS, recordedProgram.mEndTimeUtcMillis); + values.put(RecordedPrograms.COLUMN_BROADCAST_GENRE, + safeEncode(recordedProgram.mBroadcastGenres)); + values.put(RecordedPrograms.COLUMN_CANONICAL_GENRE, + safeEncode(recordedProgram.mCanonicalGenres)); + values.put(RecordedPrograms.COLUMN_SHORT_DESCRIPTION, recordedProgram.mShortDescription); + values.put(RecordedPrograms.COLUMN_LONG_DESCRIPTION, recordedProgram.mLongDescription); + if (recordedProgram.mVideoWidth == 0) { + values.putNull(RecordedPrograms.COLUMN_VIDEO_WIDTH); + } else { + values.put(RecordedPrograms.COLUMN_VIDEO_WIDTH, recordedProgram.mVideoWidth); + } + if (recordedProgram.mVideoHeight == 0) { + values.putNull(RecordedPrograms.COLUMN_VIDEO_HEIGHT); + } else { + values.put(RecordedPrograms.COLUMN_VIDEO_HEIGHT, recordedProgram.mVideoHeight); + } + values.put(RecordedPrograms.COLUMN_AUDIO_LANGUAGE, recordedProgram.mAudioLanguage); + values.put(RecordedPrograms.COLUMN_CONTENT_RATING, recordedProgram.mContentRating); + values.put(RecordedPrograms.COLUMN_POSTER_ART_URI, + safeToString(recordedProgram.mPosterArt)); + values.put(RecordedPrograms.COLUMN_THUMBNAIL_URI, safeToString(recordedProgram.mThumbnail)); + values.put(RecordedPrograms.COLUMN_SEARCHABLE, recordedProgram.mSearchable ? 1 : 0); + values.put(RecordedPrograms.COLUMN_RECORDING_DATA_URI, + safeToString(recordedProgram.mDataUri)); + values.put(RecordedPrograms.COLUMN_RECORDING_DATA_BYTES, recordedProgram.mDataBytes); + values.put(RecordedPrograms.COLUMN_RECORDING_DURATION_MILLIS, + recordedProgram.mDurationMillis); + values.put(RecordedPrograms.COLUMN_RECORDING_EXPIRE_TIME_UTC_MILLIS, + recordedProgram.mExpireTimeUtcMillis); + values.put(RecordedPrograms.COLUMN_INTERNAL_PROVIDER_DATA, + recordedProgram.mInternalProviderData); + values.put(RecordedPrograms.COLUMN_INTERNAL_PROVIDER_FLAG1, + recordedProgram.mInternalProviderFlag1); + values.put(RecordedPrograms.COLUMN_INTERNAL_PROVIDER_FLAG2, + recordedProgram.mInternalProviderFlag2); + values.put(RecordedPrograms.COLUMN_INTERNAL_PROVIDER_FLAG3, + recordedProgram.mInternalProviderFlag3); + values.put(RecordedPrograms.COLUMN_INTERNAL_PROVIDER_FLAG4, + recordedProgram.mInternalProviderFlag4); + values.put(RecordedPrograms.COLUMN_VERSION_NUMBER, recordedProgram.mVersionNumber); + return values; + } + + public static class Builder{ + private long mId = ID_NOT_SET; + private String mInputId; + private long mChannelId; + private String mTitle; + private String mSeasonNumber; + private String mSeasonTitle; + private String mEpisodeNumber; + private String mEpisodeTitle; + private long mStartTimeUtcMillis; + private long mEndTimeUtcMillis; + private String[] mBroadcastGenres; + private String[] mCanonicalGenres; + private String mShortDescription; + private String mLongDescription; + private int mVideoWidth; + private int mVideoHeight; + private String mAudioLanguage; + private String mContentRating; + private Uri mPosterArt; + private Uri mThumbnail; + private boolean mSearchable = true; + private Uri mDataUri; + private long mDataBytes; + private long mDurationMillis; + private long mExpireTimeUtcMillis; + private byte[] mInternalProviderData; + private int mInternalProviderFlag1; + private int mInternalProviderFlag2; + private int mInternalProviderFlag3; + private int mInternalProviderFlag4; + private int mVersionNumber; + + public Builder setId(long id) { + mId = id; + return this; + } + + public Builder setInputId(String inputId) { + mInputId = inputId; + return this; + } + + public Builder setChannelId(long channelId) { + mChannelId = channelId; + return this; + } + + public Builder setTitle(String title) { + mTitle = title; + return this; + } + + public Builder setSeasonNumber(String seasonNumber) { + mSeasonNumber = seasonNumber; + return this; + } + + public Builder setSeasonTitle(String seasonTitle) { + mSeasonTitle = seasonTitle; + return this; + } + + public Builder setEpisodeNumber(String episodeNumber) { + mEpisodeNumber = episodeNumber; + return this; + } + + public Builder setEpisodeTitle(String episodeTitle) { + mEpisodeTitle = episodeTitle; + return this; + } + + public Builder setStartTimeUtcMillis(long startTimeUtcMillis) { + mStartTimeUtcMillis = startTimeUtcMillis; + return this; + } + + public Builder setEndTimeUtcMillis(long endTimeUtcMillis) { + mEndTimeUtcMillis = endTimeUtcMillis; + return this; + } + + public Builder setBroadcastGenres(String broadcastGenres) { + if (TextUtils.isEmpty(broadcastGenres)) { + mBroadcastGenres = null; + return this; + } + return setBroadcastGenres(TvContract.Programs.Genres.decode(broadcastGenres)); + } + + private Builder setBroadcastGenres(String[] broadcastGenres) { + mBroadcastGenres = broadcastGenres; + return this; + } + + public Builder setCanonicalGenres(String canonicalGenres) { + if (TextUtils.isEmpty(canonicalGenres)) { + mCanonicalGenres = null; + return this; + } + return setCanonicalGenres(TvContract.Programs.Genres.decode(canonicalGenres)); + } + + private Builder setCanonicalGenres(String[] canonicalGenres) { + mCanonicalGenres = canonicalGenres; + return this; + } + + public Builder setShortDescription(String shortDescription) { + mShortDescription = shortDescription; + return this; + } + + public Builder setLongDescription(String longDescription) { + mLongDescription = longDescription; + return this; + } + + public Builder setVideoWidth(int videoWidth) { + mVideoWidth = videoWidth; + return this; + } + + public Builder setVideoHeight(int videoHeight) { + mVideoHeight = videoHeight; + return this; + } + + public Builder setAudioLanguage(String audioLanguage) { + mAudioLanguage = audioLanguage; + return this; + } + + public Builder setContentRating(String contentRating) { + mContentRating = contentRating; + return this; + } + + private Uri toUri(String uriString) { + try { + return uriString == null ? null : Uri.parse(uriString); + } catch (Exception e) { + return null; + } + } + + public Builder setPosterArt(String posterArtUri) { + return setPosterArt(toUri(posterArtUri)); + } + + public Builder setPosterArt(Uri posterArt) { + mPosterArt = posterArt; + return this; + } + + public Builder setThumbnail(String thumbnailUri) { + return setThumbnail(toUri(thumbnailUri)); + } + + public Builder setThumbnail(Uri thumbnail) { + mThumbnail = thumbnail; + return this; + } + + public Builder setSearchable(boolean searchable) { + mSearchable = searchable; + return this; + } + + public Builder setDataUri(String dataUri) { + return setDataUri(toUri(dataUri)); + } + + public Builder setDataUri(Uri dataUri) { + mDataUri = dataUri; + return this; + } + + public Builder setDataBytes(long dataBytes) { + mDataBytes = dataBytes; + return this; + } + + public Builder setDurationMillis(long durationMillis) { + mDurationMillis = durationMillis; + return this; + } + + public Builder setExpireTimeUtcMillis(long expireTimeUtcMillis) { + mExpireTimeUtcMillis = expireTimeUtcMillis; + return this; + } + + public Builder setInternalProviderData(byte[] internalProviderData) { + mInternalProviderData = internalProviderData; + return this; + } + + public Builder setInternalProviderFlag1(int internalProviderFlag1) { + mInternalProviderFlag1 = internalProviderFlag1; + return this; + } + + public Builder setInternalProviderFlag2(int internalProviderFlag2) { + mInternalProviderFlag2 = internalProviderFlag2; + return this; + } + + public Builder setInternalProviderFlag3(int internalProviderFlag3) { + mInternalProviderFlag3 = internalProviderFlag3; + return this; + } + + public Builder setInternalProviderFlag4(int internalProviderFlag4) { + mInternalProviderFlag4 = internalProviderFlag4; + return this; + } + + public Builder setVersionNumber(int versionNumber) { + mVersionNumber = versionNumber; + return this; + } + + public RecordedProgram build() { + return new RecordedProgram(mId, mInputId, mChannelId, mTitle, mSeasonNumber, + mSeasonTitle, mEpisodeNumber, mEpisodeTitle, mStartTimeUtcMillis, + mEndTimeUtcMillis, mBroadcastGenres, mCanonicalGenres, mShortDescription, + mLongDescription, mVideoWidth, mVideoHeight, mAudioLanguage, mContentRating, + mPosterArt, mThumbnail, mSearchable, mDataUri, mDataBytes, mDurationMillis, + mExpireTimeUtcMillis, mInternalProviderData, mInternalProviderFlag1, + mInternalProviderFlag2, mInternalProviderFlag3, mInternalProviderFlag4, + mVersionNumber); + } + } + + public static Builder builder() { return new Builder(); } + + public static Builder buildFrom(RecordedProgram orig) { + return builder() + .setId(orig.getId()) + .setInputId(orig.getInputId()) + .setChannelId(orig.getChannelId()) + .setTitle(orig.getTitle()) + .setSeasonNumber(orig.getSeasonNumber()) + .setSeasonTitle(orig.getSeasonTitle()) + .setEpisodeNumber(orig.getEpisodeNumber()) + .setEpisodeTitle(orig.getEpisodeTitle()) + .setStartTimeUtcMillis(orig.getStartTimeUtcMillis()) + .setEndTimeUtcMillis(orig.getEndTimeUtcMillis()) + .setBroadcastGenres(orig.getBroadcastGenres()) + .setCanonicalGenres(orig.getCanonicalGenres()) + .setShortDescription(orig.getShortDescription()) + .setLongDescription(orig.getLongDescription()) + .setVideoWidth(orig.getVideoWidth()) + .setVideoHeight(orig.getVideoHeight()) + .setAudioLanguage(orig.getAudioLanguage()) + .setContentRating(orig.getContentRating()) + .setPosterArt(orig.getPosterArt()) + .setThumbnail(orig.getThumbnail()) + .setSearchable(orig.isSearchable()) + .setInternalProviderData(orig.getInternalProviderData()) + .setInternalProviderFlag1(orig.getInternalProviderFlag1()) + .setInternalProviderFlag2(orig.getInternalProviderFlag2()) + .setInternalProviderFlag3(orig.getInternalProviderFlag3()) + .setInternalProviderFlag4(orig.getInternalProviderFlag4()) + .setVersionNumber(orig.getVersionNumber()); + } + + public static final Comparator<RecordedProgram> START_TIME_THEN_ID_COMPARATOR + = new Comparator<RecordedProgram>() { + @Override + public int compare(RecordedProgram lhs, RecordedProgram rhs) { + int res = Long.compare(lhs.getStartTimeUtcMillis(), rhs.getStartTimeUtcMillis()); + if (res != 0) { + return res; + } + return Long.compare(lhs.mId, rhs.mId); + } + }; + + private final long mId; + private final String mInputId; + private final long mChannelId; + private final String mTitle; + private final String mSeasonNumber; + private final String mSeasonTitle; + private final String mEpisodeNumber; + private final String mEpisodeTitle; + private final long mStartTimeUtcMillis; + private final long mEndTimeUtcMillis; + private final String[] mBroadcastGenres; + private final String[] mCanonicalGenres; + private final String mShortDescription; + private final String mLongDescription; + private final int mVideoWidth; + private final int mVideoHeight; + private final String mAudioLanguage; + private final String mContentRating; + private final Uri mPosterArt; + private final Uri mThumbnail; + private final boolean mSearchable; + private final Uri mDataUri; + private final long mDataBytes; + private final long mDurationMillis; + private final long mExpireTimeUtcMillis; + private final byte[] mInternalProviderData; + private final int mInternalProviderFlag1; + private final int mInternalProviderFlag2; + private final int mInternalProviderFlag3; + private final int mInternalProviderFlag4; + private final int mVersionNumber; + + private RecordedProgram(long id, String inputId, long channelId, String title, + String seasonNumber, String seasonTitle, String episodeNumber, String episodeTitle, + long startTimeUtcMillis, long endTimeUtcMillis, String[] broadcastGenres, + String[] canonicalGenres, String shortDescription, String longDescription, + int videoWidth, int videoHeight, String audioLanguage, String contentRating, + Uri posterArt, Uri thumbnail, boolean searchable, Uri dataUri, long dataBytes, + long durationMillis, long expireTimeUtcMillis, byte[] internalProviderData, + int internalProviderFlag1, int internalProviderFlag2, int internalProviderFlag3, + int internalProviderFlag4, int versionNumber) { + mId = id; + mInputId = inputId; + mChannelId = channelId; + mTitle = title; + mSeasonNumber = seasonNumber; + mSeasonTitle = seasonTitle; + mEpisodeNumber = episodeNumber; + mEpisodeTitle = episodeTitle; + mStartTimeUtcMillis = startTimeUtcMillis; + mEndTimeUtcMillis = endTimeUtcMillis; + mBroadcastGenres = broadcastGenres; + mCanonicalGenres = canonicalGenres; + mShortDescription = shortDescription; + mLongDescription = longDescription; + mVideoWidth = videoWidth; + mVideoHeight = videoHeight; + + mAudioLanguage = audioLanguage; + mContentRating = contentRating; + mPosterArt = posterArt; + mThumbnail = thumbnail; + mSearchable = searchable; + mDataUri = dataUri; + mDataBytes = dataBytes; + mDurationMillis = durationMillis; + mExpireTimeUtcMillis = expireTimeUtcMillis; + mInternalProviderData = internalProviderData; + mInternalProviderFlag1 = internalProviderFlag1; + mInternalProviderFlag2 = internalProviderFlag2; + mInternalProviderFlag3 = internalProviderFlag3; + mInternalProviderFlag4 = internalProviderFlag4; + mVersionNumber = versionNumber; + } + + public String getAudioLanguage() { + return mAudioLanguage; + } + + public String[] getBroadcastGenres() { + return mBroadcastGenres; + } + + public String[] getCanonicalGenres() { + return mCanonicalGenres; + } + + public long getChannelId() { + return mChannelId; + } + + public String getContentRating() { + return mContentRating; + } + + public Uri getDataUri() { + return mDataUri; + } + + public long getDataBytes() { + return mDataBytes; + } + + public long getDurationMillis() { + return mDurationMillis; + } + + public long getEndTimeUtcMillis() { + return mEndTimeUtcMillis; + } + + public String getEpisodeNumber() { + return mEpisodeNumber; + } + + public String getEpisodeTitle() { + return mEpisodeTitle; + } + + public String getEpisodeDisplayTitle(Context context) { + if (!TextUtils.isEmpty(mSeasonNumber) && !TextUtils.isEmpty(mEpisodeNumber) + && !TextUtils.isEmpty(mEpisodeTitle)) { + return String.format(context.getResources().getString(R.string.episode_format), + mSeasonNumber, mEpisodeNumber, mEpisodeTitle); + } + return mEpisodeTitle; + } + + public long getExpireTimeUtcMillis() { + return mExpireTimeUtcMillis; + } + + public long getId() { + return mId; + } + + public String getInputId() { + return mInputId; + } + + public byte[] getInternalProviderData() { + return mInternalProviderData; + } + + public int getInternalProviderFlag1() { + return mInternalProviderFlag1; + } + + public int getInternalProviderFlag2() { + return mInternalProviderFlag2; + } + + public int getInternalProviderFlag3() { + return mInternalProviderFlag3; + } + + public int getInternalProviderFlag4() { + return mInternalProviderFlag4; + } + + public String getLongDescription() { + return mLongDescription; + } + + public Uri getPosterArt() { + return mPosterArt; + } + + public boolean isSearchable() { + return mSearchable; + } + + public String getSeasonNumber() { + return mSeasonNumber; + } + + public String getSeasonTitle() { + return mSeasonTitle; + } + + public String getShortDescription() { + return mShortDescription; + } + + public long getStartTimeUtcMillis() { + return mStartTimeUtcMillis; + } + + public Uri getThumbnail() { + return mThumbnail; + } + + public String getTitle() { + return mTitle; + } + + public Uri getUri() { + return ContentUris.withAppendedId(RecordedPrograms.CONTENT_URI, mId); + } + + public int getVersionNumber() { + return mVersionNumber; + } + + public int getVideoHeight() { + return mVideoHeight; + } + + public int getVideoWidth() { + return mVideoWidth; + } + + /** + * Compares everything except {@link #getInternalProviderData()} + */ + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + RecordedProgram that = (RecordedProgram) o; + return Objects.equals(mId, that.mId) && + Objects.equals(mChannelId, that.mChannelId) && + Objects.equals(mSeasonNumber, that.mSeasonNumber) && + Objects.equals(mSeasonTitle, that.mSeasonTitle) && + Objects.equals(mEpisodeNumber, that.mEpisodeNumber) && + Objects.equals(mStartTimeUtcMillis, that.mStartTimeUtcMillis) && + Objects.equals(mEndTimeUtcMillis, that.mEndTimeUtcMillis) && + Objects.equals(mVideoWidth, that.mVideoWidth) && + Objects.equals(mVideoHeight, that.mVideoHeight) && + Objects.equals(mSearchable, that.mSearchable) && + Objects.equals(mDataBytes, that.mDataBytes) && + Objects.equals(mDurationMillis, that.mDurationMillis) && + Objects.equals(mExpireTimeUtcMillis, that.mExpireTimeUtcMillis) && + Objects.equals(mInternalProviderFlag1, that.mInternalProviderFlag1) && + Objects.equals(mInternalProviderFlag2, that.mInternalProviderFlag2) && + Objects.equals(mInternalProviderFlag3, that.mInternalProviderFlag3) && + Objects.equals(mInternalProviderFlag4, that.mInternalProviderFlag4) && + Objects.equals(mVersionNumber, that.mVersionNumber) && + Objects.equals(mTitle, that.mTitle) && + Objects.equals(mEpisodeTitle, that.mEpisodeTitle) && + Arrays.equals(mBroadcastGenres, that.mBroadcastGenres) && + Arrays.equals(mCanonicalGenres, that.mCanonicalGenres) && + Objects.equals(mShortDescription, that.mShortDescription) && + Objects.equals(mLongDescription, that.mLongDescription) && + Objects.equals(mAudioLanguage, that.mAudioLanguage) && + Objects.equals(mContentRating, that.mContentRating) && + Objects.equals(mPosterArt, that.mPosterArt) && + Objects.equals(mThumbnail, that.mThumbnail); + } + + /** + * Hashes based on the ID. + */ + @Override + public int hashCode() { + return Objects.hash(mId); + } + + @Override + public String toString() { + return "RecordedProgram" + + "[" + mId + + "]{ mInputId=" + mInputId + + ", mChannelId='" + mChannelId + '\'' + + ", mTitle='" + mTitle + '\'' + + ", mEpisodeNumber=" + mEpisodeNumber + + ", mEpisodeTitle='" + mEpisodeTitle + '\'' + + ", mStartTimeUtcMillis=" + mStartTimeUtcMillis + + ", mEndTimeUtcMillis=" + mEndTimeUtcMillis + + ", mBroadcastGenres=" + + (mBroadcastGenres != null ? Arrays.toString(mBroadcastGenres) : "null") + + ", mCanonicalGenres=" + + (mCanonicalGenres != null ? Arrays.toString(mCanonicalGenres) : "null") + + ", mShortDescription='" + mShortDescription + '\'' + + ", mLongDescription='" + mLongDescription + '\'' + + ", mVideoHeight=" + mVideoHeight + + ", mVideoWidth=" + mVideoWidth + + ", mAudioLanguage='" + mAudioLanguage + '\'' + + ", mContentRating='" + mContentRating + '\'' + + ", mPosterArt=" + mPosterArt + + ", mThumbnail=" + mThumbnail + + ", mSearchable=" + mSearchable + + ", mDataUri=" + mDataUri + + ", mDataBytes=" + mDataBytes + + ", mDurationMillis=" + mDurationMillis + + ", mExpireTimeUtcMillis=" + mExpireTimeUtcMillis + + ", mInternalProviderData.length=" + + (mInternalProviderData == null ? "null" : mInternalProviderData.length) + + ", mInternalProviderFlag1=" + mInternalProviderFlag1 + + ", mInternalProviderFlag2=" + mInternalProviderFlag2 + + ", mInternalProviderFlag3=" + mInternalProviderFlag3 + + ", mInternalProviderFlag4=" + mInternalProviderFlag4 + + ", mSeasonNumber=" + mSeasonNumber + + ", mSeasonTitle=" + mSeasonTitle + + ", mVersionNumber=" + mVersionNumber + + '}'; + } + + @Nullable + private static String safeToString(@Nullable Object o) { + return o == null ? null : o.toString(); + } + + @Nullable + private static String safeEncode(@Nullable String[] genres) { + return genres == null ? null : TvContract.Programs.Genres.encode(genres); + } +} diff --git a/common/src/com/android/tv/common/recording/RecordingTvInputService.java b/common/src/com/android/tv/common/recording/RecordingTvInputService.java deleted file mode 100644 index 6eea6ae7..00000000 --- a/common/src/com/android/tv/common/recording/RecordingTvInputService.java +++ /dev/null @@ -1,378 +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.common.recording; - -import android.annotation.TargetApi; -import android.content.Context; -import android.media.PlaybackParams; -import android.media.tv.TvContentRating; -import android.media.tv.TvInputService; -import android.media.tv.TvTrackInfo; -import android.net.Uri; -import android.os.Build; -import android.os.Bundle; -import android.view.MotionEvent; -import android.view.Surface; - -import com.android.tv.common.feature.CommonFeatures; - -import java.util.List; - -/** - * {@link TvInputService} class that supports recording and playback. - */ -@TargetApi(Build.VERSION_CODES.M) // TODO(DVR): set to N -public abstract class RecordingTvInputService extends TvInputService { - private static final String TAG = "DvrTvInputService"; - private static final boolean DEBUG = true; - - @Override - public final Session onCreateSession(String inputId) { - if (CommonFeatures.DVR.isEnabled(this)) { - return new InternalSession(this, inputId); - } else { - return onCreatePlaybackSession(inputId); - } - } - - /** - * Called when {@link com.android.tv.common.recording.DvrSession#connect} is called. - */ - protected TvRecording.RecordingSession onCreateDvrSession(String inputId) { - return null; - } - - protected abstract PlaybackSession onCreatePlaybackSession(String inputId); - - private class InternalSession extends TvInputService.Session { - final String mInputId; - BaseSession mSessionImpl; - - public InternalSession(Context context, String inputId) { - super(context); - mInputId = inputId; - } - - @Override - public void onRelease() { - if (mSessionImpl != null) { - mSessionImpl.onRelease(); - } - } - - @Override - public boolean onSetSurface(Surface surface) { - return mSessionImpl.onSetSurface(surface); - } - - @Override - public void onSetStreamVolume(float volume) { - mSessionImpl.onSetStreamVolume(volume); - } - - @Override - public boolean onTune(Uri channelUri) { - return mSessionImpl.onTune(channelUri); - } - - @Override - public void onAppPrivateCommand(String action, Bundle data) { - if (action.equals(RecordingUtils.APP_PRIV_CREATE_DVR_SESSION)) { - if (mSessionImpl == null) { - mSessionImpl = onCreateDvrSession(mInputId); - if (mSessionImpl != null) { - mSessionImpl.setPassthroughSession(this); - notifySessionEvent(RecordingUtils.EVENT_TYPE_CONNECTED, null); - } - } - } else if (action.equals(RecordingUtils.APP_PRIV_CREATE_PLAYBACK_SESSION)) { - if (mSessionImpl == null) { - mSessionImpl = onCreatePlaybackSession(mInputId); - if (mSessionImpl != null) { - mSessionImpl.setPassthroughSession(this); - } - } - } else { - if (mSessionImpl == null) { - throw new IllegalStateException(); - } - mSessionImpl.onAppPrivateCommand(action, data); - } - } - - @Override - public android.view.View onCreateOverlayView() { - return mSessionImpl.onCreateOverlayView(); - } - - @Override - public boolean onGenericMotionEvent(android.view.MotionEvent event) { - return mSessionImpl.onGenericMotionEvent(event); - } - - @Override - public boolean onKeyDown(int keyCode, android.view.KeyEvent event) { - return mSessionImpl.onKeyDown(keyCode, event); - } - - @Override - public boolean onKeyLongPress(int keyCode, android.view.KeyEvent event) { - return mSessionImpl.onKeyLongPress(keyCode, event); - } - - @Override - public boolean onKeyMultiple(int keyCode, int count, android.view.KeyEvent event) { - return mSessionImpl.onKeyMultiple(keyCode, count, event); - } - - @Override - public boolean onKeyUp(int keyCode, android.view.KeyEvent event) { - return mSessionImpl.onKeyUp(keyCode, event); - } - - @Override - public void onOverlayViewSizeChanged(int width, int height) { - mSessionImpl.onOverlayViewSizeChanged(width, height); - } - - @Override - public boolean onSelectTrack(int type, String trackId) { - return mSessionImpl.onSelectTrack(type, trackId); - } - - @Override - public void onSetMain(boolean isMain) { - mSessionImpl.onSetMain(isMain); - } - - @Override - public void onSurfaceChanged(int format, int width, int height) { - mSessionImpl.onSurfaceChanged(format, width, height); - } - - @Override - public long onTimeShiftGetCurrentPosition() { - return mSessionImpl.onTimeShiftGetCurrentPosition(); - } - - @Override - public long onTimeShiftGetStartPosition() { - return mSessionImpl.onTimeShiftGetStartPosition(); - } - - @Override - public void onTimeShiftPause() { - mSessionImpl.onTimeShiftPause(); - } - - @Override - public void onTimeShiftResume() { - mSessionImpl.onTimeShiftResume(); - } - - @Override - public void onTimeShiftSeekTo(long timeMs) { - mSessionImpl.onTimeShiftSeekTo(timeMs); - } - - @Override - public void onTimeShiftSetPlaybackParams(PlaybackParams params) { - mSessionImpl.onTimeShiftSetPlaybackParams(params); - } - - @Override - public boolean onTouchEvent(MotionEvent event) { - return mSessionImpl.onTouchEvent(event); - } - - @Override - public boolean onTrackballEvent(MotionEvent event) { - return mSessionImpl.onTrackballEvent(event); - } - - @Override - public boolean onTune(Uri channelUri, Bundle params) { - return mSessionImpl.onTune(channelUri, params); - } - - @Override - public void onUnblockContent(TvContentRating unblockedRating) { - mSessionImpl.onUnblockContent(unblockedRating); - } - - @Override - public void onSetCaptionEnabled(boolean enabled) { - mSessionImpl.onSetCaptionEnabled(enabled); - } - } - - /** - * Base class for {@link PlaybackSession} and {@link TvRecording.RecordingSession}. Do not use it directly - * outside of this class. - */ - public static abstract class BaseSession extends TvInputService.Session { - private Session mPassthroughSession; - - public BaseSession(Context context) { - super(context); - } - - private void setPassthroughSession(Session passthroughSession) { - mPassthroughSession = passthroughSession; - } - - @Override - public void setOverlayViewEnabled(boolean enable) { - if (mPassthroughSession != null) { - mPassthroughSession.setOverlayViewEnabled(enable); - } else { - super.setOverlayViewEnabled(enable); - } - } - - @Override - public void notifyChannelRetuned(Uri channelUri) { - if (mPassthroughSession != null) { - mPassthroughSession.notifyChannelRetuned(channelUri); - } else { - super.notifyChannelRetuned(channelUri); - } - } - - @Override - public void notifyContentAllowed() { - if (mPassthroughSession != null) { - mPassthroughSession.notifyContentAllowed(); - } else { - super.notifyContentAllowed(); - } - } - - @Override - public void notifyContentBlocked(TvContentRating rating) { - if (mPassthroughSession != null) { - mPassthroughSession.notifyContentBlocked(rating); - } else { - super.notifyContentBlocked(rating); - } - } - - @Override - public void notifySessionEvent(String eventType, Bundle eventArgs) { - if (mPassthroughSession != null) { - mPassthroughSession.notifySessionEvent(eventType, eventArgs); - } else { - super.notifySessionEvent(eventType, eventArgs); - } - } - - @Override - public void notifyTimeShiftStatusChanged(int status) { - if (mPassthroughSession != null) { - mPassthroughSession.notifyTimeShiftStatusChanged(status); - } else { - super.notifyTimeShiftStatusChanged(status); - } - } - - @Override - public void notifyTracksChanged(List<TvTrackInfo> tracks) { - if (mPassthroughSession != null) { - mPassthroughSession.notifyTracksChanged(tracks); - } else { - super.notifyTracksChanged(tracks); - } - } - - @Override - public void notifyTrackSelected(int type, String trackId) { - if (mPassthroughSession != null) { - mPassthroughSession.notifyTrackSelected(type, trackId); - } else { - super.notifyTrackSelected(type, trackId); - } - } - - @Override - public void notifyVideoAvailable() { - if (mPassthroughSession != null) { - mPassthroughSession.notifyVideoAvailable(); - } else { - super.notifyVideoAvailable(); - } - } - - @Override - public void notifyVideoUnavailable(int reason) { - if (mPassthroughSession != null) { - mPassthroughSession.notifyVideoUnavailable(reason); - } else { - super.notifyVideoUnavailable(reason); - } - } - } - - /** - * Session linked to {@link android.media.tv.TvView} to tune to a channel or play an recording. - */ - public static abstract class PlaybackSession extends BaseSession { - private boolean mIsRecordingPlayback; - - public PlaybackSession(Context context) { - super(context); - } - - /** - * Returns {@code true}, if the current playback is for a recording. - */ - public boolean isRecordingPlayback() { - return mIsRecordingPlayback; - } - - /** - * Called when it is requested to play an recording {@code mediaUri}. When playback and - * rendering starts, {@link #notifyVideoAvailable} should be called. - */ - public void onPlayMedia(Uri mediaUri) { } - - /** - * Notifies TimeShift end position. It should have the form like onTimeShiftEndPosition. - * But, it's not trivial to add that in the prototyping. The method is recommended to be - * called inside {@link #onTimeShiftGetStartPosition()}, when a recording is played. - */ - public void notifyTimeShiftEndPosition(long endPosition) { - Bundle params = new Bundle(); - params.putLong(RecordingUtils.BUNDLE_TIMESHIFT_END_POSITION, endPosition); - notifySessionEvent(RecordingUtils.EVENT_TYPE_TIMESHIFT_END_POSITION, params); - } - - @Override - public final boolean onTune(Uri channelUri, Bundle params) { - if (params != null && params.getBoolean(RecordingUtils.BUNDLE_IS_DVR, false)) { - notifySessionEvent(RecordingUtils.EVENT_TYPE_CONNECTED, null); - return true; - } else if (params != null && params.containsKey(RecordingUtils.BUNDLE_MEDIA_URI)) { - mIsRecordingPlayback = true; - onPlayMedia(Uri.parse(params.getString(RecordingUtils.BUNDLE_MEDIA_URI))); - return true; - } else { - mIsRecordingPlayback = false; - return onTune(channelUri); - } - } - } -} diff --git a/common/src/com/android/tv/common/recording/RecordingUtils.java b/common/src/com/android/tv/common/recording/RecordingUtils.java deleted file mode 100644 index ae91659f..00000000 --- a/common/src/com/android/tv/common/recording/RecordingUtils.java +++ /dev/null @@ -1,50 +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.common.recording; - -import android.net.Uri; -import android.os.Bundle; - -public class RecordingUtils { - static final int ACTION_START_RECORD = 10055; - static final int ACTION_STOP_RECORD = 10056; - - static final String EVENT_TYPE_CONNECTED = "event_type_connected"; - static final String EVENT_TYPE_TIMESHIFT_END_POSITION = "event_type_timeshift_end_position"; - - static final String APP_PRIV_CREATE_PLAYBACK_SESSION = "app_priv_create_playback_session"; - static final String APP_PRIV_CREATE_DVR_SESSION = "app_priv_create_dvr_session"; - - // Type: boolean - static final String BUNDLE_IS_DVR = "bundle_is_dvr"; - // Type: String (Uri) - static final String BUNDLE_MEDIA_URI = "bundle_media_uri"; - // Type: String - static final String BUNDLE_CHANNEL_URI = "bundle_channel_uri"; - // Type: long - static final String BUNDLE_TIMESHIFT_END_POSITION = "timeshift_end_position"; - - /** - * Builds a {@link Bundle} with {@code mediaUri}. If the bundle is sent with tune command, - * the {@code mediaUri} will be played. - */ - public static Bundle buildMediaUri(Uri mediaUri) { - Bundle params = new Bundle(); - params.putString(RecordingUtils.BUNDLE_MEDIA_URI, mediaUri.toString()); - return params; - } -} diff --git a/common/src/com/android/tv/common/recording/TvRecording.java b/common/src/com/android/tv/common/recording/TvRecording.java deleted file mode 100644 index 28a611a0..00000000 --- a/common/src/com/android/tv/common/recording/TvRecording.java +++ /dev/null @@ -1,384 +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.common.recording; - -import android.content.Context; -import android.media.tv.TvContract; -import android.media.tv.TvView; -import android.net.Uri; -import android.os.Bundle; -import android.support.annotation.IntDef; -import android.util.Log; -import android.view.Surface; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -/** - * API for making TV Recordings. - * This class holds both the API under development and the session app private command magic needed - * to simulate the API. - */ -public final class TvRecording { - private static final String TAG = "TvRecording"; - private static final boolean DEBUG = true; // STOPSHIP(DVR) - - @Retention(RetentionPolicy.SOURCE) - @IntDef({RECORD_STOP_REASON_DISKFULL, RECORD_STOP_REASON_CONFLICT, - RECORD_STOP_REASON_CONNECT_FAILED, RECORD_STOP_REASON_DISCONNECTED, - RECORD_STOP_REASON_UNKNOWN}) - public @interface RecordStopReason { - } - - private static final int FIRST_REASON = 1; - public static final int RECORD_STOP_REASON_DISKFULL = 1; - public static final int RECORD_STOP_REASON_CONFLICT = 2; - public static final int RECORD_STOP_REASON_CONNECT_FAILED = 3; - public static final int RECORD_STOP_REASON_DISCONNECTED = 4; - public static final int RECORD_STOP_REASON_UNKNOWN = 5; - private static final int LAST_REASON = 5; - - public abstract static class ClientCallback { - public void onConnected() { } - - public void onDisconnected() { } - - public void onRecordStarted(Uri mediaUri) { } - - public void onRecordStopped(Uri mediaUri, @RecordStopReason int reason) { } - - public void onRecordDeleted(Uri mediaUri) { } - - public void onRecordDeleteFailed(Uri mediaUri, int reason) { } - - public void onCapabilityReceived(RecordingCapability capability) { } - } - - public interface RecordingClientApi { - void release(); - - void startRecord(Uri channelUri, Uri mediaUri); - - void stopRecord(); - - void delete(Uri mediaUri); - - void getCapability(); - } - - public interface RecordingSessionApi { - /** - * Start recording on {@code channelUri}. - * <p>{@link RecordingSession#notifyRecordStarted(Uri)} should be called as soon as the - * recording is started. - */ - void onStartRecord(Uri channelUri, Uri mediaUri); - - /** - * Called when it stops to record. - */ - void onStopRecord(); - - /** - * Called when it is requested to delete {@code mediaUri}. - */ - void onDelete(Uri mediaUri); - - /** - * Called when the client request {@link RecordingCapability}. - */ - RecordingCapability onGetCapability(); - } - - /////////// - // BELOW IS IMPLEMENTATION DETAILS OFTEN SPECIFIC TO USING APP PRIVATE COMMANDS - ////////// - - private static final String PREFIX = "record_"; - - private static final String APP_PRIV_DELETE = PREFIX + "app_priv_delete"; - private static final String APP_PRIV_GET_CAPABILITY = PREFIX + "app_priv_get_capability"; - private static final String APP_PRIV_START_RECORD = PREFIX + "app_priv_start_record"; - private static final String APP_PRIV_STOP_RECORD = PREFIX + "app_priv_stop_record"; - - private static final String EVENT_TYPE_DELETED = PREFIX + "event_type_deleted"; - private static final String EVENT_TYPE_DELETE_FAILED = PREFIX + "event_type_delete_failed"; - private static final String EVENT_TYPE_CAPABILITY_RECEIVED = PREFIX - + "event_type_capability_received"; - private static final String EVENT_TYPE_RECORD_STARTED = PREFIX + "event_type_record_started"; - private static final String EVENT_TYPE_RECORD_STOPPED = PREFIX + "event_type_record_stopped"; - - // Type: int - private static final String BUNDLE_STOPPED_REASON = PREFIX + "stopped_reason"; - // Type: int - private static final String BUNDLE_DELETE_FAILED_REASON = PREFIX + "delete_failed_reason"; - // Type: RecordingCapability - private static final String BUNDLE_CAPABILITY = PREFIX + "capability"; - - - /** - * Session linked to {@link TvRecordingClient} to record contents. - */ - public static abstract class RecordingSession extends RecordingTvInputService.BaseSession - implements RecordingSessionApi { - private final static String TAG = "RecordingSession"; - - public RecordingSession(Context context) { - super(context); - } - - @Override - public final boolean onTune(Uri channelUri) { - // no-op - return false; - } - - @Override - public final boolean onSetSurface(Surface surface) { - // no-op - return false; - } - - @Override - public final void onSetStreamVolume(float volume) { - // no-op - } - - @Override - public final void onSetCaptionEnabled(boolean enabled) { - // no-op - } - - /** - * Notifies when recording starts. It is an response of {@link #onStartRecord}. - */ - public final void notifyRecordStarted(Uri mediaUri) { - notifySessionEvent(EVENT_TYPE_RECORD_STARTED, RecordingUtils.buildMediaUri(mediaUri)); - } - - /** - * Notifies when recording is unexpectedly stopped. - */ - public final void notifyRecordUnexpectedlyStopped(Uri mediaUri, int reason) { - Bundle params = RecordingUtils.buildMediaUri(mediaUri); - params.putInt(BUNDLE_STOPPED_REASON, reason); - notifySessionEvent(EVENT_TYPE_RECORD_STOPPED, params); - } - - /** - * Notifies when the recording {@code mediaUri} is deleted. - */ - public final void notifyDeleted(Uri mediaUri) { - notifySessionEvent(EVENT_TYPE_DELETED, RecordingUtils.buildMediaUri(mediaUri)); - } - - /** - * Notifies when the deletion of the recording {@code mediaUri} is requested through - * {@link #onDelete} but failed. - */ - public final void notifyDeleteFailed(Uri mediaUri, int reason) { - Bundle params = RecordingUtils.buildMediaUri(mediaUri); - params.putInt(BUNDLE_DELETE_FAILED_REASON, reason); - notifySessionEvent(EVENT_TYPE_DELETE_FAILED, params); - } - - @Override - public final void onAppPrivateCommand(String action, Bundle data) { - if (DEBUG) Log.d(TAG, "onAppPrivateCommand(" + action + ", " + data + ")"); - switch (action) { - case APP_PRIV_GET_CAPABILITY: - RecordingCapability capability = onGetCapability(); - Bundle params = new Bundle(); - params.putParcelable(BUNDLE_CAPABILITY, capability); - notifySessionEvent(EVENT_TYPE_CAPABILITY_RECEIVED, params); - break; - case APP_PRIV_DELETE: - onDelete(Uri.parse(data.getString(RecordingUtils.BUNDLE_CHANNEL_URI))); - break; - case APP_PRIV_START_RECORD: - onStartRecord(Uri.parse(data.getString(RecordingUtils.BUNDLE_CHANNEL_URI)), - Uri.parse(data.getString(RecordingUtils.BUNDLE_MEDIA_URI))); - break; - case APP_PRIV_STOP_RECORD: - onStopRecord(); - break; - } - } - } - - /** - * A session used for recording. - */ - public static class TvRecordingClient implements RecordingClientApi { - private static final String TAG = "DvrSessionClient"; - - private ClientCallback mCallback; - private TvView mTvView; - - public TvRecordingClient(Context context) { - if (DEBUG) { - Log.d(TAG, "creating client"); - } - mTvView = new TvView(context); - } - - /** - * Connects the session to a specific input {@code inputId}. - */ - public void connect(String inputId, ClientCallback callback) { - if (DEBUG) { - Log.d(TAG, "connect " + inputId + " with " + callback); - } - mCallback = callback; - Bundle bundle = new Bundle(); - bundle.putBoolean(RecordingUtils.BUNDLE_IS_DVR, true); - mTvView.tune(inputId, TvContract.buildChannelUri(0), bundle); - mTvView.sendAppPrivateCommand(RecordingUtils.APP_PRIV_CREATE_DVR_SESSION, null); - mTvView.setCallback(new TvView.TvInputCallback() { - @Override - public void onConnectionFailed(String inputId) { - if (mCallback == null) { - return; - } - mCallback.onDisconnected(); - } - - @Override - public void onDisconnected(String inputId) { - if (mCallback == null) { - return; - } - mCallback.onDisconnected(); - } - - @Override - public void onEvent(String inputId, String eventType, Bundle eventArgs) { - if (mCallback == null) { - return; - } - String mediaUriString = eventArgs == null ? null - : eventArgs.getString(RecordingUtils.BUNDLE_MEDIA_URI, null); - Uri mediaUri = mediaUriString == null ? null : Uri.parse(mediaUriString); - switch (eventType) { - case RecordingUtils.EVENT_TYPE_CONNECTED: - mCallback.onConnected(); - break; - case EVENT_TYPE_DELETED: - mCallback.onRecordDeleted(mediaUri); - break; - case EVENT_TYPE_DELETE_FAILED: { - // TODO(DVR) use reasons from API - int reason = eventArgs == null ? 0 - : eventArgs.getInt(BUNDLE_DELETE_FAILED_REASON); - mCallback.onRecordDeleteFailed(mediaUri, reason); - break; - } - case EVENT_TYPE_CAPABILITY_RECEIVED: { - RecordingCapability capability = eventArgs - .getParcelable(BUNDLE_CAPABILITY); - mCallback.onCapabilityReceived(capability); - break; - } - case EVENT_TYPE_RECORD_STARTED: - mCallback.onRecordStarted(mediaUri); - break; - case EVENT_TYPE_RECORD_STOPPED: { - int reason = getRecordStopReason(eventArgs); - mCallback.onRecordStopped(mediaUri, reason); - break; - } - } - } - - // TODO: handle track select. - }); - } - - /** - * Releases the session. - */ - @Override - public void release() { - if (DEBUG) { - Log.d(TAG, "release " + this); - } - mTvView.reset(); - mCallback = null; - } - - /** - * Starts recording. - */ - @Override - public void startRecord(Uri channelUri, Uri mediaUri) { - if (DEBUG) { - Log.d(TAG, "startRecord " + channelUri + ", " + mediaUri); - } - Bundle params = RecordingUtils.buildMediaUri(mediaUri); - params.putString(RecordingUtils.BUNDLE_CHANNEL_URI, channelUri.toString()); - mTvView.sendAppPrivateCommand(APP_PRIV_START_RECORD, params); - } - - /** - * Stops recording. - */ - @Override - public void stopRecord() { - if (DEBUG) { - Log.d(TAG, "stopRecord " + this); - } - mTvView.sendAppPrivateCommand(APP_PRIV_STOP_RECORD, null); - } - - /** - * Deletes a recorded media. - */ - @Override - public void delete(Uri mediaUri) { - mTvView.sendAppPrivateCommand(APP_PRIV_DELETE, - RecordingUtils.buildMediaUri(mediaUri)); - } - - @Override - public void getCapability() { - mTvView.sendAppPrivateCommand(APP_PRIV_GET_CAPABILITY, null); - } - - @Override - public String toString() { - return TvRecordingClient.class.getName() + "{" + "callBack=" + mCallback + "}"; - } - } - - @SuppressWarnings("ResourceType") - @RecordStopReason - private static int getRecordStopReason(Bundle eventArgs) { - if(eventArgs == null) { - if (DEBUG) Log.d(TAG, "Null stop reason"); - return RECORD_STOP_REASON_UNKNOWN; - } - int reason = eventArgs.getInt(BUNDLE_STOPPED_REASON); - if (reason < FIRST_REASON || reason > LAST_REASON) { - if (DEBUG) Log.d(TAG, "Unknown stop reason " + reason); - reason = RECORD_STOP_REASON_UNKNOWN; - } - return reason; - } - - private TvRecording() { - } -} diff --git a/common/src/com/android/tv/common/ui/setup/animation/FadeAndShortSlide.java b/common/src/com/android/tv/common/ui/setup/animation/FadeAndShortSlide.java index 28ab97de..5c57d84d 100644 --- a/common/src/com/android/tv/common/ui/setup/animation/FadeAndShortSlide.java +++ b/common/src/com/android/tv/common/ui/setup/animation/FadeAndShortSlide.java @@ -223,6 +223,9 @@ public class FadeAndShortSlide extends Visibility { float startX = mSlideCalculator.getGoneX(sceneRoot, view, position, mDistance); final Animator slideAnimator = TranslationAnimationCreator.createAnimation(view, endValues, left, startX, endX, APPEAR_INTERPOLATOR, this); + if (slideAnimator == null) { + return null; + } mFade.setInterpolator(APPEAR_INTERPOLATOR); final AnimatorSet set = new AnimatorSet(); set.play(slideAnimator).with(mFade.onAppear(sceneRoot, view, startValues, endValues)); @@ -245,9 +248,15 @@ public class FadeAndShortSlide extends Visibility { float endX = mSlideCalculator.getGoneX(sceneRoot, view, position, mDistance); final Animator slideAnimator = TranslationAnimationCreator.createAnimation(view, startValues, left, startX, endX, DISAPPEAR_INTERPOLATOR, this); + if (slideAnimator == null) { // slideAnimator is null if startX == endX + return null; + } + mFade.setInterpolator(DISAPPEAR_INTERPOLATOR); - final AnimatorSet set = new AnimatorSet(); final Animator fadeAnimator = mFade.onDisappear(sceneRoot, view, startValues, endValues); + if (fadeAnimator == null) { + return null; + } fadeAnimator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animator) { @@ -255,6 +264,8 @@ public class FadeAndShortSlide extends Visibility { view.setAlpha(0.0f); } }); + + final AnimatorSet set = new AnimatorSet(); set.play(slideAnimator).with(fadeAnimator); Long delay = (Long) startValues.values.get(PROPNAME_DELAY); if (delay != null) { diff --git a/common/src/com/android/tv/common/ui/setup/leanback/OnboardingFragment.java b/common/src/com/android/tv/common/ui/setup/leanback/OnboardingFragment.java deleted file mode 100644 index adbd98c2..00000000 --- a/common/src/com/android/tv/common/ui/setup/leanback/OnboardingFragment.java +++ /dev/null @@ -1,531 +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.common.ui.setup.leanback; - -import android.animation.Animator; -import android.animation.AnimatorInflater; -import android.animation.AnimatorListenerAdapter; -import android.animation.AnimatorSet; -import android.animation.ObjectAnimator; -import android.animation.TimeInterpolator; -import android.app.Fragment; -import android.os.Bundle; -import android.support.annotation.Nullable; -import android.view.Gravity; -import android.view.KeyEvent; -import android.view.LayoutInflater; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.View.OnKeyListener; -import android.view.ViewGroup; -import android.view.ViewTreeObserver.OnPreDrawListener; -import android.view.animation.AccelerateInterpolator; -import android.view.animation.DecelerateInterpolator; -import android.widget.ImageView; -import android.widget.TextView; - -import com.android.tv.common.R; - -import java.util.ArrayList; -import java.util.List; - -/** - * An OnboardingFragment provides a common and simple way to build onboarding screen for - * applications. - * <p> - * <h3>Building the screen</h3> - * The view structure of onboarding screen is composed of the common parts and custom parts. The - * common parts are composed of title, description and page navigator and the custom parts are - * composed of background, contents and foreground. - * <p> - * To build the screen views, the inherited class should override: - * <ul> - * <li>{@link #onCreateBackgroundView} to provide the background view. Background view has the same - * size as the screen and the lowest z-order.</li> - * <li>{@link #onCreateContentView} to provide the contents view. The content view is located in - * the content area at the center of the screen.</li> - * <li>{@link #onCreateForegroundView} to provide the foreground view. Foreground view has the same - * size as the screen and the highest z-order</li> - * </ul> - * <p> - * Each of these methods can return {@code null} if the application doesn't want to provide it. - * <p> - * <h3>Page information</h3> - * The onboarding screen may have several pages which explain the functionality of the application. - * The inherited class should provide the page information by overriding the methods: - * <p> - * <ul> - * <li>{@link #getPageCount} to provide the number of pages.</li> - * <li>{@link #getPageTitle} to provide the title of the page.</li> - * <li>{@link #getPageDescription} to provide the description of the page.</li> - * </ul> - * <p> - * <h3><a name="logoAnimation">Logo Splash Animation</a></h3> - * When onboarding screen appears, the logo splash animation is played by default. The animation - * fades in the logo image, pauses in a few seconds and fades it out. To support this animation with - * its own logo image, the inherited class should override the following method. - * <p> - * <ul> - * <li>{@link #getLogoResourceId()}</li> - * </ul> - * <p> - * <h3>Animation</h3> - * This page has three kinds of animations: - * <p> - * <ul> - * <li><b>Logo splash animation</b> which starts as soon as onboarding screen is shown as described - * in <a href="#logoAnimation">Logo Splash Animation</a>.</li> - * <li><b>Page enter animation</b> which runs just after the logo animation finishes. The - * application can run the animations of their custom views by overriding - * {@link #onStartEnterAnimation}.</li> - * <li><b>Page change animation</b> which runs when the page changes. The pages can move backward or - * forward direction and the application can start the page change animations by overriding - * {@link #onStartPageChangeAnimation}.</li> - * </ul> - * <p> - * <h3>Finishing the screen</h3> - * <p> - * If the user finishes the onboarding screen after navigating all the pages, - * {@link #onFinishFragment} is called. The inherited class can override this method to show another - * fragment or activity, or just remove this fragment. - * - * @hide - */ -abstract public class OnboardingFragment extends Fragment { - private static final long LOGO_SPLASH_PAUSE_DURATION_MS = 1333; - private static final long START_DELAY_TITLE_MS = 33; - private static final long START_DELAY_DESCRIPTION_MS = 33; - - private static final long HEADER_ANIMATION_DURATION_MS = 417; - private static final long DESCRIPTION_START_DELAY_MS = 33; - private static final long HEADER_APPEAR_DELAY_MS = 500; - private static final int SLIDE_DISTANCE = 60; - - private static int sSlideDistance; - - private static final TimeInterpolator HEADER_APPEAR_INTERPOLATOR = new DecelerateInterpolator(); - private static final TimeInterpolator HEADER_DISAPPEAR_INTERPOLATOR - = new AccelerateInterpolator(); - - private PagingIndicator mPageIndicator; - private View mStartButton; - private ImageView mLogoView; - private TextView mTitleView; - private TextView mDescriptionView; - - private boolean mEnterTransitionFinished; - private int mCurrentPageIndex; - - private AnimatorSet mAnimator; - - /** - * Called to have the inherited class create its own start animation. The start animation runs - * after logo splash animation ends. - */ - abstract protected void onStartEnterAnimation(); - - private final OnClickListener mOnClickListener = new OnClickListener() { - @Override - public void onClick(View view) { - if (!mEnterTransitionFinished) { - // Do not change page until the enter transition finishes. - return; - } - if (mCurrentPageIndex == getPageCount() - 1) { - onFinishFragment(); - } else { - ++mCurrentPageIndex; - onPageChanged(mCurrentPageIndex - 1); - } - } - }; - - private final OnKeyListener mOnKeyListener = new OnKeyListener() { - @Override - public boolean onKey(View v, int keyCode, KeyEvent event) { - if (!mEnterTransitionFinished) { - // Ignore key event until the enter transition finishes. - return keyCode != KeyEvent.KEYCODE_BACK; - } - if (event.getAction() == KeyEvent.ACTION_DOWN) { - return false; - } - switch (keyCode) { - case KeyEvent.KEYCODE_BACK: - if (mCurrentPageIndex == 0) { - return false; - } - // pass through - case KeyEvent.KEYCODE_DPAD_LEFT: - if (mCurrentPageIndex > 0) { - --mCurrentPageIndex; - onPageChanged(mCurrentPageIndex + 1); - } - return true; - case KeyEvent.KEYCODE_DPAD_RIGHT: - if (mCurrentPageIndex < getPageCount() - 1) { - ++mCurrentPageIndex; - onPageChanged(mCurrentPageIndex - 1); - } - return true; - } - return false; - } - }; - - @Nullable - @Override - public View onCreateView(LayoutInflater inflater, final ViewGroup container, - Bundle savedInstanceState) { - ViewGroup view = (ViewGroup) inflater.inflate(R.layout.lb_onboarding_fragment, container, - false); - mPageIndicator = (PagingIndicator) view.findViewById(R.id.page_indicator); - mPageIndicator.setPageCount(getPageCount()); - mPageIndicator.setOnClickListener(mOnClickListener); - mPageIndicator.setOnKeyListener(mOnKeyListener); - mStartButton = view.findViewById(R.id.button_start); - mStartButton.setOnClickListener(mOnClickListener); - mStartButton.setOnKeyListener(mOnKeyListener); - mLogoView = (ImageView) view.findViewById(R.id.logo); - mLogoView.setImageResource(getLogoResourceId()); - mTitleView = (TextView) view.findViewById(R.id.title); - mTitleView.setText(getPageTitle(0)); - mDescriptionView = (TextView) view.findViewById(R.id.description); - mDescriptionView.setText(getPageDescription(0)); - if (sSlideDistance == 0) { - sSlideDistance = (int) (SLIDE_DISTANCE * getActivity().getResources() - .getDisplayMetrics().scaledDensity); - } - mCurrentPageIndex = 0; - mPageIndicator.onPageSelected(0, false); - view.requestFocus(); - if (getLogoResourceId() != 0) { - container.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() { - @Override - public boolean onPreDraw() { - container.getViewTreeObserver().removeOnPreDrawListener(this); - startLogoAnimation(); - return true; - } - }); - } else { - onLogoAnimationFinished(); - } - return view; - } - - private void startLogoAnimation() { - mLogoView.setVisibility(View.VISIBLE); - Animator inAnimator = AnimatorInflater.loadAnimator(getActivity(), - R.animator.lb_onboarding_logo_enter); - Animator outAnimator = AnimatorInflater.loadAnimator(getActivity(), - R.animator.lb_onboarding_logo_exit); - outAnimator.setStartDelay(LOGO_SPLASH_PAUSE_DURATION_MS); - AnimatorSet animator = new AnimatorSet(); - animator.playSequentially(inAnimator, outAnimator); - animator.setTarget(mLogoView); - animator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - mEnterTransitionFinished = true; - if (getActivity() != null) { - onLogoAnimationFinished(); - onStartEnterAnimation(); - } - } - }); - animator.start(); - } - - private void onLogoAnimationFinished() { - mLogoView.setVisibility(View.GONE); - // Create custom views. - LayoutInflater inflater = LayoutInflater.from(getActivity()); - ViewGroup backgroundContainer = (ViewGroup) getView().findViewById( - R.id.background_container); - View background = onCreateBackgroundView(inflater, backgroundContainer); - if (background != null) { - backgroundContainer.setVisibility(View.VISIBLE); - backgroundContainer.addView(background); - } - ViewGroup contentContainer = (ViewGroup) getView().findViewById(R.id.content_container); - View content = onCreateContentView(inflater, contentContainer); - if (content != null) { - contentContainer.setVisibility(View.VISIBLE); - contentContainer.addView(content); - } - ViewGroup foregroundContainer = (ViewGroup) getView().findViewById( - R.id.foreground_container); - View foreground = onCreateForegroundView(inflater, foregroundContainer); - if (foreground != null) { - foregroundContainer.setVisibility(View.VISIBLE); - foregroundContainer.addView(foreground); - } - // Make views visible which were invisible while logo animation is running. - getView().findViewById(R.id.page_container).setVisibility(View.VISIBLE); - getView().findViewById(R.id.content_container).setVisibility(View.VISIBLE); - - List<Animator> animators = new ArrayList<>(); - Animator animator = AnimatorInflater.loadAnimator(getActivity(), - R.animator.lb_onboarding_page_indicator_enter); - if (getPageCount() <= 1) { - // Start button - mStartButton.setVisibility(View.VISIBLE); - animator.setTarget(mStartButton); - } else { - // Page indicator - mPageIndicator.setVisibility(View.VISIBLE); - animator.setTarget(mPageIndicator); - } - animators.add(animator); - // Header title - View view = getActivity().findViewById(R.id.title); - view.setAlpha(0); - animator = AnimatorInflater.loadAnimator(getActivity(), - R.animator.lb_onboarding_title_enter); - animator.setStartDelay(START_DELAY_TITLE_MS); - animator.setTarget(view); - animators.add(animator); - // Header description - view = getActivity().findViewById(R.id.description); - view.setAlpha(0); - animator = AnimatorInflater.loadAnimator(getActivity(), - R.animator.lb_onboarding_description_enter); - animator.setStartDelay(START_DELAY_DESCRIPTION_MS); - animator.setTarget(view); - animators.add(animator); - mAnimator = new AnimatorSet(); - mAnimator.playTogether(animators); - mAnimator.start(); - onStartEnterAnimation(); - // Search focus and give the focus to the appropriate child which has become visible. - getView().requestFocus(); - } - - /** - * Returns the page count. - * - * @return The page count. - */ - abstract protected int getPageCount(); - - /** - * Returns the title of the given page. - * - * @param pageIndex The page index. - * - * @return The title of the page. - */ - abstract protected String getPageTitle(int pageIndex); - - /** - * Returns the description of the given page. - * - * @param pageIndex The page index. - * - * @return The description of the page. - */ - abstract protected String getPageDescription(int pageIndex); - - /** - * Returns the index of the current page. - * - * @return The index of the current page. - */ - protected final int getCurrentPageIndex() { - return mCurrentPageIndex; - } - - /** - * Returns the resource ID of the splash logo image. - * - * @return The resource ID of the splash logo image. - */ - abstract protected int getLogoResourceId(); - - /** - * Called to have the inherited class create background view. This is optional and the fragment - * which doesn't have the background view can return {@code null}. This is called inside - * {@link #onCreateView}. - * - * @param inflater The LayoutInflater object that can be used to inflate the views, - * @param container The parent view that the additional views are attached to.The fragment - * should not add the view by itself. - * - * @return The background view for the onboarding screen, or {@code null}. - */ - @Nullable - abstract protected View onCreateBackgroundView(LayoutInflater inflater, ViewGroup container); - - /** - * Called to have the inherited class create content view. This is optional and the fragment - * which doesn't have the content view can return {@code null}. This is called inside - * {@link #onCreateView}. - * - * <p>The content view would be located at the center of the screen. - * - * @param inflater The LayoutInflater object that can be used to inflate the views, - * @param container The parent view that the additional views are attached to.The fragment - * should not add the view by itself. - * - * @return The content view for the onboarding screen, or {@code null}. - */ - @Nullable - abstract protected View onCreateContentView(LayoutInflater inflater, ViewGroup container); - - /** - * Called to have the inherited class create foreground view. This is optional and the fragment - * which doesn't need the foreground view can return {@code null}. This is called inside - * {@link #onCreateView}. - * - * <p>This foreground view would have the highest z-order. - * - * @param inflater The LayoutInflater object that can be used to inflate the views, - * @param container The parent view that the additional views are attached to.The fragment - * should not add the view by itself. - * - * @return The foreground view for the onboarding screen, or {@code null}. - */ - @Nullable - abstract protected View onCreateForegroundView(LayoutInflater inflater, ViewGroup container); - - /** - * Called when the onboarding flow finishes. - */ - protected void onFinishFragment() { } - - /** - * Called when the page changes. - */ - private void onPageChanged(int previousPage) { - if (mAnimator != null) { - mAnimator.end(); - } - mPageIndicator.onPageSelected(mCurrentPageIndex, true); - - List<Animator> animators = new ArrayList<>(); - // Header animation - Animator fadeAnimator = null; - if (previousPage < getCurrentPageIndex()) { - // sliding to left - animators.add(createAnimator(mTitleView, false, Gravity.START, 0)); - animators.add(fadeAnimator = createAnimator(mDescriptionView, false, Gravity.START, - DESCRIPTION_START_DELAY_MS)); - animators.add(createAnimator(mTitleView, true, Gravity.END, - HEADER_APPEAR_DELAY_MS)); - animators.add(createAnimator(mDescriptionView, true, Gravity.END, - HEADER_APPEAR_DELAY_MS + DESCRIPTION_START_DELAY_MS)); - } else { - // sliding to right - animators.add(createAnimator(mTitleView, false, Gravity.END, 0)); - animators.add(fadeAnimator = createAnimator(mDescriptionView, false, Gravity.END, - DESCRIPTION_START_DELAY_MS)); - animators.add(createAnimator(mTitleView, true, Gravity.START, - HEADER_APPEAR_DELAY_MS)); - animators.add(createAnimator(mDescriptionView, true, Gravity.START, - HEADER_APPEAR_DELAY_MS + DESCRIPTION_START_DELAY_MS)); - } - final int currentPageIndex = getCurrentPageIndex(); - fadeAnimator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - mTitleView.setText(getPageTitle(currentPageIndex)); - mDescriptionView.setText(getPageDescription(currentPageIndex)); - } - }); - - // Animator for switching between page indicator and button. - if (getCurrentPageIndex() == getPageCount() - 1) { - mStartButton.setVisibility(View.VISIBLE); - Animator navigatorFadeOutAnimator = AnimatorInflater.loadAnimator(getActivity(), - R.animator.lb_onboarding_page_indicator_fade_out); - navigatorFadeOutAnimator.setTarget(mPageIndicator); - Animator buttonFadeInAnimator = AnimatorInflater.loadAnimator(getActivity(), - R.animator.lb_onboarding_start_button_fade_in); - buttonFadeInAnimator.setTarget(mStartButton); - animators.add(navigatorFadeOutAnimator); - navigatorFadeOutAnimator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - mPageIndicator.setVisibility(View.GONE); - } - }); - animators.add(buttonFadeInAnimator); - } else if (previousPage == getPageCount() - 1) { - mPageIndicator.setVisibility(View.VISIBLE); - Animator navigatorFadeInAnimator = AnimatorInflater.loadAnimator(getActivity(), - R.animator.lb_onboarding_page_indicator_fade_in); - navigatorFadeInAnimator.setTarget(mPageIndicator); - Animator buttonFadeOutAnimator = AnimatorInflater.loadAnimator(getActivity(), - R.animator.lb_onboarding_start_button_fade_out); - buttonFadeOutAnimator.setTarget(mStartButton); - buttonFadeOutAnimator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - mStartButton.setVisibility(View.GONE); - } - }); - mAnimator = new AnimatorSet(); - mAnimator.playTogether(navigatorFadeInAnimator, buttonFadeOutAnimator); - mAnimator.start(); - } - mAnimator = new AnimatorSet(); - mAnimator.playTogether(animators); - mAnimator.start(); - onStartPageChangeAnimation(previousPage); - } - - private Animator createAnimator(View view, boolean fadeIn, int slideDirection, - long startDelay) { - boolean isLtr = getView().getLayoutDirection() == View.LAYOUT_DIRECTION_LTR; - boolean slideRight = (isLtr && slideDirection == Gravity.END) - || (!isLtr && slideDirection == Gravity.START) - || slideDirection == Gravity.RIGHT; - Animator fadeAnimator; - Animator slideAnimator; - if (fadeIn) { - fadeAnimator = ObjectAnimator.ofFloat(view, View.ALPHA, 0.0f, 1.0f); - slideAnimator = ObjectAnimator.ofFloat(view, View.TRANSLATION_X, - slideRight ? sSlideDistance : -sSlideDistance, 0); - fadeAnimator.setInterpolator(HEADER_APPEAR_INTERPOLATOR); - slideAnimator.setInterpolator(HEADER_APPEAR_INTERPOLATOR); - } else { - fadeAnimator = ObjectAnimator.ofFloat(view, View.ALPHA, 1.0f, 0.0f); - slideAnimator = ObjectAnimator.ofFloat(view, View.TRANSLATION_X, 0, - slideRight ? sSlideDistance : -sSlideDistance); - fadeAnimator.setInterpolator(HEADER_DISAPPEAR_INTERPOLATOR); - slideAnimator.setInterpolator(HEADER_DISAPPEAR_INTERPOLATOR); - } - fadeAnimator.setDuration(HEADER_ANIMATION_DURATION_MS); - fadeAnimator.setTarget(view); - slideAnimator.setDuration(HEADER_ANIMATION_DURATION_MS); - slideAnimator.setTarget(view); - AnimatorSet animator = new AnimatorSet(); - animator.playTogether(fadeAnimator, slideAnimator); - if (startDelay > 0) { - animator.setStartDelay(startDelay); - } - return animator; - } - - /** - * Called to have the inherited class run its own page change animation - * - * @param previousPage The previous page. - */ - abstract protected void onStartPageChangeAnimation(int previousPage); -} diff --git a/common/src/com/android/tv/common/ui/setup/leanback/PagingIndicator.java b/common/src/com/android/tv/common/ui/setup/leanback/PagingIndicator.java deleted file mode 100644 index e2c9be72..00000000 --- a/common/src/com/android/tv/common/ui/setup/leanback/PagingIndicator.java +++ /dev/null @@ -1,377 +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.common.ui.setup.leanback; - -import android.animation.Animator; -import android.animation.AnimatorInflater; -import android.animation.AnimatorSet; -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.graphics.Rect; -import android.os.Build; -import android.support.annotation.ColorInt; -import android.support.annotation.VisibleForTesting; -import android.util.AttributeSet; -import android.view.View; - -import com.android.tv.common.R; -import com.android.tv.common.annotation.UsedByReflection; - -import java.util.ArrayList; -import java.util.List; - -/** - * A page indicator with dots. - * @hide - */ -public class PagingIndicator extends View { - // attribute - private final int mDotDiameter; - private final int mDotRadius; - private final int mDotGap; - private final int mArrowDiameter; - private final int mArrowRadius; - private final int mArrowGap; - private final int mShadowRadius; - private Dot[] mDots; - // X position when the dot is selected. - private int[] mDotSelectedX; - // X position when the dot is located to the left of the selected dot. - private int[] mDotSelectedLeftX; - // X position when the dot is located to the right of the selected dot. - private int[] mDotSelectedRightX; - private int mDotCenterY; - - // state - private int mPageCount; - private int mCurrentPage; - private int mPreviousPage; - - // drawing - @ColorInt - private final int mDotFgSelectColor; - private final Paint mBgPaint; - private final Paint mFgPaint; - private final Animator mShowAnimator; - private final Animator mHideAnimator; - private final AnimatorSet mAnimator = new AnimatorSet(); - private final Bitmap mArrow; - private final Rect mArrowRect; - private final float mArrowToBgRatio; - - public PagingIndicator(Context context) { - this(context, null, 0); - } - - public PagingIndicator(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public PagingIndicator(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - Resources res = getResources(); - mDotRadius = res.getDimensionPixelSize(R.dimen.lb_page_indicator_dot_radius); - mDotDiameter = mDotRadius * 2; - mDotGap = res.getDimensionPixelSize(R.dimen.lb_page_indicator_dot_gap); - mArrowGap = res.getDimensionPixelSize(R.dimen.lb_page_indicator_arrow_gap); - mArrowDiameter = res.getDimensionPixelSize(R.dimen.lb_page_indicator_arrow_diameter); - mArrowRadius = mArrowDiameter / 2; - mBgPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - mDotFgSelectColor = res.getColor(R.color.lb_page_indicator_arrow_background); - int bgColor = res.getColor(R.color.lb_page_indicator_dot); - int shadowColor = res.getColor(R.color.lb_page_indicator_arrow_shadow); - mBgPaint.setColor(bgColor); - mShadowRadius = res.getDimensionPixelSize(R.dimen.lb_page_indicator_arrow_shadow_radius); - mFgPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - int shadowOffset = res.getDimensionPixelSize(R.dimen.lb_page_indicator_arrow_shadow_offset); - mFgPaint.setShadowLayer(mShadowRadius, shadowOffset, shadowOffset, shadowColor); - mArrow = BitmapFactory.decodeResource(res, R.drawable.lb_ic_nav_arrow); - mArrowRect = new Rect(0, 0, mArrow.getWidth(), mArrow.getHeight()); - mArrowToBgRatio = (float) mArrow.getWidth() / (float) mArrowDiameter; - // Initialize animations. - List<Animator> animators = new ArrayList<>(); - mShowAnimator = AnimatorInflater.loadAnimator(getContext(), - R.animator.lb_page_indicator_dot_show); - mHideAnimator = AnimatorInflater.loadAnimator(getContext(), - R.animator.lb_page_indicator_dot_hide); - animators.add(mShowAnimator); - animators.add(mHideAnimator); - mAnimator.playTogether(animators); - // Use software layer to show shadows. - setLayerType(View.LAYER_TYPE_SOFTWARE, null); - } - - /** - * Sets the page count. - */ - public void setPageCount(int pages) { - if (pages <= 0) { - throw new IllegalArgumentException("The page count should be a positive integer"); - } - mPageCount = pages; - mDots = new Dot[mPageCount]; - for (int i = 0; i < mPageCount; ++i) { - mDots[i] = new Dot(); - } - calculateDotPositions(); - setSelectedPage(0); - } - - /** - * Called when the page has been selected. - */ - public void onPageSelected(int pageIndex, boolean withAnimation) { - if (mCurrentPage == pageIndex) { - return; - } - if (mAnimator.isStarted()) { - mAnimator.end(); - } - mPreviousPage = mCurrentPage; - if (withAnimation) { - mHideAnimator.setTarget(mDots[mPreviousPage]); - mShowAnimator.setTarget(mDots[pageIndex]); - mAnimator.start(); - } - setSelectedPage(pageIndex); - } - - private void calculateDotPositions() { - int left = getPaddingLeft(); - int top = getPaddingTop(); - int right = getWidth() - getPaddingRight(); - int requiredWidth = getRequiredWidth(); - int mid = (left + right) / 2; - int startLeft = mid - requiredWidth / 2; - mDotSelectedX = new int[mPageCount]; - mDotSelectedLeftX = new int[mPageCount]; - mDotSelectedRightX = new int[mPageCount]; - // mDotSelectedX[0] should be mDotSelectedLeftX[-1] + mArrowGap - mDotSelectedX[0] = startLeft + mDotRadius - mDotGap + mArrowGap; - mDotSelectedLeftX[0] = startLeft + mDotRadius; - mDotSelectedRightX[0] = 0; - for (int i = 1; i < mPageCount; i++) { - mDotSelectedX[i] = mDotSelectedLeftX[i - 1] + mArrowGap; - mDotSelectedLeftX[i] = mDotSelectedLeftX[i - 1] + mDotGap; - mDotSelectedRightX[i] = mDotSelectedX[i - 1] + mArrowGap; - } - mDotCenterY = top + mArrowRadius; - adjustDotPosition(); - } - - @VisibleForTesting - int getPageCount() { - return mPageCount; - } - - @VisibleForTesting - int[] getDotSelectedX() { - return mDotSelectedX; - } - - @VisibleForTesting - int[] getDotSelectedLeftX() { - return mDotSelectedLeftX; - } - - @VisibleForTesting - int[] getDotSelectedRightX() { - return mDotSelectedRightX; - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - int desiredHeight = getDesiredHeight(); - int height; - switch (MeasureSpec.getMode(heightMeasureSpec)) { - case MeasureSpec.EXACTLY: - height = MeasureSpec.getSize(heightMeasureSpec); - break; - case MeasureSpec.AT_MOST: - height = Math.min(desiredHeight, MeasureSpec.getSize(heightMeasureSpec)); - break; - case MeasureSpec.UNSPECIFIED: - default: - height = desiredHeight; - break; - } - int desiredWidth = getDesiredWidth(); - int width; - switch (MeasureSpec.getMode(widthMeasureSpec)) { - case MeasureSpec.EXACTLY: - width = MeasureSpec.getSize(widthMeasureSpec); - break; - case MeasureSpec.AT_MOST: - width = Math.min(desiredWidth, MeasureSpec.getSize(widthMeasureSpec)); - break; - case MeasureSpec.UNSPECIFIED: - default: - width = desiredWidth; - break; - } - setMeasuredDimension(width, height); - } - - @Override - protected void onSizeChanged(int width, int height, int oldWidth, int oldHeight) { - setMeasuredDimension(width, height); - calculateDotPositions(); - } - - private int getDesiredHeight() { - return getPaddingTop() + mArrowDiameter + getPaddingBottom() + mShadowRadius; - } - - private int getRequiredWidth() { - return 2 * mDotRadius + 2 * mArrowGap + (mPageCount - 3) * mDotGap; - } - - private int getDesiredWidth() { - return getPaddingLeft() + getRequiredWidth() + getPaddingRight(); - } - - @Override - protected void onDraw(Canvas canvas) { - for (int i = 0; i < mPageCount; ++i) { - mDots[i].draw(canvas); - } - } - - private void setSelectedPage(int now) { - if (now == mCurrentPage) { - return; - } - - mCurrentPage = now; - adjustDotPosition(); - } - - private void adjustDotPosition() { - for (int i = 0; i < mCurrentPage; ++i) { - mDots[i].deselect(); - mDots[i].mDirection = i == mPreviousPage ? Dot.LEFT : Dot.RIGHT; - mDots[i].mCenterX = mDotSelectedLeftX[i]; - } - mDots[mCurrentPage].select(); - mDots[mCurrentPage].mDirection = mPreviousPage < mCurrentPage ? Dot.LEFT : Dot.RIGHT; - mDots[mCurrentPage].mCenterX = mDotSelectedX[mCurrentPage]; - for (int i = mCurrentPage + 1; i < mPageCount; ++i) { - mDots[i].deselect(); - mDots[i].mDirection = Dot.RIGHT; - mDots[i].mCenterX = mDotSelectedRightX[i]; - } - } - - public class Dot { - static final float LEFT = -1; - static final float RIGHT = 1; - - float mAlpha; - @ColorInt - int mBgColor; - @ColorInt - int mFgColor; - float mTranslationX; - float mCenterX; - float mDiameter; - float mRadius; - float mArrowImageRadius; - float mDirection = RIGHT; - - void select() { - mTranslationX = 0.0f; - mCenterX = 0.0f; - mDiameter = mArrowDiameter; - mRadius = mArrowRadius; - mArrowImageRadius = mRadius * mArrowToBgRatio; - mAlpha = 1.0f; - adjustAlpha(); - } - - void deselect() { - mTranslationX = 0.0f; - mCenterX = 0.0f; - mDiameter = mDotDiameter; - mRadius = mDotRadius; - mArrowImageRadius = mRadius * mArrowToBgRatio; - mAlpha = 0.0f; - adjustAlpha(); - } - - public void adjustAlpha() { - int alpha = Math.round(0xFF * mAlpha); - int red = Color.red(mDotFgSelectColor); - int green = Color.green(mDotFgSelectColor); - int blue = Color.blue(mDotFgSelectColor); - mFgColor = Color.argb(alpha, red, green, blue); - } - - @UsedByReflection - public float getAlpha() { - return mAlpha; - } - - @UsedByReflection - public void setAlpha(float alpha) { - this.mAlpha = alpha; - adjustAlpha(); - invalidate(); - } - - @UsedByReflection - public float getTranslationX() { - return mTranslationX; - } - - @UsedByReflection - public void setTranslationX(float translationX) { - this.mTranslationX = translationX * mDirection; - invalidate(); - } - - @UsedByReflection - public float getDiameter() { - return mDiameter; - } - - @UsedByReflection - public void setDiameter(float diameter) { - this.mDiameter = diameter; - this.mRadius = diameter / 2; - this.mArrowImageRadius = diameter / 2 * mArrowToBgRatio; - invalidate(); - } - - void draw(Canvas canvas) { - float centerX = mCenterX + mTranslationX; - canvas.drawCircle(centerX, mDotCenterY, mRadius, mBgPaint); - if (mAlpha > 0) { - mFgPaint.setColor(mFgColor); - canvas.drawCircle(centerX, mDotCenterY, mRadius, mFgPaint); - canvas.drawBitmap(mArrow, mArrowRect, new Rect((int) (centerX - mArrowImageRadius), - (int) (mDotCenterY - mArrowImageRadius), - (int) (centerX + mArrowImageRadius), - (int) (mDotCenterY + mArrowImageRadius)), null); - } - } - } -} |