aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Chalko <nchalko@google.com>2015-09-01 09:05:04 -0700
committerNick Chalko <nchalko@google.com>2015-09-16 06:46:50 -0700
commit07b043dc3db83d6d20f0e8513b946830ab00e37b (patch)
tree705ade719e5c2853c070fe40b8518a56ac37f6d0
parentb5429e4406a580953bbdac5817e421cf0ab7aae3 (diff)
downloadTV-07b043dc3db83d6d20f0e8513b946830ab00e37b.tar.gz
Sync to ub-tv-friends at 1.06.202
git hash 3c1965f5dcc60243f1fe600cb35f19bd5f01fc27 Change-Id: I90b77790f9074677ecef72a23235d2b33eacb76a
-rw-r--r--.gitignore12
-rw-r--r--Android.mk20
-rw-r--r--AndroidManifest.xml1
-rw-r--r--buildconfig.mk43
-rw-r--r--common/Android.mk3
-rw-r--r--common/src/com/android/tv/common/TvCommonConstants.java23
-rw-r--r--common/src/com/android/tv/common/WeakHandler.java81
-rw-r--r--proguard.flags30
-rw-r--r--res/layout/intro_dialog.xml8
-rw-r--r--res/layout/item_list.xml36
-rw-r--r--res/layout/menu.xml24
-rw-r--r--res/layout/play_controls.xml38
-rw-r--r--res/layout/play_controls_contents.xml278
-rw-r--r--res/layout/program_guide.xml2
-rw-r--r--res/layout/setup_dialog.xml15
-rw-r--r--res/values-af-v23/strings.xml21
-rw-r--r--res/values-af/rating_system_strings.xml166
-rw-r--r--res/values-af/strings.xml3
-rw-r--r--res/values-am-v23/strings.xml21
-rw-r--r--res/values-am/rating_system_strings.xml166
-rw-r--r--res/values-am/strings.xml3
-rw-r--r--res/values-ar-v23/strings.xml21
-rw-r--r--res/values-ar/rating_system_strings.xml166
-rw-r--r--res/values-ar/strings.xml3
-rw-r--r--res/values-bg-v23/strings.xml21
-rw-r--r--res/values-bg/rating_system_strings.xml166
-rw-r--r--res/values-bg/strings.xml3
-rw-r--r--res/values-bn-rBD-v23/strings.xml21
-rw-r--r--res/values-bn-rBD/rating_system_strings.xml166
-rw-r--r--res/values-bn-rBD/strings.xml3
-rw-r--r--res/values-ca-v23/strings.xml21
-rw-r--r--res/values-ca/rating_system_strings.xml166
-rw-r--r--res/values-ca/strings.xml3
-rw-r--r--res/values-cs-v23/strings.xml21
-rw-r--r--res/values-cs/rating_system_strings.xml166
-rw-r--r--res/values-cs/strings.xml3
-rw-r--r--res/values-da-v23/strings.xml21
-rw-r--r--res/values-da/rating_system_strings.xml166
-rw-r--r--res/values-da/strings.xml3
-rw-r--r--res/values-de-v23/strings.xml21
-rw-r--r--res/values-de/rating_system_strings.xml166
-rw-r--r--res/values-de/strings.xml3
-rw-r--r--res/values-el-v23/strings.xml21
-rw-r--r--res/values-el/rating_system_strings.xml166
-rw-r--r--res/values-el/strings.xml3
-rw-r--r--res/values-en-rAU-v23/strings.xml21
-rw-r--r--res/values-en-rAU/rating_system_strings.xml166
-rw-r--r--res/values-en-rAU/strings.xml3
-rw-r--r--res/values-en-rGB-v23/strings.xml21
-rw-r--r--res/values-en-rGB/rating_system_strings.xml166
-rw-r--r--res/values-en-rGB/strings.xml3
-rw-r--r--res/values-en-rIN-v23/strings.xml21
-rw-r--r--res/values-en-rIN/rating_system_strings.xml166
-rw-r--r--res/values-en-rIN/strings.xml3
-rw-r--r--res/values-es-rUS-v23/strings.xml21
-rw-r--r--res/values-es-rUS/rating_system_strings.xml166
-rw-r--r--res/values-es-rUS/strings.xml3
-rw-r--r--res/values-es-v23/strings.xml21
-rw-r--r--res/values-es/rating_system_strings.xml166
-rw-r--r--res/values-es/strings.xml3
-rw-r--r--res/values-et-rEE-v23/strings.xml21
-rw-r--r--res/values-et-rEE/rating_system_strings.xml166
-rw-r--r--res/values-et-rEE/strings.xml3
-rw-r--r--res/values-eu-rES-v23/strings.xml21
-rw-r--r--res/values-eu-rES/rating_system_strings.xml166
-rw-r--r--res/values-eu-rES/strings.xml3
-rw-r--r--res/values-fa-v23/strings.xml21
-rw-r--r--res/values-fa/rating_system_strings.xml166
-rw-r--r--res/values-fa/strings.xml3
-rw-r--r--res/values-fi-v23/strings.xml21
-rw-r--r--res/values-fi/rating_system_strings.xml166
-rw-r--r--res/values-fi/strings.xml3
-rw-r--r--res/values-fr-rCA-v23/strings.xml21
-rw-r--r--res/values-fr-rCA/rating_system_strings.xml166
-rw-r--r--res/values-fr-rCA/strings.xml3
-rw-r--r--res/values-fr-v23/strings.xml21
-rw-r--r--res/values-fr/rating_system_strings.xml166
-rw-r--r--res/values-fr/strings.xml7
-rw-r--r--res/values-gl-rES-v23/strings.xml21
-rw-r--r--res/values-gl-rES/rating_system_strings.xml166
-rw-r--r--res/values-gl-rES/strings.xml3
-rw-r--r--res/values-hi-v23/strings.xml21
-rw-r--r--res/values-hi/rating_system_strings.xml166
-rw-r--r--res/values-hi/strings.xml3
-rw-r--r--res/values-hr-v23/strings.xml21
-rw-r--r--res/values-hr/rating_system_strings.xml166
-rw-r--r--res/values-hr/strings.xml3
-rw-r--r--res/values-hu-v23/strings.xml21
-rw-r--r--res/values-hu/rating_system_strings.xml166
-rw-r--r--res/values-hu/strings.xml3
-rw-r--r--res/values-hy-rAM-v23/strings.xml21
-rw-r--r--res/values-hy-rAM/rating_system_strings.xml166
-rw-r--r--res/values-hy-rAM/strings.xml3
-rw-r--r--res/values-in-v23/strings.xml21
-rw-r--r--res/values-in/rating_system_strings.xml166
-rw-r--r--res/values-in/strings.xml3
-rw-r--r--res/values-is-rIS-v23/strings.xml21
-rw-r--r--res/values-is-rIS/rating_system_strings.xml166
-rw-r--r--res/values-is-rIS/strings.xml3
-rw-r--r--res/values-it-v23/strings.xml21
-rw-r--r--res/values-it/rating_system_strings.xml166
-rw-r--r--res/values-it/strings.xml3
-rw-r--r--res/values-iw-v23/strings.xml21
-rw-r--r--res/values-iw/rating_system_strings.xml166
-rw-r--r--res/values-iw/strings.xml3
-rw-r--r--res/values-ja-v23/strings.xml21
-rw-r--r--res/values-ja/rating_system_strings.xml166
-rw-r--r--res/values-ja/strings.xml5
-rw-r--r--res/values-ka-rGE-v23/strings.xml21
-rw-r--r--res/values-ka-rGE/rating_system_strings.xml166
-rw-r--r--res/values-ka-rGE/strings.xml3
-rw-r--r--res/values-kk-rKZ-v23/strings.xml21
-rw-r--r--res/values-kk-rKZ/rating_system_strings.xml166
-rw-r--r--res/values-kk-rKZ/strings.xml3
-rw-r--r--res/values-km-rKH-v23/strings.xml21
-rw-r--r--res/values-km-rKH/rating_system_strings.xml166
-rw-r--r--res/values-km-rKH/strings.xml3
-rw-r--r--res/values-kn-rIN-v23/strings.xml21
-rw-r--r--res/values-kn-rIN/rating_system_strings.xml166
-rw-r--r--res/values-kn-rIN/strings.xml3
-rw-r--r--res/values-ko-v23/strings.xml21
-rw-r--r--res/values-ko/rating_system_strings.xml166
-rw-r--r--res/values-ko/strings.xml3
-rw-r--r--res/values-ky-rKG-v23/strings.xml21
-rw-r--r--res/values-ky-rKG/rating_system_strings.xml166
-rw-r--r--res/values-ky-rKG/strings.xml3
-rw-r--r--res/values-lo-rLA-v23/strings.xml21
-rw-r--r--res/values-lo-rLA/rating_system_strings.xml166
-rw-r--r--res/values-lo-rLA/strings.xml3
-rw-r--r--res/values-lt-v23/strings.xml21
-rw-r--r--res/values-lt/rating_system_strings.xml166
-rw-r--r--res/values-lt/strings.xml3
-rw-r--r--res/values-lv-v23/strings.xml21
-rw-r--r--res/values-lv/rating_system_strings.xml166
-rw-r--r--res/values-lv/strings.xml3
-rw-r--r--res/values-mk-rMK-v23/strings.xml21
-rw-r--r--res/values-mk-rMK/rating_system_strings.xml166
-rw-r--r--res/values-mk-rMK/strings.xml3
-rw-r--r--res/values-ml-rIN-v23/strings.xml21
-rw-r--r--res/values-ml-rIN/rating_system_strings.xml166
-rw-r--r--res/values-ml-rIN/strings.xml3
-rw-r--r--res/values-mn-rMN-v23/strings.xml21
-rw-r--r--res/values-mn-rMN/rating_system_strings.xml166
-rw-r--r--res/values-mn-rMN/strings.xml3
-rw-r--r--res/values-mr-rIN-v23/strings.xml21
-rw-r--r--res/values-mr-rIN/rating_system_strings.xml166
-rw-r--r--res/values-mr-rIN/strings.xml3
-rw-r--r--res/values-ms-rMY-v23/strings.xml21
-rw-r--r--res/values-ms-rMY/rating_system_strings.xml166
-rw-r--r--res/values-ms-rMY/strings.xml3
-rw-r--r--res/values-my-rMM-v23/strings.xml21
-rw-r--r--res/values-my-rMM/rating_system_strings.xml166
-rw-r--r--res/values-my-rMM/strings.xml3
-rw-r--r--res/values-nb-v23/strings.xml21
-rw-r--r--res/values-nb/rating_system_strings.xml166
-rw-r--r--res/values-nb/strings.xml3
-rw-r--r--res/values-ne-rNP-v23/strings.xml21
-rw-r--r--res/values-ne-rNP/rating_system_strings.xml166
-rw-r--r--res/values-ne-rNP/strings.xml3
-rw-r--r--res/values-nl-v23/strings.xml21
-rw-r--r--res/values-nl/rating_system_strings.xml166
-rw-r--r--res/values-nl/strings.xml9
-rw-r--r--res/values-pl-v23/strings.xml21
-rw-r--r--res/values-pl/rating_system_strings.xml166
-rw-r--r--res/values-pl/strings.xml3
-rw-r--r--res/values-pt-rPT-v23/strings.xml21
-rw-r--r--res/values-pt-rPT/rating_system_strings.xml166
-rw-r--r--res/values-pt-rPT/strings.xml3
-rw-r--r--res/values-pt-v23/strings.xml21
-rw-r--r--res/values-pt/rating_system_strings.xml166
-rw-r--r--res/values-pt/strings.xml3
-rw-r--r--res/values-ro-v23/strings.xml21
-rw-r--r--res/values-ro/rating_system_strings.xml166
-rw-r--r--res/values-ro/strings.xml3
-rw-r--r--res/values-ru-v23/strings.xml21
-rw-r--r--res/values-ru/rating_system_strings.xml166
-rw-r--r--res/values-ru/strings.xml3
-rw-r--r--res/values-si-rLK-v23/strings.xml21
-rw-r--r--res/values-si-rLK/rating_system_strings.xml166
-rw-r--r--res/values-si-rLK/strings.xml3
-rw-r--r--res/values-sk-v23/strings.xml21
-rw-r--r--res/values-sk/rating_system_strings.xml166
-rw-r--r--res/values-sk/strings.xml3
-rw-r--r--res/values-sl-v23/strings.xml21
-rw-r--r--res/values-sl/rating_system_strings.xml166
-rw-r--r--res/values-sl/strings.xml3
-rw-r--r--res/values-sr-v23/strings.xml21
-rw-r--r--res/values-sr/rating_system_strings.xml166
-rw-r--r--res/values-sr/strings.xml3
-rw-r--r--res/values-sv-v23/strings.xml21
-rw-r--r--res/values-sv/rating_system_strings.xml166
-rw-r--r--res/values-sv/strings.xml3
-rw-r--r--res/values-sw-v23/strings.xml21
-rw-r--r--res/values-sw/rating_system_strings.xml166
-rw-r--r--res/values-sw/strings.xml3
-rw-r--r--res/values-ta-rIN-v23/strings.xml21
-rw-r--r--res/values-ta-rIN/rating_system_strings.xml166
-rw-r--r--res/values-ta-rIN/strings.xml3
-rw-r--r--res/values-te-rIN-v23/strings.xml21
-rw-r--r--res/values-te-rIN/rating_system_strings.xml166
-rw-r--r--res/values-te-rIN/strings.xml3
-rw-r--r--res/values-th-v23/strings.xml21
-rw-r--r--res/values-th/rating_system_strings.xml166
-rw-r--r--res/values-th/strings.xml3
-rw-r--r--res/values-tl-v23/strings.xml21
-rw-r--r--res/values-tl/rating_system_strings.xml166
-rw-r--r--res/values-tl/strings.xml3
-rw-r--r--res/values-tr-v23/strings.xml21
-rw-r--r--res/values-tr/rating_system_strings.xml166
-rw-r--r--res/values-tr/strings.xml3
-rw-r--r--res/values-uk-v23/strings.xml21
-rw-r--r--res/values-uk/rating_system_strings.xml166
-rw-r--r--res/values-uk/strings.xml3
-rw-r--r--res/values-ur-rPK-v23/strings.xml21
-rw-r--r--res/values-ur-rPK/rating_system_strings.xml166
-rw-r--r--res/values-ur-rPK/strings.xml3
-rw-r--r--res/values-uz-rUZ-v23/strings.xml21
-rw-r--r--res/values-uz-rUZ/rating_system_strings.xml166
-rw-r--r--res/values-uz-rUZ/strings.xml3
-rw-r--r--res/values-v23/strings.xml21
-rw-r--r--res/values-vi-v23/strings.xml21
-rw-r--r--res/values-vi/rating_system_strings.xml166
-rw-r--r--res/values-vi/strings.xml3
-rw-r--r--res/values-zh-rCN-v23/strings.xml21
-rw-r--r--res/values-zh-rCN/rating_system_strings.xml166
-rw-r--r--res/values-zh-rCN/strings.xml3
-rw-r--r--res/values-zh-rHK-v23/strings.xml21
-rw-r--r--res/values-zh-rHK/rating_system_strings.xml166
-rw-r--r--res/values-zh-rHK/strings.xml3
-rw-r--r--res/values-zh-rTW-v23/strings.xml21
-rw-r--r--res/values-zh-rTW/rating_system_strings.xml166
-rw-r--r--res/values-zh-rTW/strings.xml3
-rw-r--r--res/values-zu-v23/strings.xml21
-rw-r--r--res/values-zu/rating_system_strings.xml166
-rw-r--r--res/values-zu/strings.xml3
-rw-r--r--res/values/dimens.xml14
-rw-r--r--res/values/integers.xml7
-rw-r--r--res/values/rating_system_strings.xml140
-rw-r--r--res/values/strings.xml4
-rw-r--r--res/values/styles.xml31
-rw-r--r--src/com/android/tv/ChannelTuner.java2
-rw-r--r--src/com/android/tv/LauncherActivity.java4
-rw-r--r--src/com/android/tv/MainActivity.java221
-rw-r--r--src/com/android/tv/TimeShiftManager.java49
-rw-r--r--src/com/android/tv/TvApplication.java71
-rw-r--r--src/com/android/tv/analytics/HasTrackerLabel.java2
-rw-r--r--src/com/android/tv/analytics/StubTracker.java16
-rw-r--r--src/com/android/tv/analytics/Tracker.java42
-rw-r--r--src/com/android/tv/customization/CustomAction.java9
-rw-r--r--src/com/android/tv/data/Channel.java195
-rw-r--r--src/com/android/tv/data/ChannelDataManager.java56
-rw-r--r--src/com/android/tv/data/ChannelLogoFetcher.java22
-rw-r--r--src/com/android/tv/data/DisplayMode.java5
-rw-r--r--src/com/android/tv/data/Program.java104
-rw-r--r--src/com/android/tv/data/ProgramDataManager.java17
-rw-r--r--src/com/android/tv/data/StreamInfo.java2
-rw-r--r--src/com/android/tv/dialog/PinDialogFragment.java4
-rw-r--r--src/com/android/tv/dialog/SafeDismissDialogFragment.java1
-rw-r--r--src/com/android/tv/guide/ProgramGrid.java36
-rw-r--r--src/com/android/tv/guide/ProgramGuide.java98
-rw-r--r--src/com/android/tv/guide/ProgramItemView.java12
-rw-r--r--src/com/android/tv/guide/ProgramManager.java21
-rw-r--r--src/com/android/tv/menu/AppLinkCardView.java4
-rw-r--r--src/com/android/tv/menu/ChannelsPosterPrefetcher.java52
-rw-r--r--src/com/android/tv/menu/ChannelsRow.java24
-rw-r--r--src/com/android/tv/menu/ChannelsRowAdapter.java4
-rw-r--r--src/com/android/tv/menu/IMenuView.java60
-rw-r--r--src/com/android/tv/menu/ItemListRow.java8
-rw-r--r--src/com/android/tv/menu/Menu.java330
-rw-r--r--src/com/android/tv/menu/MenuLayoutManager.java819
-rw-r--r--src/com/android/tv/menu/MenuRow.java34
-rw-r--r--src/com/android/tv/menu/MenuRowFactory.java118
-rw-r--r--src/com/android/tv/menu/MenuRowView.java237
-rw-r--r--src/com/android/tv/menu/MenuView.java691
-rw-r--r--src/com/android/tv/menu/PlayControlsRow.java20
-rw-r--r--src/com/android/tv/menu/PlayControlsRowView.java50
-rw-r--r--src/com/android/tv/menu/TvOptionsRowAdapter.java4
-rw-r--r--src/com/android/tv/receiver/AudioCapabilitiesReceiver.java29
-rw-r--r--src/com/android/tv/recommendation/NotificationService.java140
-rw-r--r--src/com/android/tv/recommendation/RecommendationDataManager.java129
-rw-r--r--src/com/android/tv/recommendation/RoutineWatchEvaluator.java2
-rw-r--r--src/com/android/tv/search/TvProviderSearch.java13
-rw-r--r--src/com/android/tv/ui/ChannelBannerView.java6
-rw-r--r--src/com/android/tv/ui/FullscreenDialogView.java106
-rw-r--r--src/com/android/tv/ui/InputBannerView.java6
-rw-r--r--src/com/android/tv/ui/IntroView.java36
-rw-r--r--src/com/android/tv/ui/KeypadChannelSwitchView.java6
-rw-r--r--src/com/android/tv/ui/OnRepeatedKeyInterceptListener.java112
-rw-r--r--src/com/android/tv/ui/SelectInputView.java6
-rw-r--r--src/com/android/tv/ui/SetupView.java178
-rw-r--r--src/com/android/tv/ui/TunableTvView.java7
-rw-r--r--src/com/android/tv/ui/TvOverlayManager.java206
-rw-r--r--src/com/android/tv/ui/TvViewUiManager.java20
-rw-r--r--src/com/android/tv/ui/sidepanel/ChannelSourcesFragment.java9
-rw-r--r--src/com/android/tv/ui/sidepanel/CustomizeChannelListFragment.java42
-rw-r--r--src/com/android/tv/ui/sidepanel/parentalcontrols/ChannelsBlockedFragment.java42
-rw-r--r--src/com/android/tv/util/AsyncDbTask.java5
-rw-r--r--src/com/android/tv/util/BitmapUtils.java2
-rw-r--r--src/com/android/tv/util/BooleanSystemProperty.java9
-rw-r--r--src/com/android/tv/util/RecurringRunner.java125
-rw-r--r--src/com/android/tv/util/SearchManagerHelper.java16
-rw-r--r--src/com/android/tv/util/SystemProperties.java19
-rw-r--r--src/com/android/tv/util/TvInputManagerHelper.java127
-rw-r--r--src/com/android/tv/util/Utils.java54
-rw-r--r--tests/common/Android.mk4
-rw-r--r--tests/common/src/com/android/tv/testing/ChannelInfo.java41
-rw-r--r--tests/common/src/com/android/tv/testing/ChannelUtils.java9
-rw-r--r--tests/common/src/com/android/tv/testing/ComparableTester.java8
-rw-r--r--tests/common/src/com/android/tv/testing/Constants.java2
-rw-r--r--tests/common/src/com/android/tv/testing/ProgramInfo.java31
-rw-r--r--tests/common/src/com/android/tv/testing/Utils.java9
-rw-r--r--tests/common/src/com/android/tv/testing/testinput/ChannelState.java10
-rw-r--r--tests/common/src/com/android/tv/testing/testinput/TvTestInputConstants.java2
-rw-r--r--tests/common/src/com/android/tv/testing/uihelper/Constants.java6
-rw-r--r--tests/common/src/com/android/tv/testing/uihelper/DialogHelper.java3
-rw-r--r--tests/common/src/com/android/tv/testing/uihelper/LiveChannelsUiDeviceHelper.java12
-rw-r--r--tests/common/src/com/android/tv/testing/uihelper/MenuHelper.java15
-rw-r--r--tests/common/src/com/android/tv/testing/uihelper/SidePanelHelper.java4
-rw-r--r--tests/common/src/com/android/tv/testing/uihelper/UiDeviceAsserts.java5
-rw-r--r--tests/common/src/com/android/tv/testing/uihelper/UiDeviceUtils.java14
-rw-r--r--tests/common/src/com/android/tv/testing/uihelper/UiObject2Asserts.java2
-rw-r--r--tests/func/src/com/android/tv/tests/ui/LiveChannelsAppTest.java14
-rw-r--r--tests/func/src/com/android/tv/tests/ui/LiveChannelsTestCase.java6
-rw-r--r--tests/func/src/com/android/tv/tests/ui/PlayControlsRowViewTest.java2
-rw-r--r--tests/func/src/com/android/tv/tests/ui/ProgramGuidePerformanceTest.java2
-rw-r--r--tests/func/src/com/android/tv/tests/ui/ProgramGuideTest.java6
-rw-r--r--tests/func/src/com/android/tv/tests/ui/TimeoutTest.java2
-rw-r--r--tests/input/res/drawable-xhdpi/ch_1000_logo.pngbin0 -> 1499 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_100_logo.pngbin0 -> 1548 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_101_logo.pngbin0 -> 1252 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_102_logo.pngbin0 -> 1579 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_103_logo.pngbin0 -> 1341 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_104_logo.pngbin0 -> 1280 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_105_logo.pngbin0 -> 1337 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_106_logo.pngbin0 -> 1098 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_107_logo.pngbin0 -> 1192 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_108_logo.pngbin0 -> 1041 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_109_logo.pngbin0 -> 1042 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_10_logo.pngbin0 -> 1200 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_110_logo.pngbin0 -> 1584 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_111_logo.pngbin0 -> 1279 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_112_logo.pngbin0 -> 992 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_113_logo.pngbin0 -> 1472 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_114_logo.pngbin0 -> 1152 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_115_logo.pngbin0 -> 1286 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_116_logo.pngbin0 -> 1512 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_117_logo.pngbin0 -> 1270 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_118_logo.pngbin0 -> 1522 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_119_logo.pngbin0 -> 1184 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_11_logo.pngbin0 -> 1266 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_120_logo.pngbin0 -> 1504 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_121_logo.pngbin0 -> 838 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_122_logo.pngbin0 -> 1089 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_123_logo.pngbin0 -> 1504 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_124_logo.pngbin0 -> 1362 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_125_logo.pngbin0 -> 1137 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_126_logo.pngbin0 -> 1392 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_127_logo.pngbin0 -> 1314 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_128_logo.pngbin0 -> 1398 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_129_logo.pngbin0 -> 1370 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_12_logo.pngbin0 -> 1481 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_130_logo.pngbin0 -> 1245 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_131_logo.pngbin0 -> 1288 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_132_logo.pngbin0 -> 1280 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_133_logo.pngbin0 -> 1307 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_134_logo.pngbin0 -> 1590 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_135_logo.pngbin0 -> 1615 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_136_logo.pngbin0 -> 1485 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_137_logo.pngbin0 -> 1401 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_138_logo.pngbin0 -> 1257 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_139_logo.pngbin0 -> 1497 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_13_logo.pngbin0 -> 1201 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_140_logo.pngbin0 -> 1315 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_141_logo.pngbin0 -> 1356 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_142_logo.pngbin0 -> 1497 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_143_logo.pngbin0 -> 1507 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_144_logo.pngbin0 -> 1419 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_145_logo.pngbin0 -> 1474 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_146_logo.pngbin0 -> 1278 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_147_logo.pngbin0 -> 1108 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_148_logo.pngbin0 -> 1248 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_149_logo.pngbin0 -> 1110 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_14_logo.pngbin0 -> 1649 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_150_logo.pngbin0 -> 1624 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_151_logo.pngbin0 -> 1229 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_152_logo.pngbin0 -> 1394 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_153_logo.pngbin0 -> 1703 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_154_logo.pngbin0 -> 1378 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_155_logo.pngbin0 -> 1818 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_156_logo.pngbin0 -> 1430 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_157_logo.pngbin0 -> 1562 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_158_logo.pngbin0 -> 1542 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_159_logo.pngbin0 -> 1638 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_15_logo.pngbin0 -> 1549 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_160_logo.pngbin0 -> 1396 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_161_logo.pngbin0 -> 1439 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_162_logo.pngbin0 -> 1327 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_163_logo.pngbin0 -> 1472 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_164_logo.pngbin0 -> 1532 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_165_logo.pngbin0 -> 1326 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_166_logo.pngbin0 -> 1721 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_167_logo.pngbin0 -> 1647 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_168_logo.pngbin0 -> 1216 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_169_logo.pngbin0 -> 1539 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_16_logo.pngbin0 -> 1120 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_170_logo.pngbin0 -> 1145 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_171_logo.pngbin0 -> 1421 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_172_logo.pngbin0 -> 1282 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_173_logo.pngbin0 -> 1177 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_174_logo.pngbin0 -> 1221 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_175_logo.pngbin0 -> 1357 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_176_logo.pngbin0 -> 1509 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_177_logo.pngbin0 -> 1370 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_178_logo.pngbin0 -> 1598 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_179_logo.pngbin0 -> 1287 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_17_logo.pngbin0 -> 1366 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_180_logo.pngbin0 -> 1322 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_181_logo.pngbin0 -> 1230 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_182_logo.pngbin0 -> 1081 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_183_logo.pngbin0 -> 1164 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_184_logo.pngbin0 -> 967 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_185_logo.pngbin0 -> 1058 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_186_logo.pngbin0 -> 1651 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_187_logo.pngbin0 -> 1547 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_188_logo.pngbin0 -> 1102 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_189_logo.pngbin0 -> 1508 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_18_logo.pngbin0 -> 1073 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_190_logo.pngbin0 -> 1281 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_191_logo.pngbin0 -> 1263 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_192_logo.pngbin0 -> 1565 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_193_logo.pngbin0 -> 1421 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_194_logo.pngbin0 -> 1557 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_195_logo.pngbin0 -> 1224 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_196_logo.pngbin0 -> 1471 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_197_logo.pngbin0 -> 914 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_198_logo.pngbin0 -> 1159 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_199_logo.pngbin0 -> 1427 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_19_logo.pngbin0 -> 1448 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_1_logo.pngbin0 -> 1446 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_200_logo.pngbin0 -> 1313 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_201_logo.pngbin0 -> 1153 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_202_logo.pngbin0 -> 1412 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_203_logo.pngbin0 -> 1408 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_204_logo.pngbin0 -> 1609 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_205_logo.pngbin0 -> 1296 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_206_logo.pngbin0 -> 1379 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_207_logo.pngbin0 -> 1434 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_208_logo.pngbin0 -> 1307 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_209_logo.pngbin0 -> 1397 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_20_logo.pngbin0 -> 1331 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_210_logo.pngbin0 -> 1697 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_211_logo.pngbin0 -> 1512 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_212_logo.pngbin0 -> 1336 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_213_logo.pngbin0 -> 1409 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_214_logo.pngbin0 -> 1133 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_215_logo.pngbin0 -> 1458 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_216_logo.pngbin0 -> 1367 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_217_logo.pngbin0 -> 1530 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_218_logo.pngbin0 -> 1512 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_219_logo.pngbin0 -> 1551 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_21_logo.pngbin0 -> 1087 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_220_logo.pngbin0 -> 1555 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_221_logo.pngbin0 -> 1350 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_222_logo.pngbin0 -> 1292 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_223_logo.pngbin0 -> 1153 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_224_logo.pngbin0 -> 1199 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_225_logo.pngbin0 -> 1132 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_226_logo.pngbin0 -> 1577 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_227_logo.pngbin0 -> 1380 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_228_logo.pngbin0 -> 1348 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_229_logo.pngbin0 -> 1682 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_22_logo.pngbin0 -> 1157 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_230_logo.pngbin0 -> 1469 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_231_logo.pngbin0 -> 1853 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_232_logo.pngbin0 -> 1425 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_233_logo.pngbin0 -> 1750 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_234_logo.pngbin0 -> 1364 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_235_logo.pngbin0 -> 1653 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_236_logo.pngbin0 -> 1444 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_237_logo.pngbin0 -> 1535 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_238_logo.pngbin0 -> 1302 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_239_logo.pngbin0 -> 1464 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_23_logo.pngbin0 -> 1249 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_240_logo.pngbin0 -> 1537 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_241_logo.pngbin0 -> 1274 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_242_logo.pngbin0 -> 1649 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_243_logo.pngbin0 -> 1548 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_244_logo.pngbin0 -> 1089 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_245_logo.pngbin0 -> 1372 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_246_logo.pngbin0 -> 1175 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_247_logo.pngbin0 -> 1368 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_248_logo.pngbin0 -> 1401 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_249_logo.pngbin0 -> 1202 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_24_logo.pngbin0 -> 1438 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_250_logo.pngbin0 -> 1285 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_251_logo.pngbin0 -> 1349 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_252_logo.pngbin0 -> 1415 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_253_logo.pngbin0 -> 1495 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_254_logo.pngbin0 -> 1576 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_255_logo.pngbin0 -> 1257 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_256_logo.pngbin0 -> 1309 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_257_logo.pngbin0 -> 1297 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_258_logo.pngbin0 -> 1232 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_259_logo.pngbin0 -> 1238 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_25_logo.pngbin0 -> 1407 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_260_logo.pngbin0 -> 1034 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_261_logo.pngbin0 -> 1007 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_262_logo.pngbin0 -> 1609 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_263_logo.pngbin0 -> 1585 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_264_logo.pngbin0 -> 1094 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_265_logo.pngbin0 -> 1583 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_266_logo.pngbin0 -> 1261 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_267_logo.pngbin0 -> 1230 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_268_logo.pngbin0 -> 1468 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_269_logo.pngbin0 -> 1472 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_26_logo.pngbin0 -> 1535 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_270_logo.pngbin0 -> 1613 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_271_logo.pngbin0 -> 1168 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_272_logo.pngbin0 -> 1445 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_273_logo.pngbin0 -> 949 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_274_logo.pngbin0 -> 1133 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_275_logo.pngbin0 -> 1519 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_276_logo.pngbin0 -> 1366 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_277_logo.pngbin0 -> 1082 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_278_logo.pngbin0 -> 1456 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_279_logo.pngbin0 -> 1289 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_27_logo.pngbin0 -> 1236 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_280_logo.pngbin0 -> 1543 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_281_logo.pngbin0 -> 1355 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_282_logo.pngbin0 -> 1177 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_283_logo.pngbin0 -> 1466 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_284_logo.pngbin0 -> 1271 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_285_logo.pngbin0 -> 1404 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_286_logo.pngbin0 -> 1650 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_287_logo.pngbin0 -> 1604 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_288_logo.pngbin0 -> 1458 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_289_logo.pngbin0 -> 1425 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_28_logo.pngbin0 -> 1263 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_290_logo.pngbin0 -> 1262 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_291_logo.pngbin0 -> 1474 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_292_logo.pngbin0 -> 1262 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_293_logo.pngbin0 -> 1618 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_294_logo.pngbin0 -> 1533 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_295_logo.pngbin0 -> 1595 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_296_logo.pngbin0 -> 1448 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_297_logo.pngbin0 -> 1463 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_298_logo.pngbin0 -> 1288 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_299_logo.pngbin0 -> 1118 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_29_logo.pngbin0 -> 1192 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_2_logo.pngbin0 -> 1262 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_300_logo.pngbin0 -> 1144 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_301_logo.pngbin0 -> 1069 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_302_logo.pngbin0 -> 1641 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_303_logo.pngbin0 -> 1407 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_304_logo.pngbin0 -> 1388 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_305_logo.pngbin0 -> 1736 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_306_logo.pngbin0 -> 1338 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_307_logo.pngbin0 -> 1724 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_308_logo.pngbin0 -> 1480 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_309_logo.pngbin0 -> 1807 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_30_logo.pngbin0 -> 1125 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_310_logo.pngbin0 -> 1509 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_311_logo.pngbin0 -> 1563 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_312_logo.pngbin0 -> 1439 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_313_logo.pngbin0 -> 1471 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_314_logo.pngbin0 -> 1261 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_315_logo.pngbin0 -> 1494 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_316_logo.pngbin0 -> 1580 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_317_logo.pngbin0 -> 1293 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_318_logo.pngbin0 -> 1585 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_319_logo.pngbin0 -> 1482 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_31_logo.pngbin0 -> 1115 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_320_logo.pngbin0 -> 1249 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_321_logo.pngbin0 -> 1479 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_322_logo.pngbin0 -> 1145 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_323_logo.pngbin0 -> 1465 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_324_logo.pngbin0 -> 1381 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_325_logo.pngbin0 -> 1229 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_326_logo.pngbin0 -> 1290 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_327_logo.pngbin0 -> 1404 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_328_logo.pngbin0 -> 1652 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_329_logo.pngbin0 -> 1467 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_32_logo.pngbin0 -> 972 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_330_logo.pngbin0 -> 1563 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_331_logo.pngbin0 -> 1256 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_332_logo.pngbin0 -> 1300 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_333_logo.pngbin0 -> 1220 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_334_logo.pngbin0 -> 1093 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_335_logo.pngbin0 -> 1210 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_336_logo.pngbin0 -> 985 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_337_logo.pngbin0 -> 1003 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_338_logo.pngbin0 -> 1598 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_339_logo.pngbin0 -> 1513 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_33_logo.pngbin0 -> 910 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_340_logo.pngbin0 -> 1092 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_341_logo.pngbin0 -> 1449 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_342_logo.pngbin0 -> 1297 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_343_logo.pngbin0 -> 1303 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_344_logo.pngbin0 -> 1508 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_345_logo.pngbin0 -> 1345 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_346_logo.pngbin0 -> 1659 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_347_logo.pngbin0 -> 1245 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_348_logo.pngbin0 -> 1529 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_349_logo.pngbin0 -> 959 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_34_logo.pngbin0 -> 1537 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_350_logo.pngbin0 -> 1194 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_351_logo.pngbin0 -> 1547 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_352_logo.pngbin0 -> 1346 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_353_logo.pngbin0 -> 1176 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_354_logo.pngbin0 -> 1456 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_355_logo.pngbin0 -> 1292 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_356_logo.pngbin0 -> 1624 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_357_logo.pngbin0 -> 1374 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_358_logo.pngbin0 -> 1252 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_359_logo.pngbin0 -> 1473 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_35_logo.pngbin0 -> 1407 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_360_logo.pngbin0 -> 1279 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_361_logo.pngbin0 -> 1350 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_362_logo.pngbin0 -> 1711 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_363_logo.pngbin0 -> 1518 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_364_logo.pngbin0 -> 1429 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_365_logo.pngbin0 -> 1294 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_366_logo.pngbin0 -> 1239 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_367_logo.pngbin0 -> 1375 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_368_logo.pngbin0 -> 1339 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_369_logo.pngbin0 -> 1641 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_36_logo.pngbin0 -> 1032 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_370_logo.pngbin0 -> 1552 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_371_logo.pngbin0 -> 1528 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_372_logo.pngbin0 -> 1565 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_373_logo.pngbin0 -> 1422 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_374_logo.pngbin0 -> 1283 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_375_logo.pngbin0 -> 1187 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_376_logo.pngbin0 -> 1249 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_377_logo.pngbin0 -> 1144 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_378_logo.pngbin0 -> 1652 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_379_logo.pngbin0 -> 1420 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_37_logo.pngbin0 -> 1489 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_380_logo.pngbin0 -> 1331 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_381_logo.pngbin0 -> 1642 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_382_logo.pngbin0 -> 1470 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_383_logo.pngbin0 -> 1719 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_384_logo.pngbin0 -> 1412 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_385_logo.pngbin0 -> 1845 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_386_logo.pngbin0 -> 1530 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_387_logo.pngbin0 -> 1671 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_388_logo.pngbin0 -> 1334 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_389_logo.pngbin0 -> 1602 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_38_logo.pngbin0 -> 1257 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_390_logo.pngbin0 -> 1252 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_391_logo.pngbin0 -> 1424 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_392_logo.pngbin0 -> 1591 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_393_logo.pngbin0 -> 1319 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_394_logo.pngbin0 -> 1636 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_395_logo.pngbin0 -> 1661 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_396_logo.pngbin0 -> 1253 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_397_logo.pngbin0 -> 1532 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_398_logo.pngbin0 -> 1244 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_399_logo.pngbin0 -> 1487 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_39_logo.pngbin0 -> 1296 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_3_logo.pngbin0 -> 1717 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_400_logo.pngbin0 -> 1317 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_401_logo.pngbin0 -> 1114 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_402_logo.pngbin0 -> 1302 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_403_logo.pngbin0 -> 1361 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_404_logo.pngbin0 -> 1484 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_405_logo.pngbin0 -> 1422 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_406_logo.pngbin0 -> 1543 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_407_logo.pngbin0 -> 1234 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_408_logo.pngbin0 -> 1325 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_409_logo.pngbin0 -> 1339 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_40_logo.pngbin0 -> 1507 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_410_logo.pngbin0 -> 1150 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_411_logo.pngbin0 -> 1091 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_412_logo.pngbin0 -> 1003 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_413_logo.pngbin0 -> 1032 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_414_logo.pngbin0 -> 1536 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_415_logo.pngbin0 -> 1522 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_416_logo.pngbin0 -> 1126 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_417_logo.pngbin0 -> 1433 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_418_logo.pngbin0 -> 1234 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_419_logo.pngbin0 -> 1334 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_41_logo.pngbin0 -> 1195 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_420_logo.pngbin0 -> 1399 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_421_logo.pngbin0 -> 1380 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_422_logo.pngbin0 -> 1595 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_423_logo.pngbin0 -> 1235 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_424_logo.pngbin0 -> 1457 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_425_logo.pngbin0 -> 948 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_426_logo.pngbin0 -> 1160 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_427_logo.pngbin0 -> 1511 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_428_logo.pngbin0 -> 1400 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_429_logo.pngbin0 -> 1179 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_42_logo.pngbin0 -> 1563 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_430_logo.pngbin0 -> 1414 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_431_logo.pngbin0 -> 1344 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_432_logo.pngbin0 -> 1620 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_433_logo.pngbin0 -> 1330 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_434_logo.pngbin0 -> 1308 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_435_logo.pngbin0 -> 1403 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_436_logo.pngbin0 -> 1228 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_437_logo.pngbin0 -> 1362 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_438_logo.pngbin0 -> 1634 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_439_logo.pngbin0 -> 1563 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_43_logo.pngbin0 -> 1092 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_440_logo.pngbin0 -> 1372 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_441_logo.pngbin0 -> 1227 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_442_logo.pngbin0 -> 1165 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_443_logo.pngbin0 -> 1424 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_444_logo.pngbin0 -> 1167 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_445_logo.pngbin0 -> 1555 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_446_logo.pngbin0 -> 1484 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_447_logo.pngbin0 -> 1463 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_448_logo.pngbin0 -> 1500 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_449_logo.pngbin0 -> 1428 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_44_logo.pngbin0 -> 1332 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_450_logo.pngbin0 -> 1351 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_451_logo.pngbin0 -> 1119 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_452_logo.pngbin0 -> 1278 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_453_logo.pngbin0 -> 1176 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_454_logo.pngbin0 -> 1511 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_455_logo.pngbin0 -> 1374 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_456_logo.pngbin0 -> 1398 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_457_logo.pngbin0 -> 1643 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_458_logo.pngbin0 -> 1457 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_459_logo.pngbin0 -> 1885 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_45_logo.pngbin0 -> 851 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_460_logo.pngbin0 -> 1464 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_461_logo.pngbin0 -> 1717 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_462_logo.pngbin0 -> 1526 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_463_logo.pngbin0 -> 1654 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_464_logo.pngbin0 -> 1384 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_465_logo.pngbin0 -> 1559 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_466_logo.pngbin0 -> 1223 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_467_logo.pngbin0 -> 1456 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_468_logo.pngbin0 -> 1535 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_469_logo.pngbin0 -> 1310 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_46_logo.pngbin0 -> 1031 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_470_logo.pngbin0 -> 1694 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_471_logo.pngbin0 -> 1559 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_472_logo.pngbin0 -> 1184 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_473_logo.pngbin0 -> 1542 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_474_logo.pngbin0 -> 1073 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_475_logo.pngbin0 -> 1542 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_476_logo.pngbin0 -> 1375 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_477_logo.pngbin0 -> 1097 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_478_logo.pngbin0 -> 1298 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_479_logo.pngbin0 -> 1387 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_47_logo.pngbin0 -> 1438 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_480_logo.pngbin0 -> 1584 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_481_logo.pngbin0 -> 1369 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_482_logo.pngbin0 -> 1557 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_483_logo.pngbin0 -> 1326 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_484_logo.pngbin0 -> 1203 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_485_logo.pngbin0 -> 1352 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_486_logo.pngbin0 -> 1115 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_487_logo.pngbin0 -> 1198 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_488_logo.pngbin0 -> 983 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_489_logo.pngbin0 -> 1042 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_48_logo.pngbin0 -> 1316 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_490_logo.pngbin0 -> 1643 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_491_logo.pngbin0 -> 1534 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_492_logo.pngbin0 -> 1134 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_493_logo.pngbin0 -> 1604 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_494_logo.pngbin0 -> 1139 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_495_logo.pngbin0 -> 1372 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_496_logo.pngbin0 -> 1572 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_497_logo.pngbin0 -> 1270 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_498_logo.pngbin0 -> 1656 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_499_logo.pngbin0 -> 1201 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_49_logo.pngbin0 -> 1104 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_4_logo.pngbin0 -> 1190 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_500_logo.pngbin0 -> 1367 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_501_logo.pngbin0 -> 920 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_502_logo.pngbin0 -> 1194 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_503_logo.pngbin0 -> 1554 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_504_logo.pngbin0 -> 1405 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_505_logo.pngbin0 -> 1180 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_506_logo.pngbin0 -> 1446 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_507_logo.pngbin0 -> 1357 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_508_logo.pngbin0 -> 1503 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_509_logo.pngbin0 -> 1299 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_50_logo.pngbin0 -> 1343 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_510_logo.pngbin0 -> 1375 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_511_logo.pngbin0 -> 1326 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_512_logo.pngbin0 -> 1285 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_513_logo.pngbin0 -> 1438 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_514_logo.pngbin0 -> 1522 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_515_logo.pngbin0 -> 1505 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_516_logo.pngbin0 -> 1481 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_517_logo.pngbin0 -> 1389 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_518_logo.pngbin0 -> 1253 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_519_logo.pngbin0 -> 1504 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_51_logo.pngbin0 -> 1300 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_520_logo.pngbin0 -> 1405 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_521_logo.pngbin0 -> 1586 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_522_logo.pngbin0 -> 1509 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_523_logo.pngbin0 -> 1600 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_524_logo.pngbin0 -> 1559 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_525_logo.pngbin0 -> 1410 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_526_logo.pngbin0 -> 1295 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_527_logo.pngbin0 -> 1162 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_528_logo.pngbin0 -> 1271 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_529_logo.pngbin0 -> 1182 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_52_logo.pngbin0 -> 1526 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_530_logo.pngbin0 -> 1594 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_531_logo.pngbin0 -> 1375 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_532_logo.pngbin0 -> 1433 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_533_logo.pngbin0 -> 1683 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_534_logo.pngbin0 -> 1422 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_535_logo.pngbin0 -> 1922 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_536_logo.pngbin0 -> 1490 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_537_logo.pngbin0 -> 1788 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_538_logo.pngbin0 -> 1592 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_539_logo.pngbin0 -> 1679 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_53_logo.pngbin0 -> 1281 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_540_logo.pngbin0 -> 1422 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_541_logo.pngbin0 -> 1523 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_542_logo.pngbin0 -> 1303 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_543_logo.pngbin0 -> 1514 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_544_logo.pngbin0 -> 1530 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_545_logo.pngbin0 -> 1273 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_546_logo.pngbin0 -> 1795 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_547_logo.pngbin0 -> 1612 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_548_logo.pngbin0 -> 1201 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_549_logo.pngbin0 -> 1545 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_54_logo.pngbin0 -> 1168 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_550_logo.pngbin0 -> 1094 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_551_logo.pngbin0 -> 1342 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_552_logo.pngbin0 -> 1426 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_553_logo.pngbin0 -> 1193 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_554_logo.pngbin0 -> 1225 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_555_logo.pngbin0 -> 1290 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_556_logo.pngbin0 -> 1570 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_557_logo.pngbin0 -> 1456 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_558_logo.pngbin0 -> 1609 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_559_logo.pngbin0 -> 1323 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_55_logo.pngbin0 -> 1336 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_560_logo.pngbin0 -> 1320 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_561_logo.pngbin0 -> 1313 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_562_logo.pngbin0 -> 1221 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_563_logo.pngbin0 -> 1259 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_564_logo.pngbin0 -> 1041 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_565_logo.pngbin0 -> 1042 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_566_logo.pngbin0 -> 1600 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_567_logo.pngbin0 -> 1542 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_568_logo.pngbin0 -> 1182 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_569_logo.pngbin0 -> 1527 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_56_logo.pngbin0 -> 1123 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_570_logo.pngbin0 -> 1296 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_571_logo.pngbin0 -> 1292 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_572_logo.pngbin0 -> 1576 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_573_logo.pngbin0 -> 1347 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_574_logo.pngbin0 -> 1596 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_575_logo.pngbin0 -> 1163 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_576_logo.pngbin0 -> 1548 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_577_logo.pngbin0 -> 870 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_578_logo.pngbin0 -> 1184 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_579_logo.pngbin0 -> 1558 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_57_logo.pngbin0 -> 1336 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_580_logo.pngbin0 -> 1435 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_581_logo.pngbin0 -> 1164 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_582_logo.pngbin0 -> 1479 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_583_logo.pngbin0 -> 1364 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_584_logo.pngbin0 -> 1529 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_585_logo.pngbin0 -> 1341 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_586_logo.pngbin0 -> 1295 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_587_logo.pngbin0 -> 1452 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_588_logo.pngbin0 -> 1258 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_589_logo.pngbin0 -> 1418 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_58_logo.pngbin0 -> 1641 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_590_logo.pngbin0 -> 1646 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_591_logo.pngbin0 -> 1623 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_592_logo.pngbin0 -> 1507 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_593_logo.pngbin0 -> 1446 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_594_logo.pngbin0 -> 1259 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_595_logo.pngbin0 -> 1476 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_596_logo.pngbin0 -> 1402 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_597_logo.pngbin0 -> 1585 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_598_logo.pngbin0 -> 1563 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_599_logo.pngbin0 -> 1533 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_59_logo.pngbin0 -> 1583 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_5_logo.pngbin0 -> 1620 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_600_logo.pngbin0 -> 1544 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_601_logo.pngbin0 -> 1449 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_602_logo.pngbin0 -> 1401 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_603_logo.pngbin0 -> 1198 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_604_logo.pngbin0 -> 1160 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_605_logo.pngbin0 -> 1229 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_606_logo.pngbin0 -> 1458 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_607_logo.pngbin0 -> 1456 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_608_logo.pngbin0 -> 1359 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_609_logo.pngbin0 -> 1730 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_60_logo.pngbin0 -> 1318 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_610_logo.pngbin0 -> 1348 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_611_logo.pngbin0 -> 1851 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_612_logo.pngbin0 -> 1434 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_613_logo.pngbin0 -> 1787 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_614_logo.pngbin0 -> 1468 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_615_logo.pngbin0 -> 1632 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_616_logo.pngbin0 -> 1311 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_617_logo.pngbin0 -> 1476 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_618_logo.pngbin0 -> 1300 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_619_logo.pngbin0 -> 1357 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_61_logo.pngbin0 -> 1223 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_620_logo.pngbin0 -> 1606 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_621_logo.pngbin0 -> 1299 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_622_logo.pngbin0 -> 1735 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_623_logo.pngbin0 -> 1710 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_624_logo.pngbin0 -> 1223 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_625_logo.pngbin0 -> 1373 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_626_logo.pngbin0 -> 1076 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_627_logo.pngbin0 -> 1500 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_628_logo.pngbin0 -> 1305 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_629_logo.pngbin0 -> 1155 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_62_logo.pngbin0 -> 1179 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_630_logo.pngbin0 -> 1299 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_631_logo.pngbin0 -> 1391 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_632_logo.pngbin0 -> 1630 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_633_logo.pngbin0 -> 1414 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_634_logo.pngbin0 -> 1540 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_635_logo.pngbin0 -> 1373 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_636_logo.pngbin0 -> 1290 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_637_logo.pngbin0 -> 1267 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_638_logo.pngbin0 -> 1226 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_639_logo.pngbin0 -> 1256 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_63_logo.pngbin0 -> 1394 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_640_logo.pngbin0 -> 1045 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_641_logo.pngbin0 -> 1014 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_642_logo.pngbin0 -> 1656 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_643_logo.pngbin0 -> 1582 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_644_logo.pngbin0 -> 1062 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_645_logo.pngbin0 -> 1430 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_646_logo.pngbin0 -> 1179 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_647_logo.pngbin0 -> 1289 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_648_logo.pngbin0 -> 1564 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_649_logo.pngbin0 -> 1453 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_64_logo.pngbin0 -> 1281 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_650_logo.pngbin0 -> 1687 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_651_logo.pngbin0 -> 1202 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_652_logo.pngbin0 -> 1498 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_653_logo.pngbin0 -> 985 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_654_logo.pngbin0 -> 1106 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_655_logo.pngbin0 -> 1401 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_656_logo.pngbin0 -> 1360 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_657_logo.pngbin0 -> 1167 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_658_logo.pngbin0 -> 1489 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_659_logo.pngbin0 -> 1437 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_65_logo.pngbin0 -> 1504 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_660_logo.pngbin0 -> 1490 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_661_logo.pngbin0 -> 1280 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_662_logo.pngbin0 -> 1299 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_663_logo.pngbin0 -> 1410 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_664_logo.pngbin0 -> 1213 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_665_logo.pngbin0 -> 1401 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_666_logo.pngbin0 -> 1575 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_667_logo.pngbin0 -> 1557 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_668_logo.pngbin0 -> 1449 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_669_logo.pngbin0 -> 1400 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_66_logo.pngbin0 -> 1360 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_670_logo.pngbin0 -> 1253 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_671_logo.pngbin0 -> 1441 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_672_logo.pngbin0 -> 1350 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_673_logo.pngbin0 -> 1635 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_674_logo.pngbin0 -> 1525 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_675_logo.pngbin0 -> 1587 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_676_logo.pngbin0 -> 1445 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_677_logo.pngbin0 -> 1422 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_678_logo.pngbin0 -> 1394 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_679_logo.pngbin0 -> 1157 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_67_logo.pngbin0 -> 1493 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_680_logo.pngbin0 -> 1283 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_681_logo.pngbin0 -> 1099 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_682_logo.pngbin0 -> 1667 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_683_logo.pngbin0 -> 1482 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_684_logo.pngbin0 -> 1382 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_685_logo.pngbin0 -> 1631 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_686_logo.pngbin0 -> 1388 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_687_logo.pngbin0 -> 1923 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_688_logo.pngbin0 -> 1408 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_689_logo.pngbin0 -> 1817 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_68_logo.pngbin0 -> 1526 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_690_logo.pngbin0 -> 1576 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_691_logo.pngbin0 -> 1639 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_692_logo.pngbin0 -> 1425 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_693_logo.pngbin0 -> 1544 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_694_logo.pngbin0 -> 1304 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_695_logo.pngbin0 -> 1532 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_696_logo.pngbin0 -> 1559 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_697_logo.pngbin0 -> 1337 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_698_logo.pngbin0 -> 1818 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_699_logo.pngbin0 -> 1647 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_69_logo.pngbin0 -> 1426 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_6_logo.pngbin0 -> 1215 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_700_logo.pngbin0 -> 1166 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_701_logo.pngbin0 -> 1486 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_702_logo.pngbin0 -> 1179 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_703_logo.pngbin0 -> 1516 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_704_logo.pngbin0 -> 1358 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_705_logo.pngbin0 -> 1187 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_706_logo.pngbin0 -> 1294 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_707_logo.pngbin0 -> 1312 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_708_logo.pngbin0 -> 1457 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_709_logo.pngbin0 -> 1475 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_70_logo.pngbin0 -> 1336 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_710_logo.pngbin0 -> 1513 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_711_logo.pngbin0 -> 1192 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_712_logo.pngbin0 -> 1281 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_713_logo.pngbin0 -> 1296 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_714_logo.pngbin0 -> 1089 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_715_logo.pngbin0 -> 1193 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_716_logo.pngbin0 -> 1009 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_717_logo.pngbin0 -> 938 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_718_logo.pngbin0 -> 1618 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_719_logo.pngbin0 -> 1519 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_71_logo.pngbin0 -> 1036 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_720_logo.pngbin0 -> 1145 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_721_logo.pngbin0 -> 1483 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_722_logo.pngbin0 -> 1246 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_723_logo.pngbin0 -> 1304 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_724_logo.pngbin0 -> 1541 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_725_logo.pngbin0 -> 1421 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_726_logo.pngbin0 -> 1601 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_727_logo.pngbin0 -> 1129 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_728_logo.pngbin0 -> 1547 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_729_logo.pngbin0 -> 935 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_72_logo.pngbin0 -> 1151 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_730_logo.pngbin0 -> 1151 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_731_logo.pngbin0 -> 1511 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_732_logo.pngbin0 -> 1370 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_733_logo.pngbin0 -> 1110 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_734_logo.pngbin0 -> 1440 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_735_logo.pngbin0 -> 1397 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_736_logo.pngbin0 -> 1529 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_737_logo.pngbin0 -> 1290 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_738_logo.pngbin0 -> 1408 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_739_logo.pngbin0 -> 1462 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_73_logo.pngbin0 -> 1091 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_740_logo.pngbin0 -> 1204 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_741_logo.pngbin0 -> 1310 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_742_logo.pngbin0 -> 1616 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_743_logo.pngbin0 -> 1608 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_744_logo.pngbin0 -> 1328 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_745_logo.pngbin0 -> 1314 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_746_logo.pngbin0 -> 1214 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_747_logo.pngbin0 -> 1379 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_748_logo.pngbin0 -> 1350 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_749_logo.pngbin0 -> 1589 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_74_logo.pngbin0 -> 1384 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_750_logo.pngbin0 -> 1575 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_751_logo.pngbin0 -> 1544 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_752_logo.pngbin0 -> 1537 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_753_logo.pngbin0 -> 1493 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_754_logo.pngbin0 -> 1370 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_755_logo.pngbin0 -> 1144 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_756_logo.pngbin0 -> 1271 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_757_logo.pngbin0 -> 1143 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_758_logo.pngbin0 -> 1475 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_759_logo.pngbin0 -> 1463 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_75_logo.pngbin0 -> 1337 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_760_logo.pngbin0 -> 1370 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_761_logo.pngbin0 -> 1646 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_762_logo.pngbin0 -> 1409 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_763_logo.pngbin0 -> 1789 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_764_logo.pngbin0 -> 1418 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_765_logo.pngbin0 -> 1778 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_766_logo.pngbin0 -> 1441 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_767_logo.pngbin0 -> 1612 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_768_logo.pngbin0 -> 1456 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_769_logo.pngbin0 -> 1563 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_76_logo.pngbin0 -> 1324 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_770_logo.pngbin0 -> 1157 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_771_logo.pngbin0 -> 1338 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_772_logo.pngbin0 -> 1515 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_773_logo.pngbin0 -> 1256 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_774_logo.pngbin0 -> 1677 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_775_logo.pngbin0 -> 1483 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_776_logo.pngbin0 -> 1181 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_777_logo.pngbin0 -> 1305 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_778_logo.pngbin0 -> 1127 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_779_logo.pngbin0 -> 1487 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_77_logo.pngbin0 -> 1543 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_780_logo.pngbin0 -> 1429 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_781_logo.pngbin0 -> 1156 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_782_logo.pngbin0 -> 1235 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_783_logo.pngbin0 -> 1401 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_784_logo.pngbin0 -> 1543 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_785_logo.pngbin0 -> 1447 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_786_logo.pngbin0 -> 1586 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_787_logo.pngbin0 -> 1281 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_788_logo.pngbin0 -> 1288 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_789_logo.pngbin0 -> 1340 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_78_logo.pngbin0 -> 1328 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_790_logo.pngbin0 -> 1188 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_791_logo.pngbin0 -> 1112 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_792_logo.pngbin0 -> 1043 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_793_logo.pngbin0 -> 1046 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_794_logo.pngbin0 -> 1605 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_795_logo.pngbin0 -> 1482 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_796_logo.pngbin0 -> 1112 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_797_logo.pngbin0 -> 1514 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_798_logo.pngbin0 -> 1301 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_799_logo.pngbin0 -> 1316 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_79_logo.pngbin0 -> 1806 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_7_logo.pngbin0 -> 1484 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_800_logo.pngbin0 -> 1573 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_801_logo.pngbin0 -> 1418 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_802_logo.pngbin0 -> 1681 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_803_logo.pngbin0 -> 1228 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_804_logo.pngbin0 -> 1523 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_805_logo.pngbin0 -> 983 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_806_logo.pngbin0 -> 1186 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_807_logo.pngbin0 -> 1551 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_808_logo.pngbin0 -> 1362 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_809_logo.pngbin0 -> 1231 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_80_logo.pngbin0 -> 1406 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_810_logo.pngbin0 -> 1448 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_811_logo.pngbin0 -> 1224 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_812_logo.pngbin0 -> 1573 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_813_logo.pngbin0 -> 1365 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_814_logo.pngbin0 -> 1168 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_815_logo.pngbin0 -> 1394 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_816_logo.pngbin0 -> 1273 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_817_logo.pngbin0 -> 1392 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_818_logo.pngbin0 -> 1586 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_819_logo.pngbin0 -> 1535 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_81_logo.pngbin0 -> 1680 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_820_logo.pngbin0 -> 1514 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_821_logo.pngbin0 -> 1389 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_822_logo.pngbin0 -> 1232 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_823_logo.pngbin0 -> 1510 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_824_logo.pngbin0 -> 1300 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_825_logo.pngbin0 -> 1452 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_826_logo.pngbin0 -> 1560 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_827_logo.pngbin0 -> 1570 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_828_logo.pngbin0 -> 1544 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_829_logo.pngbin0 -> 1521 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_82_logo.pngbin0 -> 1423 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_830_logo.pngbin0 -> 1300 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_831_logo.pngbin0 -> 1152 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_832_logo.pngbin0 -> 1304 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_833_logo.pngbin0 -> 1156 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_834_logo.pngbin0 -> 1640 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_835_logo.pngbin0 -> 1425 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_836_logo.pngbin0 -> 1391 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_837_logo.pngbin0 -> 1725 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_838_logo.pngbin0 -> 1426 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_839_logo.pngbin0 -> 1980 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_83_logo.pngbin0 -> 1588 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_840_logo.pngbin0 -> 1467 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_841_logo.pngbin0 -> 1744 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_842_logo.pngbin0 -> 1484 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_843_logo.pngbin0 -> 1646 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_844_logo.pngbin0 -> 1361 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_845_logo.pngbin0 -> 1469 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_846_logo.pngbin0 -> 1346 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_847_logo.pngbin0 -> 1349 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_848_logo.pngbin0 -> 1508 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_849_logo.pngbin0 -> 1313 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_84_logo.pngbin0 -> 1324 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_850_logo.pngbin0 -> 1811 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_851_logo.pngbin0 -> 1647 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_852_logo.pngbin0 -> 1197 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_853_logo.pngbin0 -> 1575 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_854_logo.pngbin0 -> 1158 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_855_logo.pngbin0 -> 1529 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_856_logo.pngbin0 -> 1457 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_857_logo.pngbin0 -> 1210 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_858_logo.pngbin0 -> 1280 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_859_logo.pngbin0 -> 1435 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_85_logo.pngbin0 -> 1476 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_860_logo.pngbin0 -> 1581 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_861_logo.pngbin0 -> 1384 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_862_logo.pngbin0 -> 1541 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_863_logo.pngbin0 -> 1389 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_864_logo.pngbin0 -> 1319 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_865_logo.pngbin0 -> 1359 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_866_logo.pngbin0 -> 1176 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_867_logo.pngbin0 -> 1226 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_868_logo.pngbin0 -> 1016 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_869_logo.pngbin0 -> 1060 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_86_logo.pngbin0 -> 1214 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_870_logo.pngbin0 -> 1503 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_871_logo.pngbin0 -> 1536 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_872_logo.pngbin0 -> 1142 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_873_logo.pngbin0 -> 1530 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_874_logo.pngbin0 -> 1242 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_875_logo.pngbin0 -> 1314 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_876_logo.pngbin0 -> 1519 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_877_logo.pngbin0 -> 1344 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_878_logo.pngbin0 -> 1463 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_879_logo.pngbin0 -> 1242 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_87_logo.pngbin0 -> 1316 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_880_logo.pngbin0 -> 1450 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_881_logo.pngbin0 -> 858 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_882_logo.pngbin0 -> 1120 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_883_logo.pngbin0 -> 1541 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_884_logo.pngbin0 -> 1360 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_885_logo.pngbin0 -> 1153 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_886_logo.pngbin0 -> 1427 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_887_logo.pngbin0 -> 1364 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_888_logo.pngbin0 -> 1473 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_889_logo.pngbin0 -> 1333 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_88_logo.pngbin0 -> 1418 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_890_logo.pngbin0 -> 1395 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_891_logo.pngbin0 -> 1433 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_892_logo.pngbin0 -> 1242 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_893_logo.pngbin0 -> 1467 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_894_logo.pngbin0 -> 1627 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_895_logo.pngbin0 -> 1464 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_896_logo.pngbin0 -> 1526 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_897_logo.pngbin0 -> 1423 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_898_logo.pngbin0 -> 1239 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_899_logo.pngbin0 -> 1475 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_89_logo.pngbin0 -> 1239 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_8_logo.pngbin0 -> 1274 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_900_logo.pngbin0 -> 1346 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_901_logo.pngbin0 -> 1515 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_902_logo.pngbin0 -> 1577 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_903_logo.pngbin0 -> 1611 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_904_logo.pngbin0 -> 1582 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_905_logo.pngbin0 -> 1521 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_906_logo.pngbin0 -> 1418 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_907_logo.pngbin0 -> 1193 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_908_logo.pngbin0 -> 1274 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_909_logo.pngbin0 -> 1163 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_90_logo.pngbin0 -> 1675 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_910_logo.pngbin0 -> 1459 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_911_logo.pngbin0 -> 1367 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_912_logo.pngbin0 -> 1345 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_913_logo.pngbin0 -> 1683 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_914_logo.pngbin0 -> 1406 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_915_logo.pngbin0 -> 1885 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_916_logo.pngbin0 -> 1423 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_917_logo.pngbin0 -> 1757 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_918_logo.pngbin0 -> 1546 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_919_logo.pngbin0 -> 1568 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_91_logo.pngbin0 -> 1541 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_920_logo.pngbin0 -> 1348 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_921_logo.pngbin0 -> 1512 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_922_logo.pngbin0 -> 1171 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_923_logo.pngbin0 -> 1508 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_924_logo.pngbin0 -> 1571 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_925_logo.pngbin0 -> 1341 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_926_logo.pngbin0 -> 1799 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_927_logo.pngbin0 -> 1536 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_928_logo.pngbin0 -> 1268 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_929_logo.pngbin0 -> 1523 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_92_logo.pngbin0 -> 1153 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_930_logo.pngbin0 -> 1200 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_931_logo.pngbin0 -> 1408 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_932_logo.pngbin0 -> 1402 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_933_logo.pngbin0 -> 1186 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_934_logo.pngbin0 -> 1231 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_935_logo.pngbin0 -> 1422 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_936_logo.pngbin0 -> 1574 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_937_logo.pngbin0 -> 1488 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_938_logo.pngbin0 -> 1464 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_939_logo.pngbin0 -> 1234 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_93_logo.pngbin0 -> 1486 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_940_logo.pngbin0 -> 1344 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_941_logo.pngbin0 -> 1221 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_942_logo.pngbin0 -> 1176 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_943_logo.pngbin0 -> 1260 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_944_logo.pngbin0 -> 989 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_945_logo.pngbin0 -> 1069 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_946_logo.pngbin0 -> 1668 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_947_logo.pngbin0 -> 1548 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_948_logo.pngbin0 -> 1098 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_949_logo.pngbin0 -> 1528 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_94_logo.pngbin0 -> 1113 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_950_logo.pngbin0 -> 1297 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_951_logo.pngbin0 -> 1357 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_952_logo.pngbin0 -> 1561 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_953_logo.pngbin0 -> 1431 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_954_logo.pngbin0 -> 1665 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_955_logo.pngbin0 -> 1247 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_956_logo.pngbin0 -> 1571 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_957_logo.pngbin0 -> 961 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_958_logo.pngbin0 -> 1209 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_959_logo.pngbin0 -> 1504 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_95_logo.pngbin0 -> 1489 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_960_logo.pngbin0 -> 1401 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_961_logo.pngbin0 -> 1178 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_962_logo.pngbin0 -> 1486 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_963_logo.pngbin0 -> 1436 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_964_logo.pngbin0 -> 1623 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_965_logo.pngbin0 -> 1385 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_966_logo.pngbin0 -> 1305 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_967_logo.pngbin0 -> 1368 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_968_logo.pngbin0 -> 1253 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_969_logo.pngbin0 -> 1357 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_96_logo.pngbin0 -> 1337 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_970_logo.pngbin0 -> 1506 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_971_logo.pngbin0 -> 1563 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_972_logo.pngbin0 -> 1469 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_973_logo.pngbin0 -> 1434 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_974_logo.pngbin0 -> 1233 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_975_logo.pngbin0 -> 1474 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_976_logo.pngbin0 -> 1387 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_977_logo.pngbin0 -> 1486 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_978_logo.pngbin0 -> 1579 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_979_logo.pngbin0 -> 1508 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_97_logo.pngbin0 -> 1125 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_980_logo.pngbin0 -> 1635 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_981_logo.pngbin0 -> 1474 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_982_logo.pngbin0 -> 1397 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_983_logo.pngbin0 -> 1205 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_984_logo.pngbin0 -> 1278 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_985_logo.pngbin0 -> 1227 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_986_logo.pngbin0 -> 1615 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_987_logo.pngbin0 -> 1450 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_988_logo.pngbin0 -> 1347 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_989_logo.pngbin0 -> 1643 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_98_logo.pngbin0 -> 1216 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_990_logo.pngbin0 -> 1419 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_991_logo.pngbin0 -> 1850 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_992_logo.pngbin0 -> 1438 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_993_logo.pngbin0 -> 1769 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_994_logo.pngbin0 -> 1487 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_995_logo.pngbin0 -> 1605 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_996_logo.pngbin0 -> 1413 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_997_logo.pngbin0 -> 1513 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_998_logo.pngbin0 -> 1289 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_999_logo.pngbin0 -> 1386 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_99_logo.pngbin0 -> 1287 bytes
-rw-r--r--tests/input/res/drawable-xhdpi/ch_9_logo.pngbin0 -> 1414 bytes
-rw-r--r--tests/input/src/com/android/tv/testinput/TestTvInputService.java2
-rw-r--r--tests/jank/src/com/android/tv/tests/jank/ProgramGuideJankTest.java6
-rw-r--r--tests/unit/src/com/android/tv/BaseMainActivityTestCase.java6
-rw-r--r--tests/unit/src/com/android/tv/MainActivityTest.java5
-rw-r--r--tests/unit/src/com/android/tv/data/ChannelDataManagerTest.java51
-rw-r--r--tests/unit/src/com/android/tv/data/ChannelNumberTest.java20
-rw-r--r--tests/unit/src/com/android/tv/data/ChannelTest.java83
-rw-r--r--tests/unit/src/com/android/tv/data/ProgramDataManagerTest.java26
-rw-r--r--tests/unit/src/com/android/tv/data/ProgramTest.java3
-rw-r--r--tests/unit/src/com/android/tv/menu/MenuTest.java138
-rw-r--r--tests/unit/src/com/android/tv/menu/TvOptionsRowAdapterTest.java38
-rw-r--r--tests/unit/src/com/android/tv/recommendation/ChannelRecordTest.java3
-rw-r--r--tests/unit/src/com/android/tv/recommendation/EvaluatorTestCase.java2
-rw-r--r--tests/unit/src/com/android/tv/recommendation/FavoriteChannelEvaluatorTest.java4
-rw-r--r--tests/unit/src/com/android/tv/recommendation/RecentChannelEvaluatorTest.java4
-rw-r--r--tests/unit/src/com/android/tv/recommendation/RecommendationUtils.java2
-rw-r--r--tests/unit/src/com/android/tv/recommendation/RecommenderTest.java5
-rw-r--r--tests/unit/src/com/android/tv/recommendation/RoutineWatchEvaluatorTest.java5
-rw-r--r--tests/unit/src/com/android/tv/ui/SetupViewTest.java6
-rw-r--r--tests/unit/src/com/android/tv/util/ImageCacheTest.java3
-rw-r--r--tests/unit/src/com/android/tv/util/ScaledBitmapInfoTest.java3
-rw-r--r--tests/unit/src/com/android/tv/util/TestUtils.java5
-rw-r--r--tests/unit/src/com/android/tv/util/TvInputManagerHelperTest.java4
-rw-r--r--tests/unit/src/com/android/tv/util/UtilsTest_GetDurationString.java2
-rw-r--r--version.mk11
1352 files changed, 6663 insertions, 13592 deletions
diff --git a/.gitignore b/.gitignore
index fb9c9811..0b3f4541 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,8 @@
+BuildConfig.java
+# Samples
+samples/SampleTvInput/
+
+# Eclipse
bin/
gen/
obj/
@@ -6,3 +11,10 @@ obj/
.project
.classpath
project.properties
+
+# Intellij
+out/
+.idea/
+*.iml
+*.iws
+build/
diff --git a/Android.mk b/Android.mk
index fbeea89b..fa917317 100644
--- a/Android.mk
+++ b/Android.mk
@@ -19,7 +19,18 @@ include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
+include $(LOCAL_PATH)/version.mk
+
+LOCAL_BUILDCONFIG_CLASS := src/com/android/tv/BuildConfig.java
+BC_OUT_DIR := $(LOCAL_PATH)
+BC_APPLICATION_ID := "com.android.tv"
+BC_VERSION_CODE := $(version_code_package)
+BC_VERSION_NAME := "$(version_name_package)"
+include $(LOCAL_PATH)/buildconfig.mk
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src) \
+ $(LOCAL_BUILDCONFIG_CLASS)
+
LOCAL_PACKAGE_NAME := TV
# It is required for com.android.providers.tv.permission.ALL_EPG_DATA
@@ -39,9 +50,10 @@ LOCAL_STATIC_JAVA_LIBRARIES := \
android-support-v17-leanback \
tv-common
+
LOCAL_JAVACFLAGS := -Xlint:deprecation -Xlint:unchecked
-include $(LOCAL_PATH)/version.mk
+
LOCAL_AAPT_FLAGS := --auto-add-overlay \
--extra-packages android.support.v7.recyclerview \
--extra-packages android.support.v17.leanback \
@@ -49,5 +61,9 @@ LOCAL_AAPT_FLAGS := --auto-add-overlay \
--version-code $(version_code_package) \
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
+
+
+
include $(BUILD_PACKAGE)
+
include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 427ff3b1..2fcba3de 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -124,5 +124,6 @@
android:resource="@xml/tv_content_rating_systems" />
</receiver>
+
</application>
</manifest>
diff --git a/buildconfig.mk b/buildconfig.mk
new file mode 100644
index 00000000..93fcbcb0
--- /dev/null
+++ b/buildconfig.mk
@@ -0,0 +1,43 @@
+#
+# 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.
+#
+
+# Emulate gradles BuildConfig.java
+
+ifeq "$(TARGET_BUILD_VARIANT)" "eng"
+ BC_DEBUG_STATUS := "true"
+else ifeq "$(TARGET_BUILD_VARIANT)" "userdebug"
+ BC_DEBUG_STATUS := "true"
+else
+ BC_DEBUG_STATUS := "false"
+endif
+
+ifeq "$(TARGET_BUILD_VARIANT)" "eng"
+ BC_ENG_STATUS := "true"
+else
+ 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:
diff --git a/common/Android.mk b/common/Android.mk
index 71d94781..7ee4e043 100644
--- a/common/Android.mk
+++ b/common/Android.mk
@@ -8,4 +8,7 @@ LOCAL_MODULE := tv-common
LOCAL_MODULE_TAGS := optional
LOCAL_SDK_VERSION := current
+LOCAL_STATIC_JAVA_LIBRARIES := \
+ android-support-annotations \
+
include $(BUILD_STATIC_JAVA_LIBRARY)
diff --git a/common/src/com/android/tv/common/TvCommonConstants.java b/common/src/com/android/tv/common/TvCommonConstants.java
index bdbd8771..6b2cf14a 100644
--- a/common/src/com/android/tv/common/TvCommonConstants.java
+++ b/common/src/com/android/tv/common/TvCommonConstants.java
@@ -27,31 +27,10 @@ public final class TvCommonConstants {
*/
public static final String EXTRA_APP_LINK_CHANNEL_URI = "app_link_channel_uri";
- private static int sPreviewSdkInt;
- static {
- try {
- sPreviewSdkInt = Build.VERSION.PREVIEW_SDK_INT;
- } catch (java.lang.NoSuchFieldError e) {
- sPreviewSdkInt = 0;
- }
- }
-
- /**
- * A flag whether this platform is MNC Preview or not.
- */
- public static final boolean IS_MNC_PREVIEW =
- Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP_MR1 && sPreviewSdkInt > 0;
-
- /**
- * A flag whether this platform is after MNC Preview or not.
- */
- public static final boolean IS_MNC_OR_HIGHER = Build.VERSION.SDK_INT >= 23;
-
/**
* A flag whether this platform supports time shifting API or not.
- * TODO: Stop supporting mnc preview if possible.
*/
- public static final boolean HAS_TIME_SHIFT_API = IS_MNC_PREVIEW || IS_MNC_OR_HIGHER;
+ public static final boolean HAS_TIME_SHIFT_API = Build.VERSION.SDK_INT >= 23;
private TvCommonConstants() {
}
diff --git a/common/src/com/android/tv/common/WeakHandler.java b/common/src/com/android/tv/common/WeakHandler.java
new file mode 100644
index 00000000..188f20ec
--- /dev/null
+++ b/common/src/com/android/tv/common/WeakHandler.java
@@ -0,0 +1,81 @@
+/*
+ * 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.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.support.annotation.NonNull;
+
+import java.lang.ref.WeakReference;
+
+/**
+ * A Handler that keeps a {@link WeakReference} to an object.
+ *
+ * <p>Use this to prevent leaking an Activity or other Context while messages are still pending.
+ * When you extend this class you <strong>MUST NOT</strong> use a non static inner class, or the
+ * containing object will still be leaked.
+ *
+ * <p>See <a href="http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html">
+ * Avoiding memory leaks</a>.
+ */
+public abstract class WeakHandler<T> extends Handler {
+ private final WeakReference<T> mRef;
+
+ /**
+ * Constructs a new handler with a weak reference to the given referent using the provided
+ * Looper instead of the default one.
+ *
+ * @param looper The looper, must not be null.
+ * @param ref the referent to track
+ */
+ public WeakHandler(@NonNull Looper looper, T ref) {
+ super(looper);
+ mRef = new WeakReference<>(ref);
+ }
+
+ /**
+ * Constructs a new handler with a weak reference to the given referent.
+ *
+ * @param ref the referent to track
+ */
+ public WeakHandler(T ref) {
+ mRef = new WeakReference<>(ref);
+ }
+
+ /**
+ * Calls {@link #handleMessage(Message, Object)} if the WeakReference is not cleared.
+ */
+ @Override
+ public final void handleMessage(Message msg) {
+ T referent = mRef.get();
+ if (referent == null) {
+ return;
+ }
+ handleMessage(msg, referent);
+ }
+
+ /**
+ * Subclasses must implement this to receive messages.
+ *
+ * <p>If the WeakReference is cleared this method will no longer be called.
+ *
+ * @param msg the message to handle
+ * @param referent the referent. Guaranteed to be non null.
+ */
+ protected abstract void handleMessage(Message msg, @NonNull T referent);
+}
diff --git a/proguard.flags b/proguard.flags
index a72b60f4..0900d498 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -14,6 +14,36 @@
# limitations under the License.
#
+# Following libraries contain references to newer platform versions.
+# Don't warn about those in case this app is linking against an older
+# platform version. We know about them, and they are safe.
+-dontwarn android.support.**
+-dontwarn com.ibm.icu.**
+-dontwarn com.google.android.exoplayer.**
+-dontwarn com.google.android.usbtuner.**
+-dontwarn com.google.android.tv.dvr.**
+
+# This is due to legacy API katniss is referencing. Seems safe.
+-dontwarn com.google.android.volley.**
+-dontwarn com.google.android.common.**
+
+# Keep the methods called from native code.
+-keepclasseswithmembers class com.google.android.usbtuner.UsbTunerInterface {
+ int openDvbFrontEndFd();
+ int openDvbDemuxFd();
+ int openDvbDvrFd();
+}
+-keepclasseswithmembers class com.google.android.usbtuner.*DataSource {
+ int readAt(long, byte[], int, int);
+ long getSize();
+ void close();
+}
+# For software AC3 decoding
+-keepclasseswithmembers class com.google.android.ssplayer.sink.FFmpegAc3Decoder {
+ long mNativeContext;
+ void decodeDone(java.nio.ByteBuffer, long);
+}
+
# For tests
-keep @android.support.annotation.VisibleForTesting class *
-keepclasseswithmembers class * {
diff --git a/res/layout/intro_dialog.xml b/res/layout/intro_dialog.xml
index 4385a0ab..e5a6d5dd 100644
--- a/res/layout/intro_dialog.xml
+++ b/res/layout/intro_dialog.xml
@@ -20,8 +20,12 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/intro"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/setup_background">
+ android:layout_height="match_parent">
+ <View
+ android:id="@+id/background"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/setup_background" />
<RelativeLayout
android:id="@+id/container"
android:layout_width="match_parent"
diff --git a/res/layout/item_list.xml b/res/layout/item_list.xml
index f9492576..c06b29a0 100644
--- a/res/layout/item_list.xml
+++ b/res/layout/item_list.xml
@@ -15,33 +15,15 @@
~ limitations under the License.
-->
-<com.android.tv.menu.ItemListRowView xmlns:android="http://schemas.android.com/apk/res/android"
+<com.android.tv.menu.ItemListRowView
+ xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:lb="http://schemas.android.com/apk/res-auto"
android:id="@+id/item_list"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:clipChildren="false"
- android:clipToPadding="false"
- android:focusable="true"
- android:descendantFocusability="afterDescendants">
+ style="@style/menu_row_view">
- <!-- Although the text leading can be changed accroding to the text size,
- we decided to set fixed layout_height since it doesn't make a big difference,
- and it makes code more simpler. -->
<TextView
android:id="@+id/title"
- android:layout_width="@dimen/menu_row_title_width"
- android:layout_height="@dimen/menu_row_title_height"
- android:layout_gravity="start"
- android:paddingBottom="@dimen/menu_row_title_padding_bottom"
- android:fontFamily="@string/condensed_font"
- android:gravity="start|bottom"
- android:textAlignment="viewStart"
- android:textColor="@color/menu_row_title"
- android:textSize="@dimen/menu_row_title_text_size_deselected"
- android:transformPivotX="@dimen/menu_row_title_transform_pivot_x"
- android:transformPivotY="@dimen/menu_row_title_transform_pivot_y" />
+ style="@style/menu_row_title_view" />
<!-- The animation of this view includes an alpha animation, while one of its child is scaled
to out of bounds of this view. This results in visual artifacts while animating, because
@@ -53,15 +35,7 @@
The accurate layout height is set in MenuRowView.onBind(). -->
<android.support.v17.leanback.widget.HorizontalGridView
android:id="@+id/list_view"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/menu_list_margin_top"
- android:layout_marginBottom="@dimen/menu_list_margin_bottom"
- android:layout_marginStart="@dimen/menu_list_margin_start"
- android:layout_marginEnd="@dimen/menu_list_margin_end"
- android:paddingTop="@dimen/menu_list_padding_top"
- android:paddingStart="@dimen/menu_list_padding_start"
- android:paddingEnd="@dimen/menu_list_padding_end"
+ style="@style/menu_row_contents_view"
android:clipChildren="false"
android:clipToPadding="false"
android:focusable="true"
diff --git a/res/layout/menu.xml b/res/layout/menu.xml
index 8882f9de..88362c31 100644
--- a/res/layout/menu.xml
+++ b/res/layout/menu.xml
@@ -22,22 +22,18 @@
android:id="@+id/menu"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:layout_marginTop="@dimen/menu_enter_offset_y_negative"
- android:paddingBottom="@dimen/menu_padding_bottom"
- android:clipChildren="false"
- android:clipToPadding="false"
+ android:layout_marginTop="@dimen/menu_margin_top"
android:background="@drawable/menu_background"
android:visibility="gone">
- <android.support.v17.leanback.widget.VerticalGridView
- android:id="@+id/menu_list"
- android:layout_width="match_parent"
- android:layout_height="@dimen/menu_height"
- android:layout_gravity="bottom"
- android:paddingStart="@dimen/menu_padding_start"
- android:paddingEnd="@dimen/menu_padding_end"
- android:clipChildren="false"
- android:clipToPadding="false"
- android:focusable="true" />
+ <!-- Temporary TextView's are used for the animation. -->
+ <TextView
+ android:id="@+id/temp_title_for_old"
+ style="@style/menu_row_title_view"
+ android:visibility="gone" />
+ <TextView
+ android:id="@+id/temp_title_for_current"
+ style="@style/menu_row_title_view"
+ android:visibility="gone" />
</com.android.tv.menu.MenuView>
diff --git a/res/layout/play_controls.xml b/res/layout/play_controls.xml
index 2354ad5e..419fd0c2 100644
--- a/res/layout/play_controls.xml
+++ b/res/layout/play_controls.xml
@@ -15,39 +15,11 @@
~ limitations under the License.
-->
-<com.android.tv.menu.PlayControlsRowView xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:clipChildren="false"
- android:clipToPadding="false"
- android:focusable="true"
- android:descendantFocusability="afterDescendants">
-
- <!-- Although the text leading can be changed accroding to the text size,
- we decided to set fixed layout_height since it doesn't make a big difference,
- and it makes code more simpler. -->
+<com.android.tv.menu.PlayControlsRowView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ style="@style/menu_row_view">
<TextView
android:id="@+id/title"
- android:layout_width="@dimen/menu_row_title_width"
- android:layout_height="@dimen/menu_row_title_height"
- android:paddingBottom="@dimen/menu_row_title_padding_bottom"
- android:fontFamily="@string/condensed_font"
- android:textAlignment="viewStart"
- android:gravity="start|bottom"
- android:textColor="@color/menu_row_title"
- android:textSize="@dimen/menu_row_title_text_size_deselected"
- android:transformPivotX="@dimen/menu_row_title_transform_pivot_x"
- android:transformPivotY="@dimen/menu_row_title_transform_pivot_y"
- android:text="@string/menu_title_play_controls" />
-
- <!-- The animation of this view includes an alpha animation, while one of its child is scaled
- to out of bounds of this view. This results in visual artifacts while animating, because
- alpha animation only occurs within the bounds of the view.
-
- To work around, this view takes up extra space up to its neighbors using negative margins,
- and compensate the same space with padding.
- -->
- <include layout="@layout/play_controls_contents"/>
-
+ style="@style/menu_row_title_view" />
+ <include layout="@layout/play_controls_contents" />
</com.android.tv.menu.PlayControlsRowView>
diff --git a/res/layout/play_controls_contents.xml b/res/layout/play_controls_contents.xml
index 5b9b333d..2f17b9f6 100644
--- a/res/layout/play_controls_contents.xml
+++ b/res/layout/play_controls_contents.xml
@@ -15,165 +15,149 @@
~ limitations under the License.
-->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/play_controls"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/menu_list_margin_top"
- android:layout_marginBottom="@dimen/menu_list_margin_bottom"
- android:layout_marginStart="@dimen/menu_list_margin_start"
- android:layout_marginEnd="@dimen/menu_list_margin_end"
- android:layoutDirection="ltr"
- android:paddingTop="@dimen/menu_list_padding_top"
- android:paddingBottom="@dimen/menu_list_padding_bottom"
- android:paddingStart="@dimen/menu_list_padding_start"
- android:paddingEnd="@dimen/menu_list_padding_end"
- android:clipChildren="false"
- android:clipToPadding="false">
+ style="@style/menu_row_contents_view"
+ android:layoutDirection="ltr">
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
+ <TextView
+ android:id="@+id/time_text"
+ android:layout_width="@dimen/play_controls_time_width"
+ android:layout_height="wrap_content"
+ android:layout_alignParentTop="true"
+ android:layout_alignStart="@+id/body"
+ android:layout_marginBottom="@dimen/play_controls_time_bottom_margin"
+ android:gravity="center"
+ android:singleLine="true"
+ android:textColor="@color/play_controls_time_text_color"
+ android:textSize="@dimen/play_controls_time_text_size"
+ android:fontFamily="@string/font" />
- <TextView
- android:id="@+id/time_text"
- android:layout_width="@dimen/play_controls_time_width"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:layout_alignStart="@+id/body"
- android:layout_marginBottom="@dimen/play_controls_time_bottom_margin"
- android:gravity="center"
- android:singleLine="true"
- android:textColor="@color/play_controls_time_text_color"
- android:textSize="@dimen/play_controls_time_text_size"
- android:fontFamily="@string/font" />
+ <LinearLayout
+ android:id="@id/body"
+ android:orientation="vertical"
+ android:layout_width="@dimen/play_controls_width"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/time_text"
+ android:layout_centerHorizontal="true"
+ android:background="@drawable/play_controls_body_shape">
+
+ <RelativeLayout
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/play_controls_progress_height">
+
+ <ImageView
+ android:id="@+id/timeline_bg_start"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:layout_alignParentStart="true"
+ android:src="@color/play_controls_progress_bar_background" />
+ <ImageView
+ android:id="@+id/watched"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:layout_toEndOf="@id/timeline_bg_start"
+ android:src="@color/play_controls_progress_bar_watched" />
+ <ImageView
+ android:id="@+id/buffered"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:layout_toEndOf="@id/watched"
+ android:src="@color/play_controls_progress_bar_buffered" />
+ <ImageView
+ android:id="@+id/timeline_bg_end"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:layout_alignParentEnd="true"
+ android:layout_toEndOf="@id/buffered"
+ android:src="@color/play_controls_progress_bar_background" />
+
+ </RelativeLayout>
- <LinearLayout
- android:id="@id/body"
- android:orientation="vertical"
- android:layout_width="@dimen/play_controls_width"
+ <FrameLayout
+ android:id="@+id/background"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_below="@id/time_text"
- android:layout_centerHorizontal="true"
- android:background="@drawable/play_controls_body_shape">
+ android:background="@drawable/play_controls_body_background">
+
+ <TextView
+ android:id="@+id/program_start_time"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="@dimen/play_controls_program_time_margin_start"
+ android:layout_marginTop="@dimen/play_controls_program_time_margin_top"
+ android:singleLine="true"
+ android:textColor="@color/play_controls_rec_time_text_color"
+ android:textSize="@dimen/play_controls_rec_time_text_size"
+ android:fontFamily="@string/font" />
+ <TextView
+ android:id="@+id/program_end_time"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginEnd="@dimen/play_controls_program_time_margin_end"
+ android:layout_marginTop="@dimen/play_controls_program_time_margin_top"
+ android:layout_gravity="end"
+ android:singleLine="true"
+ android:textColor="@color/play_controls_rec_time_text_color"
+ android:textSize="@dimen/play_controls_rec_time_text_size"
+ android:fontFamily="@string/font" />
- <RelativeLayout
- android:layout_width="match_parent"
- android:layout_height="@dimen/play_controls_progress_height">
+ <LinearLayout
+ android:id="@+id/play_control_bar"
+ android:orientation="horizontal"
+ android:layout_width="wrap_content"
+ android:layout_height="@dimen/play_controls_button_height"
+ android:layout_gravity="center">
- <ImageView
- android:id="@+id/timeline_bg_start"
- android:layout_width="wrap_content"
+ <com.android.tv.menu.PlayControlsButton
+ android:id="@+id/jump_previous"
+ android:layout_width="@dimen/play_controls_button_width"
+ android:layout_height="match_parent" />
+ <com.android.tv.menu.PlayControlsButton
+ android:id="@+id/rewind"
+ android:layout_width="@dimen/play_controls_button_width"
android:layout_height="match_parent"
- android:layout_alignParentStart="true"
- android:src="@color/play_controls_progress_bar_background" />
- <ImageView
- android:id="@+id/watched"
- android:layout_width="wrap_content"
+ android:layout_marginStart="@dimen/play_controls_button_start_margin" />
+ <com.android.tv.menu.PlayControlsButton
+ android:id="@+id/play_pause"
+ android:layout_width="@dimen/play_controls_button_width"
android:layout_height="match_parent"
- android:layout_toEndOf="@id/timeline_bg_start"
- android:src="@color/play_controls_progress_bar_watched" />
- <ImageView
- android:id="@+id/buffered"
- android:layout_width="wrap_content"
+ android:layout_marginStart="@dimen/play_controls_button_start_margin" />
+ <com.android.tv.menu.PlayControlsButton
+ android:id="@+id/fast_forward"
+ android:layout_width="@dimen/play_controls_button_width"
android:layout_height="match_parent"
- android:layout_toEndOf="@id/watched"
- android:src="@color/play_controls_progress_bar_buffered" />
- <ImageView
- android:id="@+id/timeline_bg_end"
- android:layout_width="wrap_content"
+ android:layout_marginStart="@dimen/play_controls_button_start_margin" />
+ <com.android.tv.menu.PlayControlsButton
+ android:id="@+id/jump_next"
+ android:layout_width="@dimen/play_controls_button_width"
android:layout_height="match_parent"
- android:layout_alignParentEnd="true"
- android:layout_toEndOf="@id/buffered"
- android:src="@color/play_controls_progress_bar_background" />
+ android:layout_marginStart="@dimen/play_controls_button_start_margin" />
- </RelativeLayout>
+ </LinearLayout>
- <FrameLayout
- android:id="@+id/background"
- android:layout_width="match_parent"
+ <TextView
+ android:id="@+id/unavailable_text"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:background="@drawable/play_controls_body_background">
+ android:layout_gravity="center"
+ android:singleLine="true"
+ android:textColor="@color/play_controls_unavailable_message_text_color"
+ android:textSize="@dimen/play_controls_unavailable_message_text_size"
+ android:fontFamily="@string/font"
+ android:visibility="gone"
+ android:text="@string/play_controls_unavailable" />
+ </FrameLayout>
+ </LinearLayout>
- <TextView
- android:id="@+id/program_start_time"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginStart="@dimen/play_controls_program_time_margin_start"
- android:layout_marginTop="@dimen/play_controls_program_time_margin_top"
- android:singleLine="true"
- android:textColor="@color/play_controls_rec_time_text_color"
- android:textSize="@dimen/play_controls_rec_time_text_size"
- android:fontFamily="@string/font" />
- <TextView
- android:id="@+id/program_end_time"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginEnd="@dimen/play_controls_program_time_margin_end"
- android:layout_marginTop="@dimen/play_controls_program_time_margin_top"
- android:layout_gravity="end"
- android:singleLine="true"
- android:textColor="@color/play_controls_rec_time_text_color"
- android:textSize="@dimen/play_controls_rec_time_text_size"
- android:fontFamily="@string/font" />
-
- <LinearLayout
- android:id="@+id/play_control_bar"
- android:orientation="horizontal"
- android:layout_width="wrap_content"
- android:layout_height="@dimen/play_controls_button_height"
- android:layout_gravity="center">
-
- <com.android.tv.menu.PlayControlsButton
- android:id="@+id/jump_previous"
- android:layout_width="@dimen/play_controls_button_width"
- android:layout_height="match_parent" />
- <com.android.tv.menu.PlayControlsButton
- android:id="@+id/rewind"
- android:layout_width="@dimen/play_controls_button_width"
- android:layout_height="match_parent"
- android:layout_marginStart="@dimen/play_controls_button_start_margin" />
- <com.android.tv.menu.PlayControlsButton
- android:id="@+id/play_pause"
- android:layout_width="@dimen/play_controls_button_width"
- android:layout_height="match_parent"
- android:layout_marginStart="@dimen/play_controls_button_start_margin" />
- <com.android.tv.menu.PlayControlsButton
- android:id="@+id/fast_forward"
- android:layout_width="@dimen/play_controls_button_width"
- android:layout_height="match_parent"
- android:layout_marginStart="@dimen/play_controls_button_start_margin" />
- <com.android.tv.menu.PlayControlsButton
- android:id="@+id/jump_next"
- android:layout_width="@dimen/play_controls_button_width"
- android:layout_height="match_parent"
- android:layout_marginStart="@dimen/play_controls_button_start_margin" />
-
- </LinearLayout>
-
- <TextView
- android:id="@+id/unavailable_text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:singleLine="true"
- android:textColor="@color/play_controls_unavailable_message_text_color"
- android:textSize="@dimen/play_controls_unavailable_message_text_size"
- android:fontFamily="@string/font"
- android:visibility="gone"
- android:text="@string/play_controls_unavailable" />
- </FrameLayout>
- </LinearLayout>
-
- <ImageView
- android:id="@+id/time_indicator"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/play_controls_time_indicator_top_margin"
- android:layout_alignTop="@id/body"
- android:layout_alignStart="@id/body"
- android:background="@drawable/play_controls_time_indicator"
- android:visibility="invisible"
- android:elevation="1dp" />
- </RelativeLayout>
-</FrameLayout>
+ <ImageView
+ android:id="@+id/time_indicator"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="@dimen/play_controls_time_indicator_top_margin"
+ android:layout_alignTop="@id/body"
+ android:layout_alignStart="@id/body"
+ android:background="@drawable/play_controls_time_indicator"
+ android:visibility="invisible"
+ android:elevation="1dp" />
+</RelativeLayout>
diff --git a/res/layout/program_guide.xml b/res/layout/program_guide.xml
index 3ad12afb..dd28da59 100644
--- a/res/layout/program_guide.xml
+++ b/res/layout/program_guide.xml
@@ -20,7 +20,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/program_guide_scrim"
- android:visibility="invisible">
+ android:visibility="gone">
<include layout="@layout/program_guide_side_panel" />
<include layout="@layout/program_guide_table" />
diff --git a/res/layout/setup_dialog.xml b/res/layout/setup_dialog.xml
index c3f8205a..855e9a71 100644
--- a/res/layout/setup_dialog.xml
+++ b/res/layout/setup_dialog.xml
@@ -18,20 +18,27 @@
<com.android.tv.ui.SetupView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/setup_background">
+ android:layout_height="match_parent">
+ <View
+ android:id="@+id/background"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@color/setup_background" />
+ <!-- clipChildern:false is given for item animations in input_list view. -->
<LinearLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:clipChildren="false"
android:orientation="horizontal" >
<LinearLayout
+ android:id="@+id/setup_left"
android:layout_width="592dp"
android:layout_height="match_parent"
android:paddingStart="56dp"
android:paddingEnd="32dp"
android:paddingTop="183dp"
- android:orientation="vertical" >
+ android:orientation="vertical">
<TextView
android:id="@+id/setup_title"
android:layout_width="match_parent"
@@ -46,7 +53,7 @@
android:layout_height="match_parent"
android:fontFamily="@string/font"
android:textColor="@color/setup_description"
- android:textSize="14sp"/>
+ android:textSize="14sp" />
</LinearLayout>
<android.support.v17.leanback.widget.VerticalGridView
android:id="@+id/input_list"
diff --git a/res/values-af-v23/strings.xml b/res/values-af-v23/strings.xml
new file mode 100644
index 00000000..bd56bdf7
--- /dev/null
+++ b/res/values-af-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Kanale"</string>
+</resources>
diff --git a/res/values-af/rating_system_strings.xml b/res/values-af/rating_system_strings.xml
index 2b950758..1d09ef52 100644
--- a/res/values-af/rating_system_strings.xml
+++ b/res/values-af/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Dwelms"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Seks"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Geweld"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Dwelms"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Seks"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Geweld"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Frans"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Suggestiewe dialoog"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Vuil taal"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Seksuele inhoud"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Geweld"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Fantasiegeweld"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Hierdie program is ontwerp om geskik vir alle kinders te wees."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Hierdie program is ontwerp vir kinders van 7 jaar of ouer."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Die meeste ouers sal hierdie program as geskik is vir alle ouderdomme beskou."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Hierdie program bevat kykstof wat ouers dalk as onvanpas vir jonger kinders sal beskou. Baie ouers sal dalk verkies om dit saam met hul jonger kinders te kyk."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Hierdie program bevat kykstof wat baie ouers as onvanpas vir kinders jonger as 14 jaar sal beskou."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Hierdie program is spesifiek ontwerp om deur volwassenes gekyk te word en kan daarom onvanpas wees vir kinders onder 17."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Fliekgraderings"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Algemene gehore. Niks wat ouers aanstoot sal gee as kinders dit kyk nie."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Ouerleiding word aanbeveel. Bevat moontlik kykstof wat ouers nie as geskik vir hul kinders sal beskou nie."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Ouers word sterk gewaarsku. Kykstof kan moontlik onvanpas vir preadolessente wees."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Beperk. Bevat \'n mate van kykstof vir volwassenes. Ouers word versoek om meer oor die rolprent uit te vind voordat hulle hul jong kinders saamneem."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Niemand van 17 of jonger word toegelaat nie. Duidelik volwasse. Kinders word nie toegelaat nie."</string>
</resources>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index e0526b6f..54162822 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Speelkontroles"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Kanale"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Onlangse kanale"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Onlangse kanale"</string>
<string name="menu_title_options" msgid="7184594626814914022">"TV-opsies"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP-opsies"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Speelkontroles onbeskikbaar vir hierdie kanaal"</string>
diff --git a/res/values-am-v23/strings.xml b/res/values-am-v23/strings.xml
new file mode 100644
index 00000000..3275a85d
--- /dev/null
+++ b/res/values-am-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"ሰርጦች"</string>
+</resources>
diff --git a/res/values-am/rating_system_strings.xml b/res/values-am/rating_system_strings.xml
index 77c1b659..ac9696c4 100644
--- a/res/values-am/rating_system_strings.xml
+++ b/res/values-am/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"አደገኛ መድሃኒቶች"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"ወሲብ"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"ጥቃት"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"አደገኛ መድሃኒቶች"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"ወሲብ"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"ጥቃት"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"ፈረንሳይኛ"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"ስሜት ቀስቃሽ ንግግር"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"ከባድ ቋንቋ"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"ወሲባዊ ይዘት"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"ጥቃት"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"ምናባዊ ጥቃት"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"ይህ ፕሮግራም ለሁሉም ልጆች ተገቢ እንዲሆን የተነደፈ ነው።"</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"ይህ ፕሮግራም ዕድሜያቸው 7 ዓመት እና ከዚያ በላይ ለሆኑ ልጆች ተገቢ እንዲሆን የተነደፈ ነው።"</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"አብዛኛዎቹ ወላጆች ይህ ፕሮግራም ለሁሉም ዕድሜ ተገቢ ሆኖ ያገኙታል።"</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"ይህን ፕሮግራም ወላጆች ለልጆች ተገቢ ያልሆነ ይዘት አካትቶ ሊያገኙት ይችላሉ። ብዙ ወላጆች ከልጆቻቸው ጋር አብረው ሆነው ማየት ሊፈልጉ ይችላሉ።"</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"ይህ ፕሮግራም ብዙ ወላጆች ዕድሜያቸው ከ14 ዓመት በታች ለሆኑ ልጆች ተገቢ እንደማይሆኑ የሚያገኟቸው አንዳንድ ይዘቶች አሉት።"</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"ይህ ፕሮግራም በአዋቂዎች ለመታየት ተብሎ የተነደፈ ነው፣ ስለዚህ ዕድሜያቸው ከ17 ዓመት በታች ለሆኑ ልጆች ተገቢ ላይሆን ይችላል።"</string>
<string name="title_us_mv" msgid="7861766023361439035">"የፊልም ደረጃዎች"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"አጠቃላይ ታዳሚዎች። ልጆች ቢያዩት ወላጆችን የማያስቀይም።"</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"የወላጅ ክትትል ይመከራል። ወላጆች ታዳጊ ልጆቻቸው እንዲያዩት የማይፈልጉት ይዘቶችን አካትቶ ሊሆን ይችላል።"</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"ወላጆች በጥብቅ ይጠንቀቁ። ጥቂት ይዘቶች ለታዳጊዎች ተገቢ ያልሆኑ ሊሆኑ ይችላሉ።"</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"የተገደበ፣ የተወሰነ የአዋቂ ይዘትን ያካተተ። ወላጆች ልጆቻቸውን ይዘው ከመሄዳቸው በፊት ስለፊልሙ የበለጠ እንዲያውቁ አበክረው ይመከራሉ።"</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"ዕድሜው 17 እና ከዚያ በታች የሆነ ማንም ሰው መግባት አይችልም። በግልፅ የአዋቂዎች ነው። ልጆች አይፈቀድላቸውም።"</string>
</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 35bb5ee8..f11ac50d 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"ሞኖ"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"ስቲሪዮ"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"የማጫወቻ መቆጣጠሪያዎች"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"ሰርጦች"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"የቅርብ ጊዜ ሰርጦች"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"የቅርብ ጊዜ ሰርጦች"</string>
<string name="menu_title_options" msgid="7184594626814914022">"የቴሌቪዥን አማራጮች"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"የፒአይፒ አማራጮች"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"ለዚህ ሰርጥ የማጫወቻ መቆጣጠሪያዎች አይገኝም"</string>
diff --git a/res/values-ar-v23/strings.xml b/res/values-ar-v23/strings.xml
new file mode 100644
index 00000000..8d3d8f5d
--- /dev/null
+++ b/res/values-ar-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"القنوات"</string>
+</resources>
diff --git a/res/values-ar/rating_system_strings.xml b/res/values-ar/rating_system_strings.xml
index 7f348034..c95ac1cb 100644
--- a/res/values-ar/rating_system_strings.xml
+++ b/res/values-ar/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"مخدرات"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"جنس"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"عنف"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"مخدرات"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"جنس"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"عنف"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"الفرنسية"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"حوار موحي جنسيًا"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"لغة غليظة"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"محتوى جنسي"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"عنف"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"عنف خيالي"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"تم تصميم هذا البرنامج ليكون مناسبًا لجميع الأطفال."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"تم تصميم هذا البرنامج للأطفال من عمر 7 سنوات فما فوقها."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"يجد معظم الآباء هذا البرنامج مناسبًا لجميع الأعمار."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"يحتوي هذا البرنامج على مواد ربما يجدها الآباء غير مناسبة للأطفال الأصغر سنًا. وقد يرغب العديد من الآباء في مشاهدته مع أطفالهم."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"يحتوي هذا البرنامج على بعض المواد التي يجدها بعض الآباء غير مناسبة للأطفال تحت سن 14 عامًا."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"تم تصميم هذا البرنامج خصيصًا لتتم مشاهدته بواسطة البالغين ولذلك فإنه ربما يكون غير مناسب للأطفال تحت سن 17 عامًا."</string>
<string name="title_us_mv" msgid="7861766023361439035">"تقييمات الأفلام"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"للجمهور العام. لا شيء يزعج الآباء عند مشاهدة الأطفال له."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"يُوصى بالإرشاد الأبوي. قد يحتوي على بعض المواد التي قد لا يفضل الآباء عرضها على أطفالهم."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"يجب على الآباء توخي حذر شديد. قد تكون بعض المواد غير مناسبة للأطفال قبل مرحلة المراهقة."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"مقيَّد، ويحتوي على بعض المواد الخاصة بالبالغين. يُوصى بأن يطلع الآباء على مزيد من المعلومات حول الفيلم قبل اصطحاب أطفالهم معهم."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"لا يُسمح بمشاهدته للبالغين من العمر 17 عامًا أو أقل. خاص بالبالغين تمامًا. لا يُسمح بالمشاهدة للأطفال."</string>
</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 28ee4c02..0af0f788 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"أحادية"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"ستيريو"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"عناصر التحكم في التشغيل"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"القنوات"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"أحدث القنوات"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"أحدث القنوات"</string>
<string name="menu_title_options" msgid="7184594626814914022">"خيارات التلفزيون"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"‏خيارات PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"عناصر تحكم التشغيل غير متاحة لهذه القناة"</string>
diff --git a/res/values-bg-v23/strings.xml b/res/values-bg-v23/strings.xml
new file mode 100644
index 00000000..4fd7f740
--- /dev/null
+++ b/res/values-bg-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Канали"</string>
+</resources>
diff --git a/res/values-bg/rating_system_strings.xml b/res/values-bg/rating_system_strings.xml
index 55e9292d..c87674d2 100644
--- a/res/values-bg/rating_system_strings.xml
+++ b/res/values-bg/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Наркотици"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Секс"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Насилие"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Наркотици"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Секс"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Насилие"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"френски"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Диалог, предизвикващ неприлични асоциации"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Груб език"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Сексуално съдържание"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Насилие"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Въображаемо насилие"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Тази програма е създадена, за да бъде подходяща за всички деца."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Тази програма е създадена за деца на възраст над 7 години."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Повечето родители биха сметнали тази програма за подходяща за всички възрасти."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Тази програма съдържа материали, които родителите може да сметнат за неподходящи за по-малките си деца. Възможно е много родители да искат да я гледат с тях."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Тази програма съдържа материали, които много родители биха сметнали за неподходящи за деца на възраст под 14 години."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Тази програма е специално създадена, за да бъде гледана от възрастни, и затова може да не е подходяща за деца под 17 години."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Класификации на филми"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"За всички аудитории – не съдържа нищо, което родителите биха сметнали за неприемливо за гледане от деца."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Препоръчва се родителски контрол. Възможно е да съдържа материали, които родителите може да не одобрят за малките си деца."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Настоятелно предупреждение за родителите – част от материалите може да не са подходящи за деца под 13 години."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Ограничено – съдържа материали за възрастни. Препоръчва се родителите да научат повече за филма, преди да позволят на децата си да го гледат."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Не се допускат лица под 18 години. Само за възрастни. Забранено за деца."</string>
</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index c85f5210..82234947 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"моно"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"стерео"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Контроли за пускане"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Канали"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Скорошни канали"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Скорошни канали"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Опции за TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Опции за PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"За този канал няма налични контроли за възпроизвеждане"</string>
diff --git a/res/values-bn-rBD-v23/strings.xml b/res/values-bn-rBD-v23/strings.xml
new file mode 100644
index 00000000..b3134242
--- /dev/null
+++ b/res/values-bn-rBD-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"চ্যানেলগুলি"</string>
+</resources>
diff --git a/res/values-bn-rBD/rating_system_strings.xml b/res/values-bn-rBD/rating_system_strings.xml
index 39cc07be..1e93d4be 100644
--- a/res/values-bn-rBD/rating_system_strings.xml
+++ b/res/values-bn-rBD/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"ড্রাগস"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"লিঙ্গ"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"হিংস্রতা"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"ড্রাগস"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"লিঙ্গ"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"হিংস্রতা"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"ফরাসি"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"প্রস্তাবিত সংলাপ"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"অমার্জিত ভাষা"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"যৌন সামগ্রী"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"হিংস্রতা"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"কল্পনাপ্রসূত হিংস্রতা"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"এই প্রোগ্রামটিকে সব বয়সী বাচ্চাদের জন্য উপযুক্ত হিসাবে তৈরি করা হয়েছে।"</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"এই প্রোগ্রামটিকে ৭ বছর ও তার বেশি বয়সী বাচ্চাদের জন্য তৈরি করা হয়েছে।"</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"বেশিরভাগ অভিভাবক এই প্রোগ্রামটিকে সব বয়সীদের জন্য উপযুক্ত বলে মনে করবেন।"</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"এই প্রোগ্রামটিতে অল্পবয়সী বাচ্চাদের জন্য অনুপযুক্ত কিছু উপাদান রয়েছে বলে অভিভাবকরা মনে করতে পারেন৷ অনেক অভিভাবকরা তাদের অল্পবয়সী বাচ্চাদের সাথে এটি দেখতে চাইতে পারেন৷"</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"এই প্রোগ্রামে এমন কিছু উপাদান আছে যা অনেক অভিভাবক ১৪ বছরের নীচের বাচ্চাদের জন্য উপযুক্ত নয় বলে মনে করতে পারেন।"</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"এই প্রোগ্রামটিকে বিশেষভাবে প্রাপ্তবয়স্কদের দেখার জন্য তৈরি করা হয়েছে এবং তাই ১৭ বছরের নীচের বাচ্চাদের জন্য এটি উপযুক্ত নাও হতে পারে।"</string>
<string name="title_us_mv" msgid="7861766023361439035">"ফিল্ম রেটিং"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"সাধারণ দর্শকদের জন্য৷ বাচ্চারা এটি দেখলে অভিভাবকদের ক্ষুব্ধ হওয়ার মতো এতে কিছু নেই৷"</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"অভিভাবকীয় নির্দেশিকার জন্য পরামর্শ দেওয়া হয়েছে৷ এমন কিছু উপাদান থাকতে পারে যা অভিভাবকদের পছন্দ অনুযায়ী তাদের অল্পবয়সী বাচ্চাদের জন্য উপযুক্ত নাও হতে পারে৷"</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"অভিভাবকদের দৃঢ়ভাবে সতর্ক করা হচ্ছে৷ কিছু উপাদান অনুর্দ্ধ তেরো থেকে ঊনিশ বছর বয়সীদের জন্য উপযুক্ত নাও হতে পারে৷"</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"সীমাবদ্ধ করা হয়েছে, এতে কিছু প্রাপ্তবয়স্কদের উপাদান আছে৷এই চলচ্চিত্রটি বাচ্চাদের সাথে নিয়ে যাওয়ার আগে অভিভাবকদের চলচ্চিত্রটি সম্পর্কে আরো জানার জন্য অনুরোধ করা হচ্ছে৷"</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"১৭ এবং তার চেয়ে কম বয়সের কোনো ব্যক্তিকে অনুমতি দেওয়া হয়নি৷ সম্পূর্ণভাবে প্রাপ্তবয়স্কদের জন্য৷ বাচ্চাদের অনুমতি দেওয়া হয়নি৷"</string>
</resources>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index 24202cb8..a5974e1e 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"মোনো"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"স্টিরিও"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"খেলার নিয়ন্ত্রণগুলি"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"চ্যানেলগুলি"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"সাম্প্রতিক চ্যানেলগুলি"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"সাম্প্রতিক চ্যানেলগুলি"</string>
<string name="menu_title_options" msgid="7184594626814914022">"টিভি বিকল্পগুলি"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP বিকল্পগুলি"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"এই চ্যানেলটির জন্য প্লে নিয়ন্ত্রণগুলি অনুপলব্ধ"</string>
diff --git a/res/values-ca-v23/strings.xml b/res/values-ca-v23/strings.xml
new file mode 100644
index 00000000..516a8b41
--- /dev/null
+++ b/res/values-ca-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Canals"</string>
+</resources>
diff --git a/res/values-ca/rating_system_strings.xml b/res/values-ca/rating_system_strings.xml
index 5f0e0cd0..98dcfef2 100644
--- a/res/values-ca/rating_system_strings.xml
+++ b/res/values-ca/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Drogues"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sexe"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Violència"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Drogues"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sexe"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Violència"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Francès"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Diàlegs suggerents"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Llenguatge vulgar"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Contingut sexual"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Violència"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Violència fantàstica"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"El programa està concebut perquè el puguin mirar nens de totes les edats."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"El programa està concebut perquè el mirin nens a partir dels 7 anys."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"La majoria dels pares poden considerar que el programa és adequat per a totes les edats."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"El programa conté material que alguns pares poden trobar poc adequat per a nens petits, però pot ser que d\'altres sí que el considerin adequat."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"El programa conté material que molts pares poden trobar poc adequat per a nens menors de 14 anys."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"El programa s\'ha concebut específicament per al públic adult i, per tant, es pot considerar poc adequat per als nens menors de 17 anys."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Classificacions de pel·lícules"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Públic general. No té contingut que pugui resultar ofensiu per al públic menor d\'edat."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Es recomana supervisió parental. Pot contenir material que no sigui adequat per al públic infantil."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Es recomana supervisió parental. És possible que contingui material que no sigui adequat per al públic preadolescent."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Contingut restringit; conté material per a adults. Cal que els pares s\'informin sobre el contingut de la pel·lícula abans d\'anar-la a veure amb menors d\'edat."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"No apte per a menors de 18 anys. Contingut clarament per a adults i no apte per al públic menor d\'edat."</string>
</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index db0eacc1..571e8e1f 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"estèreo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Controls de reproducció"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Canals"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Canals recents"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Canals recents"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Opcions de TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Opcions de PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Els controls de reproducció no estan disponibles en aquest canal"</string>
diff --git a/res/values-cs-v23/strings.xml b/res/values-cs-v23/strings.xml
new file mode 100644
index 00000000..db4fdf2e
--- /dev/null
+++ b/res/values-cs-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Kanály"</string>
+</resources>
diff --git a/res/values-cs/rating_system_strings.xml b/res/values-cs/rating_system_strings.xml
index f3383515..fac6da1d 100644
--- a/res/values-cs/rating_system_strings.xml
+++ b/res/values-cs/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Drogy"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sex"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Násilí"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Drogy"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sex"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Násilí"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"francouzština"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Obscénní dialogy"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Hrubé výrazy"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Sexuální obsah"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Násilí"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Fiktivní násilí"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Tento program je určen pro všechny děti."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Tento program je určen pro děti od 7 let."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Tento program by většina rodičů považovala za vhodný pro všechny věkové skupiny."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Tento program obsahuje materiál, který mohou rodiče považovat za nevhodný pro mladší děti. Mnoho rodičů by si přálo, aby jejich mladší děti sledovaly tento obsah pod dohledem."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Tento program obsahuje materiál, který by mnoho rodičů považovalo za nevhodný pro děti mladší 14 let."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Tento program je určen pro dospělé, a proto může být nevhodný pro osoby mladší 17 let."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Hodnocení filmů"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Obecné publikum. Nic, co by pohoršilo rodiče, pokud by se na to dívaly jejich děti."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Je doporučen dohled rodičů. Může obsahovat materiály, které by rodiče mohli považovat za nevhodné pro malé děti."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Je důrazně doporučen dohled rodičů. Některé materiály mohou být nevhodné pro mladší třinácti let."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Omezený přístup, obsahuje materiál pouze pro dospělé. Než rodiče na film vezmou malé děti, měli by si o něm zjistit další informace."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Mládeži do 17 let nepřístupné. Jasně určeno pro dospělé. Dětem nepřístupné."</string>
</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 318e3ffd..63acd728 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Ovládání přehrávání"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Kanály"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Poslední kanály"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Poslední kanály"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Možnosti TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Možnosti PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Ovládací prvky přehrávání pro tento kanál nejsou k dispozici"</string>
diff --git a/res/values-da-v23/strings.xml b/res/values-da-v23/strings.xml
new file mode 100644
index 00000000..39ce31fc
--- /dev/null
+++ b/res/values-da-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Kanaler"</string>
+</resources>
diff --git a/res/values-da/rating_system_strings.xml b/res/values-da/rating_system_strings.xml
index ec17ff29..3b9bbd58 100644
--- a/res/values-da/rating_system_strings.xml
+++ b/res/values-da/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Stoffer"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sex"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Vold"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Stoffer"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sex"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Vold"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Fransk"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Dialog med seksuelt orienteret indhold"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Groft sprogbrug"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Seksuelt indhold"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Vold"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Fantasivold"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Dette program er beregnet til børn i alle aldre."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Dette program er beregnet til børn på syv år og op."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"De fleste forældre vil finde dette program passende for alle aldre."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Dette program indeholder materiale, som forældre kan finde upassende for mindre børn. Det kan være en god idé for forældre at se programmet sammen med deres mindre børn."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Dette program indeholder materiale, som mange forældre finder upassende for børn under 14 år."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Dette program er beregnet til voksne og kan derfor være upassende for børn under 17 år."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Filmklassificering"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Generelle målgrupper. Indeholder ikke materiale, der kan støde forældre i forbindelse med visning for børn."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Forældrevejledning anbefales. Indeholder materiale, som forældre muligvis ikke vil have, at deres mindre børn skal se."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Forældre advares kraftigt. Indeholder materiale, som kan være upassende for børn under 13 år."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Begrænset. Indeholder materiale for voksne. Forældre opfordres til at indhente flere oplysninger om filmen, før de tager mindre børn med ind at se den."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Personer på 17 år eller yngre nægtes adgang. Kun for voksne. Børn nægtes adgang."</string>
</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index f11a0e03..4a4ccf6e 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Afspilningsknapper"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Kanaler"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Seneste kanaler"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Seneste kanaler"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Tv-indstillinger"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP-muligheder"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Afspilningsstyring er ikke tilgængeligt på denne kanal"</string>
diff --git a/res/values-de-v23/strings.xml b/res/values-de-v23/strings.xml
new file mode 100644
index 00000000..0e2c190a
--- /dev/null
+++ b/res/values-de-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Kanäle"</string>
+</resources>
diff --git a/res/values-de/rating_system_strings.xml b/res/values-de/rating_system_strings.xml
index 78050e5c..543de4ac 100644
--- a/res/values-de/rating_system_strings.xml
+++ b/res/values-de/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Drogen"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sex"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Gewalt"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Drogen"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sex"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Gewalt"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Französisch"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Anzüglicher Dialog"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Derbe Sprache"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Pornografische Inhalte"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Gewalt"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Fantasiegewalt"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Diese Sendung richtet sich ohne Altersbeschränkung an alle Kinder."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Diese Sendung richtet sich an Kinder ab 7 Jahren."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Diese Sendung sollte in der Regel für alle Altersgruppen geeignet sein."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Diese Sendung ist möglicherweise für jüngere Kinder nicht geeignet. Daher wird sie von Kindern häufig unter elterlicher Aufsicht angesehen."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Diese Sendung ist für Kinder unter 14 Jahren möglicherweise nicht geeignet."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Diese Sendung richtet sich speziell an Erwachsene und ist darum für Jugendliche unter 17 Jahren möglicherweise nicht geeignet."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Altersfreigaben für Filme"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Allgemeine Zielgruppe, die Inhalte sind für Kinder geeignet."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Elterliche Aufsicht wird empfohlen. Einige Inhalte sind möglicherweise für Kinder ungeeignet."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Elterliche Aufsicht wird dringend empfohlen. Einige Inhalte sind möglicherweise für Kinder ungeeignet."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Eingeschränkt, enthält Inhalte nur für Erwachsene. Es wird dringend empfohlen, dass Eltern sich die Inhalte des Films genau ansehen, bevor sie ihren Kindern erlauben, sich ihn anzusehen."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Nicht für Kinder und Jugendliche unter 17 Jahren geeignet. Inhalte nur für Erwachsene."</string>
</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index a957f200..4a5fad19 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"Mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"Stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Wiedergabesteuerung"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Kanäle"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Letzte Kanäle"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Letzte Kanäle"</string>
<string name="menu_title_options" msgid="7184594626814914022">"TV-Optionen"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP-Optionen"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Wiedergabesteuerung für diesen Kanal nicht verfügbar"</string>
diff --git a/res/values-el-v23/strings.xml b/res/values-el-v23/strings.xml
new file mode 100644
index 00000000..4056b965
--- /dev/null
+++ b/res/values-el-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Κανάλια"</string>
+</resources>
diff --git a/res/values-el/rating_system_strings.xml b/res/values-el/rating_system_strings.xml
index dedd57ed..08a94d60 100644
--- a/res/values-el/rating_system_strings.xml
+++ b/res/values-el/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Ναρκωτικές ουσίες"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Σεξ"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Βία"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Ναρκωτικές ουσίες"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Σεξ"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Βία"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Γαλλικά"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Προκλητικοί διάλογοι"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Χυδαία γλώσσα"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Σεξουαλικό περιεχόμενο"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Βία"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Φανταστική βία"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Αυτό το πρόγραμμα έχει σχεδιαστεί για να είναι κατάλληλο για όλα τα παιδιά."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Αυτό το πρόγραμμα έχει σχεδιαστεί για παιδιά ηλικίας 7 ετών και άνω."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Οι περισσότεροι γονείς θεωρούν ότι αυτό το πρόγραμμα είναι κατάλληλο για όλες τις ηλικίες."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Αυτό το πρόγραμμα περιλαμβάνει περιεχόμενο το οποίο οι γονείς μπορεί να θεωρήσουν ότι είναι ακατάλληλο για παιδιά μικρότερης ηλικίας. Πολλοί γονείς ενδέχεται να θέλουν να το παρακολουθήσουν με τα παιδιά τους."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Αυτό το πρόγραμμα περιλαμβάνει περιεχόμενο το οποίο πολλοί γονείς θεωρούν ότι είναι ακατάλληλο για παιδιά κάτω των 14 ετών."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Αυτό το πρόγραμμα έχει σχεδιαστεί ειδικά για προβολή σε ενηλίκους και επομένως μπορεί να είναι ακατάλληλο για παιδιά κάτω των 17 ετών."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Αξιολογήσεις ταινιών"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Γενικές κατηγορίες κοινού. Το περιεχόμενο δεν προσβάλλει τους γονείς εάν το παρακολουθήσουν τα παιδιά."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Συνιστάται η καθοδήγηση του κηδεμόνα. Ενδέχεται να περιέχει υλικό το οποίο οι γονείς μπορεί να μην θεωρούν κατάλληλο για τα παιδιά τους."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Συνιστάται η προσοχή των κηδεμόνων. Μέρος του περιεχομένου ενδέχεται να είναι ακατάλληλο για παιδιά που βρίσκονται σε προεφηβική ηλικία."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Περιορισμένο. Περιέχει περιεχόμενο που απευθύνεται αποκλειστικά σε ενήλικες. Συνιστάται στους γονείς να αναζητήσουν περισσότερες πληροφορίες για την ταινία προτού την παρακολουθήσουν τα παιδιά."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Δεν προορίζεται για άτομα κάτω των 17. Αποκλειστικά για ενήλικες. Δεν επιτρέπεται η παρακολούθηση από παιδιά."</string>
</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 88d84e94..b670308d 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"μονοφων."</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"στερεοφ."</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Στοιχ. ελέγ. αναπαραγωής"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Κανάλια"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Πρόσφατα κανάλια"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Πρόσφατα κανάλια"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Επιλογές TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Επιλογές PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Τα στοιχεία ελέγχου αναπαραγωγής δεν είναι διαθέσιμα γι\' αυτό το κανάλι"</string>
diff --git a/res/values-en-rAU-v23/strings.xml b/res/values-en-rAU-v23/strings.xml
new file mode 100644
index 00000000..2cf1faf9
--- /dev/null
+++ b/res/values-en-rAU-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Channels"</string>
+</resources>
diff --git a/res/values-en-rAU/rating_system_strings.xml b/res/values-en-rAU/rating_system_strings.xml
index d1e836b3..31545fa3 100644
--- a/res/values-en-rAU/rating_system_strings.xml
+++ b/res/values-en-rAU/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Drugs"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sex"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Violence"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Drugs"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sex"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Violence"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"French"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Suggestive dialogue"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Coarse language"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Sexual content"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Violence"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Fantasy violence"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"This programme is designed to be appropriate for all children."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"This programme is designed for children aged 7 and above."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Most parents would find this programme suitable for all ages."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"This programme contains material that parents may find unsuitable for younger children. Many parents may want to watch it with their younger children."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"This programme contains some material that many parents would find unsuitable for children under 14 years of age."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"This programme is specifically designed to be viewed by adults and therefore may be unsuitable for children under 17 years of age."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Film ratings"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"General audiences. Nothing that would offend parents for viewing by children."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Parental guidance suggested. May contain some material parents might not like for their young children."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Parents strongly cautioned. Some material may be inappropriate for children under 13 years of age."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Restricted. Contains some adult material. Parents are urged to find out more about the film before taking their young children with them."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"No one under 17 years of age admitted. Clearly adult. Children are not admitted."</string>
</resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index eeb014a4..59c896cf 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Play controls"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Channels"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Recent channels"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Recent channels"</string>
<string name="menu_title_options" msgid="7184594626814914022">"TV options"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP options"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Play controls unavailable for this channel"</string>
diff --git a/res/values-en-rGB-v23/strings.xml b/res/values-en-rGB-v23/strings.xml
new file mode 100644
index 00000000..2cf1faf9
--- /dev/null
+++ b/res/values-en-rGB-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Channels"</string>
+</resources>
diff --git a/res/values-en-rGB/rating_system_strings.xml b/res/values-en-rGB/rating_system_strings.xml
index d1e836b3..31545fa3 100644
--- a/res/values-en-rGB/rating_system_strings.xml
+++ b/res/values-en-rGB/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Drugs"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sex"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Violence"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Drugs"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sex"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Violence"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"French"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Suggestive dialogue"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Coarse language"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Sexual content"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Violence"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Fantasy violence"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"This programme is designed to be appropriate for all children."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"This programme is designed for children aged 7 and above."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Most parents would find this programme suitable for all ages."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"This programme contains material that parents may find unsuitable for younger children. Many parents may want to watch it with their younger children."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"This programme contains some material that many parents would find unsuitable for children under 14 years of age."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"This programme is specifically designed to be viewed by adults and therefore may be unsuitable for children under 17 years of age."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Film ratings"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"General audiences. Nothing that would offend parents for viewing by children."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Parental guidance suggested. May contain some material parents might not like for their young children."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Parents strongly cautioned. Some material may be inappropriate for children under 13 years of age."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Restricted. Contains some adult material. Parents are urged to find out more about the film before taking their young children with them."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"No one under 17 years of age admitted. Clearly adult. Children are not admitted."</string>
</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index eeb014a4..59c896cf 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Play controls"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Channels"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Recent channels"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Recent channels"</string>
<string name="menu_title_options" msgid="7184594626814914022">"TV options"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP options"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Play controls unavailable for this channel"</string>
diff --git a/res/values-en-rIN-v23/strings.xml b/res/values-en-rIN-v23/strings.xml
new file mode 100644
index 00000000..2cf1faf9
--- /dev/null
+++ b/res/values-en-rIN-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Channels"</string>
+</resources>
diff --git a/res/values-en-rIN/rating_system_strings.xml b/res/values-en-rIN/rating_system_strings.xml
index d1e836b3..31545fa3 100644
--- a/res/values-en-rIN/rating_system_strings.xml
+++ b/res/values-en-rIN/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Drugs"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sex"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Violence"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Drugs"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sex"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Violence"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"French"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Suggestive dialogue"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Coarse language"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Sexual content"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Violence"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Fantasy violence"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"This programme is designed to be appropriate for all children."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"This programme is designed for children aged 7 and above."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Most parents would find this programme suitable for all ages."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"This programme contains material that parents may find unsuitable for younger children. Many parents may want to watch it with their younger children."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"This programme contains some material that many parents would find unsuitable for children under 14 years of age."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"This programme is specifically designed to be viewed by adults and therefore may be unsuitable for children under 17 years of age."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Film ratings"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"General audiences. Nothing that would offend parents for viewing by children."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Parental guidance suggested. May contain some material parents might not like for their young children."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Parents strongly cautioned. Some material may be inappropriate for children under 13 years of age."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Restricted. Contains some adult material. Parents are urged to find out more about the film before taking their young children with them."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"No one under 17 years of age admitted. Clearly adult. Children are not admitted."</string>
</resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index eeb014a4..59c896cf 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Play controls"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Channels"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Recent channels"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Recent channels"</string>
<string name="menu_title_options" msgid="7184594626814914022">"TV options"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP options"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Play controls unavailable for this channel"</string>
diff --git a/res/values-es-rUS-v23/strings.xml b/res/values-es-rUS-v23/strings.xml
new file mode 100644
index 00000000..885483ff
--- /dev/null
+++ b/res/values-es-rUS-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Canales"</string>
+</resources>
diff --git a/res/values-es-rUS/rating_system_strings.xml b/res/values-es-rUS/rating_system_strings.xml
index 18a0fd69..90e83090 100644
--- a/res/values-es-rUS/rating_system_strings.xml
+++ b/res/values-es-rUS/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Drogas"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sexo"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Violencia"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Drogas"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sexo"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Violencia"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Francés"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Diálogo con contenido provocativo"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Lenguaje vulgar"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Contenido sexual"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Violencia"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Violencia de fantasía"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Este programa es apto para todas las edades."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Este programa está diseñado para mayores de 7 años."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"La mayoría de los padres considerarían este programa apto para todas las edades."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Este programa contiene material que muchos padres podrían considerar no apto para menores. Los padres deberían verlo con los niños."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Este programa contiene material que muchos padres considerarían no apto para menores de 14 años."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Este programa está diseñado específicamente para espectadores adultos, por lo que podría no ser apto para menores de 17 años."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Clasificaciones de películas"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Apto para todo público. Nada que pueda ofender a los padres si lo ven los niños."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Se recomienda la supervisión de los padres. Puede contener material que algunos padres considerarían no apto para niños."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Advertencia para padres. El contenido podría no ser apto para preadolescentes."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Restringido. Contiene material para adultos. Se insta a los padres a aprender más sobre la película antes de verla con niños."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Apto para mayores de 17 años. Solo para adultos. No apto para niños."</string>
</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index f125815b..65271e71 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"estéreo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Controles de reproducción"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Canales"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Canales recientes"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Recientes"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Opciones de TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Opciones de PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Los controles de reproducción no están disponibles en este canal."</string>
diff --git a/res/values-es-v23/strings.xml b/res/values-es-v23/strings.xml
new file mode 100644
index 00000000..885483ff
--- /dev/null
+++ b/res/values-es-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Canales"</string>
+</resources>
diff --git a/res/values-es/rating_system_strings.xml b/res/values-es/rating_system_strings.xml
index 553a2d7d..63c35d36 100644
--- a/res/values-es/rating_system_strings.xml
+++ b/res/values-es/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Drogas"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sexo"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Violencia"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Drogas"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sexo"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Violencia"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Francés"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Diálogo sugerente"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Lenguaje grosero"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Contenido sexual"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Violencia"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Violencia de fantasía"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Este programa va dirigido a niños de todas las edades."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Este programa va dirigido a niños mayores de 7 años."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"La mayoría de los padres consideraría este programa apto para todas las edades."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Este programa contiene material que los padres pueden considerar inadecuado para niños pequeños. Es posible que muchos padres no quieran verlo en compañía de sus hijos menores de edad."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Este programa contiene material que muchos padres considerarían inadecuado para los menores de 14 años."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Este programa va dirigido específicamente a un público adulto y, por tanto, puede resultar inadecuado para los menores de 17 años."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Clasificaciones de películas"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Para todos los públicos. El contenido no resultaría ofensivo para los padres si lo vieran sus hijos menores de edad."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Se recomienda la supervisión de los padres. Puede contener material que los padres podrían considerar inadecuado para sus hijos menores de edad."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Advertencia importante para los padres. Parte del material puede resultar inadecuado para los preadolescentes."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Contenido restringido. Incluye material para adultos. Se insta a los padres a informarse acerca de la película antes de verla en compañía de sus hijos menores de edad."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"No apto para menores de 17 años. Contenido claramente para adultos. No apto para niños."</string>
</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 7126f404..cab1c6ac 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"estéreo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Controles de reproducción"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Canales"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Canales recientes"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Canales recientes"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Opciones de TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Opciones de PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Controles de reproducción no disponibles en este canal"</string>
diff --git a/res/values-et-rEE-v23/strings.xml b/res/values-et-rEE-v23/strings.xml
new file mode 100644
index 00000000..e981deeb
--- /dev/null
+++ b/res/values-et-rEE-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Kanalid"</string>
+</resources>
diff --git a/res/values-et-rEE/rating_system_strings.xml b/res/values-et-rEE/rating_system_strings.xml
index f66f68d0..84c92834 100644
--- a/res/values-et-rEE/rating_system_strings.xml
+++ b/res/values-et-rEE/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Narkootikumid"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Seks"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Vägivald"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Narkootikumid"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Seks"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Vägivald"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Prantsuse"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Kahemõttelise sisuga dialoog"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Vulgaarne tekst"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Seksuaalne sisu"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Vägivald"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Väljamõeldud vägivald"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"See saade on sobilik kõikidele lastele."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"See saade on mõeldud vähemalt 7-aastastele lastele."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Enamik vanemaid peaks seda saadet sobilikuks igas vanuses lastele."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"See saade sisaldab materjale, mida vanemad võivad pidada sobimatuks lastele. Vanemad soovivad tõenäoliselt seda vaadata koos lastega."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Selle saate sisu on paljude vanemate arvates sobimatu alla 14-aastastele lastele."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"See saade on mõeldud täiskasvanutele ja võib seega olla sobimatu alla 17-aastastele lastele."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Filmi hinnangud"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Üldised vaatajaskonnad. Keelatud on sisu, mida vanemad ei lubaks lastel vaadata."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Soovitatav on vanemlik järelevalve. Võib sisaldada materjali, mida lapsevanemad ei soovi väikestele lastele näidata."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Vanemlik järelevalve on tungivalt soovitatav. Teatud materjal võib olla eelteismeliste jaoks sobimatu."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Piiratud, sisaldab teatud määral täiskasvanutele mõeldud materjali. Vanematel soovitatakse enne väikese lapsega filmi vaatamist selle kohta rohkem teavet hankida."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"17-aastastele ja noorematele keelatud. Selgelt täiskasvanutele mõeldud sisu. Lastele keelatud."</string>
</resources>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index 6b008f86..76179624 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Esituse juhtnupud"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Kanalid"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Viimased kanalid"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Viimas. kanalid"</string>
<string name="menu_title_options" msgid="7184594626814914022">"TV-valikud"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP-valikud"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Esituse juhtelemendid ei ole selle kanali puhul saadaval"</string>
diff --git a/res/values-eu-rES-v23/strings.xml b/res/values-eu-rES-v23/strings.xml
new file mode 100644
index 00000000..86f40b71
--- /dev/null
+++ b/res/values-eu-rES-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Kanalak"</string>
+</resources>
diff --git a/res/values-eu-rES/rating_system_strings.xml b/res/values-eu-rES/rating_system_strings.xml
index b8d9d675..2e9cc03e 100644
--- a/res/values-eu-rES/rating_system_strings.xml
+++ b/res/values-eu-rES/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Drogak"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sexua"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Indarkeria"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Drogak"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sexua"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Indarkeria"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"frantsesa"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Elkarrizketa iradokitzailea"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Hizkera zakarra"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Eduki sexuala"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Indarkeria"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Fantasiazko indarkeria"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Haur orok ikusteko diseinatuta dago programa."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Zazpi urteko baino gehiagoko haurrek ikusteko diseinatuta dago programa."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Guraso gehienek egokitzat joko lukete programa edozer adineko haurrentzat."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Programaren edukia desegokitzat jo dezakete gurasoek gazteenentzat. Guraso askok haur gazteekin batera ikusi nahiko dute."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Programaren edukia desegokitzat jo dezakete gurasoek 14 urte baino gutxiagoko haurrentzat."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Helduentzat berariaz diseinatuta dago programa hau; beraz, baliteke desegokia izatea 17 urte baino gutxiagoko haurrentzat."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Filmen balorazioak"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Ikusle guztientzat: gurasoak ez dira irainduta sentituko haurrek ikusten dutelako."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Gurasoak bertan egotea gomendatzen da. Gurasoek haur txikiek ikustea nahi ez duten edukia egon daiteke."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Gurasoentzako abisu garrantzitsua: baliteke zenbait eduki desegokia izatea nerabeak baino gazteagoak diren haurrentzat."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Murriztuta. Helduentzako zenbait eduki du. Haurrak eraman aurretik, filmari buruzko informazioa lortzea gomendatzen zaie gurasoei."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Ezin da sartu 17 urtetik beherako inor. Helduentzat soilik. Ezin da sartu haurrik."</string>
</resources>
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
index ef9d51f7..d8fbf738 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu-rES/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"estereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Erreprodukzio-kontrolak"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Kanalak"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Azken kanalak"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Azken kanalak"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Telebistaren aukerak"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Pantaila txikia"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Erreprodukzioa kontrolatzeko aukerak ez daude erabilgarri kanal honetan"</string>
diff --git a/res/values-fa-v23/strings.xml b/res/values-fa-v23/strings.xml
new file mode 100644
index 00000000..9f785555
--- /dev/null
+++ b/res/values-fa-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"کانال‌ها"</string>
+</resources>
diff --git a/res/values-fa/rating_system_strings.xml b/res/values-fa/rating_system_strings.xml
index c38f4fe7..0e8c1cf7 100644
--- a/res/values-fa/rating_system_strings.xml
+++ b/res/values-fa/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"مواد مخدر"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"روابط جنسی"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"خشونت"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"مواد مخدر"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"روابط جنسی"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"خشونت"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"فرانسوی"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"گفتگوی وسوسه برانگیز"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"دشنام‌گویی"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"محتوای جنسی"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"خشونت"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"خشونت فانتزی"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"این برنامه طوری ساخته شده که برای بچه‌ها در هر رده سنی مناسب است."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"این برنامه برای بچه‌های ۷ سال و بالاتر ساخته شده است."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"اغلب والدین این برنامه را برای کودکان تمام سنین مناسب می‌دانند."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"این برنامه شامل مطالبی است که ممکن است والدین برای کودکان خردسال مناسب ندانند. ممکن است بسیاری از والدین بخواهند این برنامه را با فرزندان خردسالشان تماشا کنند."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"این برنامه شامل برخی از مطالبی است که بسیاری از والدین برای کودکان زیر ۱۴ سال مناسب نمی‌دانند."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"این برنامه برای تماشای بزرگسالان ساخته شده است پس ممکن است برای بچه‌های زیر ۱۷ سال نامناسب باشد."</string>
<string name="title_us_mv" msgid="7861766023361439035">"رتبه‌بندی‌های‌ فیلم"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"مخاطبان عمومی. بدون محتوایی که باعث شود والدین از تماشای برنامه با کودکانشان پشیمان شوند."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"راهنمایی والدین پیشنهاد می‌شود. ممکن است حاوی مطالبی باشد که شاید والدین برای کودکان خردسال نپسندند."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"به والدین قویاً هشدار داده می‌شود. ممکن است بعضی از مطالب برای کودکانی که به سن نوجوانی نرسیده‌اند، نامناسب باشد."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"محدود شده، حاوی مطالب ویژه بزرگسالان. از والدین درخواست می‌شود قبل از تماشای فیلم با فرزندان خردسالشان، درباره آن اطلاعات بیشتری کسب کنند."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"افراد ۱۷ سال به پایین مجاز نیستند. کاملاً بزرگسال. برای کودکان مجاز نیست."</string>
</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 876b090e..e1450109 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"مونو"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"استریو"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"کنترل‌های پخش"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"کانال‌ها"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"کانال‌های اخیر"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"کانال‌های اخیر"</string>
<string name="menu_title_options" msgid="7184594626814914022">"گزینه‌‌ تلویزیون"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"‏گزینه‌های PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"دسترسی به کنترل‌های پخش برای این کانال امکان‌پذیر نیست"</string>
diff --git a/res/values-fi-v23/strings.xml b/res/values-fi-v23/strings.xml
new file mode 100644
index 00000000..cf989eef
--- /dev/null
+++ b/res/values-fi-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Kanavat"</string>
+</resources>
diff --git a/res/values-fi/rating_system_strings.xml b/res/values-fi/rating_system_strings.xml
index b5209dde..41622490 100644
--- a/res/values-fi/rating_system_strings.xml
+++ b/res/values-fi/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Huumeet"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Seksi"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Väkivalta"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Huumeet"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Seksi"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Väkivalta"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"ranska"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Sanallisia viittauksia seksiin"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Karkea kielenkäyttö"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Seksuaalinen sisältö"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Väkivalta"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Fantasiaväkivalta"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Tämä ohjelma sopii kaikenikäisille lapsille."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Tämä ohjelma sopii 7-vuotiaille ja sitä vanhemmille."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Useimpien vanhempien mielestä tämä ohjelma sopii kaikenikäisille."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Ohjelmassa on sisältöä, joka ei vanhempien mielestä ehkä sovi pikkulapsille. Vanhempia kehotetaan katsomaan ohjelmaa lasten seurana."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Ohjelmassa on sisältöä, joka ei useiden vanhempien mielestä sovi alle 14-vuotiaille."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Tämä ohjelma on tarkoitettu aikuisille eikä siksi ehkä sovi alle 17-vuotiaille."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Elokuvien luokitukset"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Kaikille katsojille. Lapset voivat katsoa sisältöä turvallisesti."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Vanhempien valvontaa suositellaan. Osa materiaalista ei välttämättä sovi kaikkien vanhempien mielestä lapsille."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Varoitus vanhemmille. Osa sisällöstä ei välttämättä sovi alle 13-vuotiaille."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Rajoitettu, sisältää aikuisille suunnattua materiaalia. Vanhempia kehotetaan hankkimaan lisätietoja elokuvasta ennen pienille lapsille näyttämistä."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Ei alle 18-vuotiaille. Selkeästi aikuisille tarkoitettua sisältöä, ei sallittu lapsille."</string>
</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 264fe10a..3c9e5675 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Toistosäätimet"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Kanavat"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Viimeaikaiset kanavat"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Viim. kanavat"</string>
<string name="menu_title_options" msgid="7184594626814914022">"TV-asetukset"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP-asetukset"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Toistosäätimet eivät ole käytettävissä tällä kanavalla."</string>
diff --git a/res/values-fr-rCA-v23/strings.xml b/res/values-fr-rCA-v23/strings.xml
new file mode 100644
index 00000000..f0252dfb
--- /dev/null
+++ b/res/values-fr-rCA-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Chaînes"</string>
+</resources>
diff --git a/res/values-fr-rCA/rating_system_strings.xml b/res/values-fr-rCA/rating_system_strings.xml
index 42c1bc76..9630ca68 100644
--- a/res/values-fr-rCA/rating_system_strings.xml
+++ b/res/values-fr-rCA/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Drogues"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sexe"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Violence"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Drogues"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sexe"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Violence"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"français"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Dialogue suggestif"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Langage grossier"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Contenu à caractère sexuel"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Violence"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Violence dans des scènes fantastiques"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Cette émission est conçue pour des enfants de tous âges."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Cette émission est conçue pour des enfants de sept ans et plus."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"La plupart des parents considèrent cette émission adaptée à tous les âges."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Cette émission propose un contenu que les parents pourraient juger inapproprié pour de jeunes enfants. Beaucoup de parents pourraient vouloir la regarder avec leurs jeunes enfants."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Cette émission propose un contenu que de nombreux parents trouveraient inapproprié pour des enfants de moins de 14 ans."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Cette émission est destinée aux adultes. Elle peut ne pas convenir aux jeunes de moins de 17 ans."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Classements des films"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Public général. Aucun contenu que les parents ne voudraient pas présenter à leurs enfants."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Contrôle parental recommandé. Peut contenir du matériel que certains parents ne voudraient pas que leurs jeunes enfants regardent."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Mise en garde importante destinée aux parents : certaines scènes peuvent être inappropriées pour les pré-adolescents."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Soumis à une limite d\'âge, contient des scènes réservées aux adultes. Les parents sont invités à se renseigner davantage sur le film avant d\'emmener leurs jeunes enfants avec eux."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Interdit aux moins de 17 ans. Contenu clairement conçu pour les adultes. Les enfants ne sont pas admis."</string>
</resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 2c1da56b..9225be18 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stéréo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Commandes de lecture"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Chaînes"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Chaînes récentes"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Chaînes récentes"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Options télé"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Options IDI"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Les commandes de lecture ne sont pas disponibles pour cette chaîne"</string>
diff --git a/res/values-fr-v23/strings.xml b/res/values-fr-v23/strings.xml
new file mode 100644
index 00000000..f0252dfb
--- /dev/null
+++ b/res/values-fr-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Chaînes"</string>
+</resources>
diff --git a/res/values-fr/rating_system_strings.xml b/res/values-fr/rating_system_strings.xml
index e719b4f6..52539e5d 100644
--- a/res/values-fr/rating_system_strings.xml
+++ b/res/values-fr/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Drogues"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sexe"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Violence"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Drogues"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sexe"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Violence"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"français"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Dialogue suggestif"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Propos grossiers"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Contenu à caractère sexuel"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Violence"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Violence dans des scènes fantastiques"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Cette émission est adaptée à tous les enfants."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Cette émission est adaptée aux enfants de sept ans et plus."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"La plupart des parents considèrent cette émission adaptée à tous les âges."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Cette émission propose un contenu que les parents pourraient juger inapproprié pour les jeunes enfants. De nombreux parents pourraient vouloir la regarder avec leurs jeunes enfants."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Cette émission propose un contenu que de nombreux parents trouveraient inapproprié pour des enfants de moins de 14 ans."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Cette émission est spécifiquement destinée aux adultes. Elle peut ne pas convenir aux mineurs de moins de 17 ans."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Classification des films"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Tout public : aucun aspect choquant pour les parents envisageant que leurs enfants regardent ce contenu."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Contrôle parental recommandé. Les parents pourraient estimer que certains contenus ne sont pas adaptés aux jeunes enfants."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Mise en garde importante destinée aux parents : certains contenus sont susceptibles de ne pas être adaptés aux jeunes adolescents."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Soumis à une limite d\'âge, contient des scènes réservées aux adultes. Les parents sont invités à se renseigner davantage sur le film avant d\'emmener leurs jeunes enfants."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Interdit aux moins de 17 ans. Réservé aux adultes. Interdit aux enfants."</string>
</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 6bb1bae8..b9146382 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stéréo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Commandes de lecture"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Chaînes"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Chaînes récentes"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Chaînes récentes"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Options TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Options PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Commandes de lecture indisponibles pour cette chaîne."</string>
@@ -110,7 +109,7 @@
<string name="option_channels_unlock_all" msgid="6839513296447567623">"Tout débloquer"</string>
<string name="option_channels_subheader_hidden" msgid="4669425935426972078">"Chaînes masquées"</string>
<string name="option_program_restrictions" msgid="241342023067364108">"Filtrage des programmes"</string>
- <string name="option_change_pin" msgid="2881594075631152566">"Modifier le code PIN"</string>
+ <string name="option_change_pin" msgid="2881594075631152566">"Modifier le code"</string>
<string name="option_country_rating_systems" msgid="7288569813945260224">"Système de classification"</string>
<string name="option_ratings" msgid="4009116954188688616">"Notes"</string>
<string name="option_see_all_rating_systems" msgid="7702673500014877288">"Voir tous les systèmes de classification"</string>
@@ -142,7 +141,7 @@
<item quantity="other" msgid="8829550842387756054">"Vous avez saisi un code d\'accès incorrect à cinq reprises.\nVeuillez réessayer dans <xliff:g id="REMAINING_SECONDS">%1$d</xliff:g> secondes."</item>
</plurals>
<string name="pin_toast_wrong" msgid="2126295626095048746">"Ce code d\'accès est incorrect. Veuillez réessayer."</string>
- <string name="pin_toast_not_match" msgid="4283624338659521768">"Le code PIN est incorrect. Veuillez réessayer."</string>
+ <string name="pin_toast_not_match" msgid="4283624338659521768">"Le code est incorrect. Veuillez réessayer."</string>
<string name="side_panel_title_about" msgid="4572960435017168299">"À propos"</string>
<string name="about_menu_licenses" msgid="4831892908710402185">"Licences Open Source"</string>
<string name="dialog_title_licenses" msgid="4471754920475076623">"Licences Open Source"</string>
diff --git a/res/values-gl-rES-v23/strings.xml b/res/values-gl-rES-v23/strings.xml
new file mode 100644
index 00000000..7cb59c66
--- /dev/null
+++ b/res/values-gl-rES-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Canles"</string>
+</resources>
diff --git a/res/values-gl-rES/rating_system_strings.xml b/res/values-gl-rES/rating_system_strings.xml
index 4afd59cc..51857a45 100644
--- a/res/values-gl-rES/rating_system_strings.xml
+++ b/res/values-gl-rES/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Drogas"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sexo"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Violencia"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Drogas"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sexo"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Violencia"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Francés"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Diálogo insinuante"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Linguaxe vulgar"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Contido sexual"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Violencia"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Violencia ficticia"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Este programa está deseñado para ser adecuado para todos os nenos."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Este programa está deseñado para nenos de 7 anos ou máis."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"A maioría dos pais poden considerar que este programa é adecuado para todas as idades."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Este programa contén material que os pais poden considerar inadecuado para os nenos pequenos. É posible que moitos pais queiran velo cos seus fillos."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Este programa contén material que moitos pais poden considerar inadecuado para menores de 14 anos."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Este programa está especificamente deseñado para adultos e, polo tanto, pode ser inadecuado para menores de 17 anos."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Clasificacións de filmes"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Público xeral. Todo o contido que poidan ver os nenos é do agrado dos pais."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Recoméndase a supervisión parental. É posible que conteña material que aos pais non lles gustaría que visen os seus fillos pequenos."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Advírtese encarecidamente aos pais. É posible que algún material non sexa adecuado para preadolescentes."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Restrinxido. Contén algún material para adultos. Os pais deben obter máis información sobre a película antes de levar os seus fillos pequenos a vela."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Non se admiten usuarios menores de 17 anos. Destinado claramente para adultos. Non se admiten nenos."</string>
</resources>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
index b92e5e40..40d0b713 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl-rES/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"estéreo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Controis de reprodución"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Canles"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Canles recentes"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Canles recentes"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Opcións de TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Opcións de PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Os controis de reprodución non están dispoñibles nesta canle"</string>
diff --git a/res/values-hi-v23/strings.xml b/res/values-hi-v23/strings.xml
new file mode 100644
index 00000000..e400457e
--- /dev/null
+++ b/res/values-hi-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"चैनल"</string>
+</resources>
diff --git a/res/values-hi/rating_system_strings.xml b/res/values-hi/rating_system_strings.xml
index 184b84a9..6935e16b 100644
--- a/res/values-hi/rating_system_strings.xml
+++ b/res/values-hi/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"ड्रग"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"सेक्स"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"हिंसा"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"ड्रग"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"सेक्स"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"हिंसा"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"फ़्रेंच"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"अश्लील संवाद"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"अशिष्ट भाषा"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"यौन सामग्री"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"हिंसा"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"काल्पनिक हिंसा"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"यह कार्यक्रम इस प्रकार बनाया गया है कि वह सभी बच्चों के लिए उपयुक्त रहे."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"यह कार्यक्रम 7 वर्ष और इससे अधिक आयु के बच्‍चों के लिए बनाया गया है."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"अधिकांश अभिभावकों को यह कार्यक्रम सभी आयु के बच्‍चों के लिए उपयुक्त लगेगा."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"इस कार्यक्रम में ऐसी सामग्री शामिल है जो अभिभावकों को अपने छोटे बच्‍चों के लिए अनुपयुक्‍त लग सकती है. हो सकता है कई अभिभावक इसे अपने छोटे बच्‍चों के साथ बैठकर देखना चाहें."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"इस कार्यक्रम में कुछ ऐसी सामग्री शामिल है जो कई अभिभावकों को 14 वर्ष से कम आयु के बच्‍चों के लिए अनुपयुक्त लगेगी."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"यह कार्यक्रम विशेष रूप से वयस्‍कों द्वारा देखे जाने के लिए बनाया गया है और इसलिए 17 वर्ष से कम आयु वाले बच्‍चों के लिए अनुपयुक्त हो सकता है."</string>
<string name="title_us_mv" msgid="7861766023361439035">"फ़िल्म रेटिंग"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"सामान्‍य दर्शक. ऐसा कुछ नहीं है जो अभिभावकों द्वारा बच्‍चों को देखने से रोकेगा."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"अभिभावकीय मार्गदर्शक अनुशंसित है. इसमें कुछ ऐसी सामग्री हो सकती है जिसे अभिभावक अपने बच्‍चों के लिए पसंद ना करें."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"अभिभावक सख्‍ती से सावधान रहें. कुछ सामग्री किशोरवय से छोटों के लिए अनुपयुक्‍त हो सकती है."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"प्रतिबंधित, इसमें कुछ वयस्‍क सामग्री हो सकती है. अभिभावकों से आग्रह किया जाता है कि वे अपने छोटे बच्‍चों को साथ ले जाने से पहले फ़िल्‍म के बारे में अधिक जानकारी ले लें."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"17 वर्ष और उससे कम आयु वाले व्‍यक्‍ति को प्रवेश नहीं. स्‍पष्‍ट रूप से वयस्‍कों के लिए. बच्‍चों को प्रवेश की अनुमति नहीं है."</string>
</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index eff89322..9603627a 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"मोनो"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"स्टीरियो"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"चलाने के नियंत्रण"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"चैनल"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"हाल ही के चैनल"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"हाल ही के चैनल"</string>
<string name="menu_title_options" msgid="7184594626814914022">"टीवी विकल्प"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP विकल्‍प"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"इस चैनल के लिए चलाने के नियंत्रण अनुपलब्‍ध हैं"</string>
diff --git a/res/values-hr-v23/strings.xml b/res/values-hr-v23/strings.xml
new file mode 100644
index 00000000..29068cad
--- /dev/null
+++ b/res/values-hr-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Kanali"</string>
+</resources>
diff --git a/res/values-hr/rating_system_strings.xml b/res/values-hr/rating_system_strings.xml
index a343b713..40dbe04b 100644
--- a/res/values-hr/rating_system_strings.xml
+++ b/res/values-hr/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Droge"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Seks"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Nasilje"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Droge"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Seks"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Nasilje"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"francuski"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Sugestivan dijalog"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Vulgarni izrazi"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Seksualni sadržaj"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Nasilje"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Nerealno nasilje"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Emisija je primjerena za svu djecu."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Emisija je namijenjena djeci starijoj od sedam godina."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Većina roditelja smatrala bi emisiju primjerenom za sve dobne skupine."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Emisija sadrži materijale koje bi roditelji smatrali neprimjerenima za mlađu djecu. Savjetuje se da je roditelji gledaju zajedno s djecom."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Ova emisija sadrži neke materijale koje bi mnogi roditelji smatrali neprimjerenima za djecu mlađu od 14 godina."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Emisija je namijenjena odraslima, pa može biti neprimjerena za djecu mlađu od 17 godina."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Ocjene filmova"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Primjereno za sve gledatelje. Ne sadrži ništa za što bi roditelji smatrali da djeca ne smiju gledati."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Preporučuje se roditeljski nadzor. Može sadržavati materijale koje roditelji možda ne smatraju primjerenima za djecu."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Roditeljima se savjetuje oprez. Neki materijali možda nisu primjerenu za djecu predtinejdžerske dobi."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Ograničeno. Sadrži neke materijale za odrasle. Roditeljima se izričito savjetuje da saznaju više o filmu prije nego što povedu djecu sa sobom."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Zabranjen pristup mlađima od 17 godina. Samo za odrasle. Djeci je zabranjen pristup."</string>
</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 50462481..2cc8fa17 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Kontrole reprodukcije"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Kanali"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Nedavni kanali"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Nedavni kanali"</string>
<string name="menu_title_options" msgid="7184594626814914022">"TV opcije"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Opcije PIP-a"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Kontrole reprodukcije nisu dostupne za ovaj kanal"</string>
diff --git a/res/values-hu-v23/strings.xml b/res/values-hu-v23/strings.xml
new file mode 100644
index 00000000..562b87c1
--- /dev/null
+++ b/res/values-hu-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Csatornák"</string>
+</resources>
diff --git a/res/values-hu/rating_system_strings.xml b/res/values-hu/rating_system_strings.xml
index 54d23b03..aca42d1a 100644
--- a/res/values-hu/rating_system_strings.xml
+++ b/res/values-hu/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Kábítószerek"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Szex"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Erőszak"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Kábítószerek"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Szex"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Erőszak"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"francia"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Burkoltan szexuális jellegű párbeszéd"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Durva nyelvezet"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Szexuális tartalom"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Erőszak"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Kitalált erőszak-ábrázolás"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Ezt a műsort úgy készítették, hogy minden korosztály számára megfelelő legyen."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Ezt a műsort 7 éves vagy idősebb gyermekek számára készítették."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"A legtöbb szülő minden korosztály számára megfelelőnek tartaná ezt a műsort."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Ez a műsor olyan elemeket tartalmaz, amelyet a szülők fiatalabb gyermekek számára nem megfelelőnek találhatnak. Számos szülő valószínűleg szeretné felügyelni fiatal gyermekét a megtekintéskor."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"A műsorban olyan elemek találhatók, amelyeket a szülők nagy része 14 év alattiak számára nem megfelelőnek tarthat."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Ezt a műsort kifejezetten felnőtt nézők számára készítették, ezért lehetséges, hogy 17 éven aluli gyermekek számára nem megfelelő."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Filmes besorolások"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Általános közönség. Semmi olyan, amit a szülők kifogásolhatónak tarthatnak gyermekükre nézve."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Szülői felügyelet javasolt. Olyan tartalommal bírhat, amelyet a szülők kifogásolhatónak tarthatnak gyermekükre nézve."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"A szülő különös gonddal mérlegelje a film megtekintésének engedélyezését. A tartalom egy része kifogásolható lehet kiskamaszok és fiatalabbak számára."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Korhatáros, felnőtt tartalommal is bír. A szülőknek határozottan javasolt tájékozódni a filmről, mielőtt elvinnék kiskorú gyermeküket a filmre."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"17 év alattiak a filmet nem tekinthetik meg. Egyértelműen felnőtteknek szól. Kiskorúak nem tekinthetik meg."</string>
</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index c6222959..a93f9bd1 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"monó"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"sztereó"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Lejátszásvezérlők"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Csatornák"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Legutóbbi csatornák"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Legutóbbiak"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Tv beállításai"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP-beállítások"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"A lejátszási vezérlők nem érhetők el ennél a csatornánál"</string>
diff --git a/res/values-hy-rAM-v23/strings.xml b/res/values-hy-rAM-v23/strings.xml
new file mode 100644
index 00000000..774fbd3d
--- /dev/null
+++ b/res/values-hy-rAM-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Ալիքներ"</string>
+</resources>
diff --git a/res/values-hy-rAM/rating_system_strings.xml b/res/values-hy-rAM/rating_system_strings.xml
index a99dca56..e1af0c05 100644
--- a/res/values-hy-rAM/rating_system_strings.xml
+++ b/res/values-hy-rAM/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Թմրանյութեր"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Սեռական բնույթի տեսարաններ"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Բռնության տեսարաններ"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Թմրանյութեր"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Սեռական բնույթի տեսարաններ"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Բռնության տեսարաններ"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"ֆրանսերեն"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Անպարկեշտ խոսքեր"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Կոպիտ բառեր"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Սեռական բովանդակություն"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Բռնության տեսարաններ"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Բռնության տեսարաններ հրեշների մասնակցությամբ"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Այս ծրագիրը հարմար է բոլոր տարիքի երեխաների կողմից դիտելու համար:"</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Այս ծրագիրը նախատեսված է 7 և բարձր տարիքի երեխաների համար:"</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Շատ ծնողների կարծիքով այս ծրագիրը հարմար է ցանկացած տարիքի համար:"</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Այս ծրագիրը պարունակում է որոշ նյութեր, որոնք շատ ծնողների կարծիքով անցանկալի են փոքր երեխաների համար: Հնարավոր է՝ շատ ծնողներ ցանկանան դիտել այն իրենց փոքր երեխաների հետ:"</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Այս ծրագիրը պարունակում է որոշ նյութեր, որոնք շատ ծնողների կարծիքով անցանկալի են 14 տարեկանից ցածր երեխաների համար:"</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Այս ծրագիրը հատուկ ստեղծվել է մեծահասակների կողմից դիտելու համար, ուստի կարող է պարունակել անթույլատրելի բովանդակություն՝ մինչև 17 տարեկան երեխաների համար:"</string>
<string name="title_us_mv" msgid="7861766023361439035">"Ֆիլմի վարկանիշները"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Առանց տարիքային սահմանափակումների: Ծնողներիը կարող են դիտել երեխաների հետ:"</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Խորհուրդ է տրվում իրականացնել ծնողական վերահսկողություն: Կարող է պարունակել նյութեր, որոնց դիտումը փոքր երեխաների կողմից, հնարավոր է, ծնողների համար ցանկալի չլինի:"</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Ծնողները խստիվ զգուշացվում են: Որոշ նյութեր կարող են անցանկալի լինել նախապատանեկան տարիքի երեխաների կողմից դիտելու համար:"</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Ունի տարիքային սահմանափակում, քանի որ պարունակում է մեծահասակների համար նախատեսված նյութեր: Ծնողներին խորհուրդ է տրվում ավելի շատ տեղեկություններ ստանալ ֆիլմի մասին՝ նախքան իրենց փոքր երեխաների հետ այն դիտելը:"</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"17 տարեկանից փոքր անձանց կողմից դիտումն արգելված է: Նախատեսված է միայն չափահասների համար: Երեխաների մուտքն արգելված է:"</string>
</resources>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index a2994f9c..9da7cae9 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"մոնո"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"ստերեո"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Նվագարկման կառավար"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Հեռուստաալիքներ"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Վերջին վարկածները"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Վերջինները"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Հեռ. ընտրանքներ"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP ընտրանքներ"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Նվագարկման կառավարներն այս ալիքում անհասանելի են"</string>
diff --git a/res/values-in-v23/strings.xml b/res/values-in-v23/strings.xml
new file mode 100644
index 00000000..ba29d7b7
--- /dev/null
+++ b/res/values-in-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Saluran"</string>
+</resources>
diff --git a/res/values-in/rating_system_strings.xml b/res/values-in/rating_system_strings.xml
index 561a5750..5606ef0b 100644
--- a/res/values-in/rating_system_strings.xml
+++ b/res/values-in/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Obat-obatan"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Seksual"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Kekerasan"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Obat-obatan"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Seksual"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Kekerasan"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Prancis"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Dialog yang merangsang"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Bahasa yang vulgar"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Konten seksual"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Kekerasan"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Kekerasan fantasi"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Program ini didesain agar sesuai untuk semua anak."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Program ini didesain untuk anak umur 7 tahun ke atas."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Sebagian besar orang tua akan merasa program ini sesuai untuk semua usia."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Program ini berisi materi yang mungkin menurut orang tua tidak sesuai untuk anak di bawah umur. Banyak orang tua mungkin ingin menontonnya dengan anak di bawah umur."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Program ini berisi beberapa materi yang mungkin menurut orang tua tidak sesuai untuk anak di bawah 14 tahun."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Program ini didesain khusus untuk ditonton orang dewasa, dan karenanya, mungkin tidak sesuai untuk anak di bawah 17 tahun."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Rating film"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Pemirsa umum. Tidak ada yang mengkhawatirkan bagi orang tua untuk menonton bersama anak."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Sebaiknya dengan bimbingan orang tua. Mungkin berisi beberapa materi yang menurut orang tua tidak sesuai untuk anak di bawah umur."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Pengawasan orang tua sangat dianjurkan. Beberapa materi mungkin tidak sesuai untuk usia pra-remaja."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Dilarang, Berisi materi khusus dewasa. Orang tua sangat dianjurkan untuk mempelajari film terlebih dahulu sebelum membiarkan anak di bawah umur menontonnya bersama mereka."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Tidak cocok untuk usia 17 tahun ke bawah. Khusus dewasa. Tidak untuk anak-anak."</string>
</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 7d127ad7..3e0fc156 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Kontrol pemutar"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Saluran"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Saluran saat ini"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Saluran terkini"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Opsi TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Opsi PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Kontrol Play tidak tersedia untuk saluran ini"</string>
diff --git a/res/values-is-rIS-v23/strings.xml b/res/values-is-rIS-v23/strings.xml
new file mode 100644
index 00000000..2954d77b
--- /dev/null
+++ b/res/values-is-rIS-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Rásir"</string>
+</resources>
diff --git a/res/values-is-rIS/rating_system_strings.xml b/res/values-is-rIS/rating_system_strings.xml
index 26fff6e6..24900216 100644
--- a/res/values-is-rIS/rating_system_strings.xml
+++ b/res/values-is-rIS/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Eiturlyf"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Kynlíf"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Ofbeldi"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Eiturlyf"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Kynlíf"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Ofbeldi"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Franskt"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Tvíræðar samræður"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Óheflað málfar"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Kynferðislegt efni"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Ofbeldi"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Ofbeldi í ímynduðum heimi"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Þessi dagskrárliður er ætlaður öllum börnum."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Þessi dagskrárliður er ætlaður börnum 7 ára og eldri."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Flestir foreldrar myndu telja þennan dagskrárlið henta öllum aldurshópum."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Þessi dagskrárliður inniheldur efni sem foreldrar kunna að telja óviðeigandi fyrir yngri börn. Foreldrar gætu viljað horfa á hann með yngri börnum sínum."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Þessi dagskrárliður inniheldur efni sem margir foreldrar myndu telja óviðeigandi fyrir börn yngri en 14 ára."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Þessi dagskrárliður er sérstaklega ætlaður fullorðnum og kann því að vera óviðeigandi fyrir börn yngri en 17 ára."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Kvikmyndaflokkun"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Allir aldurshópar. Ekkert sem myndi fara fyrir brjóstið á foreldrum þegar börn horfa."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Áhorf með foreldrum æskilegt. Kann að innihalda efni sem foreldrum finnst ekki hæfa ungum börnum sínum."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Foreldrar eindregið varaðir við. Visst efni kann að vera óviðeigandi fyrir börn undir táningsskeiði."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Takmarkað. Inniheldur eitthvað efni ætlað fullorðnum. Foreldrar eru hvattir til að kynna sér kvikmyndina betur áður en þeir horfa á hana með ungum börnum sínum."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Bannað áhorfendum 17 ára og yngri. Klárlega fullorðinsefni. Börnum bannaður aðgangur."</string>
</resources>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
index 4591bbf0..51ea7ada 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is-rIS/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"einóma"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"víðóma"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Spilunarstýringar"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Rásir"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Nýlegar rásir"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Nýlegar rásir"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Sjónvarpskostir"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Innfelld mynd"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Spilunarstýringar eru ekki í boði fyrir þessa rás"</string>
diff --git a/res/values-it-v23/strings.xml b/res/values-it-v23/strings.xml
new file mode 100644
index 00000000..f65106e7
--- /dev/null
+++ b/res/values-it-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Canali"</string>
+</resources>
diff --git a/res/values-it/rating_system_strings.xml b/res/values-it/rating_system_strings.xml
index e3f9a6a3..f38dfbe0 100644
--- a/res/values-it/rating_system_strings.xml
+++ b/res/values-it/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Droga"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sesso"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Violenza"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Droga"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sesso"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Violenza"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"francese"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Dialoghi allusivi"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Linguaggio volgare"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Contenuti di natura sessuale"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Violenza"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Violenza di fantasia"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Questo programma è stato ideato per la visione da parte di tutti i bambini."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Questo programma è stato ideato per i bambini dai sette anni in su."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"La maggior parte dei genitori riterrebbe questo programma adatto a tutte le età."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Questo programma contiene materiale che i genitori potrebbero ritenere non adatto ai più giovani. Molti genitori riterrebbero opportuno guardarlo insieme ai loro figli più giovani."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Questo programma contiene materiale che molti genitori riterrebbero non adatto a bambini di età inferiore a 14 anni."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Questo programma è stato ideato appositamente per la visione da parte di un pubblico adulto e quindi potrebbe non essere adatto ai minori di 17 anni."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Classificazioni dei film"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Per tutti. Nessun contenuto che potrebbe offendere i genitori se venisse visto dai figli."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"È consigliata la supervisione dei genitori. Parte del materiale potrebbe non essere adatta ai bambini."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Vietato ai minori di 13 anni non accompagnati dai genitori. Parte del materiale potrebbe essere inappropriata per i preadolescenti."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Con restrizioni, contiene alcuni materiali per adulti. I genitori sono invitati a informarsi meglio sul film prima di farlo vedere ai loro bambini."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Vietato ai minori di 17 anni. Contenuti riservati alla visione da parte di un pubblico adulto e vietati ai minori."</string>
</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 526ec264..ff669579 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Controlli riproduzione"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Canali"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Canali recenti"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Canali recenti"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Opzioni TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Opzioni PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Controlli di riproduzione non disponibili per questo canale"</string>
diff --git a/res/values-iw-v23/strings.xml b/res/values-iw-v23/strings.xml
new file mode 100644
index 00000000..a55ddef5
--- /dev/null
+++ b/res/values-iw-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"ערוצים"</string>
+</resources>
diff --git a/res/values-iw/rating_system_strings.xml b/res/values-iw/rating_system_strings.xml
index 4eb2082d..caa83f4f 100644
--- a/res/values-iw/rating_system_strings.xml
+++ b/res/values-iw/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"סמים"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"מין"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"אלימות"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"סמים"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"מין"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"אלימות"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"צרפתית"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"שיח בעל רמיזות מיניות"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"שפה גסה"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"תוכן מיני"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"אלימות"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"אלימות לא מציאותית"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"התוכן בתכנית זו מותאם לצפייה על ידי ילדים בכל גיל."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"תכנית זו מיועדת לילדים מגיל 7 ומעלה."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"רוב ההורים יהיו סבורים שתכנית זו מתאימה לכל הגילאים."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"תכנית זו כוללת תוכן שהורים עשויים לחשוב שאינו מתאים לילדים צעירים. הורים רבים יעדיפו לצפות בתכנית יחד עם ילדיהם הצעירים."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"תכנית זו מכילה תוכן שהורים רבים יהיו סבורים שאינו הולם לילדים מתחת לגיל 14."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"תכנית זו מיועדת ספציפית לצפייה על ידי מבוגרים ולכן ייתכן שאינה מתאימה לילדים מתחת לגיל 17."</string>
<string name="title_us_mv" msgid="7861766023361439035">"סיווגי סרטים"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"קהל כללי. ילדים יכולים לצפות ללא התנגדות ההורים."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"השגחת הורים מומלצת. עשוי להכיל תוכן שהורים לא ירצו שילדיהם הצעירים יראו."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"אזהרה חמורה להורים. חלק מהתוכן עשוי להיות בלתי הולם לילדים לפני גילאי העשרה."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"מוגבל. מכיל תוכן למבוגרים. מומלץ להורים לקרוא עוד על הסרט לפני שייקחו את ילדיהם איתם."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"לא מתאים לגילאי 17 ומטה. למבוגרים בלבד. אין כניסה לילדים."</string>
</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index af4f89b0..73dd113a 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"מונו"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"סטריאו"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"פקדי הפעלה"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"ערוצים"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"ערוצים אחרונים"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"ערוצים אחרונים"</string>
<string name="menu_title_options" msgid="7184594626814914022">"‏אפשרויות TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"‏אפשרויות PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"פקדי הפעלה אינם זמינים בשביל הערוץ הזה"</string>
diff --git a/res/values-ja-v23/strings.xml b/res/values-ja-v23/strings.xml
new file mode 100644
index 00000000..4e74dc1c
--- /dev/null
+++ b/res/values-ja-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"チャンネル"</string>
+</resources>
diff --git a/res/values-ja/rating_system_strings.xml b/res/values-ja/rating_system_strings.xml
index 78e2794d..54446ace 100644
--- a/res/values-ja/rating_system_strings.xml
+++ b/res/values-ja/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"薬物"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"性描写"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"暴力"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"薬物"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"性描写"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"暴力"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"フランス語"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"性的なものを暗示する会話"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"下品な言葉遣い"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"性的な内容"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"暴力"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"暴力的なファンタジー"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"この番組は全年齢層のお子様を対象としています。"</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"この番組は7歳以上のお子様を対象としています。"</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"全年齢に適しているとほとんどの保護者が判断する番組です。"</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"この番組には、低年齢のお子様には不適切であると保護者が判断する可能性のあるコンテンツが含まれています。低年齢のお子様が視聴する際には同席することをおすすめします。"</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"この番組には、14歳未満のお子様には不適切であると多くの保護者が判断するコンテンツが含まれています。"</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"この番組は成人のみを対象としているため、17歳未満のお子様には不適切である可能性があります。"</string>
<string name="title_us_mv" msgid="7861766023361439035">"映画のレーティング"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"一般対象。お子様が視聴しても保護者が不適切と判断するようなコンテンツは含まれていません。"</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"保護者の判断が推奨されます。低年齢のお子様には不適切と保護者が判断するコンテンツが含まれている場合があります。"</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"保護者の厳重な注意が必要です。13歳未満のお子様には不適切なコンテンツが含まれている場合があります。"</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"制限あり。成人向けコンテンツが含まれます。低年齢のお子様を同席させる前に、この映画について詳しく確認することをおすすめします。"</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"17 歳以下禁止。明らかに成人向けです。お子様の視聴は禁止です。"</string>
</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 1f3ffbca..1c896000 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"モノラル"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"ステレオ"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"再生操作"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"チャンネル"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"最近のチャンネル"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"最近のチャンネル"</string>
<string name="menu_title_options" msgid="7184594626814914022">"テレビオプション"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIPオプション"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"このチャンネルでは再生操作を使用できません"</string>
@@ -30,7 +29,7 @@
<string name="play_controls_description_fast_rewind" msgid="953488122681015803">"巻き戻し"</string>
<string name="play_controls_description_skip_next" msgid="1603587562124694592">"次へ"</string>
<string name="play_controls_description_skip_previous" msgid="3858447678278021381">"前へ"</string>
- <string name="channels_item_program_guide" msgid="2889807207930678418">"プログラムガイド"</string>
+ <string name="channels_item_program_guide" msgid="2889807207930678418">"番組ガイド"</string>
<string name="channels_item_setup" msgid="6557412175737379022">"利用できる新しいチャンネル"</string>
<string name="channels_item_app_link_no_app_link" msgid="1884830234777824408">"リンクはありません"</string>
<string name="channels_item_app_link_app_launcher" msgid="1395352122187670523">"<xliff:g id="APP_NAME">%1$s</xliff:g>を開く"</string>
diff --git a/res/values-ka-rGE-v23/strings.xml b/res/values-ka-rGE-v23/strings.xml
new file mode 100644
index 00000000..20f03595
--- /dev/null
+++ b/res/values-ka-rGE-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"არხები"</string>
+</resources>
diff --git a/res/values-ka-rGE/rating_system_strings.xml b/res/values-ka-rGE/rating_system_strings.xml
index d8191f32..c30c3de6 100644
--- a/res/values-ka-rGE/rating_system_strings.xml
+++ b/res/values-ka-rGE/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"ნარკოტიკები"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"სექსი"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"ძალადობა"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"ნარკოტიკები"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"სექსი"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"ძალადობა"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"ფრანგული"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"მაცდუნებელი დიალოგი"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"უხამსი მეტყველება"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"სექსუალური ხასიათის შინაარსი"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"ძალადობა"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"ძალადობის შემცველი ფანტასტიკა"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"პროგრამა შექმნილია, რომ მიზანშეწონილი იყოს ნებისმიერი ასაკის ბავშვებისათვის."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"ეს პროგრამა შექმნილია 7 წლის და უფროსი ბავშვებისათვის."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"მრავალი მშობლის აზრით ეს პროგრამა მიზანშეწონილია ნებისმიერი ასაკის მაყურებლისთვის."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"ეს პროგრამა შეიცავს ისეთ მასალას, რაც, მშობლების აზრით, შეიძლება არ იყოს მიზანშეწონილი მცირეწლოვანი ბავშვებისთვის. მათთვის რეკომენდებულია პროგრამის ნახვა მშობლების თანდასწრებით."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"ეს პროგრამა შეიცავს მასალას, რაც მრავალი მშობლის აზრით არ არის მიზანშეწონილი 14 წლამდე ასაკის ბავშვებისათვის."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"ეს პროგრამა განკუთვნილია მოზრდილი მაყურებლისათვის და შესაბამისად შესაძლოა მიზანშეწონილი არ იყოს 17 წლამდე ასაკის ბავშვებისათვის."</string>
<string name="title_us_mv" msgid="7861766023361439035">"ფილმის რეიტინგები"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"ზოგადი აუდიტორია. მიზანშეწონილია ბავშვებისათვის."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"სასურველია მშობლის მეთვალყურეობა. ზოგიერთი მასალა შეიძლება არ იყოს მიზანშეწონილი ბავშვებისთვის."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"მშობლების კატეგორიული გაფრთხილება. ზოგიერთი მასალა შეიძლება არასათანადო იყოს 13 წლამდე ასაკის ბავშვებისთვის."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"შეზღუდული. ეს პროგრამა შეიცავს გარკვეულ მასალას ზრდასრული ადამიანებისთვის. მშობლებს მოუწოდებენ, რომ შეიტყონ მეტი ფილმის შესახებ, სანამ ბავშვებს თან წაიყვანენ."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"არ დაიშვება 17 წლის და 17 წლამდე ასაკის მაყურებელი. გათვალისწინებულია მოზრდილებისთვის. ბავშვები არ დაიშვებიან."</string>
</resources>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index e22eafac..57c932e7 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"მონო"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"სტერეო"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"ჩართვის კონტროლი"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"არხები"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"ბოლო არხები"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"უახლესი არხები"</string>
<string name="menu_title_options" msgid="7184594626814914022">"TV პარამეტრები"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP პარამეტრები"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"ამ არხისთვის არ არის ხელმისაწვდომი ჩართვის კონტროლი"</string>
diff --git a/res/values-kk-rKZ-v23/strings.xml b/res/values-kk-rKZ-v23/strings.xml
new file mode 100644
index 00000000..4da42f69
--- /dev/null
+++ b/res/values-kk-rKZ-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Арналар"</string>
+</resources>
diff --git a/res/values-kk-rKZ/rating_system_strings.xml b/res/values-kk-rKZ/rating_system_strings.xml
index 5c47f233..520f73ba 100644
--- a/res/values-kk-rKZ/rating_system_strings.xml
+++ b/res/values-kk-rKZ/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Есірткі"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Секс"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Қатыгездік"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Есірткі"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Секс"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Қатыгездік"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Француз"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Ұятсыз әңгіме"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Дөрекі сөздер"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Жыныстық қатынасқа қатысты мазмұн"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Қатыгездік"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Қиял және қатыгездік"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Бұл бағдарлама барлық балаларға жарайтындай жасалған."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Бұл бағдарлама 7 және одан жоғары жастағы балаларға арналған."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Ата-аналардың көпшілігі бұл бағдарламаны барлық жастар үшін жарамды деп табады."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Бұл бағдарлама ата-аналар жасырақ балалар үшін жарамсыз деп табуы мүмкін материалды қамтуы мүмкін. Көптеген ата-аналар жасырақ балаларымен көргісі келуі мүмкін."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Бұл бағдарлама көп ата-ана 14 жасқа толмаған балалар үшін жарамсыз деп табатын біраз материалды қамтиды."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Бұл бағдарлама ересектердің көруіне арналған және 17 жасқа толмаған балалар үшін жарамсыз болуы мүмкін."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Фильм рейтингтері"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Барлық көрермендерге. Ата-аналар балаларымен көруге болады."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Ата-ананың бақылауы болған жөн. Ата-аналардың балаларына көрсеткісі келмейтін кейбір материалдар болуы мүмкін."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Ата-ананың бақылауы қажет. Кейбір материалдар жасөспірімдерге сәйкес келмеуі мүмкін."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Тыйым салынады, ересектерге арналған кейбір материалдар бар. Ата-ана балаларымен бірге көруден бұрын фильм туралы көбірек білуі қажет."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"17 және одан төмен жастағыларға тыйым салынады. Тек ересектер үшін. Балаларға тыйым салынады."</string>
</resources>
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
index 57a18d88..e11a51ff 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk-rKZ/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"моно"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"стерео"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Ойын тетіктері"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Арналар"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Соңғы арналар"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Жақ-ғы арналар"</string>
<string name="menu_title_options" msgid="7184594626814914022">"ТД опциялары"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP опциялары"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Бұл арна үшін ойнатуды басқару элементтерін қол жетімсіз"</string>
diff --git a/res/values-km-rKH-v23/strings.xml b/res/values-km-rKH-v23/strings.xml
new file mode 100644
index 00000000..67c48f05
--- /dev/null
+++ b/res/values-km-rKH-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"ប៉ុស្តិ៍"</string>
+</resources>
diff --git a/res/values-km-rKH/rating_system_strings.xml b/res/values-km-rKH/rating_system_strings.xml
index 5e0518eb..3000a149 100644
--- a/res/values-km-rKH/rating_system_strings.xml
+++ b/res/values-km-rKH/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"គ្រឿងញៀន"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"សិច"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"អំពើហិង្សា"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"គ្រឿងញៀន"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"សិច"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"អំពើហិង្សា"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"ភាសាបារាំង"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"ការពិភាក្សាផ្តល់យោបល់"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"ភាសាអសុរោះ"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"មាតិកាផ្លូវភេទ"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"អំពើហិង្សា"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"អំពើហិង្សាបែបស្រមើស្រមៃ"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"កម្មវិធីនេះត្រូវបានបង្កើតឡើងឲ្យសមស្របសម្រាប់កុមារទាំងអស់។"</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"កម្មវិធីនេះត្រូវបានបង្កើតឡើងសម្រាប់កុមារដែលមានអាយុ 7 ឡើងទៅ។"</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"មាតាបិតាភាគច្រើននឹងយល់ថាកម្មវិធីនេះសមស្របសម្រាប់មនុស្សគ្រប់វ័យ។"</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"កម្មវិធីនេះភ្ជាប់មកជាមួយខ្លឹមសារដែលមាតាបិតាគិតថាមិនសមស្របសម្រាប់កុមារ។ មាតាបិតាជាច្រើនអាចនឹងចង់ទស្សនាកម្មវិធីនេះជាមួយកូនៗរបស់ពួកគេ។"</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"កម្មវិធីនេះភ្ជាប់មកជាមួយខ្លឹមស្លារមួយចំនួនដែលមាតាបិតាជាច្រើននឹងយល់ថាមិនសមស្របសម្រាប់កុមារដែលមានអាយុក្រោម 14 ឆ្នាំ។"</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"កម្មវិធីនេះត្រូវបានបង្កើតឡើងសម្រាប់ទស្សនាដោយមនុស្សពេញវ័យ ហេតុដូច្នេះហើយវាអាចនឹងមិនសមស្របសម្រាប់កុមារដែលមានអាយុក្រោម 17 ឆ្នាំទេ។"</string>
<string name="title_us_mv" msgid="7861766023361439035">"ការវាយតម្លៃភាពយន្ត"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"សម្រាប់ទស្សនិកជនទូទៅ។ មាតាបិតានឹងយល់ថាសមស្របសម្រាប់ទស្សនាដោយកូនៗរបស់ពួកគេ។"</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"បានស្នើឲ្យមានការគ្រប់គ្រងពីមាតាបិតា។ វាអាចបង្ហាញខ្លឹមសារមួយចំនួនដែលមាតាបិតាមិនចង់ឲ្យកូនៗរបស់ពួកគេទស្សនា។"</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"បានព្រមានឲ្យមាតាបិតាមានការប្រុងប្រយ័ត្នខ្ពស់។ ខ្លឹមសារមួយចំនួនអាចមិនសមរម្យសម្រាប់កុមារមិនទាន់ឈានចូលដល់វ័យជំទង់។"</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"បានដាក់កម្រិត៖ ភ្ជាប់មកជាមួយខ្លឹមសារមួយចំនួនសម្រាប់មនុស្សពេញវ័យ។ មាតាបិតាត្រូវបានជម្រុញឲ្យស្វែងយល់បន្ថែមអំពីភាពយន្តនេះ មុនពេលនាំកូនៗរបស់ពួកគេទៅទស្សនាជាមួយ។"</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"មិនអនុញ្ញាតចំពោះបុគ្គលដែលមានអាយុ 17 ចុះក្រោម។ សម្រាប់មនុស្សពេញវ័យតែប៉ុណ្ណោះ។"</string>
</resources>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index 8ee7699a..cdc5495d 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"ម៉ូណូ"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"ស្តេរ៉េអូ"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"បញ្ជាការចាក់"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"ឆានែល"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"ឆានែលថ្មីៗ"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"ឆានែល​ថ្មីៗ"</string>
<string name="menu_title_options" msgid="7184594626814914022">"ជម្រើសទូរទស្សន៍"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"ជម្រើស PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"ការបញ្ជាលើការចាក់មិនអាចប្រើបានទេសម្រាប់ឆានែលនេះ។"</string>
diff --git a/res/values-kn-rIN-v23/strings.xml b/res/values-kn-rIN-v23/strings.xml
new file mode 100644
index 00000000..95f50839
--- /dev/null
+++ b/res/values-kn-rIN-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"ಚಾನಲ್‌ಗಳು"</string>
+</resources>
diff --git a/res/values-kn-rIN/rating_system_strings.xml b/res/values-kn-rIN/rating_system_strings.xml
index e8626f7f..3b3b3c2c 100644
--- a/res/values-kn-rIN/rating_system_strings.xml
+++ b/res/values-kn-rIN/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"ಮಾದಕ ದ್ರವ್ಯ"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"ಲೈಂಗಿಕ"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"ಹಿಂಸೆ"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"ಮಾದಕ ದ್ರವ್ಯ"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"ಲೈಂಗಿಕ"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"ಹಿಂಸೆ"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"ಫ್ರೆಂಚ್"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"ಸೂಚಿತ ಸಂಭಾಷಣೆ"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"ಒರಟಾದ ಭಾಷೆ"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"ಲೈಂಗಿಕ ವಿಷಯ"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"ಹಿಂಸೆ"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"ಕಾಲ್ಪನಿಕ ಹಿಂಸೆ"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"ಈ ಕಾರ್ಯಕ್ರಮವನ್ನು ಎಲ್ಲಾ ಮಕ್ಕಳಿಗೆ ಸೂಕ್ತವಾಗಿರುವಂತೆ ರಚಿಸಲಾಗಿದೆ."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"ಈ ಕಾರ್ಯಕ್ರಮವನ್ನು 7 ಮತ್ತು ಅದಕ್ಕಿಂತ ಹೆಚ್ಚಿನ ವಯಸ್ಸಿನ ಮಕ್ಕಳಿಗಾಗಿ ರಚಿಸಲಾಗಿದೆ."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"ಬಹುತೇಕ ಪೋಷಕರ ಪ್ರಕಾರ ಈ ಕಾರ್ಯಕ್ರಮವು ಎಲ್ಲಾ ವಯಸ್ಸಿನ ಮಕ್ಕಳಿಗೆ ಸೂಕ್ತವಾಗಿದೆ."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"ಈ ಕಾರ್ಯಕ್ರಮವು ಕಿರಿಯ ಮಕ್ಕಳಿಗೆ ಸೂಕ್ತವಲ್ಲದ ವಿಷಯವನ್ನು ಹೊಂದಿದೆ ಎಂದು ಪೋಷಕರು ಭಾವಿಸಬಹುದು. ಹಲವಾರು ಪೋಷಕರು ಇದನ್ನು ತಮ್ಮ ಕಿರಿಯ ಮಕ್ಕಳ ಜೊತೆಗೆ ವೀಕ್ಷಿಸಲು ಬಯಸಬಹುದು."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"ಅನೇಕ ಪೋಷಕರ ಪ್ರಕಾರ ಈ ಕಾರ್ಯಕ್ರಮವು 14 ವರ್ಷದೊಳಗಿನ ಮಕ್ಕಳಿಗೆ ಸೂಕ್ತವಲ್ಲದ ಕೆಲವು ವಿಷಯಗಳನ್ನು ಹೊಂದಿದೆ."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"ಈ ಕಾರ್ಯಕ್ರಮವನ್ನು ವಿಶೇಷವಾಗಿ ವಯಸ್ಕರು ವೀಕ್ಷಿಸಲು ರಚಿಸಲಾಗಿದೆ ಮತ್ತು 17 ವಯಸ್ಸಿಗಿಂತ ಕಡಿಮೆ ಇರುವ ಮಕ್ಕಳಿಗೆ ಸೂಕ್ತವಾಗದಿರಬಹುದು."</string>
<string name="title_us_mv" msgid="7861766023361439035">"ಚಲನಚಿತ್ರ ರೇಟಿಂಗ್‌ಗಳು"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"ಸಾಮಾನ್ಯ ಪ್ರೇಕ್ಷಕರು. ಮಕ್ಕಳು ವೀಕ್ಷಿಸಿದರೆ ಅದರಲ್ಲಿ ಪೋಷಕರಿಗೆ ಮುಜುಗರ ಉಂಟು ಮಾಡುವಂತಹದ್ದು ಯಾವುದೂ ಇಲ್ಲ."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"ಪೋಷಕರ ಮಾರ್ಗದರ್ಶನಕ್ಕೆ ಸೂಚಿಸಲಾಗಿದೆ. ಪೋಷಕರು ತಮ್ಮ ಮಕ್ಕಳು ವೀಕ್ಷಿಸಲು ಇಷ್ಟಪಡದಿರುವಂತಹ ಕೆಲವು ವಿಷಯಗಳನ್ನು ಹೊಂದಿರಬಹುದು."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"ಪೋಷಕರೇ ಜಾಗ್ರತೆ! ಇದರಲ್ಲಿರುವ ಕೆಲವು ಸಂಗತಿಗಳು ಹದಿಹರೆಯಪೂರ್ವ ವಯಸ್ಸಿನವರಿಗೆ ಸೂಕ್ತವಲ್ಲದೇ ಇರಬಹುದು."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ, ಕೆಲವು ವಯಸ್ಕರ ವಿಷಯವನ್ನು ಹೊಂದಿದೆ. ಚಿಕ್ಕ ಮಕ್ಕಳನ್ನು ತಮ್ಮೊಂದಿಗೆ ಚಲನಚಿತ್ರಕ್ಕೆ ಕರೆದೊಯ್ಯುವ ಮೊದಲು ಆ ಚಲನಚಿತ್ರದ ಕುರಿತು ಹೆಚ್ಚಿನ ಮಾಹಿತಿ ಪಡೆದುಕೊಳ್ಳುವಂತೆ ಪೋಷಕರಲ್ಲಿ ಕಳಕಳಿಯ ಮನವಿ."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"17 ಕ್ಕಿಂತಲೂ ಕೆಳಗಿನ ವಯಸ್ಸಿನ ಯಾರನ್ನೂ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ. ಸ್ಪಷ್ಟವಾಗಿ ಹೇಳುವುದಾದರೆ ಇದು ವಯಸ್ಕರಿಗಾಗಿ ಮಾತ್ರ. ಮಕ್ಕಳನ್ನು ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ."</string>
</resources>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index 9b75d3ea..7bc94e51 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"ಮೊನೊ"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"ಸ್ಟೀರಿಯೋ"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Play ನಿಯಂತ್ರಣಗಳು"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"ಚಾನಲ್‌ಗಳು"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"ಇತ್ತೀಚಿನ ಚಾನಲ್‌ಗಳು"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"ಇತ್ತೀಚಿನ ಚಾನಲ್‌ಗಳು"</string>
<string name="menu_title_options" msgid="7184594626814914022">"TV ಆಯ್ಕೆಗಳು"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP ಆಯ್ಕೆಗಳು"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"ಈ ಚಾನಲ್‌ಗೆ ಪ್ಲೇ ನಿಯಂತ್ರಣಗಳು ಲಭ್ಯವಿಲ್ಲ"</string>
diff --git a/res/values-ko-v23/strings.xml b/res/values-ko-v23/strings.xml
new file mode 100644
index 00000000..378510f2
--- /dev/null
+++ b/res/values-ko-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"채널"</string>
+</resources>
diff --git a/res/values-ko/rating_system_strings.xml b/res/values-ko/rating_system_strings.xml
index dad2fab7..c6af92a6 100644
--- a/res/values-ko/rating_system_strings.xml
+++ b/res/values-ko/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"마약"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"성행위"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"폭력"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"마약"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"성행위"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"폭력"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"프랑스어"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"외설적인 대화"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"거친 욕설"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"성적인 콘텐츠"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"폭력"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"판타지 폭력"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"이 프로그램은 모든 어린이에게 적합하도록 제작되었습니다."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"이 프로그램은 만 7세 이상의 어린이를 위해 제작되었습니다."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"대부분의 부모가 모든 연령대에 적합하다고 간주할 만한 프로그램입니다."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"이 프로그램은 부모가 어린 자녀에게 부적합하다고 간주할 만한 내용을 담고 있습니다. 다수의 부모가 어린 자녀와 함께 시청해야 한다고 판단합니다."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"이 프로그램은 다수의 부모가 만 14세 미만의 자녀에게 부적합하다고 간주할 만한 내용을 담고 있습니다."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"이 프로그램은 성인용으로 제작되었으므로 만 17세 미만 어린이와 청소년에게는 부적합할 수도 있습니다."</string>
<string name="title_us_mv" msgid="7861766023361439035">"영화 등급"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"모든 연령대에 적합합니다. 부모가 자녀에게 부적합하다고 간주할 만한 내용이 없습니다."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"부모의 지도가 필요합니다. 부모가 어린 자녀에게 부적합하다고 간주할 만한 내용을 일부 포함하고 있습니다."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"부모의 엄격한 지도가 필요합니다. 일부 내용은 만 13세 미만 어린이에게 부적합할 수 있습니다."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"시청이 제한되며 성인용 자료를 포함하고 있습니다. 부모가 영화에 대해 자세히 알아본 다음 어린 자녀가 시청하게 해야 합니다."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"만 17세 이하는 시청할 수 없습니다. 성인용으로 어린이와 청소년에게는 부적합합니다."</string>
</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 63c04068..e07f2138 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"모노"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"스테레오"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"재생 컨트롤"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"채널"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"최근 시청한 채널"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"최근 시청한 채널"</string>
<string name="menu_title_options" msgid="7184594626814914022">"TV 옵션"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP 옵션"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"이 채널에서 재생 컨트롤을 사용할 수 없습니다."</string>
diff --git a/res/values-ky-rKG-v23/strings.xml b/res/values-ky-rKG-v23/strings.xml
new file mode 100644
index 00000000..ae85b5f8
--- /dev/null
+++ b/res/values-ky-rKG-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Каналдар"</string>
+</resources>
diff --git a/res/values-ky-rKG/rating_system_strings.xml b/res/values-ky-rKG/rating_system_strings.xml
index 8527a25c..59531a4a 100644
--- a/res/values-ky-rKG/rating_system_strings.xml
+++ b/res/values-ky-rKG/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Баңгизаттар"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Секс"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Зомбулук"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Баңгизаттар"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Секс"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Зомбулук"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Французча"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Адепсиз диалог"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Сөгүнгөн сөздөр"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Сексуалдык мазмун"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Зомбулук"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Зомбулук көрүнүштөрү чагылдырылган фантастика"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Бул программа бардык балдарга ылайыктуу."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Бул программа 7 жаштан жогору балдарга ылайыктуу."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Көпчүлүк ата-энелер бул программаны бардык курактагы адамдарга ылайыктуу деп эсептеши мүмкүн."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Бул программада ата-энелер жаш балдарга ылайыксыз деп эсептеген материалдар камтылган. Көпчүлүк ата-энелер аны жаш балдары менен бирге көргүсү келиши мүмкүн."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Бул программада ата-энелердин көпчүлүгү 14 жашка чыга элек балдар үчүн ылайыксыз деп эсептеген материалдар камтылган."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Бул программа жалаң гана чоңдорго арналгандыктан, 17 жашка чыга элек көрүүчүлөргө сунушталбайт."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Тасмалар рейтинги"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Жалпы аудиторияга багытталган. Балдарынын көрүшүнө ата-энеси каршы болгудай эч нерсе жок."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Ата-эненин көзөмөлү астында көрүү керек. Ата-энелер жаш балдарына көрсөткүсү келбеген материалдар камтылышы мүмкүн."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Ата-эне менен чогуу көрүү керек. Айрым материалдар жаш өспүрүмдөр үчүн орунсуз болушу мүмкүн."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Чектелген. Чоңдорго гана ылайык материал камтылган. Ата-энелер жаш балдарын ээрчитээрден мурун фильм жөнүндө көбүрөөк билип алуусу сунушталат."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"17 жаштагыларга жана андан кичүүлөргө уруксат жок. Чоңдөр үчүн гана. Балдарга уруксат жок."</string>
</resources>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index 36e3ccec..13866dcd 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"моно"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"стерео"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Ойнотууну башкаруу"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Каналдар"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Акыркы каналдар"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Акыркы каналдар"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Сынлг прметрлр"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP параметрлери"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Бул канал үчүн ойнотуу көзөмөлдөрү жеткиликтүү эмес"</string>
diff --git a/res/values-lo-rLA-v23/strings.xml b/res/values-lo-rLA-v23/strings.xml
new file mode 100644
index 00000000..53804594
--- /dev/null
+++ b/res/values-lo-rLA-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"​ຊ່ອງ"</string>
+</resources>
diff --git a/res/values-lo-rLA/rating_system_strings.xml b/res/values-lo-rLA/rating_system_strings.xml
index 36245d4c..852e8d45 100644
--- a/res/values-lo-rLA/rating_system_strings.xml
+++ b/res/values-lo-rLA/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"ຢາ​"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"ເພດ"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"​ຄວາມ​ຮຸນ​ແຮງ"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"ຢາ​"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"ເພດ"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"​ຄວາມ​ຮຸນ​ແຮງ"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"ພາ​ສາຝຣັ່ງ"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"ການ​ສົນ​ທະ​ນາ​ຊັກ​ຊວນ"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"ພາ​ສາ​ຫຍາບຄາຍ"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"ເນື້ອ​ໃນກ່ຽວ​ກັບ​ເພດ"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"​ຄວາມ​ຮຸນ​ແຮງ"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"ຄວາມ​ຮຸນ​ແຮງ​ເພີ້​ຝັນ"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"ລາຍ​ການ​ນີ້​ຖືກ​ອອກ​ແບບ​ມາ​ໃຫ້​ເໝາະ​ສຳ​ລັບ​ເດັກ​ນ້ອຍ​ທຸກ​​ເພດ​ທຸກໄວ."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"ລາຍ​ການ​ນີ້​ຖືກ​ອອກ​ແບບ​ມາ​ສຳ​ລັບ​ເດັກ​ນ້ອຍ​ອາ​ຍຸ 7 ​ປີ​ຂຶ້ນ​ໄປ."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"​ຜູ້ປົກ​ຄອງ​ສ່ວນ​ໃຫຍ່​​ເຫັນ​ວ່າ​ລາຍ​ການ​ນີ້​ເໝາະ​ສຳ​ລັບ​ທຸກ​ໄວ."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"​ລາຍ​ການ​ນີ້​ມີ​ເນື້ອ​ຫາ​ທີ່​ຜູ້ປົກ​ຄອງ​ອາດ​ເຫັນ​ວ່າບໍ່​ເໝາະ​ສົມ​ສຳ​ລັບ​ເດັກ​ນ້ອຍ​ທີ່​ມີ​ອາ​ຍຸ​ຕ່ຳ. ພໍ່​ແມ່​ບາງ​ຄົນ​ອາດ​ຈະ​ຕ້ອ​ງ​ການ​ເບິ່ງ​ມັນ​ກັບ​ເດັກ​ນ້ອຍ​ຂອງ​ເຂົາ​ເຈົ້າ."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"ລາຍ​ການ​ນີ້​ມີ​ເນື້ອ​ຫາ​ບາງ​ຢ່າງ​ທີ່​ຜູ້ປົກ​ຄອງ​ອາດ​ເຫັນ​ວ່າບໍ່​ເໝາະ​ສົມ​ສຳ​ລັບ​ເດັກ​ນ້ອຍ​ທີ່​ມີ​ອາ​ຍຸ​ຕ່ຳ​ກວ່າ 14 ປີ."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"ລາຍ​ການ​ນີ້​ຖືກ​ອອກ​ແບບ​ມາ​​ໃຫ້​​ຜູ້ໃຫຍ່​ເບິ່ງໂດຍສະເພາະ ແລະ​ອາດບໍ່​ເໝາະ​ສົມ​ສຳ​ລັບ​ເດັກ​ນ້ອຍ​ອາ​ຍຸ​ຕ່ຳ​ກວ່າ 17 ປີ."</string>
<string name="title_us_mv" msgid="7861766023361439035">"ການ​ຈັດ​ອັນ​ດັບຮູບ​ເງົາ"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"ຜູ້​ຊົມ​ທົ່ວ​ໄປ. ບໍ່​ມີ​ອັນ​ໃດທີ່ເດັກນ້ອຍເບິ່ງຈະເຮັດໃຫ້ພໍ່ແມ່ບໍ່ພໍໃຈ."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"ແນະ​ນຳ​ໃຫ້​ມີ​ຄຳ​ແນະ​ນຳ​ຂອງ​ຜູ້​ປົກ​ຄອງ. ອາດ​ຈະ​ມີບາງເນື້ອຫາ​ທີ່​ພໍ່​ແມ່ອາດ​ຈະ​ບໍ່​ມັກ​ສຳ​ລັບ​ເດັກ​ນ້ອຍ."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"ໃຫ້​ພໍ່​ແມ່​ລະ​ມັດ​ລະ​ວັງ​ແທ້ໆ. ບາງເນື້ອຫາ​ອາດ​ຈະ​ບໍ່​ເໝາະ​ສົມ​ສຳ​ລັບ​ເດັກ​ນ້ອຍ​ກ່ອນ​ໄວ​ລຸ້ນ."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"ຈຳ​ກັດ​ສະ​ເພາະ, ມີເນື້ອຫາ​ສຳ​ລັບ​ຜູ້​ໃຫຍ່​ບາງ​ອັນ. ເຕືອນ​ໃຫ້​ພໍ່​ແມ່​ຮຽນ​ຮູ້​ເພີ່ມ​ເຕີມ​ກ່ຽວ​ກັບ​ຮູບ​ເງົາ​ກ່ອນ​ເອົາ​ເດັກ​ນ້ອຍ​ໄປ​ນຳ​ເຂົາ​ເຈົ້າ."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"ບໍ່ອະນຸຍາດສຳລັບຜູ້ທີ່ມີອາຍຸຕ່ຳກວ່າ 17 ປີ. ເປັນ​ຜູ້​ໃຫຍ່​ຈະ​ແຈ້ງ. ບໍ່​ອະ​ນຸ​ຍາດ​​ເດັກ​ນ້ອຍ."</string>
</resources>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index 987c83c2..d6c6e4ce 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"​ໂມ​ໂນ"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"ສະ​ເຕ​ຣິ​ໂອ"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"ຄວບ​ຄຸມ​ການ​ຫຼິ້ນ"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"​ຊ່ອງ"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"ຊ່ອງ​ບໍ່ດົນ​ມານີ້"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"ຊ່ອງ​ບໍ່ດົນ​ມານີ້"</string>
<string name="menu_title_options" msgid="7184594626814914022">"ໂຕເລືອກ​ໂທລະພາບ"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"​ຕົວ​ເລືອກ PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"ຫຼິ້ນ​ການ​ຄວບ​ຄຸມ​ບໍ່​ມີ​ໃຫ້​ສຳ​ລັບ​ຊ່ອງ​ນີ້"</string>
diff --git a/res/values-lt-v23/strings.xml b/res/values-lt-v23/strings.xml
new file mode 100644
index 00000000..4ce246b7
--- /dev/null
+++ b/res/values-lt-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Kanalai"</string>
+</resources>
diff --git a/res/values-lt/rating_system_strings.xml b/res/values-lt/rating_system_strings.xml
index a9e37c7f..d4c396a3 100644
--- a/res/values-lt/rating_system_strings.xml
+++ b/res/values-lt/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Narkotikai"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Seksas"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Smurtas"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Narkotikai"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Seksas"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Smurtas"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Prancūzų k."</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Dviprasmiškas dialogas"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Nemandagi kalba"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Seksualinis turinys"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Smurtas"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Maginės fantastikos smurtas"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Ši programa sukurta, kad būtų tinkama visiems vaikams."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Ši programa sukurta 7 m. ir vyresniems vaikams."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Dauguma tėvų šią programą laikytų tinkama bet kurio amžiaus vaikams."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Šioje programoje yra turinio, kurį tėvai gali laikyti netinkamu jaunesniems vaikams. Dauguma tėvų turėtų žiūrėti kartu su jaunesniais vaikais."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Šioje programoje yra turinio, kurį dauguma tėvų laikytų netinkamu jaunesniems nei 14 metų vaikams."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Ši programa skirta žiūrėti tik suaugusiesiems, todėl gali būti netinkama vaikams iki 17 m."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Filmų įvertinimai"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Bendrosios auditorijos. Nėra nieko, dėl ko tėvai neleistų vaikams žiūrėti."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Rekomenduojama tėvų priežiūra. Gali būti turinio, dėl kurio tėvai gali neleisti mažiems vaikams žiūrėti."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Labai rekomenduojama tėvų priežiūra. Tam tikras turinys gali būti netinkamas jaunesniems nei 13 m. vaikams."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Apribota, yra turinio suaugusiesiems. Tėvams labai rekomenduojame daugiau sužinoti apie filmą prieš pasiimant mažus vaikus kartu."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Leidžiama tik vyresniems nei 17 m. asmenims. Aiškiai skirta tik suaugusiesiems. Vaikams neleidžiama."</string>
</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 49b934ba..f3641f8a 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"monofon."</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereof."</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Leidimo valdikliai"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Kanalai"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Naujausi kanalai"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Naujausi kanal."</string>
<string name="menu_title_options" msgid="7184594626814914022">"TV parinktys"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP parinktys"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Leidimo valdikliai negalimi šiame kanale"</string>
diff --git a/res/values-lv-v23/strings.xml b/res/values-lv-v23/strings.xml
new file mode 100644
index 00000000..2359274a
--- /dev/null
+++ b/res/values-lv-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Kanāli"</string>
+</resources>
diff --git a/res/values-lv/rating_system_strings.xml b/res/values-lv/rating_system_strings.xml
index 3bd6a1ff..8c8def23 100644
--- a/res/values-lv/rating_system_strings.xml
+++ b/res/values-lv/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Narkotiskās vielas"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sekss"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Vardarbība"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Narkotiskās vielas"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sekss"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Vardarbība"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"franču"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Divdomīgs dialogs"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Rupja valoda"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Seksuāla rakstura saturs"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Vardarbība"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Fantāzijas veida vardarbība"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Šī programma ir paredzēta visu vecumu bērniem."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Šī programma ir paredzēta bērniem, kas ir vecāki par 7 gadiem."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Lielākajai daļai vecāku šī programma var šķist piemērota visu vecumu bērniem."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Šajā programmā ir ietverti materiāli, kas vecākiem var šķist nepiemēroti maziem bērniem. Vecākiem ieteicams to skatīties kopā ar bērniem."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Šajā programmā tiek rādīti materiāli, kas daudziem vecākiem varētu šķist nepiemēroti bērniem, kas nav sasnieguši 14 gadu vecumu."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Šī programma ir paredzēta tikai pieaugušajiem, tādēļ tā var būt nepiemērota bērniem, kas jaunāki par 17 gadiem."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Filmu vērtējumi"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Universāla auditorija. Vecāki neiebilstu, ka bērni redz šo saturu."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Ieteicama vecāku uzraudzība. Daļa materiālu var nebūt piemērota maziem bērniem."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Ļoti ieteicama vecāku uzraudzība. Daļa materiālu var nebūt piemērota bērniem, kas nav sasnieguši 13 gadu vecumu."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Ierobežots, ietver pieaugušajiem paredzētu materiālu. Vecākiem ieteicams izpētīt filmu, pirms ļaut bērniem to skatīties."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Nav paredzēts personām, kas nav sasniegušas 18 gadu vecumu. Tikai pieaugušajiem, noteikti nav paredzēts bērniem."</string>
</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 6285f197..22524cc5 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Atskaņošanas vadīklas"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Kanāli"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Nesenie kanāli"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Nesenie kanāli"</string>
<string name="menu_title_options" msgid="7184594626814914022">"TV iespējas"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP opcijas"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Šim kanālam nav pieejamas atskaņošanas vadīklas."</string>
diff --git a/res/values-mk-rMK-v23/strings.xml b/res/values-mk-rMK-v23/strings.xml
new file mode 100644
index 00000000..4fd7f740
--- /dev/null
+++ b/res/values-mk-rMK-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Канали"</string>
+</resources>
diff --git a/res/values-mk-rMK/rating_system_strings.xml b/res/values-mk-rMK/rating_system_strings.xml
index 4194ec13..c583f26c 100644
--- a/res/values-mk-rMK/rating_system_strings.xml
+++ b/res/values-mk-rMK/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Дрога"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Секс"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Насилство"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Дрога"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Секс"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Насилство"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"француски"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Сугестивен дијалог"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Непристоен говор"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Сексуална содржина"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Насилство"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Митолошко насилство"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Програмава е направена да биде соодветна за сите деца."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Програмава е наменета за деца од 7 години, па нагоре."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Според повеќето родители, програмава е погодна за сите возрасти."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Програмава содржи материјали што според некои родители се можеби несоодветни за мали деца. Многу родители може да сакаат да ја гледаат со своите мали деца."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Програмава содржи материјали што според повеќето родители се несоодветни за деца под 14-годишна возраст."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Програмава е специјално наменета за возрасни и поради тоа можеби е несоодветна за деца под 17 години."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Оценки за филм"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Општа публика. Нема ништо што ќе ги навреди родителите ако децата го гледаат ова."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Се предлага надзор од родител. Може да содржи материјали што родителите може не би ги сакале за своите деца."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Родителите строго се предупредуваат. Некои материјали може да се несоодветни за деца кои се на предтинејџерска возраст."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Ограничено, содржи материјали за возрасни. Родителите се советуваат да дознаат повеќе за филмот пред да ги поведат своите мали деца со себе."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Забрането за лица под 17-годишна возраст. Само за возрасни. Забрането за деца."</string>
</resources>
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
index 60268c49..2c345ac1 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk-rMK/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"моно"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"стерео"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Контроли за игри"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Канали"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Неодамнешни канали"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Последни канали"</string>
<string name="menu_title_options" msgid="7184594626814914022">"ТВ опции"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Опции за ПИП"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Контролите за репродуцирање се недостапни за овој канал"</string>
diff --git a/res/values-ml-rIN-v23/strings.xml b/res/values-ml-rIN-v23/strings.xml
new file mode 100644
index 00000000..2333cc0f
--- /dev/null
+++ b/res/values-ml-rIN-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"ചാനലുകൾ"</string>
+</resources>
diff --git a/res/values-ml-rIN/rating_system_strings.xml b/res/values-ml-rIN/rating_system_strings.xml
index 34938b64..910a5e74 100644
--- a/res/values-ml-rIN/rating_system_strings.xml
+++ b/res/values-ml-rIN/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"മയക്കുമരുന്നുകൾ"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"ലൈംഗികത"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"അക്രമം"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"മയക്കുമരുന്നുകൾ"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"ലൈംഗികത"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"അക്രമം"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"ഫ്രഞ്ച്"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"ലൈംഗികസ്‌പഷ്‌ടമായ സംഭാഷണം"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"മോശമായ ഭാഷ"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"ലൈംഗിക ഉള്ളടക്കം"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"അക്രമം"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"ഭാവനാരൂപത്തിലുള്ള അക്രമം"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"ഈ പ്രോഗ്രാം എല്ലാ കുട്ടികൾക്കും ഉചിതമായ രീതിയിൽ രൂപകൽപ്പനചെയ്‌തിരിക്കുന്നു."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"7-നും അതിനുമുകളിലും പ്രായമുള്ള കുട്ടികൾക്കായി ഈ പ്രോഗ്രാം രൂപകൽപ്പന ചെയ്‌തിരിക്കുന്നു."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"എല്ലാ പ്രായക്കാർക്കും ഈ പ്രോഗ്രാം അനുയോജ്യമാണെന്ന് മിക്ക മാതാപിതാക്കളും പരിഗണിക്കുന്നു."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"ചെറിയ പ്രായത്തിലുള്ള കുട്ടികൾക്ക് അനുയോജ്യമല്ലെന്ന് പല മാതാപിതാക്കളും പരിഗണിച്ചേക്കാവുന്ന കുറച്ച് ഉള്ളടക്കങ്ങൾ ഈ പ്രോഗ്രാമിലുണ്ട്. കുട്ടികളിത് കാണുമ്പോൾ കൂടെ ഉണ്ടാകണമെന്നാണ് പല മാതാപിതാക്കളും ആഗ്രഹിച്ചേക്കുക."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"14 വയസ്സിന് താഴെയുള്ള കുട്ടികൾക്ക് അനുയോജ്യമല്ലെന്ന് പല മാതാപിതാക്കളും പരിഗണിക്കുന്ന കുറച്ച് ഉള്ളടക്കങ്ങൾ ഈ പ്രോഗ്രാമിലുണ്ട്."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"ഈ പ്രോഗ്രാം മുതിർന്നവർക്ക് കാണുന്നതിനായി പ്രത്യേകമായി തയ്യാറാക്കിയിട്ടുള്ളതായതിനാൽ 17 വയസ്സിന് താഴെയുള്ള കുട്ടികൾക്ക് ഇത് അനുയോജ്യമാകണമെന്നില്ല."</string>
<string name="title_us_mv" msgid="7861766023361439035">"ഫിലിം റേറ്റിംഗുകൾ"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"സാധാരണ പ്രേക്ഷകർക്കുള്ളത്. കുട്ടികളിത് കാണുന്നതിന് മാതാപിതാക്കൾക്ക് പ്രശ്നമൊന്നും ഉണ്ടാകില്ല."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"രക്ഷാകർതൃ മാർഗ്ഗനിർദ്ദേശം നിർദ്ദേശിച്ചിരിക്കുന്നു. ചെറിയ പ്രായത്തിലുള്ള കുട്ടികൾ കാണുന്നത് മാതാപിതാക്കൾക്ക് രസിക്കാത്ത ചില ഉള്ളടക്കങ്ങൾ ഇതിൽ ഉണ്ടായേക്കാം."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"മാതാപിതാക്കൾക്ക് ശക്തമായി മുന്നറിയിപ്പ് നൽകുന്നു. കൗമാരപ്രായമെത്താത്ത കുട്ടികൾക്ക് അനുചിതമായേക്കാവുന്ന ചില ഉള്ളടക്കങ്ങൾ ഇതിലുണ്ട്."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"നിയന്ത്രിതം, പ്രായപൂർത്തിയായവർക്കുള്ള ചില ഉള്ളടക്കങ്ങൾ ഇതിലുണ്ട്. ഈ സിനിമ കാണുന്നതിന് കുട്ടികളെ കൊണ്ടുപോകുന്നതിന് മുമ്പായി സിനിമയെ കുറിച്ച് കൂടുതലറിയുവാൻ മാതാപിതാക്കളോട് നിർദ്ദേശിക്കുന്നു."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"17 വയസ്സും അതിൽ താഴെയും പ്രായമുള്ളവരെ അനുവദിക്കില്ല. വ്യക്തമായും പ്രായപൂർത്തിയായവർക്ക് മാത്രം. കുട്ടികളെ അനുവദിക്കില്ല."</string>
</resources>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index 7d8dc072..1e38cdd7 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"മോണോ"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"സ്‌റ്റീരിയോ"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"പ്ലേ നിയന്ത്രണങ്ങൾ"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"ചാനലുകള്‍"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"സമീപകാല ചാനലുകൾ"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"ഏറ്റവും പുതിയ ചാനലുകൾ"</string>
<string name="menu_title_options" msgid="7184594626814914022">"ടിവി ഓപ്‌ഷനുകൾ"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP ഓ‌പ്‌ഷനുകൾ"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"ഈ ചാനലിന് പ്ലേ നിയന്ത്രണങ്ങൾ ലഭ്യമല്ല"</string>
diff --git a/res/values-mn-rMN-v23/strings.xml b/res/values-mn-rMN-v23/strings.xml
new file mode 100644
index 00000000..7da24abf
--- /dev/null
+++ b/res/values-mn-rMN-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Суваг"</string>
+</resources>
diff --git a/res/values-mn-rMN/rating_system_strings.xml b/res/values-mn-rMN/rating_system_strings.xml
index aaba1d61..09052bf9 100644
--- a/res/values-mn-rMN/rating_system_strings.xml
+++ b/res/values-mn-rMN/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Хар тамхи"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Бэлгийн харьцаа"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Хүчирхийлэл"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Хар тамхи"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Секс"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Хүчирхийлэл"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Франц"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Уруу татсан яриа"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Бүдүүлэг яриа"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Секс контент"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Хүчирхийлэл"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Уран зөгнөлт хэлбэрээр үзүүлсэн хүчирхийлэл"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Энэ хөтөлбөрийг бүх насны хүүхдэд зориулан бүтээсэн."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Энэ хөтөлбөрийг 7 болон түүнээс дээш насны хүүхдэд зориулан бүтээсэн."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Ихэнх эцэг эхчүүд энэ хөтөлбөрийг бүх насанд тохиромжтой гэж үзнэ."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Энэ хөтөлбөрт зарим эцэг эхчүүдийн хувьд 14-с доош насны хүүхэд үзэхэд тохиромжгүй гэж болох материал агуулсан. Олон эцэг эх хүүхдүүдтэйгээ хамт үзэхийг хүсэж магадгүй юм."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Энэ хөтөлбөрт зарим эцэг эхчүүдийн хувьд 14-с доош насны хүүхэд үзэхэд тохиромжгүй гэж болох материал агуулсан."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Энэ хөтөлбөрийг насанд хүрэгчдэд зориулан бэлтгэсэн тул 17-с доош насны хүүхдэд тохиромжгүй."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Киноны зэрэглэл"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Энгийн үзэгчид. Эцэг эхийн санаа зовоох, хүүхдэд тохиромжгүй агуулга байхгүй"</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Эцэг эхийн зөвшөөрөл шаардлагатай. Зарим материал хүүхдэд тохиромжгүй байж болзошгүй."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Эцэг эхийн хяналт онцгой шаардлагатай. Зарим материал нь өсвөр наснаас өмнөх насныханд тохиромжгүй."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Хориглосон. Насанд хүрэгчдэд зориулсан агуулгатай. Хүүхдүүдээ авч явахаасаа өмнө киноны тухай судална уу."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"17 ба түүнээс доош настай бол зөвшөөрөхгүй. Зөвхөн насанд хүрэгчдэд. Хүүхдүүдэд зөвшөөрөхгүй."</string>
</resources>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index 8ed0223e..e534f439 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"моно"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"стерео"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Play хяналт"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Сувгууд"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Сүүлийн суваг"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Саяхны сувгууд"</string>
<string name="menu_title_options" msgid="7184594626814914022">"ТВ-н сонголтууд"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP Сонголтууд"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Энэ сувагт тоглуулах хяналтыг ашиглах боломжгүй байна"</string>
diff --git a/res/values-mr-rIN-v23/strings.xml b/res/values-mr-rIN-v23/strings.xml
new file mode 100644
index 00000000..d7b703e6
--- /dev/null
+++ b/res/values-mr-rIN-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"चॅनेल"</string>
+</resources>
diff --git a/res/values-mr-rIN/rating_system_strings.xml b/res/values-mr-rIN/rating_system_strings.xml
index ed39ce79..e23e824d 100644
--- a/res/values-mr-rIN/rating_system_strings.xml
+++ b/res/values-mr-rIN/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"अंमली पदार्थ"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"लिंग"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"हिंसा"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"अंमली पदार्थ"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"लिंग"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"हिंसा"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"फ्रेंच"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"अश्लील संवाद"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"असभ्य भाषा"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"लैंगिक सामग्री"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"हिंसा"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"काल्पनिक हिंसा"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"हा प्रोग्राम सर्व मुलांसाठी योग्य असण्यासाठी डिझाइन केला आहे."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"हा प्रोग्राम 7 वर्षे आणि त्यावरील मुलांसाठी डिझाइन केला आहे."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"अनेक पालकांना सर्व वयांसाठी हा प्रोग्राम उचित वाटेल."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"या प्रोग्राममध्ये पालकांना लहान मुलांसाठी अनुचित वाटू शकते अशी सामग्री आहे. अनेक पालक त्यांच्या किशोरवयीन मुलांसह तो पाहू इच्छि‍त असू शकतात."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"या प्रोग्राममध्ये काही सामग्री आहे जी बर्‍याच पालकांना 14 वर्षे वयाखालील मुलांसाठी अनुचित वाटेल."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"हा प्रोग्राम प्रौढांना पाहण्यासाठी विशेषतः डिझाइन केला आहे आणि यामुळे तो 17 वर्षांखालील मुलांसाठी अनुचित असू शकतो."</string>
<string name="title_us_mv" msgid="7861766023361439035">"फिल्म रेटिंग"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"सर्वसामान्य प्रेक्षक. मुलांनी पाहिल्यास पालकांना लज्जास्पद वाटेल असे काहीही नाही."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"पालक मार्गदर्शन सुचविले आहे. यात काही सामग्री अशी आहे जी पालकांना त्यांच्या किशोरवयीन मुलांसाठी कदाचित आवडणार नाही."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"पालकांना खंबीरपणे धोक्याचा इशारा. काही सामग्री तेरा वर्षापेक्षा कमी वय असलेल्यांसाठी अयोग्य असू शकतात."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"प्रतिबंधित, काही प्रौढ सामग्री असते. पालकांनी त्यांच्या किशोरवयीन मुलांना त्यांच्यासह घेऊन जाण्यापूर्वी चित्रपटाबद्दल अधिक जाणून घेण्याचा त्यांना आग्रह केला जातो."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"17 आणि त्यापेक्षा कमी वय असलेल्या कोणासही प्रवेश नाही. प्रौढ. लहान मुलांना प्रवेश नाही."</string>
</resources>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
index 5119356d..9f01345d 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr-rIN/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"एक"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"स्टिरिओ"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"प्ले नियंत्रणे"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"चॅनेल"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"अलीकडील चॅनेल"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"अलीकडील चॅनेल"</string>
<string name="menu_title_options" msgid="7184594626814914022">"टीव्‍ही पर्याय"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP पर्याय"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"या चॅनेलसाठी अनुपलब्ध असलेली नियंत्रणे प्ले करा"</string>
diff --git a/res/values-ms-rMY-v23/strings.xml b/res/values-ms-rMY-v23/strings.xml
new file mode 100644
index 00000000..ba29d7b7
--- /dev/null
+++ b/res/values-ms-rMY-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Saluran"</string>
+</resources>
diff --git a/res/values-ms-rMY/rating_system_strings.xml b/res/values-ms-rMY/rating_system_strings.xml
index 9bef55e6..1cfeb1f3 100644
--- a/res/values-ms-rMY/rating_system_strings.xml
+++ b/res/values-ms-rMY/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Dadah"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Seks"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Keganasan"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Dadah"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Seks"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Keganasan"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Bahasa Perancis"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Dialog tidak senonoh"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Bahasa kasar"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Kandungan seksual"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Keganasan"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Keganasan fantasi"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Rancangan ini direka agar sesuai untuk semua kanak-kanak."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Rancangan ini direka untuk kanak-kanak berumur 7 tahun ke atas."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Kebanyakan ibu bapa akan mendapati rancangan ini sesuai untuk semua peringkat umur."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Rancangan ini mengandungi bahan yang mungkin dianggap tidak sesuai untuk kanak-kanak oleh ibu bapa. Ramai ibu bapa yang mungkin mahu menontonnya bersama-sama anak kecil mereka."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Rancangan ini mengandungi bahan yang mungkin dianggap tidak sesuai untuk kanak-kanak di bawah umur 14 tahun oleh kebanyakan ibu bapa."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Rancangan ini direka khusus untuk tontonan orang dewasa, oleh sebab itu mungkin tidak sesuai untuk kanak-kanak di bawah umur 17 tahun."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Penilaian filem"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Khalayak umum. Tiada sebarang kandungan yang menyinggung perasaan ibu bapa untuk ditonton oleh kanak-kanak."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Bimbingan ibu bapa disyorkan. Mungkin mengandungi bahan yang dianggap tidak sesuai oleh ibu bapa untuk anak kecil mereka."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Amaran kepada ibu bapa. Sesetengah bahan mungkin tidak sesuai untuk praremaja."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Terhad. Mengandungi bahan dewasa. Ibu bapa digesa supaya mengetahui lebih lanjut tentang filem sebelum membawa anak kecil bersama mereka."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Usia 17 tahun ke bawah tidak dibenarkan. Kandungan dewasa. Kanak-kanak tidak dibenarkan."</string>
</resources>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index a1544390..03609345 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Kawalan main"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Saluran"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Saluran terbaharu"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Saluran terbaru"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Pilihan TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Pilihan PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Kawalan main tidak tersedia untuk saluran ini"</string>
diff --git a/res/values-my-rMM-v23/strings.xml b/res/values-my-rMM-v23/strings.xml
new file mode 100644
index 00000000..015247d8
--- /dev/null
+++ b/res/values-my-rMM-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"ချာနယ်များ"</string>
+</resources>
diff --git a/res/values-my-rMM/rating_system_strings.xml b/res/values-my-rMM/rating_system_strings.xml
index 73d35990..51ce7a68 100644
--- a/res/values-my-rMM/rating_system_strings.xml
+++ b/res/values-my-rMM/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"မူးယစ်ဆေးဝါးများ"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"လိင်"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"အကြမ်းဖက်မှု"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"မူးယစ်ဆေးဝါးများ"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"လိင်"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"အကြမ်းဖက်မှု"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"ပြင်သစ်"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"အကြံပြုထားသည့် စကားပြောဆိုမှု"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"ကြမ်းတမ်းသော စကားလုံးများ"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"လိင်ဆက်ဆံမှု အကြောင်းအရာ"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"အကြမ်းဖက်မှု"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"ဆန်းပြားသော အကြမ်းဖက်မှု"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"ဒီပရိုဂရမ်ကို ကလေးများ အားလုံး အတွက် သင့်လျော်အောင် စီမံပြုစုခဲ့သည်။"</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"ဒီပရိုဂရမ်ကို အသက် ၇ နှစ်နှင့် အထက်ရှိ ကလေးများ အတွက် စီမံပြုစုခဲ့သည်။"</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"မိသားစု အများစုက ဒီပရိုဂရမ်မှာ အသက်အရွယ် အားလုံး အတွက် ဆီလျော်သည်ဟု ယူဆကြမည်။"</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"ဒီ program ဒီပရိုဂရမ်ထဲမှာ ပါဝင်သည့် အရာများကို မိဘများက အသက်ငယ် ကလေးများ အတွက် မသင့်လျော်ဟု ယူဆနိုင်သည်။ မိဘအများက ၎င်းကို သူတို့ရဲ့ ကလေးငယ်များနှင့် ကြည့်လိုနိုင်ကြတယ်။"</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"ဒီပရိုဂရမ်ထဲမှာ ပါဝင်ကြသည့် အချို့ အရာများမှာ အသက် ၁၄ နှစ်အောက် ကလေးများ အတွက် မသင့်လျော်ဟု မိဘ အများက ယူဆဖွယ် ရှိပါသည်။"</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"ဒီပရိုဂရမ်ကို သက်ကြီးများ ကြည့်ရှုရန် အထူး စီမံပြုစုခဲ့သည်၊ သို့ဖြစ်၍ ၁၇ အောက် ကလေးများ အတွက် သင့်လျော်နိုင်မည် မဟုတ်ပါ။"</string>
<string name="title_us_mv" msgid="7861766023361439035">"ရုပ်ရှင် အဆင့်သတ်မှတ်ချက်များ"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"သာမန် ပရိသတ်တွေ။ ကလေးတွေက ကြည့်ကြလို့ မိဘများအား မကျေမနပ် ဖြစ်စရာ ဘာမှ မပါပါ။"</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"မိဘတွေရဲ့ လမ်းညွှန်မှု လိုအပ်တယ်။ မိဘတွေက ကလေးတွေ အတွက် မကြိုက်ကြမယ့် အကြောင်းအရာ အချို့ ပါရှိနိုင်တယ်။"</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"မိဘတွေ အပြင်းအထန် စိုးရိမ်နေကြတယ်။ အချို့ အကြောင်းအရာမှာ ဆယ်ကျော်သက်ထက် ငယ်သူများအတွက် သင့်လျော်ချင်မှ သင်လျော်မယ်။"</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"ကန့်သတ်ချက်ရှိ၊ အရွယ်ရောက်သူများ အတွက် အချို့အရာများ ပါရှိတယ်။ မိဘများအား ကလေးငယ်များကို သူတို့နှင့်အတူ ခေါ်မသွားမီ ရုပ်ရှင် အကြောင်းကို နောက်ထပ် လေ့လာရန် အကြံပြုပါတယ်။"</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"အသက် ၁၇ နှစ်နှင့် အောက်ရှိသူ ဘယ်သူကိုမှ လက်မခံပါ။ အရွယ်ရောက်ပြီးသား ဖြစ်ရမှာ ရှင်းနေပါတယ်။ ကလေးများကို လက်မခံပါ။"</string>
</resources>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index cd9b73a7..6c962f4d 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"မိုနို"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"စတီရီယို"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Play ထိန်းချုပ်မှုများ"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"ချာနယ်များ"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"မကြာမီက ချာနယ်များ"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"မကြာမီက ချာနယ်"</string>
<string name="menu_title_options" msgid="7184594626814914022">"TV ရွေးစရာများ"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP ရွေးချယ်စရာများ"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"ဤလိုင်းအတွက် အဖွင့်ထိန်းချုပ်ခြင်းများ မရနိုင်ပါ"</string>
diff --git a/res/values-nb-v23/strings.xml b/res/values-nb-v23/strings.xml
new file mode 100644
index 00000000..39ce31fc
--- /dev/null
+++ b/res/values-nb-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Kanaler"</string>
+</resources>
diff --git a/res/values-nb/rating_system_strings.xml b/res/values-nb/rating_system_strings.xml
index 207ee0e4..fb2d8604 100644
--- a/res/values-nb/rating_system_strings.xml
+++ b/res/values-nb/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Rusmidler"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sex"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Vold"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Rusmidler"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sex"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Vold"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Fransk"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Usømmelig dialog"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Grovt språk"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Seksuelt innhold"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Vold"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Fantasivold"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Dette programmet er myntet på barn i alle aldre."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Dette programmet er myntet på barn fra 7 år og eldre."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"De fleste foreldre anser dette programmet som passende for alle aldre."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Dette programmet inneholder materiale som foreldre kan synes er upassende for yngre barn. Mange foreldre ser gjerne på innholdet sammen med barna sine."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Dette programmet inneholder scener som mange foreldre ikke synes er passende for barn under 14 år."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Dette programmet er spesifikt myntet på en voksen målgruppe og kan derfor være upassende for barn under 17 år."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Filmseertall"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Generell målgruppe. Har ikke noe innhold som foreldre kan finne støtende ved å la barn se det."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Foreldreveiledning anbefales. Mange foreldre kan mene at noe av innholdet ikke er egnet for yngre barn."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Foreldre advares på det sterkeste. Noe av innholdet er kanskje ikke egnet for barn under 13 år."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Begrenset – inneholder noe voksent materiale. Foreldre oppfordres til å finne ut mer om filmen før de tar med seg små barn."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Ikke tillatt for barn under 17 år. Tydelig voksent innhold. Barn er ikke tillatt."</string>
</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index ea06686c..d15dab71 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Play-kontroller"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Kanaler"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Nylige kanaler"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Nylige kanaler"</string>
<string name="menu_title_options" msgid="7184594626814914022">"TV-alternativer"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP-alternativer"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Play-kontroller er ikke tilgjengelige for denne kanalen"</string>
diff --git a/res/values-ne-rNP-v23/strings.xml b/res/values-ne-rNP-v23/strings.xml
new file mode 100644
index 00000000..67220466
--- /dev/null
+++ b/res/values-ne-rNP-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"च्यानलहरू"</string>
+</resources>
diff --git a/res/values-ne-rNP/rating_system_strings.xml b/res/values-ne-rNP/rating_system_strings.xml
index a43eebdc..b783b90a 100644
--- a/res/values-ne-rNP/rating_system_strings.xml
+++ b/res/values-ne-rNP/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"लागूपदार्थ"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"यौन"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"हिंसा"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"लागूपदार्थ"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"यौन"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"हिंसा"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"फ्रान्सेली"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"अश्लील संवाद"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"भद्दा भाषा"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"यौन सामग्री"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"हिंसा"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"काल्पनिक हिंसा"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"यो कार्यक्रम सबै बच्चाहरूका लागि उपयुक्त हुने गरी बनाइएको छ।"</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"यो कार्यक्रम ७ बर्ष र माथिका बच्चाहरूका लागि बनाइएको हो।"</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"यो कार्यक्रम धेरैजसो अभिभावकहरूले सबै उमेरका लागि उपयुक्त पाउँछन्।"</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"यो कार्यक्रमका सामग्री अभिभावकहरूले आफ्ना स-साना नानीहरूलाई अनुपयुक्त पाउन सक्छन्। घेरै अभिभावकहरू सम्भवतः आफ्ना नानीहरू सँगै यो हेर्न चाहन्छन्।"</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"यो कार्यक्रमका केही सामग्री अभिभावकहरूले आफ्ना १४ वर्ष उमेर मुनिका बच्चाहरूको लागि अनुपयुक्त पाउन सक्छन्।"</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"यो कार्यक्रम विशेषतया वयस्कहरूलाई बनाइएको हो, त्यसैले १७ वर्ष मुनिका बालबालिकाहरू लागि अनुपयुक्त हुन सक्छ।"</string>
<string name="title_us_mv" msgid="7861766023361439035">"फिल्म मूल्याङ्कनहरू"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"सामान्य दर्शकका लागि। बालबच्चाहरूले हेर्दा अभिभावकलाई कुनै आपत्ति नहुने।"</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"अभिभावकको मार्गदर्शक सुझाव गरिएको। अभिभावकले आफ्ना स-साना नानीहरूको लागि नरुचाउने सामग्री समावेश हुनसक्छ।"</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"अभिभावकलाई अत्यधिक सचेत रहनुपर्नेछ। केही भाग पूर्व - किशोरकिशोरीहरूको लागि अनुपयुक्त हुन सक्छ।"</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"प्रतिबन्धित, केही वयस्क सामग्री समावेश छन्। अभिभावकलाई आफ्नो छोराछोरीहरूलाई लिएर जानु अघि चलचित्र बारे थप जान्‍न आग्रह गरिन्छ।"</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"१७ वर्ष र मुनिकालाई निषेध। वयस्कको लागि। बच्चाहरूलाई प्रवेश निषेध।"</string>
</resources>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index f22f882e..a12c2b89 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"मोनो"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"स्टेरियो"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"प्ले नियन्त्रणहरु"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"च्यानलहरू"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"हालैका च्यानलहरू"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"भर्खरैका च्यानलहरू"</string>
<string name="menu_title_options" msgid="7184594626814914022">"टिभी विकल्पहरू"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP विकल्पहरू"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"यस च्यानलका लागि प्ले नियन्त्रणहरू अनुपलब्ध"</string>
diff --git a/res/values-nl-v23/strings.xml b/res/values-nl-v23/strings.xml
new file mode 100644
index 00000000..6ab8b50c
--- /dev/null
+++ b/res/values-nl-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Kanalen"</string>
+</resources>
diff --git a/res/values-nl/rating_system_strings.xml b/res/values-nl/rating_system_strings.xml
index c74b643a..ab074d64 100644
--- a/res/values-nl/rating_system_strings.xml
+++ b/res/values-nl/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Drugs"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Seks"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Geweld"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Drugs"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Seks"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Geweld"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Frans"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Suggestieve dialogen"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Grof taalgebruik"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Pornografische inhoud"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Geweld"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Niet-realistisch geweld"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Dit programma is ontwikkeld voor kinderen van alle leeftijden."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Dit programma is ontwikkeld voor kinderen van 7 jaar en ouder."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"De meeste ouders achten dit programma geschikt voor alle leeftijden."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Dit programma bevat inhoud die ouders mogelijk ongeschikt achten voor jonge kinderen. Veel ouders willen dit samen met hun jongere kinderen bekijken."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Dit programma bevat inhoud die veel ouders ongeschikt achten voor kinderen die jonger zijn dan 14 jaar."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Dit programma is speciaal ontwikkeld voor volwassen kijkers en is daarom mogelijk ongeschikt voor kinderen die jonger zijn dan 17 jaar."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Filmclassificaties"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Geschikt voor alle leeftijden. Niets dat ouders als ongepast voor kinderen zouden beschouwen."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Ouderlijk toezicht aanbevolen. Kan bepaalde inhoud bevatten die ouders niet geschikt vinden voor jonge kinderen."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Ouderlijk toezicht wordt sterk aangeraden. Sommige inhoud is mogelijk ongepast voor kinderen en jonge tieners."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Beperkt, bevat inhoud voor volwassenen. Ouders wordt aangeraden meer informatie over de film te bekijken voordat ze hun jonge kinderen meenemen."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Geen toegang voor 17 jaar en jonger. Duidelijk voor volwassenen. Niet toegestaan voor kinderen."</string>
</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index a5ff8681..84a23493 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Afspeelknoppen"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Kanalen"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Recente kanalen"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Recente kanalen"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Tv-opties"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP-opties"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Er zijn geen afspeelknoppen beschikbaar voor dit kanaal"</string>
@@ -138,8 +137,8 @@
<string name="pin_enter_again" msgid="2618999754723090427">"Uw pincode bevestigen"</string>
<string name="pin_enter_old_pin" msgid="4588282612931041919">"Uw huidige pincode opgeven"</string>
<plurals name="pin_enter_countdown">
- <item quantity="one" msgid="5555357148779935468">"U heeft vijf keer een verkeerde pincode ingevoerd.\nProbeer het over <xliff:g id="REMAINING_SECONDS">%1$d</xliff:g> seconde opnieuw."</item>
- <item quantity="other" msgid="8829550842387756054">"U heeft vijf keer een verkeerde pincode ingevoerd.\nProbeer het over <xliff:g id="REMAINING_SECONDS">%1$d</xliff:g> seconden opnieuw."</item>
+ <item quantity="one" msgid="5555357148779935468">"Je hebt vijf keer een verkeerde pincode ingevoerd.\nProbeer het over <xliff:g id="REMAINING_SECONDS">%1$d</xliff:g> seconde opnieuw."</item>
+ <item quantity="other" msgid="8829550842387756054">"Je hebt vijf keer een verkeerde pincode ingevoerd.\nProbeer het over <xliff:g id="REMAINING_SECONDS">%1$d</xliff:g> seconden opnieuw."</item>
</plurals>
<string name="pin_toast_wrong" msgid="2126295626095048746">"Die pincode is onjuist. Probeer het opnieuw."</string>
<string name="pin_toast_not_match" msgid="4283624338659521768">"Probeer het opnieuw; de pincode komt niet overeen"</string>
@@ -148,7 +147,7 @@
<string name="dialog_title_licenses" msgid="4471754920475076623">"Open-sourcelicenties"</string>
<string name="about_menu_version" msgid="6303769835664868129">"Versie"</string>
<string name="tvview_channel_locked" msgid="6486375335718400728">"Als u dit kanaal wilt bekijken, drukt u rechts en geeft u uw pincode op"</string>
- <string name="tvview_content_locked" msgid="391823084917017730">"Als u dit programma wilt bekijken, drukt u rechts en geeft u uw pincode op"</string>
+ <string name="tvview_content_locked" msgid="391823084917017730">"Als je dit programma wilt bekijken, druk je rechts en geef je je pincode op"</string>
<string name="tvview_content_locked_format" msgid="3741874636031338247">"Dit programma is beoordeeld als <xliff:g id="RATING">%1$s</xliff:g>.\nAls u dit programma wilt bekijken, drukt u rechts en geeft u uw pincode op."</string>
<string name="shrunken_tvview_content_locked" msgid="7686397981042364446">"Programma is geblokkeerd"</string>
<string name="shrunken_tvview_content_locked_format" msgid="3720284198877900916">"Dit programma is beoordeeld als <xliff:g id="RATING">%1$s</xliff:g>"</string>
diff --git a/res/values-pl-v23/strings.xml b/res/values-pl-v23/strings.xml
new file mode 100644
index 00000000..49d4ee4c
--- /dev/null
+++ b/res/values-pl-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Kanały"</string>
+</resources>
diff --git a/res/values-pl/rating_system_strings.xml b/res/values-pl/rating_system_strings.xml
index bae72985..20059093 100644
--- a/res/values-pl/rating_system_strings.xml
+++ b/res/values-pl/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Narkotyki"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Seks"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Przemoc"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Narkotyki"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Seks"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Przemoc"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"francuski"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Dwuznaczne dialogi"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Wulgarny język"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Treści pornograficzne"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Przemoc"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Bajkowa przemoc"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Program został przygotowany tak, by był odpowiedni dla wszystkich dzieci."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Program został przygotowany dla dzieci od 7 roku życia."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Większość rodziców uzna ten program za odpowiedni dla dzieci w każdym wieku."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Program zawiera materiały, które rodzice mogą uznać za nieodpowiednie dla młodszych dzieci. Wielu rodziców może chcieć obejrzeć go z nimi wspólnie."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Program zawiera materiały, które rodzice mogą uważać za nieodpowiednie dla dzieci poniżej 14 roku życia."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Program został przygotowany dla dorosłych i z tego powodu może być nieodpowiedni dla dzieci poniżej 17 roku życia."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Klasyfikacja wiekowa filmów"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Dla wszystkich odbiorców. Nic, co rodzice mogliby uznać za nieodpowiednie dla dzieci."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Zalecany nadzór rodzicielski. Mogą pojawiać się materiały, które rodzice mogą uznać za nieodpowiednie dla swoich małych dzieci."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Zdecydowanie zalecany nadzór rodzicielski. Niektóre materiały mogą być nieodpowiednie dla dzieci poniżej 12 roku życia."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Z ograniczonym dostępem, zawiera materiały dla dorosłych. Rodzice powinni dowiedzieć się więcej o tym filmie, zanim postanowią obejrzeć go ze swoimi małymi dziećmi."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Tylko dla osób powyżej 17 roku życia. Wyłącznie dla dorosłych. Niedozwolone dla dzieci."</string>
</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 465beb2b..d1225bd8 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Sterowanie odtwarzaniem"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Kanały"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Ostatnie kanały"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Ostatnie kanały"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Opcje TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Opcje PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Elementy sterujące Play są niedostępne dla tego kanału"</string>
diff --git a/res/values-pt-rPT-v23/strings.xml b/res/values-pt-rPT-v23/strings.xml
new file mode 100644
index 00000000..51e7dc13
--- /dev/null
+++ b/res/values-pt-rPT-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Canais"</string>
+</resources>
diff --git a/res/values-pt-rPT/rating_system_strings.xml b/res/values-pt-rPT/rating_system_strings.xml
index abd1a3e9..84f6c811 100644
--- a/res/values-pt-rPT/rating_system_strings.xml
+++ b/res/values-pt-rPT/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Drogas"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sexo"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Violência"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Drogas"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sexo"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Violência"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Francês"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Diálogo sugestivo"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Linguagem grosseira"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Conteúdos de natureza sexual"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Violência"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Violência de fantasia"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Este programa foi concebido para ser adequado para todas as crianças."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Este programa foi concebido para crianças com 7 e mais anos."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"A maioria dos pais consideraria este programa adequado para todas as idades."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Este programa contém material que os pais podem considerar inadequado para crianças mais jovens. Muitos pais podem querer vê-lo com seus filhos mais jovens."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Este programa contém algum material que muitos pais podem considerar inadequado para crianças com menos de 14 anos de idade."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Este programa foi especificamente concebido para ser visto por adultos e, por conseguinte, pode ser inadequado para crianças com menos de 17 anos."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Classificações de filmes"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Público em geral. Nada que poderia ofender os pais ao ser visto por crianças."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Recomenda-se a supervisão parental. Pode conter algum material que os pais não queiram que os seus filhos vejam."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Aconselha-se vivamente a atenção dos pais. Algum material poderá ser inadequado para pré-adolescentes."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Visualização restrita. Contém algum material para adultos. Aconselha-se que os pais saibam mais sobre o filme antes de levarem os seus filhos mais jovens a vê-lo."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Proibida a visualização a pessoas com 17 anos de idade ou menos. Conteúdo claramente para adultos. Proibida a visualização a crianças."</string>
</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 06ded4a7..5d1f5165 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"estéreo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Controlos de reprodução"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Canais"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Canais recentes"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Canais recentes"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Opções de TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Opções de PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Controlos de reprodução indisponíveis para este canal"</string>
diff --git a/res/values-pt-v23/strings.xml b/res/values-pt-v23/strings.xml
new file mode 100644
index 00000000..51e7dc13
--- /dev/null
+++ b/res/values-pt-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Canais"</string>
+</resources>
diff --git a/res/values-pt/rating_system_strings.xml b/res/values-pt/rating_system_strings.xml
index 41ad9024..18c21efb 100644
--- a/res/values-pt/rating_system_strings.xml
+++ b/res/values-pt/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Drogas"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sexo"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Violência"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Drogas"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sexo"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Violência"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Francês"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Diálogo sugestivo"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Linguagem vulgar"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Conteúdo sexual"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Violência"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Violência em contexto fantástico"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Este programa foi criado para crianças de todas as idades."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Este programa foi criado para crianças de sete anos ou mais."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"A maioria dos pais considera este programa adequado para todas as idades."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Este programa contém material que os pais podem considerar inadequado para crianças pequenas. Muitos pais podem preferir vê-lo com seus filhos pequenos."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Este programa contém material que muitos pais podem considerar inadequado para menores de 14 anos."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Este programa foi criado especificamente para adultos e, portanto, pode ser inadequado para crianças menores de 17 anos."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Classificações de filmes"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Livre. Não há nada que possa ofender os pais se visto por crianças."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Sugerida orientação dos pais. Pode conter material não aprovado por pais para seus filhos pequenos."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Atenção máxima dos pais. Parte do material pode ser imprópria para pré-adolescentes."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Restrito, com material adulto. Orienta-se que os pais pesquisem mais sobre o filme antes de levar os filhos para assistir com eles."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Proibido para menores de 17 anos. Conteúdo claramente adulto. Proibido para crianças."</string>
</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 71fcf6d5..345271e5 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"estéreo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Controles de reprodução"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Canais"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Canais recentes"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Canais recentes"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Opções da TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Opções de PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Controles de reprodução indisponíveis para este canal"</string>
diff --git a/res/values-ro-v23/strings.xml b/res/values-ro-v23/strings.xml
new file mode 100644
index 00000000..e556bdc5
--- /dev/null
+++ b/res/values-ro-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Canale"</string>
+</resources>
diff --git a/res/values-ro/rating_system_strings.xml b/res/values-ro/rating_system_strings.xml
index 060932b9..a4cc56dc 100644
--- a/res/values-ro/rating_system_strings.xml
+++ b/res/values-ro/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Droguri"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sex"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Violență"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Droguri"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sex"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Violență"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Franceză"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Dialog sugestiv sexual"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Limbaj grosolan"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Conținut sexual"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Violență"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Violență ficțională"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Acest program a fost creat pentru a fi adecvat pentru toți copiii."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Acest program a fost creat pentru copiii de peste 7 ani."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Majoritatea părinților ar considera acest program adecvat pentru toate vârstele."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Acest program conține materiale pe care părinții le pot considera neadecvate pentru copiii mai mici. Mulți părinți pot dori să urmărească acest program împreună cu copiii mai mici."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Acest program conține anumite materiale pe care mulți părinți le pot considera neadecvate pentru copiii sub 14 ani."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Acest program este în mod special creat pentru a fi vizionat de adulți. Din acest motiv, poate fi neadecvat pentru persoanele sub 17 ani."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Evaluările filmelor"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Public general. Fără conținut pe care părinții l-ar putea considera neadecvat pentru copii."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Se recomandă acordul parental. Poate conține anumite materiale pe care părinții le-ar putea considera neadecvate pentru copiii mai mici."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Atenționare vehementă pentru părinți. Anumite materiale pot fi neadecvate pentru preadolescenți."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Acces limitat. Conține anumite materiale pentru adulți. Părinții sunt îndemnați să afle mai multe despre film înainte de a veni însoțiți de copiii mai mici."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Interzis persoanelor sub 17 ani. Numai pentru adulți. Interzis copiilor."</string>
</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index e7eef342..f46e6bd2 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Comenzi de redare"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Canale"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Canale recente"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Canale recente"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Opțiuni TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Opțiuni PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Comenzile de redare nu sunt disponibile pentru acest canal"</string>
diff --git a/res/values-ru-v23/strings.xml b/res/values-ru-v23/strings.xml
new file mode 100644
index 00000000..a37c7260
--- /dev/null
+++ b/res/values-ru-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Каналы"</string>
+</resources>
diff --git a/res/values-ru/rating_system_strings.xml b/res/values-ru/rating_system_strings.xml
index a294171d..72946d31 100644
--- a/res/values-ru/rating_system_strings.xml
+++ b/res/values-ru/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Наркотики"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Секс"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Насилие"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Наркотики"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Секс"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Насилие"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"французский"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Непристойные разговоры"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Нецензурная лексика"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Секс"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Насилие"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Причинение вреда фантастическим персонажам"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Эта программа предназначена для детей любого возраста."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Эта программа предназначена для детей старше 7 лет."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Эта программа подходит для детей любого возраста."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Маленьким детям рекомендуется просмотр этой программы только в присутствии родителей."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Эта программа не рекомендуется к просмотру детям младше 14 лет."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Эта программа предназначена для взрослой аудитории. Не рекомендуется к просмотру детям младше 17 лет."</string>
<string name="title_us_mv" msgid="7861766023361439035">"США"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Для широкой аудитории. Разрешается к просмотру детям любого возраста."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Желательно присутствие родителей. Некоторые сцены могут быть неподходящими для маленьких детей."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Просмотр только в присутствии родителей. Некоторые сцены могут быть неподходящими для детей младше 14 лет."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Видео для взрослых. Родителям необходимо ознакомиться с содержанием, прежде чем показывать это видео детям."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Только для зрителей не младше 18 лет."</string>
</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 8a616a34..ee8ff7ec 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"Моно"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"Стерео"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Управление"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Каналы"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Недавние каналы"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Недавние каналы"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Настройки ТВ"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Настройки PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Команды управления недоступны для этого канала"</string>
diff --git a/res/values-si-rLK-v23/strings.xml b/res/values-si-rLK-v23/strings.xml
new file mode 100644
index 00000000..1209e55b
--- /dev/null
+++ b/res/values-si-rLK-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"නාලිකා"</string>
+</resources>
diff --git a/res/values-si-rLK/rating_system_strings.xml b/res/values-si-rLK/rating_system_strings.xml
index 2ecb0ef0..77666b1b 100644
--- a/res/values-si-rLK/rating_system_strings.xml
+++ b/res/values-si-rLK/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"මත්ද්‍රව්‍ය"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"ලිංගිකත්වය"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"ප‍්‍රචණ්ඩත්වය"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"මත්ද්‍රව්‍ය"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"ලිංගිකත්වය"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"ප‍්‍රචණ්ඩත්වය"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"ප්‍රංශ"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"යෝජිත සංවාදය"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"රළු භාෂාව"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"ලිංගිකත්වය හඟවන අන්තර්ගතය"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"ප‍්‍රචණ්ඩත්වය"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"කාල්පනික ප්‍රචණ්ඩත්වය"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"සියලුම ළමයි සඳහා සුදුසු ලෙස මෙම වැඩසටහන නිර්මාණය කර තිබේ."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"වයස 7 සහ ඊට වැඩි ළමයින් සඳහා මෙම වැඩසටහන නිර්මාණය කර තිබේ."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"මෙම වැඩසටහන සියලු වයස් කාණ්ඩ සඳහා සුදුසු බව බොහෝ මව්පියන් සිතයි."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"මෙම වැඩසටහනෙහි වයසින් අඩු ළමයින් සඳහා නුසුදුසු බවට මව්පියන් සිතිය හැකි ඇතැම් ද්‍රව්‍ය අඩංගුය. බොහෝ මව්පියන්ට එය ඔවුන්ගේ දරුවන් සමග නැරඹීමට අවශ්‍ය විය හැකිය."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"මෙම වැඩසටහනෙහි වයස අවුරුදු 14ට අඩු ළමයින් සඳහා නුසුදුසු බවට මව්පියන් සිතිය හැකි ඇතැම් ද්‍රව්‍ය අඩංගුය."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"මෙම වැඩසටහන වැඩිහිටියන්ට නැරඹීම සඳහා විශේෂිතවම නිර්මාණය කර ඇති අතර එබැවින් වයස 17ට අඩු ළමයින්ට නුසුදුසු විය හැකිය."</string>
<string name="title_us_mv" msgid="7861766023361439035">"චිත්‍රපට ඇගයීම්"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"සාමාන්‍ය ප්‍රේක්ෂකයන්. ළමයින්ට නැරඹීමට දීම සඳහා දෙමව්පියන් අකමැති කිසිවක් නැත."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"මාපිය මග පෙන්වීම යෝජනා කෙරේ. දෙමව්පියන් ඔවුන්ගේ ළමයින් සඳහා පෙන්වීමට කැමති නොවන ඇතැම් අන්තර්ගතය තිබිය හැකිය."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"දෙමව්පියන්ට දැඩිව අනතුරු අඟවනු ලැබේ. ඇතැම් ද්‍රව්‍ය පූර්ව-නවයෞවනයන්ට නුසුදුසු විය හැකිය."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"සීමා කරන ලදී, යම් වැඩිහිටි අන්තර්ගතය අඩංගුය. දෙමව්පියන්ට සිය ළමුන් කැටුව චිත්‍රපටය නැරඹීමට යාමට පෙර එය පිළිබඳව තව දැන ගන්නා ලෙස බල කෙරේ."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"වයස 17 සහ ඊට අඩු කිසිවෙකු ඇතුළත් කර නොගැනේ. පැහැදිලිවම වැඩිහිටියන්ය. ළමයින් ඇතුළත් කර නොගැනේ."</string>
</resources>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index f587466c..57652c6e 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"මොනෝ"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"ස්ටීරියෝ"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"ධාවක පාලන"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"නාලිකා"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"මෑත නාලිකා"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"මෑත නාලිකා"</string>
<string name="menu_title_options" msgid="7184594626814914022">"රූපවාහිනී විකල්ප"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP විකල්ප"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"මෙම නාලිකාව සඳහා Play පාලන ලද නොහැකිය"</string>
diff --git a/res/values-sk-v23/strings.xml b/res/values-sk-v23/strings.xml
new file mode 100644
index 00000000..db4fdf2e
--- /dev/null
+++ b/res/values-sk-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Kanály"</string>
+</resources>
diff --git a/res/values-sk/rating_system_strings.xml b/res/values-sk/rating_system_strings.xml
index e3c62ce9..a5c121d0 100644
--- a/res/values-sk/rating_system_strings.xml
+++ b/res/values-sk/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Drogy"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sex"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Násilie"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Drogy"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sex"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Násilie"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Francúzština"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Naznačujúce dialógy"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Hrubý jazyk"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Sexuálny obsah"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Násilie"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Fantazijné násilie"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Tento program je vhodný pre všetky deti."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Tento program je vhodný pre deti od sedem rokov."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Väčšina rodičov by tento program považovala za vhodný pre deti všetkých vekových skupín."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"V tomto programe sa nachádza obsah, ktorý môžu rodičia považovať za nevhodný pre mladšie deti. Je možné, že mnoho rodičov si ho však bude chcieť so svojimi mladšími deťmi pozrieť."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Tento program zahrnuje obsah, ktorý by mnohí rodičia mohli považovať za nevhodný pre deti mladšie ako 14 rokov."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Tento program je konkrétne určený pre dospelých, a preto môže byť nevhodný pre deti mladšie ako 17 rokov."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Hodnotenia filmov"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Všeobecné publikum. Žiadny obsah, ktorého pozretie deťmi by rozhorčilo rodičov."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Odporúča sa rodičovský dohľad. Môže zahrnovať obsah, ktorý by mohli rodičia považovať za nevhodný pre malé deti."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Dôrazne sa odporúča dohľad rodičov. Určitý obsah môže byť nevhodný pre deti do 13 rokov."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Obmedzené. Zahrnuje obsah pre dospelých. Rodičom sa odporúča, aby si o filme zistili viac informácií, než naň vezmú svoje malé deti."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Mládeži do 18 rokov neprístupné. Obsah pre dospelých. Deťom neprístupné."</string>
</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index c470ae42..71f76b1f 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Ovládanie prehrávania"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Kanály"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Nedávne kanály"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Nedávne kanály"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Možnosti TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Možnosti PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Pre tento kanál nie sú k dispozícii ovládacie prvky prehrávania"</string>
diff --git a/res/values-sl-v23/strings.xml b/res/values-sl-v23/strings.xml
new file mode 100644
index 00000000..29068cad
--- /dev/null
+++ b/res/values-sl-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Kanali"</string>
+</resources>
diff --git a/res/values-sl/rating_system_strings.xml b/res/values-sl/rating_system_strings.xml
index 5b2d873b..e88520c8 100644
--- a/res/values-sl/rating_system_strings.xml
+++ b/res/values-sl/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Mamila"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Spolnost"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Nasilje"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Mamila"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Spolnost"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Nasilje"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"francoščina"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Sugestivni dialog"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Grobo izražanje"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Prizori spolnosti"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Nasilje"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Fantazijsko nasilje"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Ta oddaja je primerna za otroke vseh starosti."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Ta oddaja je primerna za otroke starosti 7 let in starejše."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Večini staršev bi se zdela ta oddaja neprimerna za vse starosti."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Ta oddaja vsebuje gradivo, ki se staršem morda zdi neprimerno za mlajše otroke. Veliko staršev si jo morda želi ogledati z mlajšimi otroki."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Ta oddaja vsebuje gradivo, ki bi se veliko staršem zdela neprimerna za otroke, mlajše od 14 let."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Ta oddaja je posebej namenjena odraslim in je morda neprimerna za otroke, mlajše od 17 let."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Kategorije filmov"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Primerno za vse. Ne vsebuje nič takega, zaradi česar bi starši otrokom odrekli ogled."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Priporočamo starševski nadzor. Vsebina morda vsebuje gradivo, za katerega starši ne bi želeli, da si ga otroci ogledajo."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Starši, pozor. Nekatero gradivo morda ni primerno za otroke, mlajše od 13 let."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Omejen ogled, film vsebuje gradivo za odrasle. Starši naj se pozanimajo o filmu, preden si ga ogledajo skupaj z otroki."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Osebam, starim 17 let in manj, je ogled prepovedan. Vsebina je nedvomno namenjena odraslim. Otrokom je ogled prepovedan."</string>
</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 7a930550..b5499ec0 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Kontrolniki predvajanja"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Kanali"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Nedavni kanali"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Nedavni kanali"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Možnosti za TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Možnosti za PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Kontrolniki za predvajanje niso na voljo za ta kanal"</string>
diff --git a/res/values-sr-v23/strings.xml b/res/values-sr-v23/strings.xml
new file mode 100644
index 00000000..4fd7f740
--- /dev/null
+++ b/res/values-sr-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Канали"</string>
+</resources>
diff --git a/res/values-sr/rating_system_strings.xml b/res/values-sr/rating_system_strings.xml
index ab9670ef..fc0a3fd2 100644
--- a/res/values-sr/rating_system_strings.xml
+++ b/res/values-sr/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Дрога"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Секс"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Насиље"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Дрога"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Секс"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Насиље"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"француски"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Сугестивни дијалог"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Непристојан језик"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Сексуални садржај"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Насиље"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Насиље у контексту фантазије"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Овај програм је намењен деци свих узраста."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Овај програм је намењен деци која имају 7 и више година."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Већина родитеља би сматрала овај програм прикладним за све узрасте."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Овај програм садржи материјал који би родитељи могли да сматрају неприкладним за млађу децу. Многи родитељи ће можда желети да га гледају заједно са млађом децом."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Овај програм садржи одређени материјал који би многи родитељи сматрали неприкладним за децу млађу од 14 година."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Овај програм је специјално намењен за одрасле, па може да буде неприкладан за децу млађу од 17 година."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Оцене филмова"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"За све узрасте. Ништа у садржају не може да буде увредљиво за родитеље у случају да деца гледају."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Препоручује се родитељски надзор. Може да садржи неки материјал за који родитељи можда сматрају да није прикладан за малу децу."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Изричито се саветује родитељски надзор. Неки материјал можда није прикладан за децу млађу од 13 година."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"За ограничену публику, обухвата садржај за одрасле. Саветује се родитељима да сазнају више о филму пре него што поведу децу са собом."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Није дозвољено за лица узраста од 17 година и млађа. Искључиво за одрасле. Није дозвољено за децу."</string>
</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index b20ab125..e86fb28f 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"моно"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"стерео"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Play контроле"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Канали"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Недавни канали"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Недавни канали"</string>
<string name="menu_title_options" msgid="7184594626814914022">"ТВ опције"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Опц. сл. у сл."</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Контроле за пуштање нису доступне за овај канал"</string>
diff --git a/res/values-sv-v23/strings.xml b/res/values-sv-v23/strings.xml
new file mode 100644
index 00000000..39ce31fc
--- /dev/null
+++ b/res/values-sv-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Kanaler"</string>
+</resources>
diff --git a/res/values-sv/rating_system_strings.xml b/res/values-sv/rating_system_strings.xml
index 8f72876e..c00e378c 100644
--- a/res/values-sv/rating_system_strings.xml
+++ b/res/values-sv/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Droger"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Sex"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Våld"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Droger"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Sex"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Våld"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"franska"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Provokativ dialog"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Grovt språk"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Sexuellt innehåll"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Våld"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Fantasyvåld"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Det här programmet är utformat så att det ska vara lämpligt för alla barn."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Det här programmet är utformat för barn i åldern 7 år och äldre."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"De flesta föräldrar skulle anse att det här programmet passar för alla åldrar."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Det här programmet innehåller material som föräldrar kan anse vara olämpligt för yngre barn. Många föräldrar kan vilja titta på det tillsammans med de yngre barnen."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Det här programmet innehåller material som många föräldrar anser vara olämpligt för barn under 14 år."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Det här programmet är särskilt utformat för att ses av vuxna och kan därför vara olämpligt för barn under 17 år."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Klassificering av film"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Allmän publik. Innehåller inget som kan anse vara stötande av föräldrar som låter barn titta."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Förälders sällskap rekommenderas. Föräldrar kan bedöma visst innehåll som olämpligt för små barn."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Föräldrar varnas uttryckligen. Visst innehåll kan vara olämpligt för barn under 13 år."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Begränsat. Innehåller visst barnförbjudet material. Föräldrar uppmanas att läsa mer om filmen innan de tittar på den tillsammans med barnen."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Endast för personer som är 17 år eller äldre. Uppenbart barnförbjudet innehåll."</string>
</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 4c4e8e70..6faf0b0a 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Uppspelningskontroller"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Kanaler"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Senaste kanalerna"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Senaste kanaler"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Tv-alternativ"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP-alternativ"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Uppspelningskontrollerna är inte tillgängliga för den här kanalen"</string>
diff --git a/res/values-sw-v23/strings.xml b/res/values-sw-v23/strings.xml
new file mode 100644
index 00000000..33479e41
--- /dev/null
+++ b/res/values-sw-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Vituo"</string>
+</resources>
diff --git a/res/values-sw/rating_system_strings.xml b/res/values-sw/rating_system_strings.xml
index b6583df8..1893c5e2 100644
--- a/res/values-sw/rating_system_strings.xml
+++ b/res/values-sw/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Dawa za Kulevya"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Ngono"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Vurugu"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Dawa za Kulevya"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Ngono"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Vurugu"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Kifaransa"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Mazungumzo yanayochochea ngono"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Lugha ya matusi"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Maudhui ya ngono"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Vurugu"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Vurugu ya dhahania"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Kipindi hiki kimetayarishwa kuwafaa watoto wa marika yote."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Kipindi hiki kimetayarishwa kwa ajili ya watoto walio na umri wa miaka 7 na zaidi."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Wazazi wengi zaidi wataona kuwa kipindi hiki kinafaa kwa umri wowote."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Kipindi hiki kina maudhui ambayo wazazi wanaweza kuona kuwa hayafai watoto wao wachanga zaidi. Wazazi wengi wanaweza kupendelea kukitazama na watoto wao wachanga."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Kipindi hiki kina maudhui ambayo wazazi wengi wataona kuwa hayafai kwa watoto walio na umri wa chini ya miaka 14."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Kipindi hiki kimeundwa maalum kwa kutazamwa na watu wazima na hivyo basi huenda kisiwafae watoto wenye umri wa chini ya miaka 17."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Ukadiriaji wa filamu"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Hadhira ya jumla. Kipindi ambacho hakitawaudhi wazazi endapo watoto watatazama."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Mwongozo wa wazazi unapendekezwa. Baadhi ya maudhui yanaweza kuwa hayafai watoto."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Wazazi wanatahadharishwa. Baadhi ya maudhui yanaweza kuwa hayafai watoto wanaokaribia kuwa chipukizi."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Inadhibitiwa.Yana maudhui ya watu wazima. Wazazi wanashauriwa kupata maelezo zaidi kuihusu filamu kabla ya kuandamana na watoto wao wadogo kuitazama."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Mtu yeyote mwenye umri wa chini ya miaka 17 haruhusiwi. Watu wazima tu. Watoto hawaruhusiwi."</string>
</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 849ef772..1f44ca98 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Vidhibiti vya kucheza"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Vituo"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Vituo vya hivi majuzi"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Vituo vya hivi karibuni"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Chaguo za Runinga"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Chaguo za PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Vidhibiti vya kucheza havipatikani kwa kituo hiki"</string>
diff --git a/res/values-ta-rIN-v23/strings.xml b/res/values-ta-rIN-v23/strings.xml
new file mode 100644
index 00000000..1b94e0c4
--- /dev/null
+++ b/res/values-ta-rIN-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"சேனல்கள்"</string>
+</resources>
diff --git a/res/values-ta-rIN/rating_system_strings.xml b/res/values-ta-rIN/rating_system_strings.xml
index f4796168..cfbb23f1 100644
--- a/res/values-ta-rIN/rating_system_strings.xml
+++ b/res/values-ta-rIN/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"போதைப் பொருட்கள்"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"பாலியல் உறவு"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"வன்முறை"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"போதைப் பொருட்கள்"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"பாலியல் உறவு"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"வன்முறை"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"பிரெஞ்சு"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"பாலுணர்வைத் தூண்டும் உரையாடல்"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"கொச்சை மொழி"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"பாலியல் உள்ளடக்கம்"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"வன்முறை"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"ஃபேண்டஸி வன்முறை"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"இந்த நிகழ்ச்சி எல்லா வயதினருக்கும் ஏற்றவாறு உருவாக்கப்பட்டது."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"இந்த நிகழ்ச்சி 7 மற்றும் அதற்கு மேற்பட்ட வயதினருக்கு ஏற்றவாறு உருவாக்கப்பட்டது."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"பல பெற்றோர்கள் இந்த நிகழ்ச்சி எல்லா வயதினரும் பார்ப்பதற்கு உகந்தது எனக் கண்டறிந்துள்ளனர்."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"தங்களின் குழந்தைகள் பார்ப்பதற்கு ஏற்றது இல்லை எனப் பெற்றோர்கள் கருதக்கூடிய உள்ளடக்கம் இந்த நிகழ்ச்சியில் உள்ளது. பல பெற்றோர்கள் தங்கள் குழந்தைகளுடன் இதைப் பார்க்க விரும்பலாம்."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"இந்த நிகழ்ச்சியில், 14 வயதிற்குக் கீழ் உள்ள குழந்தைகள் பார்ப்பதற்கு உகந்தது அல்ல எனப் பல பெற்றோர்கள் கண்டறியக்கூடிய உள்ளடக்கம் உள்ளது."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"இந்த நிகழ்ச்சி, பெரியவர்களுக்கானது, எனவே 17 வயதுக்குக் கீழ் உள்ளவர்களுக்கு ஏற்றது அல்ல."</string>
<string name="title_us_mv" msgid="7861766023361439035">"திரைப்பட மதிப்பீடுகள்"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"பொதுப் பார்வையாளர்களுக்கானது. குழந்தைகள் பார்ப்பதைப் பற்றி பெற்றோர்கள் வருந்தத் தேவையில்லை."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"பெற்றோர் வழிகாட்டல் பரிந்துரைக்கப்படுகிறது. குழந்தைகளுக்கு ஏற்றது அல்ல எனப் பெற்றோர்கள் கருதக்கூடிய சில உள்ளடக்கம் இருக்கலாம்."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"பெற்றோர் மிகுந்த எச்சரிக்கையுடன் இருக்க வேண்டும். சில உள்ளடக்கம் இளம் சிறார்களுக்குப் பொருத்தமற்றதாக இருக்கலாம்."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"பெரியவர்களுக்கான உள்ளடக்கம் இருப்பதால் தடைசெய்யப்பட்டுள்ளது. குழந்தைகளுடன் காணச் செல்லும் முன், திரைப்படத்தைப் பற்றி மேலும் அறிந்துகொள்ளுமாறு பெற்றோர்கள் அறிவுறுத்தப்படுகின்றனர்."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"17 வயது மற்றும் அதற்குக் குறைவான வயதினருக்குப் பொருந்தாது. பெரியவர்களுக்கு மட்டுமே பொருந்தும். குழந்தைகளுக்கு அனுமதியில்லை."</string>
</resources>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
index 2ef5b53c..38179f14 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta-rIN/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"மோனோ"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"ஸ்டீரியோ"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"இயக்கக் கட்டுப்பாடுகள்"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"சேனல்கள்"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"சமீபத்திய சேனல்கள்"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"சமீபத்திய சேனல்கள்"</string>
<string name="menu_title_options" msgid="7184594626814914022">"டிவி விருப்பங்கள்"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP விருப்பங்கள்"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"இந்தச் சேனலுக்கு இயக்கக் கட்டுப்பாடுகள் இல்லை"</string>
diff --git a/res/values-te-rIN-v23/strings.xml b/res/values-te-rIN-v23/strings.xml
new file mode 100644
index 00000000..ac59e7af
--- /dev/null
+++ b/res/values-te-rIN-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"ఛానెల్‌లు"</string>
+</resources>
diff --git a/res/values-te-rIN/rating_system_strings.xml b/res/values-te-rIN/rating_system_strings.xml
index 4414134f..cd24f7b5 100644
--- a/res/values-te-rIN/rating_system_strings.xml
+++ b/res/values-te-rIN/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"మాదక ద్రవ్యాలు"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"శృంగారం"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"హింస"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"మాదక ద్రవ్యాలు"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"శృంగారం"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"హింస"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"ఫ్రెంచ్"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"సరస శృంగార వ్యాఖ్యలు"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"అనాగరిక భాష"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"శృంగార విషయాలు"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"హింస"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"కాల్పనిక హింస"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"ఈ కార్యక్రమం అన్ని వయస్సుల పిల్లలకు తగినట్లుగా రూపొందించబడింది."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"ఈ కార్యక్రమం 7 ఏళ్లు అంతకంటే పైబడిన పిల్లల కోసం రూపొందించబడింది."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"దాదాపు అందరు తల్లిదండ్రులు ఈ కార్యక్రమం అన్ని వయస్సుల వారికి తగినదని భావిస్తారు."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"ఈ కార్యక్రమంలో తల్లిదండ్రులు వారి చిన్న పిల్లలకు అనుచితమని భావించే అంశాలు ఉన్నాయి. చాలా మంది తల్లిదండ్రులు దీన్ని తమ చిన్న పిల్లలతో కలిసి చూడాలనుకోవచ్చు."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"ఈ కార్యక్రమంలో చాలామంది తల్లిదండ్రులు 14 ఏళ్లలోపు పిల్లలకు అనుచితమని భావించే కొన్ని అంశాలు ఉన్నాయి."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"ఈ కార్యక్రమం ప్రత్యేకించి పెద్దలు మాత్రమే వీక్షించడం కోసం రూపొందించబడింది, కనుక ఇది 17 ఏళ్లలోపు పిల్లలు చూడదగినది కాదు."</string>
<string name="title_us_mv" msgid="7861766023361439035">"చలన చిత్ర రేటింగ్‌లు"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"సాధారణ ప్రేక్షకులు. తల్లిదండ్రులు వారి పిల్లలు చూడకుండా ఆక్షేపించాల్సిన అంశాలు ఏమీ ఉండవు."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"తల్లిదండ్రుల మార్గదర్శకం సూచించడమైనది. తల్లిదండ్రులు వారి చిన్న పిల్లలకు తగదని భావించే కొన్ని అంశాలు ఉండవచ్చు."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"తల్లిదండ్రులకు గట్టి హెచ్చరిక. కొన్ని అంశాలు పూర్వ టీనేజీ దశ వారికి అనుచితంగా ఉండవచ్చు."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"నిషిద్ధం, కొన్ని వయోజన అంశాలు ఉన్నాయి. తల్లిదండ్రులు సినిమాకి వారి చిన్న పిల్లలను తీసుకెళ్లే ముందు సినిమా గురించి మరింత తెలుసుకోవాలని కోరుతున్నాము."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"17 ఏళ్లు అంతకంటే తక్కువ వయస్సు గల వారికి నిషిద్ధం. పూర్తిగా పెద్దలకు మాత్రమే. పిల్లలకు నిషిద్ధం."</string>
</resources>
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
index b8dd5915..2c0b861d 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te-rIN/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"మోనో"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"స్టీరియో"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"ప్లే నియంత్రణలు"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"ఛానెల్‌లు"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"ఇటీవలి ఛానెళ్లు"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"ఇటీవలి ఛానెళ్లు"</string>
<string name="menu_title_options" msgid="7184594626814914022">"టీవీ ఎంపికలు"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP ఎంపికలు"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"ఈ ఛానెల్ యొక్క ప్లే నియంత్రణలు అందుబాటులో లేవు"</string>
diff --git a/res/values-th-v23/strings.xml b/res/values-th-v23/strings.xml
new file mode 100644
index 00000000..51fdaba7
--- /dev/null
+++ b/res/values-th-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"ช่อง"</string>
+</resources>
diff --git a/res/values-th/rating_system_strings.xml b/res/values-th/rating_system_strings.xml
index 151cc028..f0b6715d 100644
--- a/res/values-th/rating_system_strings.xml
+++ b/res/values-th/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"ยาเสพติด"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"เรื่องเพศ"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"ความรุนแรง"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"ยาเสพติด"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"เรื่องเพศ"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"ความรุนแรง"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"ภาษาฝรั่งเศส"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"การสนทนาที่มีการชี้นำทางเพศ"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"ภาษาหยาบคาย"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"เนื้อหาเกี่ยวกับเรื่องเพศ"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"ความรุนแรง"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"ภาพจินตนาการที่แสดงความรุนแรง"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"รายการนี้ออกแบบมาสำหรับเด็กทุกวัย"</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"รายการนี้ออกแบบมาสำหรับเด็กอายุ 7 ปีขึ้นไป"</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"ผู้ปกครองส่วนใหญ่อาจเห็นว่ารายการนี้เหมาะสำหรับทุกวัย"</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"รายการนี้มีเนื้อหาที่ผู้ปกครองอาจเห็นว่าไม่เหมาะสำหรับเด็กเล็ก ผู้ปกครองจำนวนมากอาจต้องการชมเนื้อหานี้กับเด็กเล็กของตน"</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"รายการนี้มีเนื้อหาบางส่วนที่ผู้ปกครองจำนวนมากอาจเห็นว่าไม่เหมาะสำหรับเด็กอายุต่ำกว่า 14 ปี"</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"รายการนี้ออกแบบมาสำหรับผู้ใหญ่โดยเฉพาะและอาจไม่เหมาะสมสำหรับเด็กอายุต่ำกว่า 17 ปี"</string>
<string name="title_us_mv" msgid="7861766023361439035">"การจัดประเภทภาพยนตร์"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"ผู้ชมทั่วไป เด็กสามารถรับชมได้โดยผู้ปกครองไม่ต้องกังวล"</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"ผู้ปกครองควรให้คำแนะนำ อาจมีเนื้อหาบางส่วนที่ผู้ปกครองเห็นว่าไม่เหมาะสำหรับเด็กเล็ก"</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"ผู้ปกครองควรระมัดระวังอย่างยิ่ง เนื้อหาบางส่วนอาจไม่เหมาะสำหรับเด็กอายุ 9-12 ปี"</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"มีข้อจำกัด เนื้อหาบางส่วนเหมาะสำหรับผู้ใหญ่ ผู้ปกครองควรเรียนรู้เพิ่มเติมเกี่ยวกับภาพยนตร์นี้ก่อนที่จะพาเด็กเล็กไปร่วมรับชม"</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"ไม่อนุญาตผู้ที่อายุ 17 ปีและต่ำกว่า เหมาะสำหรับผู้ใหญ่เท่านั้น ไม่อนุญาตให้เด็กรับชม"</string>
</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index d4486538..951c1b39 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"โมโน"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"สเตอริโอ"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"การควบคุมการเล่น"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"ช่อง"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"ช่องล่าสุด"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"ช่องล่าสุด"</string>
<string name="menu_title_options" msgid="7184594626814914022">"ตัวเลือกทีวี"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"ตัวเลือกของ PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"ไม่มีการควบคุมการเล่นสำหรับช่องนี้"</string>
diff --git a/res/values-tl-v23/strings.xml b/res/values-tl-v23/strings.xml
new file mode 100644
index 00000000..400bfd41
--- /dev/null
+++ b/res/values-tl-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Mga Channel"</string>
+</resources>
diff --git a/res/values-tl/rating_system_strings.xml b/res/values-tl/rating_system_strings.xml
index 03e9c58f..5c95bf2e 100644
--- a/res/values-tl/rating_system_strings.xml
+++ b/res/values-tl/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Mga Bawal na Gamot"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Pagtatalik"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Karahasan"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Mga Bawal na Gamot"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Pagtatalik"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Karahasan"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"French"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Magpahiwatig na usapan"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Magaspang na pananalita"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Sekswal na content"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Karahasan"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Karahasan sa fantasy"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Idinisenyo ang programang ito upang maging angkop para sa lahat ng bata."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Idinisenyo ang programang ito para sa mga batang may edad 7 pataas."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Maaaring sang-ayunan ng karamihan ng mga magulang na naaangkop ang programang ito para sa lahat ng edad."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Naglalaman ang programang ito ng materyal na maaaring sang-ayunan ng mga magulang na hindi naaangkop para sa mga bata. Mainam na panoorin ito ng maraming magulang kasama ang kanilang mga anak na nasa murang edad."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Naglalaman ang programang ito ng ilang materyal na maaaring sang-ayunan ng maraming magulang na hindi naaangkop para sa mga batang wala pang edad 14."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Partikular na idinisenyo ang programang ito upang panoorin ng mga nasa hustong gulang at samakatuwid, maaaring hindi ito naaangkop para sa mga batang wala pang edad 17."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Mga rating ng pelikula"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Para sa lahat ng manonood. Hindi naglalaman ng anumang bagay na maaaring makapanakit sa mga magulang kapag pinanood ng kanilang mga anak."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Inirerekomenda ang gabay ng magulang. Maaaring maglaman ng ilang materyal na maaaring hindi gustong ipapanood ng mga magulang sa kanilang mga anak na nasa murang edad."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Lubos na pinapaalalahanan ang mga magulang. Maaaring hindi naaangkop ang ilang materyal para sa mga kabataan."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Pinaghihigpitan, Naglalaman ng ilang materyal na pang-nasa hustong gulang. Hinihikayat ang mga magulang na matuto nang higit pa tungkol sa pelikula bago isama sa panonood nito ang kanilang mga anak na nasa murang edad."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Walang pinapapasok na sinumang may edad 17 pababa. Pang-nasa hustong gulang lang. Hindi pinapapasok ang mga bata."</string>
</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index fd916986..672fb3f9 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Mga kontrol sa Play"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Mga Channel"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Mga kamakailang channel"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Kamakailang channel"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Opsyon sa TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Mga opsyon sa PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Hindi available para sa channel na ito ang mga kontrol ng laro"</string>
diff --git a/res/values-tr-v23/strings.xml b/res/values-tr-v23/strings.xml
new file mode 100644
index 00000000..9d1c1de7
--- /dev/null
+++ b/res/values-tr-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Kanallar"</string>
+</resources>
diff --git a/res/values-tr/rating_system_strings.xml b/res/values-tr/rating_system_strings.xml
index 8e25de47..ebac04cc 100644
--- a/res/values-tr/rating_system_strings.xml
+++ b/res/values-tr/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Uyuşturucular"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Cinsellik"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Şiddet"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Uyuşturucular"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Cinsellik"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Şiddet"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Fransızca"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Müstehcen konuşma"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Kaba dil"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Cinsel içerik"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Şiddet"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Fantastik şiddet"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Bu program, tüm çocuklar için uygun olacak şekilde tasarlanmıştır."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Bu program, 7 yaş ve üstü çocuklar için tasarlanmıştır."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Ebeveynlerin çoğu bu programı tüm yaş grupları için uygun bulur."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Bu program, ebeveynlerin çocukları için uygun bulmayacağı içerik barındırmaktadır. Pek çok ebeveyn bu programı küçük çocuklarıyla birlikte izlemek isteyebilir."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Bu program, birçok ebeveynin 14 yaşından küçük çocuklar için uygun görmeyeceği içerik barındırmaktadır."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Bu program sadece yetişkinler tarafından izlenmek üzere tasarlanmıştır ve bu sebeple 17 yaşından küçük çocuklar için uygun olmayabilir."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Film derecelendirmeleri"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Genel kitle. Ebeveynlerin, çocuklarının izlemesinden rahatsız olacakları hiçbir şey yoktur."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Ebeveyn rehberliği önerilir. Ebeveynlerin çocukları için uygun bulmayabileceği bir takım içeriklere sahip olabilir."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Ebeveynlerin kesinlikle dikkatli olması önerilir. Bazı içerikler ergenlik öncesi çocuklar için uygun olmayabilir."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Kısıtlı. Yetişkinlere yönelik bazı malzemeler içerir. Ebeveynlerin, çocuklarını götürmeden önce film hakkında daha fazla bilgi edinmeleri kesinlikle önerilir."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"17 yaş ve altındakiler kabul edilmez. Tamamen yetişkinler için. Çocuklar kabul edilmez."</string>
</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index c4b0086d..6a551a2f 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Oynatma denetimleri"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Kanallar"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Son kanallar"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Son kanallar"</string>
<string name="menu_title_options" msgid="7184594626814914022">"TV seçenekleri"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP seçenekleri"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Bu kanal için oynatma denetimleri kullanılamıyor"</string>
diff --git a/res/values-uk-v23/strings.xml b/res/values-uk-v23/strings.xml
new file mode 100644
index 00000000..4fd7f740
--- /dev/null
+++ b/res/values-uk-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Канали"</string>
+</resources>
diff --git a/res/values-uk/rating_system_strings.xml b/res/values-uk/rating_system_strings.xml
index 118bcc90..a26df0ba 100644
--- a/res/values-uk/rating_system_strings.xml
+++ b/res/values-uk/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Наркотики"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Секс"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Насильство"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Наркотики"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Секс"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Насильство"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"французька"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Непристойні діалоги"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Вульгарні висловлювання"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Вміст сексуального характеру"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Насильство"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Вигадане насильство"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Ця передача підходить для дітей будь-якого віку."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Ця передача підходить для дітей віком від 7 років."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Ця передача підходить для дітей будь-якого віку."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Ця передача містить матеріали, які не підходять для дітей молодшого віку. Радимо перегляд під наглядом батьків."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Ця передача містить матеріали, які не підходять для дітей віком до 14 років."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Ця передача призначена для дорослих, тому не підходить для дітей віком до 17 років."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Категорії фільмів"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Усі аудиторії. Підходить для дітей."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Радимо перегляд під наглядом батьків. Деякі матеріали не підходять для дітей."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"До уваги батьків: деякі матеріали не підходять для дітей віком до 13 років."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Перегляд обмежено. Містить матеріали для дорослих. Радимо батькам дізнатися більше про фільм, перш ніж переглядати його з дітьми."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Для осіб віком від 17 років. Лише для дорослих. Не підходить для дітей."</string>
</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index c3dd8265..0a7fc140 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"моно"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"стерео"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Керування відтворенням"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Канали"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Останні канали"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Останні канали"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Опції ТБ"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Опції PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Елементи керування відтворенням, яких немає в цьому каналі"</string>
diff --git a/res/values-ur-rPK-v23/strings.xml b/res/values-ur-rPK-v23/strings.xml
new file mode 100644
index 00000000..22ec8b49
--- /dev/null
+++ b/res/values-ur-rPK-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"چینلز"</string>
+</resources>
diff --git a/res/values-ur-rPK/rating_system_strings.xml b/res/values-ur-rPK/rating_system_strings.xml
index 8d22f3b1..901bb634 100644
--- a/res/values-ur-rPK/rating_system_strings.xml
+++ b/res/values-ur-rPK/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"منشیات"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"جنس"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"تشدد"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"منشیات"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"جنس"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"تشدد"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"فرانسیسی"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"ہیجان خیز بات چیت"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"نامناسب زبان"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"جنسی مواد"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"تشدد"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"فینٹیسی تشدد"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"اس پروگرام کو سبھی بچوں کیلئے مناسب ہونے کیلئے ڈیزائن کیا گیا ہے۔"</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"یہ پروگرام 7 سال اور اس سے زیادہ عمر کے بچوں کیلئے ڈیزائن کیا گیا ہے۔"</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"زیادہ تر والدین اس پروگرام کو سبھی عمر کے افراد کیلئے مناسب پائیں گے۔"</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"اس پروگرام میں ایسا مواد شامل ہے جسے والدین شاید چھوٹے بچوں کیلئے نامناسب پائیں۔ بہت سے والدین شاید اسے چھوٹے بچوں کے ساتھ دیکھنا چاہیں۔"</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"اس پروگرام میں کچھ ایسا مواد شامل ہے جسے بہت سے والدین 14 سال سے کم عمر کے بچوں کیلئے نامناسب پائیں گے۔"</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"یہ پروگرام خاص طور پر بالغوں کے دیکھنے کیلئے ڈیزائن کیا گیا ہے اور اسی لیے 17 سال سے کم عمر کے بچوں کیلئے نامناسب ہو سکتا ہے۔"</string>
<string name="title_us_mv" msgid="7861766023361439035">"فلم کی درجہ بندیاں"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"عام ناظرین. کوئی ایسی چیز نہیں جسے بچے دیکھ لیں تو والدین کو ناگوار گزرے۔"</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"والدین کی رہنمائی مجوزہ ہے۔ کچھ ایسا مواد ہو سکتا ہے جسے والدین اپنے چھوٹے بچوں کیلئے پسند نہ کریں۔"</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"والدین کو بہت زیادہ تنبیہ کی جاتی ہے۔ کچھ مواد قبل از لڑکپن بچوں کیلئے نامناسب ہو سکتا ہے۔"</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"محدود، کچھ بالغ مواد شامل ہے۔ والدین سے گزارش ہے کہ اپنے چھوٹے بچوں کو ساتھ لے کر جانے سے پہلے فلم کے متعلق مزید جان لیں۔"</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"17 سال اور اس سے کم عمر کے کسی فرد کو داخلے کی اجازت نہیں۔ واضح طور پر بالغ۔ بچوں کو داخل نہیں کیا جاتا۔"</string>
</resources>
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
index c2f07f89..0fe0f19f 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur-rPK/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"مونو"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"اسٹیریو"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"پلے کنٹرولز"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"چینلز"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"حالیہ چینلز"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"حالیہ چینلز"</string>
<string name="menu_title_options" msgid="7184594626814914022">"‏TV کے اختیارات"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"‏PIP کے اختیارات"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"چلانے کے کنٹرولز اس چینل کیلئے غیر دستیاب ہیں"</string>
diff --git a/res/values-uz-rUZ-v23/strings.xml b/res/values-uz-rUZ-v23/strings.xml
new file mode 100644
index 00000000..9d1c1de7
--- /dev/null
+++ b/res/values-uz-rUZ-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Kanallar"</string>
+</resources>
diff --git a/res/values-uz-rUZ/rating_system_strings.xml b/res/values-uz-rUZ/rating_system_strings.xml
index 12507d84..bfcb5723 100644
--- a/res/values-uz-rUZ/rating_system_strings.xml
+++ b/res/values-uz-rUZ/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Giyohvand moddalar"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Seks"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Zo‘ravonlik"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Giyohvand moddalar"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Seks"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Zo‘ravonlik"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Fransuz"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Behayo gaplar"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Qo‘pol nutq"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Shahvoniy tasvirlar"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Zo‘ravonlik"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Fantastik qahramonlarning zo‘ravonligi"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Ushbu dastur barcha bolalar uchun mo‘ljallangan."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Ushbu dastur 7 va unda katta yoshdagi bolalar uchun mo‘ljallangan."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Ko‘pchilik ota-onalar ushbu datsurni barcha yoshdagilar uchun ma’qul ko‘rishadi."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Ushbu dasturda ota-onalar yosh bolalari uchun nomunosib deb topishi mumkin bo‘lgan materiallar bor. Yosh bolalarga ota-onasi bilan birga ko‘rish tavsiya etiladi."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Ushbu dasturda 14 yoshga to‘lmagan bolalar uchun to‘g‘ri kelmaydigan tasvirlar bo‘lishi mumkin."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Ushbu dastur voyaga yetganlar uchun mo‘ljallangan bo‘lib, 17 yoshga to‘lmaganlar uchun tomosha qilish tavsiya etilmaydi."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Film reytinglari"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Keng auditoriya uchun. Istalgan yoshdagi bolalarga tomosha qilish uchun ruxsat beriladi."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Ota-ona nazorati tavsiya etiladi. Ayrim sahnalar yosh bolalar uchun mos bo‘lmasligi mumkin."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Ota-onalar qattiq ogohlantiriladi. Ayrim materaillar o‘smir yoshidan kichik bolalarga mos kelmasligi mumkin."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Ko‘rish cheklangan, ayrim materiallar katta yoshdagilar uchun mo‘ljallangan. Ota-onalarga farzandlarini o‘zi bilan birga tomoshaga olib borishdan oldin film haqida qo‘shimcha ma’lumot olish qat’iy tavsiya etiladi."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"17 yoki undan kichik yoshdagilarga ruxsat berilmagan. Faqat kattalar uchun. Bolalarga ruxsat berilmaydi."</string>
</resources>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index 0d77281a..0f3d5d6b 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Boshqaruv"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Kanallar"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Yaqinda ko‘rilgan kanallar"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"So‘nggi kanallar"</string>
<string name="menu_title_options" msgid="7184594626814914022">"TV sozlamalari"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP sozlamalari"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Ushbu kanal uchun ijro etish boshqaruvlari mavjud emas"</string>
diff --git a/res/values-v23/strings.xml b/res/values-v23/strings.xml
new file mode 100644
index 00000000..4809682a
--- /dev/null
+++ b/res/values-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- Title of the channels row in the main menu. [CHAR LIMIT=NONE] -->
+ <string name="menu_title_channels">Channels</string>
+</resources>
diff --git a/res/values-vi-v23/strings.xml b/res/values-vi-v23/strings.xml
new file mode 100644
index 00000000..2966a651
--- /dev/null
+++ b/res/values-vi-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Kênh"</string>
+</resources>
diff --git a/res/values-vi/rating_system_strings.xml b/res/values-vi/rating_system_strings.xml
index 9b5e7821..02216416 100644
--- a/res/values-vi/rating_system_strings.xml
+++ b/res/values-vi/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Ma túy"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Tình dục"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Bạo lực"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Ma túy"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Tình dục"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Bạo lực"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Tiếng Pháp"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Ngôn từ khêu khợi"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Ngôn từ thô tục"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Nội dung khiêu dâm"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Bạo lực"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Bạo lực giả tưởng"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Chương trình này được thiết kế để phù hợp với tất cả trẻ em."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Chương trình này được thiết kế cho trẻ em từ 7 tuổi trở lên."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Hầu hết các phụ huynh thấy chương trình này phù hợp với mọi lứa tuổi."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Chương trình này chứa nội dung mà các phụ huynh có thể thấy không phù hợp với trẻ nhỏ. Nhiều phụ huynh có thể muốn xem chương trình này cùng với con họ."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Chương trình này chứa một số nội dung mà nhiều phụ huynh sẽ thấy không phù hợp với trẻ em dưới 14 tuổi."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Chương trình này được thiết kế riêng cho người lớn nên có thể không phù hợp với trẻ em dưới 17 tuổi."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Xếp hạng phim"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Đối tượng chung. Không có nội dung nào khiến phụ huynh cảm thấy khó chịu khi con họ xem."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Đề nghị có hướng dẫn của phụ huynh. Có thể chứa một số nội dung mà các phụ huynh không muốn con của họ xem."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Phụ huynh cần đặc biệt chú ý. Một số nội dung có thể không phù hợp với trẻ vị thành viên."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Bị hạn chế. Chứa một số nội dung người lớn. Các phụ huynh nên tìm hiểu thêm về phim trước khi cho trẻ nhỏ xem."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Không cho phép đối tượng từ 17 tuổi trở xuống. Phải là người đã trưởng thành. Không cho phép trẻ em."</string>
</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 9945e8c0..9bcd206f 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"đơn âm"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"âm thanh nổi"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Điều khiển phát"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Kênh"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Kênh gần đây"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Kênh gần đây"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Tùy chọn TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Tùy chọn PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Điều khiển phát không có sẵn cho kênh này"</string>
diff --git a/res/values-zh-rCN-v23/strings.xml b/res/values-zh-rCN-v23/strings.xml
new file mode 100644
index 00000000..5caeac5f
--- /dev/null
+++ b/res/values-zh-rCN-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"频道"</string>
+</resources>
diff --git a/res/values-zh-rCN/rating_system_strings.xml b/res/values-zh-rCN/rating_system_strings.xml
index e96aee4f..84cce4ab 100644
--- a/res/values-zh-rCN/rating_system_strings.xml
+++ b/res/values-zh-rCN/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"毒品"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"性爱"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"暴力"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"毒品"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"性爱"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"暴力"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"法语"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"挑逗性对话"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"粗俗言语"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"色情内容"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"暴力"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"幻想暴力内容"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"此节目适合所有儿童观看。"</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"此节目适合 7 周岁及以上儿童观看。"</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"大多数家长认为此节目适合所有年龄段的观众。"</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"此节目包含家长可能会认为不适合幼童观看的内容。许多家长可能希望陪孩子一起观看。"</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"此节目包含一些许多家长认为不适合 14 周岁以下儿童的内容。"</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"此节目专为成人观众制作,因此可能不适合 17 周岁以下儿童和青少年观看。"</string>
<string name="title_us_mv" msgid="7861766023361439035">"电影分级"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"适合所有年龄段的观众。不含家长担心不适合儿童观看的内容。"</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"建议家长陪同观看。其中可能包含一些家长可能不希望孩子看到的内容。"</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"强烈建议家长陪同观看。部分内容可能不适合 13 周岁以下儿童。"</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"限制级,其中包含部分成人内容。建议家长先详细了解一下这部电影,然后再决定是否要与孩子一起观看。"</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"17 周岁以下观众禁止观看。含有明显的成人内容。儿童禁止观看。"</string>
</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 9428c492..e95eacb6 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"单声道"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"立体声"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"播放控件"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"频道"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"最近观看的频道"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"最近观看的频道"</string>
<string name="menu_title_options" msgid="7184594626814914022">"电视选项"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP 选项"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"此频道无法使用播放控件"</string>
diff --git a/res/values-zh-rHK-v23/strings.xml b/res/values-zh-rHK-v23/strings.xml
new file mode 100644
index 00000000..230ac374
--- /dev/null
+++ b/res/values-zh-rHK-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"頻道"</string>
+</resources>
diff --git a/res/values-zh-rHK/rating_system_strings.xml b/res/values-zh-rHK/rating_system_strings.xml
index 6e5554ea..77f2a752 100644
--- a/res/values-zh-rHK/rating_system_strings.xml
+++ b/res/values-zh-rHK/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"毒品"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"色情"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"暴力"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"藥物"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"色情"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"暴力"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"法文"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"性暗示對話"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"言語粗俗"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"色情內容"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"暴力"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"幻想暴力"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"此節目適合所有年齡兒童觀看。"</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"此節目適合 7 歲或以上兒童觀看。"</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"大部分家長認為此節目適合所有年齡人士觀看。"</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"此節目含有家長或許認為不適合幼童觀看的內容。許多家長都想陪同幼童觀看。"</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"此節目含有許多家長認為不適合 14 歲以下兒童觀看的內容。"</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"此節目特別為成人而設,因此可能不適合 17 歲以下兒童觀看。"</string>
<string name="title_us_mv" msgid="7861766023361439035">"影片評分"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"一般觀眾。家長可安心讓兒童觀看。"</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"建議家長指引。可能含有不宜幼童觀看的內容。"</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"強烈建議家長陪同。一些內容可能不適合 13 歲以下兒童觀看。"</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"限制級,含有成人內容。家長應瞭解更多這部電影的內容,才與幼童一同觀看。"</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"僅限 18 歲以上觀眾觀看。此乃成人內容,禁止兒童觀看。"</string>
</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index dec7530d..54428d83 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"單聲道"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"立體聲"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"播放控制"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"頻道"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"最近收看頻道"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"最近觀看的頻道"</string>
<string name="menu_title_options" msgid="7184594626814914022">"電視選項"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"PIP 選項"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"播放控制功能不適用於此頻道"</string>
diff --git a/res/values-zh-rTW-v23/strings.xml b/res/values-zh-rTW-v23/strings.xml
new file mode 100644
index 00000000..230ac374
--- /dev/null
+++ b/res/values-zh-rTW-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"頻道"</string>
+</resources>
diff --git a/res/values-zh-rTW/rating_system_strings.xml b/res/values-zh-rTW/rating_system_strings.xml
index 6a202140..b777019b 100644
--- a/res/values-zh-rTW/rating_system_strings.xml
+++ b/res/values-zh-rTW/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"藥物"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"性愛"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"暴力"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"藥物"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"性愛"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"暴力"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"法文"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"性暗示對話"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"粗暴言語"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"情色內容"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"暴力"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"虛構暴力行為"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"此節目內容適合所有年齡層的兒童收看。"</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"此節目內容適合 7 歲以上兒童收看。"</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"多數家長認為此節目內容適合所有年齡的兒童收看。"</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"此節目含有家長認為不適合幼童觀賞的內容。多數家長可能會陪伴幼童觀看。"</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"此節目含有許多家長認為不適合 14 歲以下兒童觀賞的內容。"</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"此節目只適合成人觀看,因此可能不適合 17 歲以下的兒童觀看。"</string>
<string name="title_us_mv" msgid="7861766023361439035">"電影分級"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"一般觀眾。家長可放心讓兒童觀看。"</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"建議家長陪同觀賞。含有家長可能不希望幼童觀賞的內容。"</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"強烈建議家長陪同觀賞。部分內容可能不適合 13 歲以下兒童。"</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"限制級,含有部分成人內容。家長必須先詳細瞭解這部電影,再決定是否帶幼童一起觀看。"</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"僅限 18 歲以上觀眾觀賞。成人內容。禁止兒童觀賞。"</string>
</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 17600bf4..3e93c9a3 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"單聲道"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"立體聲"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"播放控制介面"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"頻道"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"最近觀看的頻道"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"最近觀看的頻道"</string>
<string name="menu_title_options" msgid="7184594626814914022">"電視選項"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"子母畫面選項"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"這個頻道無法使用播放控制介面"</string>
diff --git a/res/values-zu-v23/strings.xml b/res/values-zu-v23/strings.xml
new file mode 100644
index 00000000..74eba5e5
--- /dev/null
+++ b/res/values-zu-v23/strings.xml
@@ -0,0 +1,21 @@
+<?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="menu_title_channels" msgid="9156522770456418301">"Iziteshi"</string>
+</resources>
diff --git a/res/values-zu/rating_system_strings.xml b/res/values-zu/rating_system_strings.xml
index e636fad3..bd19925c 100644
--- a/res/values-zu/rating_system_strings.xml
+++ b/res/values-zu/rating_system_strings.xml
@@ -17,165 +17,21 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- no translation found for description_age_4 (2260506104299774027) -->
- <skip />
- <!-- no translation found for description_age_5 (312882360850848623) -->
- <skip />
- <!-- no translation found for description_age_6 (7780895021659413979) -->
- <skip />
- <!-- no translation found for description_age_7 (7465836675187750087) -->
- <skip />
- <!-- no translation found for description_age_8 (8518389733138803056) -->
- <skip />
- <!-- no translation found for description_age_9 (1963837231871036561) -->
- <skip />
- <!-- no translation found for description_age_10 (9199865628328446876) -->
- <skip />
- <!-- no translation found for description_age_11 (1056140065021078183) -->
- <skip />
- <!-- no translation found for description_age_12 (2523883089926997157) -->
- <skip />
- <!-- no translation found for description_age_13 (4539863086843940979) -->
- <skip />
- <!-- no translation found for description_age_14 (276938165219847540) -->
- <skip />
- <!-- no translation found for description_age_15 (3875804533354572649) -->
- <skip />
- <!-- no translation found for description_age_16 (7068358107904351707) -->
- <skip />
- <!-- no translation found for description_age_17 (6090244054207338066) -->
- <skip />
- <!-- no translation found for description_age_18 (7827138562117972763) -->
- <skip />
- <!-- no translation found for description_age_19 (5739639668332937969) -->
- <skip />
- <!-- no translation found for description_age_20 (8099318760823109592) -->
- <skip />
- <!-- no translation found for description_ar_tv_atp (547579136010287221) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_13 (4692291035708752548) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_16 (7723173815471130793) -->
- <skip />
- <!-- no translation found for description_ar_tv_sam_18 (6396037038854141228) -->
- <skip />
- <string name="description_ar_tv_d" msgid="1108913881840440081">"Izidakamizwa"</string>
- <string name="description_ar_tv_s" msgid="6939530616220134707">"Ucansi"</string>
- <string name="description_ar_tv_v" msgid="3593686925402404659">"Udlame"</string>
- <!-- no translation found for description_au_tv_p (6450834908576229026) -->
- <skip />
- <!-- no translation found for description_au_tv_c (1308451360610501896) -->
- <skip />
- <!-- no translation found for description_au_tv_g (2120367806197069921) -->
- <skip />
- <!-- no translation found for description_au_tv_pg (3703098381263561194) -->
- <skip />
- <!-- no translation found for description_au_tv_m (3835952110876245500) -->
- <skip />
- <!-- no translation found for description_au_tv_ma (7991042881149741890) -->
- <skip />
- <!-- no translation found for description_au_tv_av (3792394272837573390) -->
- <skip />
- <!-- no translation found for description_au_tv_r (488701479788807290) -->
- <skip />
- <!-- no translation found for description_br_tv_l (1750755104141314952) -->
- <skip />
- <!-- no translation found for description_br_tv_10 (9206699509782547619) -->
- <skip />
- <!-- no translation found for description_br_tv_12 (7319572965100214976) -->
- <skip />
- <!-- no translation found for description_br_tv_14 (3743044568707308995) -->
- <skip />
- <!-- no translation found for description_br_tv_16 (763942958761698764) -->
- <skip />
- <!-- no translation found for description_br_tv_18 (2543086592733416771) -->
- <skip />
- <string name="description_br_tv_d" msgid="6117156505386584449">"Izidakamizwa"</string>
- <string name="description_br_tv_s" msgid="2713003081092951596">"Ucansi"</string>
- <string name="description_br_tv_v" msgid="8360268389564584952">"Udlame"</string>
- <!-- no translation found for description_ca_tv_en_exempt (3869530797231884669) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c (6170724506314571912) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_c8 (7942870097063909046) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_g (7893908216230285607) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_pg (2736709384517099303) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_14 (8063534593921657009) -->
- <skip />
- <!-- no translation found for description_ca_tv_en_18 (3552078692829803323) -->
- <skip />
- <string name="title_ca_tv_fr" msgid="5354916412253251759">"Isi-French"</string>
- <!-- no translation found for description_ca_tv_fr_e (191173579009161428) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_g (5572294714137666887) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_8 (7142414766270693085) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_13 (5198848759504239143) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_16 (1034513066641057587) -->
- <skip />
- <!-- no translation found for description_ca_tv_fr_18 (2919990256513482762) -->
- <skip />
- <!-- no translation found for description_fr_dvb_u (8232083238497153682) -->
- <skip />
- <!-- no translation found for description_es_dvb_all (4821183217465284547) -->
- <skip />
- <!-- no translation found for description_es_dvb_c (1367395312248365855) -->
- <skip />
- <!-- no translation found for description_es_dvb_x (438890727939582714) -->
- <skip />
- <!-- no translation found for description_kr_tv_all (3048365195196820853) -->
- <skip />
- <!-- no translation found for description_kr_tv_7 (5892929693766504059) -->
- <skip />
- <!-- no translation found for description_kr_tv_12 (1883893246941826597) -->
- <skip />
- <!-- no translation found for description_kr_tv_15 (397719456648820574) -->
- <skip />
- <!-- no translation found for description_kr_tv_19 (2562374912814706392) -->
- <skip />
- <!-- no translation found for description_sg_tv_g (1552875095194906311) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg (5180090945868922455) -->
- <skip />
- <!-- no translation found for description_sg_tv_pg13 (3655542939788886420) -->
- <skip />
- <!-- no translation found for description_sg_tv_nc16 (3484254252201121736) -->
- <skip />
- <!-- no translation found for description_sg_tv_m18 (392321217022988206) -->
- <skip />
- <!-- no translation found for description_sg_tv_r21 (1466786788649950591) -->
- <skip />
<string name="description_us_tv_d" msgid="12333789157204816">"Ingxoxo ephakanyiswayo"</string>
<string name="description_us_tv_l" msgid="4105102855627964319">"Ulimi olunezithuko"</string>
<string name="description_us_tv_s" msgid="7552447251273237176">"Okuphathelene nezocansi"</string>
<string name="description_us_tv_v" msgid="4799470820740236198">"Udlame"</string>
<string name="description_us_tv_fv" msgid="4760884520245003167">"Udlame olucatshangwayo"</string>
- <!-- no translation found for description_us_tv_y (1352346035366881161) -->
- <skip />
- <!-- no translation found for description_us_tv_y7 (8074158131815307880) -->
- <skip />
- <!-- no translation found for description_us_tv_g (4129784125991285944) -->
- <skip />
- <!-- no translation found for description_us_tv_pg (5647218792100947596) -->
- <skip />
- <!-- no translation found for description_us_tv_14 (8682987672893857317) -->
- <skip />
- <!-- no translation found for description_us_tv_ma (8912237130594289176) -->
- <skip />
+ <string name="description_us_tv_y" msgid="1352346035366881161">"Lolu hlelo ludizayinelwe ukuthi lufanele zonke izingane."</string>
+ <string name="description_us_tv_y7" msgid="8074158131815307880">"Lolu hlelo ludizayinelwe izingane ezineminyaka yobudala engu-7 nangaphezulu."</string>
+ <string name="description_us_tv_g" msgid="4129784125991285944">"Abazali abaningi bangathola lolu hlelo lufanele yonke iminyaka."</string>
+ <string name="description_us_tv_pg" msgid="5647218792100947596">"Lolu hlelo luqukethe okubalulekile okungatholwa abazali kungafanele izingane ezincane. Iningi labazali lingafuna ukukubuka nezingane zabo ezincane."</string>
+ <string name="description_us_tv_14" msgid="8682987672893857317">"Lolu hlelo luqukethe okunye okubalulekile iningi labazali elingakuthola lungazifanele izingane ezingaphansi kweminyaka yobudala engu-14."</string>
+ <string name="description_us_tv_ma" msgid="8912237130594289176">"Lolu hlelo ludizayinelwe ngokuqondile ukuthi libukwe abantu abadala futhi kungenzeka lungazifaneli izingane ezingaphansi kweminyaka engu-17."</string>
<string name="title_us_mv" msgid="7861766023361439035">"Izilinganiso zefilimu"</string>
- <!-- no translation found for description_us_mv_g (9185817407450418638) -->
- <skip />
- <!-- no translation found for description_us_mv_pg (8578620326248525384) -->
- <skip />
- <!-- no translation found for description_us_mv_pg13 (7077331984538950084) -->
- <skip />
- <!-- no translation found for description_us_mv_r (4482914375592527277) -->
- <skip />
- <!-- no translation found for description_us_mv_nc17 (1897668555117874369) -->
- <skip />
+ <string name="description_us_mv_g" msgid="9185817407450418638">"Izethameli ezijwayelekile. Akukho okuzophatha kabi abazali ngokubukwa kwezingane."</string>
+ <string name="description_us_mv_pg" msgid="8578620326248525384">"Kuphakanyiswe ukuqondiswa komzali. Kungaqukatha okunye okubalulekile abazali okungeke bakuthandele izingane zabo ezincane."</string>
+ <string name="description_us_mv_pg13" msgid="7077331984538950084">"Abazali baxwayiswa kakhulu. Okunye okubalulekile kungenzeka kungafaneli abasayoba yintsha."</string>
+ <string name="description_us_mv_r" msgid="4482914375592527277">"Kukhawulelwe, kuqukethe okunye okubalulekile kwabantu abadala. Abazali bayakhuthazwa ukuthi bafunde kabanzi mayelana nefilimu ngaphambi kokuvumela izingane zabo zilibuke nabo."</string>
+ <string name="description_us_mv_nc17" msgid="1897668555117874369">"Akekho ongaphansi kokungu-17 nongaphansi owamukelwe. Okwabadala ngokusobala. Izingane azamukelwa."</string>
</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 031d252c..e93b4ea9 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -20,8 +20,7 @@
<string name="audio_channel_mono" msgid="8812941280022167428">"i-mono"</string>
<string name="audio_channel_stereo" msgid="5798223286366598036">"i-stereo"</string>
<string name="menu_title_play_controls" msgid="2490237359425190652">"Izilawuli zokudlala"</string>
- <string name="menu_title_channels" msgid="1949045451672990132">"Iziteshi"</string>
- <string name="menu_title_channels_legacy" msgid="700324464656729334">"Iziteshi zakamuva"</string>
+ <string name="menu_title_channels" msgid="1801845517674690003">"Iziteshi zakamuva"</string>
<string name="menu_title_options" msgid="7184594626814914022">"Izinketho ze-TV"</string>
<string name="menu_title_pip_options" msgid="4252934960762407689">"Izinketho ze-PIP"</string>
<string name="play_controls_unavailable" msgid="8900698593131693148">"Izilawuli zokudlala azitholakali kulesi siteshi"</string>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index b4f3e3b1..185d833b 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -20,6 +20,9 @@
<!-- menu_height should be bigger than the height when all possible menu rows are
enabled and the focus is on the row which has the biggest height. -->
<dimen name="menu_height">500dp</dimen>
+ <dimen name="menu_margin_top">@dimen/menu_enter_offset_y_negative</dimen>
+ <dimen name="menu_margin_bottom_min">27dp</dimen>
+ <dimen name="menu_row_align_from_bottom">124dp</dimen>
<dimen name="menu_row_title_width">300dp</dimen>
<dimen name="menu_row_title_height">48dp</dimen>
<dimen name="menu_row_title_padding_bottom">4dp</dimen>
@@ -32,6 +35,14 @@
<!-- The value in the redlines is 27dp but the items have padding tops and bottoms,
so need to adjust by 7dp. -->
<dimen name="menu_padding_bottom">20dp</dimen>
+ <!-- This should be changed as the font change -->
+ <dimen name="menu_row_title_text_descender_height">4.5dp</dimen>
+ <!-- This value is 16dp in the redlines. Considering the descenders, it needs to be subtracted
+ by "menu_row_text_descender_height". -->
+ <!-- NOTE: The top and bottom padding sizes should be bigger than or equals to 8 dp.
+ otherwise it will make a clipping issue. See b/18632820 for more details. -->
+ <dimen name="menu_row_contents_padding_top">11.5dp</dimen>
+ <dimen name="menu_row_contents_padding_bottom_max">48dp</dimen>
<dimen name="menu_list_margin_top">-1.5dp</dimen>
<dimen name="menu_list_margin_bottom">-30dp</dimen>
<dimen name="menu_list_margin_start">@dimen/menu_padding_start_negative</dimen>
@@ -48,6 +59,8 @@
<dimen name="menu_enter_offset_y">32dp</dimen>
<dimen name="menu_enter_offset_y_negative">-32dp</dimen>
<dimen name="menu_exit_offset_y">32dp</dimen>
+ <dimen name="menu_row_scroll_up_anim_offset">32dp</dimen>
+ <dimen name="menu_row_scroll_up_anim_offset_negative">-32dp</dimen>
<!-- Play controls -->
<dimen name="play_controls_width">696dp</dimen>
@@ -199,7 +212,6 @@
<dimen name="program_guide_table_item_padding">16dp</dimen>
<dimen name="program_guide_table_item_program_title_font_size">14sp</dimen>
<dimen name="program_guide_table_item_program_episode_title_font_size">12sp</dimen>
- <dimen name="program_guide_table_item_min_program_display_width">192dp</dimen>
<dimen name="program_guide_table_item_visible_threshold">48dp</dimen>
<dimen name="program_guide_table_detail_height">112dp</dimen>
<dimen name="program_guide_table_detail_padding">16dp</dimen>
diff --git a/res/values/integers.xml b/res/values/integers.xml
index f8af77e6..22925bd3 100644
--- a/res/values/integers.xml
+++ b/res/values/integers.xml
@@ -32,8 +32,10 @@
<integer name="menu_enter_duration">250</integer>
<integer name="menu_exit_duration">150</integer>
<integer name="menu_focus_anim_duration">100</integer>
- <integer name="menu_row_selection_anim_duration">200</integer>
-
+ <integer name="menu_row_selection_anim_duration">250</integer>
+ <integer name="menu_previous_contents_fade_out_duration">50</integer>
+ <integer name="menu_current_contents_fade_in_duration">200</integer>
+
<!-- Side panel -->
<integer name="side_panel_show_duration">60000</integer>
<integer name="side_panel_anim_duration">250</integer>
@@ -47,6 +49,7 @@
<integer name="program_guide_table_detail_toggle_anim_duration">100</integer>
<integer name="program_guide_show_duration">60000</integer>
<integer name="program_guide_ripple_anim_duration">@integer/ripple_anim_duration</integer>
+ <integer name="program_guide_selection_row">2</integer>
<!-- Channel banner -->
<integer name="channel_banner_show_duration">8000</integer>
diff --git a/res/values/rating_system_strings.xml b/res/values/rating_system_strings.xml
index 895ad929..e3e0298f 100644
--- a/res/values/rating_system_strings.xml
+++ b/res/values/rating_system_strings.xml
@@ -19,44 +19,44 @@
<!-- Age based TV content rating strings used in DVB and ISDB.
For more info, please see STD-B10 in http://www.dibeg.org/techp/aribstd/aribstd.html (ISDB)
and Table 81 of DVB SI (EN 300 468 V1.14.1) in https://www.dvb.org/standards (DVB).-->
- <string name="description_age_4">Recommended for ages 4 and over.</string>
- <string name="description_age_5">Recommended for ages 5 and over.</string>
- <string name="description_age_6">Recommended for ages 6 and over.</string>
- <string name="description_age_7">Recommended for ages 7 and over.</string>
- <string name="description_age_8">Recommended for ages 8 and over.</string>
- <string name="description_age_9">Recommended for ages 9 and over.</string>
- <string name="description_age_10">Recommended for ages 10 and over.</string>
- <string name="description_age_11">Recommended for ages 11 and over.</string>
- <string name="description_age_12">Recommended for ages 12 and over.</string>
- <string name="description_age_13">Recommended for ages 13 and over.</string>
- <string name="description_age_14">Recommended for ages 14 and over.</string>
- <string name="description_age_15">Recommended for ages 15 and over.</string>
- <string name="description_age_16">Recommended for ages 16 and over.</string>
- <string name="description_age_17">Recommended for ages 17 and over.</string>
- <string name="description_age_18">Recommended for ages 18 and over.</string>
- <string name="description_age_19">Recommended for ages 19 and over.</string>
- <string name="description_age_20">Recommended for ages 20 and over.</string>
+ <string name="description_age_4" translatable="false">Recommended for ages 4 and over.</string>
+ <string name="description_age_5" translatable="false">Recommended for ages 5 and over.</string>
+ <string name="description_age_6" translatable="false">Recommended for ages 6 and over.</string>
+ <string name="description_age_7" translatable="false">Recommended for ages 7 and over.</string>
+ <string name="description_age_8" translatable="false">Recommended for ages 8 and over.</string>
+ <string name="description_age_9" translatable="false">Recommended for ages 9 and over.</string>
+ <string name="description_age_10" translatable="false">Recommended for ages 10 and over.</string>
+ <string name="description_age_11" translatable="false">Recommended for ages 11 and over.</string>
+ <string name="description_age_12" translatable="false">Recommended for ages 12 and over.</string>
+ <string name="description_age_13" translatable="false">Recommended for ages 13 and over.</string>
+ <string name="description_age_14" translatable="false">Recommended for ages 14 and over.</string>
+ <string name="description_age_15" translatable="false">Recommended for ages 15 and over.</string>
+ <string name="description_age_16" translatable="false">Recommended for ages 16 and over.</string>
+ <string name="description_age_17" translatable="false">Recommended for ages 17 and over.</string>
+ <string name="description_age_18" translatable="false">Recommended for ages 18 and over.</string>
+ <string name="description_age_19" translatable="false">Recommended for ages 19 and over.</string>
+ <string name="description_age_20" translatable="false">Recommended for ages 20 and over.</string>
<!-- TV content rating system strings for AR TV. These strings are from Wikipedia.
See http://en.wikipedia.org/wiki/Television_content_rating_systems -->
- <string name="description_ar_tv_atp">Suitable for all audiences. Programs may contain mild violence, language and mature situations.</string>
- <string name="description_ar_tv_sam_13">Suitable for ages 13 and up. Programs may contain mild to moderate language and mild violence and sexual references.</string>
- <string name="description_ar_tv_sam_16">Suitable for ages 16 and up. Programs may contain more intensive violence and coarse language, partial nudity and moderate sexual references.</string>
- <string name="description_ar_tv_sam_18">Suitable for mature audiences only. Programs contain strong violence, coarse language and explicit sexual references.</string>
- <string name="description_ar_tv_d">Drugs</string>
- <string name="description_ar_tv_s">Sex</string>
- <string name="description_ar_tv_v">Violence</string>
+ <string name="description_ar_tv_atp" translatable="false">Suitable for all audiences. Programs may contain mild violence, language and mature situations.</string>
+ <string name="description_ar_tv_sam_13" translatable="false">Suitable for ages 13 and up. Programs may contain mild to moderate language and mild violence and sexual references.</string>
+ <string name="description_ar_tv_sam_16" translatable="false">Suitable for ages 16 and up. Programs may contain more intensive violence and coarse language, partial nudity and moderate sexual references.</string>
+ <string name="description_ar_tv_sam_18" translatable="false">Suitable for mature audiences only. Programs contain strong violence, coarse language and explicit sexual references.</string>
+ <string name="description_ar_tv_d" translatable="false">Drugs</string>
+ <string name="description_ar_tv_s" translatable="false">Sex</string>
+ <string name="description_ar_tv_v" translatable="false">Violence</string>
<!-- TV content rating system strings for AU TV. These strings are from ABC classification.
See Appendix 4 of http://www.abc.net.au/mediawatch/transcripts/0935_industry.pdf -->
- <string name="description_au_tv_p">Material classified P is intended for preschool children.</string>
- <string name="description_au_tv_c">Material classified C is intended for children (other than preschool children) who are younger than 14 years of age.</string>
- <string name="description_au_tv_g">Material classified G is not necessarily intended for children but it must be very mild in impact and must not contain any matter likely to be unsuitable for children to watch without supervision.</string>
- <string name="description_au_tv_pg">Material classified PG may contain adult themes or concepts but must be mild in impact and remain suitable for children to watch with supervision.</string>
- <string name="description_au_tv_m">Material classified M is for mature audiences. It is recommended for viewing only by persons aged 15 years or over.</string>
- <string name="description_au_tv_ma">Material classified MA is suitable for viewing only by persons aged 15 years or over because of the intensity and/or frequency of violence, sexual depictions, or coarse language, adult themes or drug use. The impact may be strong.</string>
- <string name="description_au_tv_av">Material classified AV is suitable for viewing only by persons aged 15 years or over. It is unsuitable for MA classification because of the intensity and/or frequency of violence, or because violence is central to the theme. In other respects, the requirements of the classification are identical to the MA classification.</string>
- <string name="description_au_tv_r">Material classified R is legally restricted to adults. Some material classified R may be offensive to sections of the adult community.</string>
+ <string name="description_au_tv_p" translatable="false">Material classified P is intended for preschool children.</string>
+ <string name="description_au_tv_c" translatable="false">Material classified C is intended for children (other than preschool children) who are younger than 14 years of age.</string>
+ <string name="description_au_tv_g" translatable="false">Material classified G is not necessarily intended for children but it must be very mild in impact and must not contain any matter likely to be unsuitable for children to watch without supervision.</string>
+ <string name="description_au_tv_pg" translatable="false">Material classified PG may contain adult themes or concepts but must be mild in impact and remain suitable for children to watch with supervision.</string>
+ <string name="description_au_tv_m" translatable="false">Material classified M is for mature audiences. It is recommended for viewing only by persons aged 15 years or over.</string>
+ <string name="description_au_tv_ma" translatable="false">Material classified MA is suitable for viewing only by persons aged 15 years or over because of the intensity and/or frequency of violence, sexual depictions, or coarse language, adult themes or drug use. The impact may be strong.</string>
+ <string name="description_au_tv_av" translatable="false">Material classified AV is suitable for viewing only by persons aged 15 years or over. It is unsuitable for MA classification because of the intensity and/or frequency of violence, or because violence is central to the theme. In other respects, the requirements of the classification are identical to the MA classification.</string>
+ <string name="description_au_tv_r" translatable="false">Material classified R is legally restricted to adults. Some material classified R may be offensive to sections of the adult community.</string>
<!-- TV content rating system strings for BR TV. These strings are from
http://www.justica.gov.br/seus-direitos/classificacao/guia-pratico/practical-guide.pdf/view -->
@@ -66,44 +66,44 @@
<string name="title_br_tv_14" translatable="false">14 anos</string>
<string name="title_br_tv_16" translatable="false">16 anos</string>
<string name="title_br_tv_18" translatable="false">18 anos</string>
- <string name="description_br_tv_l">General audiences</string>
- <string name="description_br_tv_10">Not recommended for ages under 10.</string>
- <string name="description_br_tv_12">Not recommended for ages under 12.</string>
- <string name="description_br_tv_14">Not recommended for ages under 14.</string>
- <string name="description_br_tv_16">Not recommended for ages under 16.</string>
- <string name="description_br_tv_18">Not recommended for ages under 18.</string>
- <string name="description_br_tv_d">Drugs</string>
- <string name="description_br_tv_s">Sex</string>
- <string name="description_br_tv_v">Violence</string>
+ <string name="description_br_tv_l" translatable="false">General audiences</string>
+ <string name="description_br_tv_10" translatable="false">Not recommended for ages under 10.</string>
+ <string name="description_br_tv_12" translatable="false">Not recommended for ages under 12.</string>
+ <string name="description_br_tv_14" translatable="false">Not recommended for ages under 14.</string>
+ <string name="description_br_tv_16" translatable="false">Not recommended for ages under 16.</string>
+ <string name="description_br_tv_18" translatable="false">Not recommended for ages under 18.</string>
+ <string name="description_br_tv_d" translatable="false">Drugs</string>
+ <string name="description_br_tv_s" translatable="false">Sex</string>
+ <string name="description_br_tv_v" translatable="false">Violence</string>
<!-- TV content rating system strings for CA TV. These strings are from
http://www.cbsc.ca/english/agvot/englishsystem.php -->
- <string name="description_ca_tv_en_exempt">Exempt programming includes: news, sports, documentaries and other information programming; talk shows, music videos, and variety programming.</string>
- <string name="description_ca_tv_en_c">This programming is intended for younger children under the age of 8 years.</string>
- <string name="description_ca_tv_en_c8">This programming is intended for youngsters 8 years and over. It is suggested that a parent/guardian co-view programming assigned this classification with younger children under the age of 8.</string>
- <string name="description_ca_tv_en_g">This programming is intended for all age groups and appropriate viewing for the entire family.</string>
- <string name="description_ca_tv_en_pg">This programming, while intended for a general audience, may not be suitable for younger children (under the age of 8). Parents/guardians should be aware that there might be content elements which some could consider inappropriate for unsupervised viewing by children in the 8-13 age range.</string>
- <string name="description_ca_tv_en_14">Programming with this classification contains themes or content elements which might not be suitable for viewers under the age of 14. Parents are strongly cautioned to exercise discretion in permitting viewing by pre-teens and early teens without parent/guardian supervision, as programming with this classification could deal with mature themes and societal issues in a realistic fashion.</string>
- <string name="description_ca_tv_en_18">This programming is intended for viewers 18 years and older.</string>
+ <string name="description_ca_tv_en_exempt" translatable="false">Exempt programming includes: news, sports, documentaries and other information programming; talk shows, music videos, and variety programming.</string>
+ <string name="description_ca_tv_en_c" translatable="false">This programming is intended for younger children under the age of 8 years.</string>
+ <string name="description_ca_tv_en_c8" translatable="false">This programming is intended for youngsters 8 years and over. It is suggested that a parent/guardian co-view programming assigned this classification with younger children under the age of 8.</string>
+ <string name="description_ca_tv_en_g" translatable="false">This programming is intended for all age groups and appropriate viewing for the entire family.</string>
+ <string name="description_ca_tv_en_pg" translatable="false">This programming, while intended for a general audience, may not be suitable for younger children (under the age of 8). Parents/guardians should be aware that there might be content elements which some could consider inappropriate for unsupervised viewing by children in the 8-13 age range.</string>
+ <string name="description_ca_tv_en_14" translatable="false">Programming with this classification contains themes or content elements which might not be suitable for viewers under the age of 14. Parents are strongly cautioned to exercise discretion in permitting viewing by pre-teens and early teens without parent/guardian supervision, as programming with this classification could deal with mature themes and societal issues in a realistic fashion.</string>
+ <string name="description_ca_tv_en_18" translatable="false">This programming is intended for viewers 18 years and older.</string>
<!-- TV content rating system strings for CA TV (French). -->
<!-- A short title of the rating system that appears in the parentheses right next to the
country name as in "Canada (French)". This corresponds to the "Ratings Classification for
Canadian French-Language Broadcasters". See more details in
http://www.cbsc.ca/english/agvot/frenchsystem.php -->
- <string name="title_ca_tv_fr">French</string>
- <string name="description_ca_tv_fr_e">Programs exempt from classification.</string>
- <string name="description_ca_tv_fr_g">The program is appropriate for viewing by persons of all ages. A program with a "G" rating might offend the sensibilities of children under eight years of age.</string>
- <string name="description_ca_tv_fr_8">The program is suitable for the general public but could contain mild or occasional violence that may disturb young children. Viewing with adult supervision is therefore recommended for young children (age 8 and under).</string>
- <string name="description_ca_tv_fr_13">The program is appropriate for viewing by persons 13 years of age or older. Children under 13 may be admitted only if accompanied by an adult.</string>
- <string name="description_ca_tv_fr_16">The program is appropriate for viewing by persons 16 years of age or older. Programs with this rating present troubling themes, situations or behaviours and adopt a more direct point of view about things.</string>
- <string name="description_ca_tv_fr_18">The program is appropriate for viewing by persons 18 years of age or older. Programs reserved for adults most often deal primarily with the representation of explicit sexual encounters. They may also be extremely violent, showing scenes of hyperrealistic cruelty, torture and horror.</string>
+ <string name="title_ca_tv_fr" translatable="false">French</string>
+ <string name="description_ca_tv_fr_e" translatable="false">Programs exempt from classification.</string>
+ <string name="description_ca_tv_fr_g" translatable="false">The program is appropriate for viewing by persons of all ages. A program with a "G" rating might offend the sensibilities of children under eight years of age.</string>
+ <string name="description_ca_tv_fr_8" translatable="false">The program is suitable for the general public but could contain mild or occasional violence that may disturb young children. Viewing with adult supervision is therefore recommended for young children (age 8 and under).</string>
+ <string name="description_ca_tv_fr_13" translatable="false">The program is appropriate for viewing by persons 13 years of age or older. Children under 13 may be admitted only if accompanied by an adult.</string>
+ <string name="description_ca_tv_fr_16" translatable="false">The program is appropriate for viewing by persons 16 years of age or older. Programs with this rating present troubling themes, situations or behaviours and adopt a more direct point of view about things.</string>
+ <string name="description_ca_tv_fr_18" translatable="false">The program is appropriate for viewing by persons 18 years of age or older. Programs reserved for adults most often deal primarily with the representation of explicit sexual encounters. They may also be extremely violent, showing scenes of hyperrealistic cruelty, torture and horror.</string>
<!-- TV content rating system strings for DVB -->
- <string name="description_fr_dvb_u">Recommended for all ages.</string>
- <string name="description_es_dvb_all">Recommended for all ages.</string>
- <string name="description_es_dvb_c">Recommended for children.</string>
- <string name="description_es_dvb_x">Recommended for adults.</string>
+ <string name="description_fr_dvb_u" translatable="false">Recommended for all ages.</string>
+ <string name="description_es_dvb_all" translatable="false">Recommended for all ages.</string>
+ <string name="description_es_dvb_c" translatable="false">Recommended for children.</string>
+ <string name="description_es_dvb_x" translatable="false">Recommended for adults.</string>
<!-- TV content rating system strings for KR TV. These strings are from
http://www.law.go.kr/admRulLsInfoP.do?admRulSeq=2000000118507 but they are translated
@@ -113,20 +113,20 @@
<string name="title_kr_tv_12" translatable="false">12세이상시청가</string>
<string name="title_kr_tv_15" translatable="false">15세이상시청가</string>
<string name="title_kr_tv_19" translatable="false">19세이상시청가</string>
- <string name="description_kr_tv_all">Programs do not contain material inappropriate for all ages, and thus are suitable for all ages.</string>
- <string name="description_kr_tv_7">Programs may contain material inappropriate for children under 7, and therefore parental discretion should be used for them.</string>
- <string name="description_kr_tv_12">Programs may contain material inappropriate for children under 12, and therefore parental discretion should be used for them.</string>
- <string name="description_kr_tv_15">Programs may contain material inappropriate for youngsters under 15, and therefore parental discretion should be used for them.</string>
- <string name="description_kr_tv_19">Programs may contain material inappropriate for youngsters under 19, and thus are not suitable for youngsters under 19.</string>
+ <string name="description_kr_tv_all" translatable="false">Programs do not contain material inappropriate for all ages, and thus are suitable for all ages.</string>
+ <string name="description_kr_tv_7" translatable="false">Programs may contain material inappropriate for children under 7, and therefore parental discretion should be used for them.</string>
+ <string name="description_kr_tv_12" translatable="false">Programs may contain material inappropriate for children under 12, and therefore parental discretion should be used for them.</string>
+ <string name="description_kr_tv_15" translatable="false">Programs may contain material inappropriate for youngsters under 15, and therefore parental discretion should be used for them.</string>
+ <string name="description_kr_tv_19" translatable="false">Programs may contain material inappropriate for youngsters under 19, and thus are not suitable for youngsters under 19.</string>
<!-- TV content rating system strings for SG TV. These strings are from
http://www.mda.gov.sg/RegulationsAndLicensing/ContentStandardsAndClassification/FilmsAndVideos/Pages/default.aspx -->
- <string name="description_sg_tv_g">Suitable for all ages.</string>
- <string name="description_sg_tv_pg">Suitable for all but parents should guide their young.</string>
- <string name="description_sg_tv_pg13">Suitable for persons aged 13 and above but parental guidance is advised for children below 13.</string>
- <string name="description_sg_tv_nc16">Suitable for persons aged 16 and above.</string>
- <string name="description_sg_tv_m18">Suitable for persons aged 18 and above.</string>
- <string name="description_sg_tv_r21">Suitable for adults aged 21 and above.</string>
+ <string name="description_sg_tv_g" translatable="false">Suitable for all ages.</string>
+ <string name="description_sg_tv_pg" translatable="false">Suitable for all but parents should guide their young.</string>
+ <string name="description_sg_tv_pg13" translatable="false">Suitable for persons aged 13 and above but parental guidance is advised for children below 13.</string>
+ <string name="description_sg_tv_nc16" translatable="false">Suitable for persons aged 16 and above.</string>
+ <string name="description_sg_tv_m18" translatable="false">Suitable for persons aged 18 and above.</string>
+ <string name="description_sg_tv_r21" translatable="false">Suitable for adults aged 21 and above.</string>
<!-- TV content rating system strings for US TV. These strings are from
http://www.tvguidelines.org/ratings.htm -->
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1118773e..2c2bcd39 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -63,9 +63,7 @@
The play means a playback of video and audio. [CHAR LIMIT=NONE] -->
<string name="menu_title_play_controls">Play controls</string>
<!-- Title of the channels row in the main menu. [CHAR LIMIT=NONE] -->
- <string name="menu_title_channels">Channels</string>
- <!-- Legacy title of the channels row in the main menu before MCN. [CHAR LIMIT=NONE] -->
- <string name="menu_title_channels_legacy">Recent channels</string>
+ <string name="menu_title_channels">Recent channels</string>
<!-- Title of the TV option row in the main menu. [CHAR LIMIT=NONE] -->
<string name="menu_title_options">TV options</string>
<!-- Title of the PIP option row in the main menu. [CHAR LIMIT=NONE] -->
diff --git a/res/values/styles.xml b/res/values/styles.xml
index b85d0892..d63a58cc 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -48,4 +48,35 @@
<item name="android:textColor">@color/pin_number_picker_text_color</item>
<item name="android:fontFamily">@string/light_font</item>
</style>
+
+ <style name="menu_row_view">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:orientation">vertical</item>
+ <item name="android:focusable">true</item>
+ <item name="android:descendantFocusability">afterDescendants</item>
+ </style>
+
+ <!-- To maximize the height of the contents view, keep the height of the TextView as small as possible. -->
+ <style name="menu_row_title_view">
+ <item name="android:layout_width">@dimen/menu_row_title_width</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_marginStart">@dimen/menu_list_padding_start</item>
+ <item name="android:layout_marginEnd">@dimen/menu_list_padding_end</item>
+ <item name="android:fontFamily">@string/condensed_font</item>
+ <item name="android:textAlignment">gravity</item>
+ <item name="android:gravity">start</item>
+ <item name="android:textColor">@color/menu_row_title</item>
+ <item name="android:textSize">@dimen/menu_row_title_text_size_deselected</item>
+ <item name="android:transformPivotX">@dimen/menu_row_title_transform_pivot_x</item>
+ <item name="android:alpha">@dimen/menu_row_title_alpha_deselected</item>
+ </style>
+
+ <style name="menu_row_contents_view">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">match_parent</item>
+ <item name="android:paddingStart">@dimen/menu_list_padding_start</item>
+ <item name="android:paddingEnd">@dimen/menu_list_padding_end</item>
+ <item name="android:paddingTop">@dimen/menu_row_contents_padding_top</item>
+ </style>
</resources>
diff --git a/src/com/android/tv/ChannelTuner.java b/src/com/android/tv/ChannelTuner.java
index 3b5b631d..f5114193 100644
--- a/src/com/android/tv/ChannelTuner.java
+++ b/src/com/android/tv/ChannelTuner.java
@@ -21,6 +21,7 @@ import android.database.Cursor;
import android.media.tv.TvContract;
import android.net.Uri;
import android.os.Handler;
+import android.support.annotation.WorkerThread;
import android.util.Log;
import com.android.tv.data.Channel;
@@ -392,6 +393,7 @@ public class ChannelTuner {
* @param channelId The ID of the channel to be loaded.
* @return a channel if it has been loaded. {@code null} if the channel is not found.
*/
+ @WorkerThread
public Channel loadChannel(long channelId) {
if (channelId < 0) {
return null;
diff --git a/src/com/android/tv/LauncherActivity.java b/src/com/android/tv/LauncherActivity.java
index b2ecf726..e03952da 100644
--- a/src/com/android/tv/LauncherActivity.java
+++ b/src/com/android/tv/LauncherActivity.java
@@ -87,9 +87,9 @@ public class LauncherActivity extends Activity {
// We should launch the new activity in onCreate rather than in onStart.
// That's because it is not guaranteed that onStart is called only once.
Intent intent = getIntent().getParcelableExtra(EXTRA_INTENT);
- boolean requstResult = getIntent().getBooleanExtra(EXTRA_REQUEST_RESULT, false);
+ boolean requestResult = getIntent().getBooleanExtra(EXTRA_REQUEST_RESULT, false);
try {
- if (requstResult) {
+ if (requestResult) {
startActivityForResult(intent, REQUEST_START_ACTIVITY);
} else {
startActivity(intent);
diff --git a/src/com/android/tv/MainActivity.java b/src/com/android/tv/MainActivity.java
index f06225c0..db4cbffd 100644
--- a/src/com/android/tv/MainActivity.java
+++ b/src/com/android/tv/MainActivity.java
@@ -17,7 +17,6 @@
package com.android.tv;
import android.app.Activity;
-import android.app.ActivityManager;
import android.app.FragmentTransaction;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
@@ -45,6 +44,7 @@ import android.os.Handler;
import android.os.Message;
import android.provider.Settings;
import android.support.annotation.IntDef;
+import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.util.Log;
import android.view.Display;
@@ -62,7 +62,7 @@ import android.widget.Toast;
import com.android.tv.analytics.DurationTimer;
import com.android.tv.analytics.Tracker;
-import com.android.tv.customization.TvCustomizationManager;
+import com.android.tv.common.WeakHandler;
import com.android.tv.data.Channel;
import com.android.tv.data.ChannelDataManager;
import com.android.tv.data.OnCurrentProgramUpdatedListener;
@@ -71,7 +71,7 @@ import com.android.tv.data.ProgramDataManager;
import com.android.tv.data.StreamInfo;
import com.android.tv.dialog.PinDialogFragment;
import com.android.tv.dialog.SafeDismissDialogFragment;
-import com.android.tv.menu.MenuView;
+import com.android.tv.menu.Menu;
import com.android.tv.parental.ContentRatingsManager;
import com.android.tv.parental.ParentalControlSettings;
import com.android.tv.receiver.AudioCapabilitiesReceiver;
@@ -86,7 +86,6 @@ import com.android.tv.ui.SelectInputView;
import com.android.tv.ui.TunableTvView;
import com.android.tv.ui.TunableTvView.OnTuneListener;
import com.android.tv.ui.TvOverlayManager;
-import com.android.tv.ui.TvTransitionManager;
import com.android.tv.ui.TvViewUiManager;
import com.android.tv.ui.sidepanel.ChannelSourcesFragment;
import com.android.tv.ui.sidepanel.ClosedCaptionFragment;
@@ -143,6 +142,7 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
private static final float FRAME_RATE_FOR_FILM = 23.976f;
private static final float FRAME_RATE_EPSILON = 0.1f;
+
// Tracker screen names.
public static final String SCREEN_NAME = "Main";
private static final String SCREEN_BEHIND_NAME = "Behind";
@@ -171,7 +171,6 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
private static final String MEDIA_SESSION_TAG = "com.android.tv.mediasession";
// Change channels with key long press.
- private static final boolean USE_ACCELERATION_IN_CHANNEL_CHANGE = true;
private static final int CHANNEL_CHANGE_NORMAL_SPEED_DURATION_MS = 3000;
private static final int CHANNEL_CHANGE_DELAY_MS_IN_MAX_SPEED = 50;
private static final int CHANNEL_CHANGE_DELAY_MS_IN_NORMAL_SPEED = 200;
@@ -216,7 +215,6 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
private TunableTvView mPipView;
private OverlayRootView mOverlayRootView;
private Bundle mTuneParams;
- private TvCustomizationManager mTvCustomizationManager;
private boolean mChannelBannerHiddenBySideFragment;
// TODO: Move the scene views into TvTransitionManager or TvOverlayManager.
private ChannelBannerView mChannelBannerView;
@@ -250,9 +248,6 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
private boolean mIsFilmModeSet;
private float mDefaultRefreshRate;
- // TODO: Merge the TvTransitionManager into TvOverlayManager because the scene is a kind of
- // overlay.
- private TvTransitionManager mTransitionManager;
private TvOverlayManager mOverlayManager;
// mIsCurrentChannelUnblockedByUser and mWasChannelUnblockedBeforeShrunkenByUser are used for
@@ -280,34 +275,7 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
// A caller which started this activity. (e.g. TvSearch)
private String mSource;
- private final Handler mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case MSG_CHANNEL_DOWN_PRESSED:
- long startTime = (Long) msg.obj;
- moveToAdjacentChannel(false, true);
- mHandler.sendMessageDelayed(Message.obtain(msg), getDelay(startTime));
- break;
- case MSG_CHANNEL_UP_PRESSED:
- startTime = (Long) msg.obj;
- moveToAdjacentChannel(true, true);
- mHandler.sendMessageDelayed(Message.obtain(msg), getDelay(startTime));
- break;
- case MSG_UPDATE_CHANNEL_BANNER_BY_INFO_UPDATE:
- updateChannelBannerAndShowIfNeeded(UPDATE_CHANNEL_BANNER_REASON_UPDATE_INFO);
- break;
- }
- }
-
- private long getDelay(long startTime) {
- if (USE_ACCELERATION_IN_CHANNEL_CHANGE && System.currentTimeMillis() - startTime >
- CHANNEL_CHANGE_NORMAL_SPEED_DURATION_MS) {
- return CHANNEL_CHANGE_DELAY_MS_IN_MAX_SPEED;
- }
- return CHANNEL_CHANGE_DELAY_MS_IN_NORMAL_SPEED;
- }
- };
+ private Handler mHandler = new MainActivityHandler(this);
private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
@@ -358,6 +326,7 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
new ChannelTuner.Listener() {
@Override
public void onLoadFinished() {
+ markNewChannelsBrowsable();
if (mActivityResumed) {
resumeTvIfNeeded();
resumePipIfNeeded();
@@ -366,7 +335,7 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
mHandler.post(new Runnable() {
@Override
public void run() {
- mOverlayManager.getMenuView().setChannelTuner(mChannelTuner);
+ mOverlayManager.getMenu().setChannelTuner(mChannelTuner);
}
});
}
@@ -405,15 +374,17 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
@Override
protected void onCreate(Bundle savedInstanceState) {
- if (DEBUG) Log.d(TAG,"onCreate");
+ if (DEBUG) Log.d(TAG,"onCreate()");
+ if(BuildConfig.ENG && SystemProperties.ALLOW_STRICT_MODE.getValue()) {
+ Toast.makeText(this, "Using Strict Mode for eng builds", Toast.LENGTH_SHORT).show();
+ }
super.onCreate(savedInstanceState);
TvApplication tvApplication = (TvApplication) getApplication();
tvApplication.setMainActivity(this);
mTracker = tvApplication.getTracker();
- mTvInputManagerHelper = new TvInputManagerHelper(this);
- mTvInputManagerHelper.start();
- mChannelDataManager = new ChannelDataManager(this, mTvInputManagerHelper);
+ mTvInputManagerHelper = tvApplication.getTvInputManagerHelper();
+ mChannelDataManager = new ChannelDataManager(this, mTvInputManagerHelper, mTracker);
mProgramDataManager = new ProgramDataManager(this);
mProgramDataManager.addOnCurrentProgramUpdatedListener(Channel.INVALID_ID,
mOnCurrentProgramUpdatedListener);
@@ -463,7 +434,7 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
return false;
}
});
- mTimeShiftManager = new TimeShiftManager(this, mTvView, mProgramDataManager,
+ mTimeShiftManager = new TimeShiftManager(this, mTvView, mProgramDataManager, mTracker,
new OnCurrentProgramUpdatedListener() {
@Override
public void onCurrentProgramUpdated(long channelId, Program program) {
@@ -502,14 +473,10 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
.inflate(R.layout.input_banner, sceneContainer, false);
SelectInputView selectInputView = (SelectInputView) getLayoutInflater()
.inflate(R.layout.select_input, sceneContainer, false);
- mTransitionManager = new TvTransitionManager(this, sceneContainer, mChannelBannerView,
- inputBannerView, mKeypadChannelSwitchView, selectInputView);
mSearchFragment = new ProgramGuideSearchFragment();
- mOverlayManager = new TvOverlayManager(this, mChannelTuner, mTransitionManager,
- mKeypadChannelSwitchView, selectInputView, mSearchFragment);
-
- mTvCustomizationManager = new TvCustomizationManager(this);
- mTvCustomizationManager.initialize();
+ mOverlayManager = new TvOverlayManager(this, mChannelTuner,
+ mKeypadChannelSwitchView, mChannelBannerView, inputBannerView,
+ selectInputView, sceneContainer, mSearchFragment);
mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
mAudioFocusStatus = AudioManager.AUDIOFOCUS_LOSS;
@@ -562,10 +529,7 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
if (isUnderShrunkenTvView()) {
return TunableTvView.BLOCK_SCREEN_TYPE_SHRUNKEN_TV_VIEW;
}
- if (mOverlayManager.getSideFragmentManager().isActive()
- || mOverlayManager.getMenuView().isActive()
- || mTransitionManager.isKeypadChannelSwitchActive()
- || mTransitionManager.isSelectInputActive()) {
+ if (mOverlayManager.needHideTextOnMainView()) {
return TunableTvView.BLOCK_SCREEN_TYPE_NO_UI;
}
SafeDismissDialogFragment currentDialog = mOverlayManager.getCurrentDialog();
@@ -596,6 +560,7 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
@Override
protected void onStart() {
+ if (DEBUG) Log.d(TAG,"onStart()");
super.onStart();
mActivityStarted = true;
mTracker.sendMainStart();
@@ -611,14 +576,12 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
Intent notificationIntent = new Intent(this, NotificationService.class);
notificationIntent.setAction(NotificationService.ACTION_SHOW_RECOMMENDATION);
startService(notificationIntent);
-
- mOverlayManager.onStart();
}
@Override
protected void onResume() {
- super.onResume();
if (DEBUG) Log.d(TAG, "onResume()");
+ super.onResume();
mTracker.sendScreenView(SCREEN_NAME);
SystemProperties.updateSystemProperties();
@@ -635,6 +598,9 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
// visible behind.
requestVisibleBehind(true);
}
+ if (mChannelTuner.areAllChannelsLoaded()) {
+ markNewChannelsBrowsable();
+ }
resumeTvIfNeeded();
resumePipIfNeeded();
mOverlayManager.showMenuWithTimeShiftPauseIfNeeded();
@@ -666,7 +632,7 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
// the screen.
@Override
public void run() {
- showSelectInputView();
+ mOverlayManager.showSelectInputView();
}
});
}
@@ -761,6 +727,33 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
}
}
+ private void markNewChannelsBrowsable() {
+ SetupUtils setupUtils = SetupUtils.getInstance(MainActivity.this);
+ Set<String> newInputsWithChannels = new HashSet<>();
+ for (TvInputInfo input : mTvInputManagerHelper.getTvInputInfos(true, true)) {
+ String inputId = input.getId();
+ if (!setupUtils.hasSetupLaunched(inputId)
+ && mChannelDataManager.getChannelCountForInput(inputId) > 0) {
+ setupUtils.onSetupLaunched(inputId);
+ setupUtils.markAsKnownInput(inputId);
+ newInputsWithChannels.add(inputId);
+ if (DEBUG) {
+ Log.d(TAG, "New input " + inputId + " has "
+ + mChannelDataManager.getChannelCountForInput(inputId)
+ + " channels");
+ }
+ }
+ }
+ if (!newInputsWithChannels.isEmpty()) {
+ for (Channel channel : mChannelDataManager.getChannelList()) {
+ if (newInputsWithChannels.contains(channel.getInputId())) {
+ mChannelDataManager.updateBrowsable(channel.getId(), true);
+ }
+ }
+ mChannelDataManager.applyUpdatedValuesToDb();
+ }
+ }
+
private Channel loadInitialChannel(Uri channelUri) {
if (TvContract.isChannelUriForPassthroughInput(channelUri)) {
throw new IllegalArgumentException("channelUri should be null or tuner input channel");
@@ -853,7 +846,6 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
mMediaSession = null;
}
mActivityStarted = false;
- mOverlayManager.onStop();
stopAll(false);
unregisterReceiver(mBroadcastReceiver);
mTracker.sendMainStop(mMainDurationTimer.reset());
@@ -875,11 +867,11 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
*
* @param calledByDialog If true, startSetupActivity is invoked from the setup dialog.
*/
- public boolean startSetupActivity(TvInputInfo input, boolean calledByDialog) {
+ public void startSetupActivity(TvInputInfo input, boolean calledByDialog) {
Intent intent = input.createSetupIntent();
if (intent == null) {
Toast.makeText(this, R.string.msg_no_setup_activity, Toast.LENGTH_SHORT).show();
- return false;
+ return;
}
try {
// Now we know that the user intends to set up this input. Grant permission for writing
@@ -894,7 +886,7 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
mInputIdUnderSetup = null;
Toast.makeText(this, getString(R.string.msg_unable_to_start_setup_activity,
input.loadLabel(this)), Toast.LENGTH_SHORT).show();
- return false;
+ return;
}
if (calledByDialog) {
mOverlayManager.hideOverlays(TvOverlayManager.FLAG_HIDE_OVERLAYS_WITHOUT_ANIMATION
@@ -904,7 +896,6 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
| TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_SIDE_PANEL_HISTORY);
}
stopTv("startSetupActivity()", false);
- return true;
}
public boolean hasCaptioningSettingsActivity() {
@@ -1465,6 +1456,10 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
+ " with the URI " + channel);
return;
}
+ if (isChannelChangeKeyDownReceived()) {
+ // Ignore this message if the user is changing the channel.
+ return;
+ }
mPipChannel = currentChannel;
mPipView.setCurrentChannel(mPipChannel);
}
@@ -1534,19 +1529,6 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
return;
}
if (mChannelDataManager.getChannelCount() > 0) {
- Set<String> inputIds = new HashSet<>();
- // Enable all channels.
- for (Channel channel : mChannelDataManager.getChannelList()) {
- mChannelDataManager.updateBrowsable(channel.getId(), true);
- inputIds.add(channel.getInputId());
- }
- mChannelDataManager.applyUpdatedValuesToDb();
- // Move to a first channel
- mChannelTuner.moveToAdjacentBrowsableChannel(true);
- for (String inputId : inputIds) {
- setupUtils.onSetupLaunched(inputId);
- setupUtils.markAsKnownInput(inputId);
- }
mOverlayManager.showIntroDialog();
} else {
mOverlayManager.showSetupDialog();
@@ -1664,7 +1646,7 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
applyMultiAudio();
applyClosedCaption();
// TODO: Send command to TIS with checking the settings in TV and CaptionManager.
- mOverlayManager.getMenuView().updateOptionsRow();
+ mOverlayManager.getMenu().onStreamInfoChanged();
if (mTvView.isVideoAvailable()) {
mTvViewUiManager.fadeInTvView();
}
@@ -1684,6 +1666,10 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
+ channel);
return;
}
+ if (isChannelChangeKeyDownReceived()) {
+ // Ignore this message if the user is changing the channel.
+ return;
+ }
mChannelTuner.setCurrentChannel(currentChannel);
mTvView.setCurrentChannel(currentChannel);
updateChannelBannerAndShowIfNeeded(UPDATE_CHANNEL_BANNER_REASON_TUNE);
@@ -1747,7 +1733,7 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
}
}
mRecentChannels.addFirst(channelId);
- mOverlayManager.getMenuView().onRecentChannelUpdated();
+ mOverlayManager.getMenu().onRecentChannelsChanged();
}
/**
@@ -1846,7 +1832,7 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
mChannelBannerHiddenBySideFragment = true;
} else {
mChannelBannerHiddenBySideFragment = false;
- mTransitionManager.goToChannelBannerScene();
+ mOverlayManager.showBanner();
}
}
updateAvailabilityToast();
@@ -1980,20 +1966,11 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
*/
public void showKeypadChannelSwitchView(int keyCode) {
if (mChannelTuner.areAllChannelsLoaded()) {
- // Show KeypadChannelSwitchView only if all the channels are loaded.
- mOverlayManager.hideOverlays(TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_SCENE
- | TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_SIDE_PANELS
- | TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_DIALOG);
- mTransitionManager.goToKeypadChannelSwitchScene();
+ mOverlayManager.showKeypadChannelSwitch();
mKeypadChannelSwitchView.onNumberKeyUp(keyCode - KeyEvent.KEYCODE_0);
}
}
- public void showSelectInputView() {
- mOverlayManager.hideOverlays(TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_SCENE);
- mTransitionManager.goToSelectInputScene();
- }
-
public void showSearchActivity() {
// HACK: Once we moved the window layer to TYPE_APPLICATION_SUB_PANEL,
// the voice button doesn't work. So we directly call the voice action.
@@ -2022,14 +1999,14 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
Channel.INVALID_ID, mOnCurrentProgramUpdatedListener);
mProgramDataManager.stop();
mChannelDataManager.stop();
- mTvInputManagerHelper.stop();
mPipInputManager.stop();
- mOverlayManager.getMenuView().setChannelTuner(null);
+ mOverlayManager.release();
mChannelTuner.stop();
mKeypadChannelSwitchView.setChannels(null);
mMemoryManageables.clear();
((TvApplication) getApplication()).setMainActivity(null);
mAudioCapabilitiesReceiver.unregister();
+ mHandler.removeCallbacksAndMessages(null);
super.onDestroy();
}
@@ -2202,7 +2179,7 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
updateChannelBannerAndShowIfNeeded(UPDATE_CHANNEL_BANNER_REASON_FORCE_SHOW);
}
if (keyCode != KeyEvent.KEYCODE_E) {
- mOverlayManager.showMenu(MenuView.REASON_NONE);
+ mOverlayManager.showMenu(Menu.REASON_NONE);
}
return true;
case KeyEvent.KEYCODE_CHANNEL_UP:
@@ -2310,16 +2287,9 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
mOverlayManager.onUserInteraction();
}
- /**
- * Returns TvCustomizationManager.
- */
- public TvCustomizationManager getTvCustomizationManager() {
- return mTvCustomizationManager;
- }
-
public void togglePipView() {
enablePipView(!mPipEnabled, true);
- mOverlayManager.getMenuView().update();
+ mOverlayManager.getMenu().update();
}
public boolean isPipEnabled() {
@@ -2377,9 +2347,13 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
}
}
+ private boolean isChannelChangeKeyDownReceived() {
+ return mHandler.hasMessages(MSG_CHANNEL_UP_PRESSED)
+ || mHandler.hasMessages(MSG_CHANNEL_DOWN_PRESSED);
+ }
+
private void finishChannelChangeIfNeeded() {
- if (!mHandler.hasMessages(MSG_CHANNEL_UP_PRESSED) && !mHandler.hasMessages(
- MSG_CHANNEL_DOWN_PRESSED)) {
+ if (!isChannelChangeKeyDownReceived()) {
return;
}
mHandler.removeMessages(MSG_CHANNEL_UP_PRESSED);
@@ -2655,7 +2629,7 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
}
private void updateAvailabilityToast(StreamInfo info) {
- if (mTransitionManager.isSceneActive() || info.isVideoAvailable()) {
+ if (info.isVideoAvailable()) {
return;
}
@@ -2694,14 +2668,10 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
return mCaptionSettings;
}
- public void goToEmptyScene(boolean withAnimation) {
- mTransitionManager.goToEmptyScene(withAnimation);
- }
-
// Initialize TV app for test. The setup process should be finished before the Live TV app is
// started. We only enable all the channels here.
private void initForTest() {
- if (!ActivityManager.isRunningInTestHarness()) {
+ if (!Utils.isRunningInTest()) {
return;
}
@@ -2727,7 +2697,7 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
private void initAnimations() {
mTvViewUiManager.initAnimatorIfNeeded();
- mTransitionManager.initIfNeeded();
+ mOverlayManager.initAnimatorIfNeeded();
}
private void initSideFragments() {
@@ -2754,4 +2724,37 @@ public class MainActivity extends Activity implements AudioManager.OnAudioFocusC
*/
void performTrimMemory(int level);
}
+
+ private static class MainActivityHandler extends WeakHandler<MainActivity> {
+ MainActivityHandler(MainActivity mainActivity) {
+ super(mainActivity);
+ }
+
+ @Override
+ protected void handleMessage(Message msg, @NonNull MainActivity mainActivity) {
+ switch (msg.what) {
+ case MSG_CHANNEL_DOWN_PRESSED:
+ long startTime = (Long) msg.obj;
+ mainActivity.moveToAdjacentChannel(false, true);
+ sendMessageDelayed(Message.obtain(msg), getDelay(startTime));
+ break;
+ case MSG_CHANNEL_UP_PRESSED:
+ startTime = (Long) msg.obj;
+ mainActivity.moveToAdjacentChannel(true, true);
+ sendMessageDelayed(Message.obtain(msg), getDelay(startTime));
+ break;
+ case MSG_UPDATE_CHANNEL_BANNER_BY_INFO_UPDATE:
+ mainActivity.updateChannelBannerAndShowIfNeeded(
+ UPDATE_CHANNEL_BANNER_REASON_UPDATE_INFO);
+ break;
+ }
+ }
+
+ private long getDelay(long startTime) {
+ if (System.currentTimeMillis() - startTime > CHANNEL_CHANGE_NORMAL_SPEED_DURATION_MS) {
+ return CHANNEL_CHANGE_DELAY_MS_IN_MAX_SPEED;
+ }
+ return CHANNEL_CHANGE_DELAY_MS_IN_NORMAL_SPEED;
+ }
+ }
}
diff --git a/src/com/android/tv/TimeShiftManager.java b/src/com/android/tv/TimeShiftManager.java
index e606b417..5a7b51c1 100644
--- a/src/com/android/tv/TimeShiftManager.java
+++ b/src/com/android/tv/TimeShiftManager.java
@@ -16,7 +16,6 @@
package com.android.tv;
-import android.annotation.SuppressLint;
import android.content.ContentResolver;
import android.content.Context;
import android.os.Handler;
@@ -28,6 +27,8 @@ import android.support.annotation.VisibleForTesting;
import android.util.Log;
import android.util.Range;
+import com.android.tv.analytics.Tracker;
+import com.android.tv.common.WeakHandler;
import com.android.tv.data.Channel;
import com.android.tv.data.OnCurrentProgramUpdatedListener;
import com.android.tv.data.Program;
@@ -145,6 +146,7 @@ public class TimeShiftManager {
private final PlayController mPlayController;
private final ProgramManager mProgramManager;
+ private final Tracker mTracker;
@VisibleForTesting
final CurrentPositionMediator mCurrentPositionMediator = new CurrentPositionMediator();
@@ -153,6 +155,7 @@ public class TimeShiftManager {
private int mEnabledActionIds = TIME_SHIFT_ACTION_ID_PLAY | TIME_SHIFT_ACTION_ID_PAUSE
| TIME_SHIFT_ACTION_ID_REWIND | TIME_SHIFT_ACTION_ID_FAST_FORWARD
| TIME_SHIFT_ACTION_ID_JUMP_TO_PREVIOUS | TIME_SHIFT_ACTION_ID_JUMP_TO_NEXT;
+ @TimeShiftActionId
private int mLastActionId = 0;
// TODO: Remove these variables once API level 23 is available.
@@ -162,27 +165,15 @@ public class TimeShiftManager {
// This variable is used to block notification while changing the availability status.
private boolean mNotificationEnabled;
- @SuppressLint("HandlerLeak")
- private final Handler mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case MSG_GET_CURRENT_POSITION:
- mPlayController.handleGetCurrentPosition();
- break;
- case MSG_PREFETCH_PROGRAM:
- mProgramManager.prefetchPrograms();
- break;
- }
- }
- };
+ private final Handler mHandler = new TimeShiftHandler(this);
public TimeShiftManager(Context context, TunableTvView tvView,
- ProgramDataManager programDataManager,
+ ProgramDataManager programDataManager, Tracker tracker,
OnCurrentProgramUpdatedListener onCurrentProgramUpdatedListener) {
mContext = context;
mPlayController = new PlayController(tvView);
mProgramManager = new ProgramManager(programDataManager);
+ mTracker = tracker;
mOnCurrentProgramUpdatedListener = onCurrentProgramUpdatedListener;
tvView.setOnScreenBlockedListener(new TunableTvView.OnScreenBlockingChangedListener() {
@Override
@@ -235,6 +226,7 @@ public class TimeShiftManager {
if (!isActionEnabled(TIME_SHIFT_ACTION_ID_PLAY)) {
return;
}
+ mTracker.sendTimeShiftAction(TIME_SHIFT_ACTION_ID_PLAY);
mLastActionId = TIME_SHIFT_ACTION_ID_PLAY;
mPlayController.play();
updateActions();
@@ -250,6 +242,7 @@ public class TimeShiftManager {
return;
}
mLastActionId = TIME_SHIFT_ACTION_ID_PAUSE;
+ mTracker.sendTimeShiftAction(mLastActionId);
mPlayController.pause();
updateActions();
}
@@ -275,6 +268,7 @@ public class TimeShiftManager {
return;
}
mLastActionId = TIME_SHIFT_ACTION_ID_REWIND;
+ mTracker.sendTimeShiftAction(mLastActionId);
mPlayController.rewind();
updateActions();
}
@@ -291,6 +285,7 @@ public class TimeShiftManager {
return;
}
mLastActionId = TIME_SHIFT_ACTION_ID_FAST_FORWARD;
+ mTracker.sendTimeShiftAction(mLastActionId);
mPlayController.fastForward();
updateActions();
}
@@ -316,6 +311,7 @@ public class TimeShiftManager {
long seekPosition =
Math.max(program.getStartTimeUtcMillis(), mPlayController.mRecordStartTimeMs);
mLastActionId = TIME_SHIFT_ACTION_ID_JUMP_TO_PREVIOUS;
+ mTracker.sendTimeShiftAction(mLastActionId);
mPlayController.seekTo(seekPosition);
mCurrentPositionMediator.onSeekRequested(seekPosition);
updateActions();
@@ -340,6 +336,7 @@ public class TimeShiftManager {
Program nextProgram = mProgramManager.getProgramAt(currentProgram.getEndTimeUtcMillis());
long currentTimeMs = System.currentTimeMillis();
mLastActionId = TIME_SHIFT_ACTION_ID_JUMP_TO_NEXT;
+ mTracker.sendTimeShiftAction(mLastActionId);
if (nextProgram == null || nextProgram.getStartTimeUtcMillis() > currentTimeMs) {
mPlayController.seekTo(currentTimeMs);
if (mPlayController.isForwarding()) {
@@ -721,8 +718,10 @@ public class TimeShiftManager {
void togglePlayPause() {
if (mPlayStatus == PLAY_STATUS_PAUSED) {
play();
+ mTracker.sendTimeShiftAction(TIME_SHIFT_ACTION_ID_PLAY);
} else {
pause();
+ mTracker.sendTimeShiftAction(TIME_SHIFT_ACTION_ID_PAUSE);
}
}
@@ -1292,4 +1291,22 @@ public class TimeShiftManager {
*/
void onActionEnabledChanged(@TimeShiftActionId int actionId, boolean enabled);
}
+
+ private static class TimeShiftHandler extends WeakHandler<TimeShiftManager> {
+ public TimeShiftHandler(TimeShiftManager ref) {
+ super(ref);
+ }
+
+ @Override
+ public void handleMessage(Message msg, @NonNull TimeShiftManager timeShiftManager) {
+ switch (msg.what) {
+ case MSG_GET_CURRENT_POSITION:
+ timeShiftManager.mPlayController.handleGetCurrentPosition();
+ break;
+ case MSG_PREFETCH_PROGRAM:
+ timeShiftManager.mProgramManager.prefetchPrograms();
+ break;
+ }
+ }
+ }
}
diff --git a/src/com/android/tv/TvApplication.java b/src/com/android/tv/TvApplication.java
index 4f73f1ec..d3a8facb 100644
--- a/src/com/android/tv/TvApplication.java
+++ b/src/com/android/tv/TvApplication.java
@@ -24,15 +24,21 @@ import android.content.pm.PackageManager;
import android.media.tv.TvInputInfo;
import android.media.tv.TvInputManager;
import android.os.Bundle;
+import android.os.StrictMode;
import android.util.Log;
import android.view.KeyEvent;
import com.android.tv.analytics.Analytics;
import com.android.tv.analytics.StubAnalytics;
+import com.android.tv.analytics.StubAnalytics;
import com.android.tv.analytics.Tracker;
+import com.android.tv.util.RecurringRunner;
+import com.android.tv.util.SystemProperties;
+import com.android.tv.util.TvInputManagerHelper;
import com.android.tv.util.Utils;
import java.util.List;
+import java.util.concurrent.TimeUnit;
public class TvApplication extends Application {
private static final String TAG = "TvApplication";
@@ -41,11 +47,31 @@ public class TvApplication extends Application {
private MainActivity mActivity;
private Tracker mTracker;
+ private TvInputManagerHelper mTvInputManagerHelper;
+ private RecurringRunner mSendConfigInfoRecurringRunner;
@Override
public void onCreate() {
super.onCreate();
- Analytics analytics = StubAnalytics.getInstance(this);
+ // Only set StrictMode for ENG builds because the build server only produces userdebug
+ // builds.
+ if (BuildConfig.ENG && SystemProperties.ALLOW_STRICT_MODE.getValue()) {
+ StrictMode.setThreadPolicy(
+ new StrictMode.ThreadPolicy.Builder().detectAll().penaltyLog().build());
+ StrictMode.VmPolicy.Builder vmPolicyBuilder = new StrictMode.VmPolicy.Builder()
+ .detectAll().penaltyLog();
+ if (BuildConfig.ENG && SystemProperties.ALLOW_DEATH_PENALTY.getValue() &&
+ !Utils.isRunningInTest()) {
+ // TODO turn on death penalty for tests when they stop leaking MainActivity
+ }
+ StrictMode.setVmPolicy(vmPolicyBuilder.build());
+ }
+ Analytics analytics;
+ if (BuildConfig.ENG && !SystemProperties.ALLOW_ANALYTICS_IN_ENG.getValue()) {
+ analytics = StubAnalytics.getInstance(this);
+ } else {
+ analytics = StubAnalytics.getInstance(this);
+ }
mTracker = analytics.getDefaultTracker();
try {
PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
@@ -54,13 +80,22 @@ public class TvApplication extends Application {
Log.w(TAG, "Unable to get version name.", e);
versionName = "";
}
- if (DEBUG) Log.d(TAG, "Starting Live TV " + versionName);
+ mTvInputManagerHelper = new TvInputManagerHelper(this);
+ mTvInputManagerHelper.start();
+ mSendConfigInfoRecurringRunner = new RecurringRunner(this, TimeUnit.DAYS.toMillis(1),
+ new SendConfigInfoRunnable());
+ mSendConfigInfoRecurringRunner.start();
+ if (DEBUG) Log.i(TAG, "Started Live TV " + versionName);
}
public Tracker getTracker() {
return mTracker;
}
+ public TvInputManagerHelper getTvInputManagerHelper() {
+ return mTvInputManagerHelper;
+ }
+
/**
* MainActivity is set in {@link MainActivity#onCreate} and cleared in
* {@link MainActivity#onDestroy}.
@@ -132,4 +167,36 @@ public class TvApplication extends Application {
public static String getVersionName() {
return versionName;
}
+
+ /**
+ * Data useful for tracking that doesn't change often.
+ */
+ public static class ConfigurationInfo {
+ public final int systemInputCount;
+ public final int nonSystemInputCount;
+
+ public ConfigurationInfo(int systemInputCount, int nonSystemInputCount) {
+ this.systemInputCount = systemInputCount;
+ this.nonSystemInputCount = nonSystemInputCount;
+ }
+ }
+
+ private class SendConfigInfoRunnable implements Runnable {
+ @Override
+ public void run() {
+ List<TvInputInfo> infoList = mTvInputManagerHelper.getTvInputInfos(false, false);
+ int systemInputCount = 0;
+ int nonSystemInputCount = 0;
+ for (TvInputInfo info : infoList) {
+ if (mTvInputManagerHelper.isSystemInput(info)) {
+ systemInputCount++;
+ } else {
+ nonSystemInputCount++;
+ }
+ }
+ ConfigurationInfo configurationInfo = new ConfigurationInfo(systemInputCount,
+ nonSystemInputCount);
+ mTracker.sendConfigurationInfo(configurationInfo);
+ }
+ }
}
diff --git a/src/com/android/tv/analytics/HasTrackerLabel.java b/src/com/android/tv/analytics/HasTrackerLabel.java
index 63466ad5..566e5f1a 100644
--- a/src/com/android/tv/analytics/HasTrackerLabel.java
+++ b/src/com/android/tv/analytics/HasTrackerLabel.java
@@ -26,5 +26,5 @@ public interface HasTrackerLabel {
/**
* Returns the label.
*/
- public String getTrackerLabel();
+ String getTrackerLabel();
}
diff --git a/src/com/android/tv/analytics/StubTracker.java b/src/com/android/tv/analytics/StubTracker.java
index d271ae83..f7efcb92 100644
--- a/src/com/android/tv/analytics/StubTracker.java
+++ b/src/com/android/tv/analytics/StubTracker.java
@@ -16,13 +16,24 @@
package com.android.tv.analytics;
+import android.support.annotation.VisibleForTesting;
+
+import com.android.tv.TimeShiftManager;
+import com.android.tv.TvApplication;
import com.android.tv.data.Channel;
/**
* A implementation of Tracker that does nothing.
*/
+@VisibleForTesting
public class StubTracker implements Tracker {
@Override
+ public void sendChannelCount(int browsableChannelCount, int totalChannelCount) { }
+
+ @Override
+ public void sendConfigurationInfo(TvApplication.ConfigurationInfo info) { }
+
+ @Override
public void sendMainStart() { }
@Override
@@ -32,7 +43,7 @@ public class StubTracker implements Tracker {
public void sendScreenView(String screenName) { }
@Override
- public void sendChannelViewStart(Channel channel) { }
+ public void sendChannelViewStart(Channel channel, boolean tunedByRecommendation) { }
@Override
public void sendChannelTuneTime(Channel channel, long durationMs) { }
@@ -102,4 +113,7 @@ public class StubTracker implements Tracker {
@Override
public void sendHideSidePanel(HasTrackerLabel trackerLabel, long durationMs) { }
+
+ @Override
+ public void sendTimeShiftAction(@TimeShiftManager.TimeShiftActionId int actionId) { }
}
diff --git a/src/com/android/tv/analytics/Tracker.java b/src/com/android/tv/analytics/Tracker.java
index e2160e86..05638871 100644
--- a/src/com/android/tv/analytics/Tracker.java
+++ b/src/com/android/tv/analytics/Tracker.java
@@ -16,12 +16,36 @@
package com.android.tv.analytics;
+import com.android.tv.TimeShiftManager;
+import com.android.tv.TvApplication;
import com.android.tv.data.Channel;
/**
* Interface for sending user activity for analysis.
*/
public interface Tracker {
+
+ /**
+ * Send the number of channels that doesn't change often.
+ *
+ * <p>Because the number of channels does not change often, this method should not be called
+ * more than once a day.
+ *
+ * @param browsableChannelCount the number of browsable channels.
+ * @param totalChannelCount the number of all channels.
+ */
+ void sendChannelCount(int browsableChannelCount, int totalChannelCount);
+
+ /**
+ * Send data that doesn't change often.
+ *
+ * <p>Because configuration info does not change often, this method should not be called more
+ * than once a day.
+ *
+ * @param info the configuration info.
+ */
+ void sendConfigurationInfo(TvApplication.ConfigurationInfo info);
+
/**
* Sends tracking information for starting the MainActivity.
*/
@@ -43,8 +67,9 @@ public interface Tracker {
* Sends tracking information for starting to view a channel.
*
* @param channel the current channel
+ * @param tunedByRecommendation True, if the channel was tuned by the recommendation.
*/
- void sendChannelViewStart(Channel channel);
+ void sendChannelViewStart(Channel channel, boolean tunedByRecommendation);
/**
* Sends tracking information for tuning to a channel.
@@ -103,17 +128,17 @@ public interface Tracker {
void sendMenuClicked(int labelResId);
/**
- * Sends tracking information for showing the Enhanced Program Guide (EPG).
+ * Sends tracking information for showing the Electronic Program Guide (EPG).
*/
void sendShowEpg();
/**
- * Sends tracking information for clicking an Enhanced Program Guide (EPG) item.
+ * Sends tracking information for clicking an Electronic Program Guide (EPG) item.
*/
void sendEpgItemClicked();
/**
- * Sends tracking for hiding the Enhanced Program Guide (EPG).
+ * Sends tracking for hiding the Electronic Program Guide (EPG).
*
* @param durationMs The duration the EPG was shown in milliseconds.
*/
@@ -154,7 +179,7 @@ public interface Tracker {
void sendChannelNumberItemChosenByTimeout();
/**
- * Sends HDMI AC3 passthrough capablities.
+ * Sends HDMI AC3 passthrough capabilities.
*
* @param isSupported {@code true} if the feature is supported; otherwise {@code false}.
*/
@@ -195,4 +220,11 @@ public interface Tracker {
* @param durationMs The duration the side panel was shown in milliseconds.
*/
void sendHideSidePanel(HasTrackerLabel trackerLabel, long durationMs);
+
+ /**
+ * Sends time shift action (pause, ff, etc).
+ *
+ * @param actionId The label of the side panel
+ */
+ void sendTimeShiftAction(@TimeShiftManager.TimeShiftActionId int actionId);
}
diff --git a/src/com/android/tv/customization/CustomAction.java b/src/com/android/tv/customization/CustomAction.java
index 3263d170..b8f4695b 100644
--- a/src/com/android/tv/customization/CustomAction.java
+++ b/src/com/android/tv/customization/CustomAction.java
@@ -49,15 +49,6 @@ public class CustomAction implements Comparable<CustomAction> {
return mPositionPriority < POSITION_THRESHOLD;
}
- /**
- * Returns position priority defined in partner customization package.
- * If there’s multiple custom options are at the front or back,
- * options in each group will be sorted by their priority in ascending order.
- */
- public int getPositionPriority() {
- return mPositionPriority;
- }
-
@Override
public int compareTo(@NonNull CustomAction another) {
return mPositionPriority - another.mPositionPriority;
diff --git a/src/com/android/tv/data/Channel.java b/src/com/android/tv/data/Channel.java
index 659eab02..49244c14 100644
--- a/src/com/android/tv/data/Channel.java
+++ b/src/com/android/tv/data/Channel.java
@@ -24,6 +24,7 @@ import android.graphics.Bitmap;
import android.media.tv.TvContract;
import android.media.tv.TvInputInfo;
import android.net.Uri;
+import android.os.Build;
import android.support.annotation.UiThread;
import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
@@ -73,7 +74,7 @@ public final class Channel {
private static final String INVALID_PACKAGE_NAME = "packageName";
private static final String[] PROJECTION_BASE = {
- // Columns should match what is read in Channel.fromCursor()
+ // Columns must match what is read in Channel.fromCursor()
TvContract.Channels._ID,
TvContract.Channels.COLUMN_PACKAGE_NAME,
TvContract.Channels.COLUMN_INPUT_ID,
@@ -99,7 +100,7 @@ public final class Channel {
public static final String[] PROJECTION = createProjection();
private static String[] createProjection() {
- if (TvCommonConstants.IS_MNC_OR_HIGHER) {
+ if (Build.VERSION.SDK_INT >= 23) {
ArrayList<String> temp = new ArrayList<>(
PROJECTION_BASE.length + PROJECTION_ADDED_IN_MNC.length);
temp.addAll(Arrays.asList(PROJECTION_BASE));
@@ -110,6 +111,36 @@ public final class Channel {
}
}
+ /**
+ * Creates {@code Channel} object from cursor.
+ *
+ * <p>The query that created the cursor MUST use {@link #PROJECTION}
+ *
+ */
+ public static Channel fromCursor(Cursor cursor) {
+ // Columns read must match the order of {@link #PROJECTION}
+ Channel channel = new Channel();
+ int index = 0;
+ channel.mId = cursor.getLong(index++);
+ channel.mPackageName = Utils.intern(cursor.getString(index++));
+ channel.mInputId = Utils.intern(cursor.getString(index++));
+ channel.mType = Utils.intern(cursor.getString(index++));
+ channel.mDisplayNumber = cursor.getString(index++);
+ channel.mDisplayName = cursor.getString(index++);
+ channel.mDescription = cursor.getString(index++);
+ channel.mVideoFormat = Utils.intern(cursor.getString(index++));
+ channel.mBrowsable = cursor.getInt(index++) == 1;
+ channel.mLocked = cursor.getInt(index++) == 1;
+ if (Build.VERSION.SDK_INT >= 23) {
+ channel.mAppLinkText = cursor.getString(index++);
+ channel.mAppLinkColor = cursor.getInt(index++);
+ channel.mAppLinkIconUri = cursor.getString(index++);
+ channel.mAppLinkPosterArtUri = cursor.getString(index++);
+ channel.mAppLinkIntentUri = cursor.getString(index++);
+ }
+ return channel;
+ }
+
/** ID of this channel. Matches to BaseColumns._ID. */
private long mId;
@@ -135,105 +166,6 @@ public final class Channel {
void onLoadImageFinished(Channel channel, int type, Bitmap logo);
}
- /**
- * Creates {@code Channel} object from cursor.
- * Suppress using this outside of ChannelDataManager
- * so Channels could be managed by ChannelDataManager.
- */
- public static Channel fromCursor(Cursor cursor) {
- // Columns read here should match Channel.PROJECTION
-
- Channel channel = new Channel();
- int index = cursor.getColumnIndex(TvContract.Channels._ID);
- if (index >= 0) {
- channel.mId = cursor.getLong(index);
- } else {
- channel.mId = INVALID_ID;
- }
-
- index = cursor.getColumnIndex(TvContract.Channels.COLUMN_PACKAGE_NAME);
- if (index >= 0) {
- channel.mPackageName = Utils.intern(cursor.getString(index));
- } else {
- channel.mPackageName = INVALID_PACKAGE_NAME;
- }
-
- index = cursor.getColumnIndex(TvContract.Channels.COLUMN_INPUT_ID);
- if (index >= 0) {
- channel.mInputId = Utils.intern(cursor.getString(index));
- } else {
- channel.mInputId = "inputId";
- }
-
- index = cursor.getColumnIndex(TvContract.Channels.COLUMN_TYPE);
- if (index >= 0) {
- channel.mType = Utils.intern(cursor.getString(index));
- } else {
- channel.mType = "type";
- }
-
- index = cursor.getColumnIndex(TvContract.Channels.COLUMN_DISPLAY_NUMBER);
- if (index >= 0) {
- channel.mDisplayNumber = cursor.getString(index);
- } else {
- channel.mDisplayNumber = "0";
- }
-
- index = cursor.getColumnIndex(TvContract.Channels.COLUMN_DISPLAY_NAME);
- if (index >= 0) {
- channel.mDisplayName = cursor.getString(index);
- } else {
- channel.mDisplayName = "name";
- }
-
- index = cursor.getColumnIndex(TvContract.Channels.COLUMN_DESCRIPTION);
- if (index >= 0) {
- channel.mDescription = cursor.getString(index);
- } else {
- channel.mDescription = "description";
- }
-
- index = cursor.getColumnIndex(TvContract.Channels.COLUMN_VIDEO_FORMAT);
- if (index >= 0) {
- channel.mVideoFormat = Utils.intern(cursor.getString(index));
- } else {
- channel.mVideoFormat = "";
- }
-
- index = cursor.getColumnIndex(TvContract.Channels.COLUMN_BROWSABLE);
- channel.mBrowsable = index < 0 || cursor.getInt(index) == 1;
-
- index = cursor.getColumnIndex(TvContract.Channels.COLUMN_LOCKED);
- channel.mLocked = index < 0 || cursor.getInt(index) == 1;
- if (TvCommonConstants.IS_MNC_OR_HIGHER) {
- index = cursor.getColumnIndex(TvContract.Channels.COLUMN_APP_LINK_TEXT);
- if (index >= 0) {
- channel.mAppLinkText = cursor.getString(index);
- }
-
- index = cursor.getColumnIndex(TvContract.Channels.COLUMN_APP_LINK_COLOR);
- if (index >= 0) {
- channel.mAppLinkColor = cursor.getInt(index);
- }
-
- index = cursor.getColumnIndex(TvContract.Channels.COLUMN_APP_LINK_ICON_URI);
- if (index >= 0) {
- channel.mAppLinkIconUri = cursor.getString(index);
- }
-
- index = cursor.getColumnIndex(TvContract.Channels.COLUMN_APP_LINK_POSTER_ART_URI);
- if (index >= 0) {
- channel.mAppLinkPosterArtUri = cursor.getString(index);
- }
-
- index = cursor.getColumnIndex(TvContract.Channels.COLUMN_APP_LINK_INTENT_URI);
- if (index >= 0) {
- channel.mAppLinkIntentUri = cursor.getString(index);
- }
- }
- return channel;
- }
-
private Channel() {
// Do nothing.
}
@@ -270,6 +202,7 @@ public final class Channel {
return mDisplayName;
}
+ @VisibleForTesting
public String getDescription() {
return mDescription;
}
@@ -491,6 +424,7 @@ public final class Channel {
return this;
}
+ @VisibleForTesting
public Builder setDescription(String description) {
mChannel.mDescription = description;
return this;
@@ -621,7 +555,7 @@ public final class Channel {
PackageManager pm = context.getPackageManager();
if (!TextUtils.isEmpty(mAppLinkText) && !TextUtils.isEmpty(mAppLinkIntentUri)) {
try {
- Intent intent = Intent.parseUri(mAppLinkIntentUri, 0);
+ Intent intent = Intent.parseUri(mAppLinkIntentUri, Intent.URI_INTENT_SCHEME);
if (intent.resolveActivityInfo(pm, 0) != null) {
mAppLinkIntent = intent;
mAppLinkIntent.putExtra(TvCommonConstants.EXTRA_APP_LINK_CHANNEL_URI,
@@ -673,35 +607,36 @@ public final class Channel {
@Override
public int compare(Channel lhs, Channel rhs) {
- if (Objects.equals(lhs.getInputId(), rhs.getInputId())) {
- // Compare the channel numbers if both channels belong to the same input.
- int compare = ChannelNumber.compare(lhs.getDisplayNumber(), rhs.getDisplayNumber());
- if (mDetectDuplicatesEnabled && compare == 0) {
- Log.w(TAG, "Duplicate channels detected! - \""
- + lhs.getDisplayNumber() + " " + lhs.getDisplayName() + "\" and \""
- + rhs.getDisplayNumber() + " " + rhs.getDisplayName() + "\"");
- }
- return compare;
- } else {
- // Put channels from OEM/SOC inputs first.
- boolean lhsIsPartner = mInputManager.isPartnerInput(lhs.getInputId());
- boolean rhsIsPartner = mInputManager.isPartnerInput(rhs.getInputId());
- if (lhsIsPartner != rhsIsPartner) {
- return lhsIsPartner ? -1 : 1;
- }
-
- // Otherwise, compare the input labels.
- String lhsLabel = getInputLabelForChannel(lhs);
- String rhsLabel = getInputLabelForChannel(rhs);
- if (lhsLabel == null && rhsLabel != null) {
- return 1;
- } else if (lhsLabel != null && rhsLabel == null) {
- return -1;
- } else if (lhsLabel == null /* && rhsLabel == null */) {
- return 0;
- }
- return lhsLabel.compareTo(rhsLabel);
+ if (lhs == rhs) {
+ return 0;
+ }
+ // Put channels from OEM/SOC inputs first.
+ boolean lhsIsPartner = mInputManager.isPartnerInput(lhs.getInputId());
+ boolean rhsIsPartner = mInputManager.isPartnerInput(rhs.getInputId());
+ if (lhsIsPartner != rhsIsPartner) {
+ return lhsIsPartner ? -1 : 1;
+ }
+ // Compare the input labels.
+ String lhsLabel = getInputLabelForChannel(lhs);
+ String rhsLabel = getInputLabelForChannel(rhs);
+ int result = lhsLabel == null ? (rhsLabel == null ? 0 : 1) : rhsLabel == null ? -1
+ : lhsLabel.compareTo(rhsLabel);
+ if (result != 0) {
+ return result;
+ }
+ // Compare the input IDs. The input IDs cannot be null.
+ result = lhs.getInputId().compareTo(rhs.getInputId());
+ if (result != 0) {
+ return result;
+ }
+ // Compare the channel numbers if both channels belong to the same input.
+ result = ChannelNumber.compare(lhs.getDisplayNumber(), rhs.getDisplayNumber());
+ if (mDetectDuplicatesEnabled && result == 0) {
+ Log.w(TAG, "Duplicate channels detected! - \""
+ + lhs.getDisplayNumber() + " " + lhs.getDisplayName() + "\" and \""
+ + rhs.getDisplayNumber() + " " + rhs.getDisplayName() + "\"");
}
+ return result;
}
@VisibleForTesting
diff --git a/src/com/android/tv/data/ChannelDataManager.java b/src/com/android/tv/data/ChannelDataManager.java
index d09d1686..2325952f 100644
--- a/src/com/android/tv/data/ChannelDataManager.java
+++ b/src/com/android/tv/data/ChannelDataManager.java
@@ -26,11 +26,15 @@ import android.media.tv.TvInputManager.TvInputCallback;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
+import android.support.annotation.NonNull;
import android.support.annotation.VisibleForTesting;
import android.util.Log;
import android.util.MutableInt;
+import com.android.tv.analytics.Tracker;
+import com.android.tv.common.WeakHandler;
import com.android.tv.util.AsyncDbTask;
+import com.android.tv.util.RecurringRunner;
import com.android.tv.util.TvInputManagerHelper;
import com.android.tv.util.Utils;
@@ -41,6 +45,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.TimeUnit;
/**
* The class to manage channel data.
@@ -54,6 +59,7 @@ public class ChannelDataManager {
private static final boolean DEBUG = false;
private static final int MSG_UPDATE_CHANNELS = 1000;
+ private static final long SEND_CHANNEL_STATUS_INTERVAL_MS = TimeUnit.DAYS.toMillis(1);
private final Context mContext;
private final TvInputManagerHelper mInputManager;
@@ -61,6 +67,9 @@ public class ChannelDataManager {
private boolean mDbLoadFinished;
private QueryAllChannelsTask mChannelsUpdateTask;
private final List<Runnable> mPostRunnablesAfterChannelUpdate = new ArrayList<>();
+ // TODO: move ChannelDataManager to TvApplication to consistently run mRecurringRunner.
+ private RecurringRunner mRecurringRunner;
+ private final Tracker mTracker;
private final Set<Listener> mListeners = new HashSet<>();
private final Map<Long, ChannelWrapper> mChannelWrapperMap = new HashMap<>();
@@ -123,12 +132,13 @@ public class ChannelDataManager {
}
};
- public ChannelDataManager(Context context, TvInputManagerHelper inputManager) {
- this(context, inputManager, context.getContentResolver(), Looper.myLooper());
+ public ChannelDataManager(Context context, TvInputManagerHelper inputManager,
+ Tracker tracker) {
+ this(context, inputManager, tracker, context.getContentResolver(), Looper.myLooper());
}
@VisibleForTesting
- ChannelDataManager(Context context, TvInputManagerHelper inputManager,
+ ChannelDataManager(Context context, TvInputManagerHelper inputManager, Tracker tracker,
ContentResolver contentResolver, Looper looper) {
mContext = context;
mInputManager = inputManager;
@@ -136,14 +146,7 @@ public class ChannelDataManager {
mChannelComparator = new Channel.DefaultComparator(context, inputManager);
// Detect duplicate channels while sorting.
mChannelComparator.setDetectDuplicatesEnabled(true);
- mHandler = new Handler(looper) {
- @Override
- public void handleMessage(Message msg) {
- if (msg.what == MSG_UPDATE_CHANNELS) {
- handleUpdateChannels();
- }
- }
- };
+ mHandler = new ChannelDataManagerHandler(looper, this);
mChannelObserver = new ContentObserver(mHandler) {
@Override
public void onChange(boolean selfChange) {
@@ -152,6 +155,9 @@ public class ChannelDataManager {
}
}
};
+ mTracker = tracker;
+ mRecurringRunner = new RecurringRunner(mContext, SEND_CHANNEL_STATUS_INTERVAL_MS,
+ new SendChannelStatusRunnable());
}
@VisibleForTesting
@@ -185,6 +191,7 @@ public class ChannelDataManager {
}
mStarted = false;
mDbLoadFinished = false;
+ mRecurringRunner.stop();
ChannelLogoFetcher.stopFetchingChannelLogos();
mInputManager.removeCallback(mTvInputCallback);
@@ -602,6 +609,7 @@ public class ChannelDataManager {
if (!mDbLoadFinished) {
mDbLoadFinished = true;
+ mRecurringRunner.start();
for (Listener l : mListeners) {
l.onLoadFinished();
}
@@ -641,4 +649,30 @@ public class ChannelDataManager {
}
});
}
+
+ private static class ChannelDataManagerHandler extends WeakHandler<ChannelDataManager> {
+ public ChannelDataManagerHandler(Looper looper, ChannelDataManager channelDataManager) {
+ super(looper, channelDataManager);
+ }
+
+ @Override
+ public void handleMessage(Message msg, @NonNull ChannelDataManager channelDataManager) {
+ if (msg.what == MSG_UPDATE_CHANNELS) {
+ channelDataManager.handleUpdateChannels();
+ }
+ }
+ }
+
+ private class SendChannelStatusRunnable implements Runnable {
+ @Override
+ public void run() {
+ int browsableChannelCount = 0;
+ for (Channel channel : mChannels) {
+ if (channel.isBrowsable()) {
+ ++browsableChannelCount;
+ }
+ }
+ mTracker.sendChannelCount(browsableChannelCount, mChannels.size());
+ }
+ }
}
diff --git a/src/com/android/tv/data/ChannelLogoFetcher.java b/src/com/android/tv/data/ChannelLogoFetcher.java
index 2f75cd9f..166b1d87 100644
--- a/src/com/android/tv/data/ChannelLogoFetcher.java
+++ b/src/com/android/tv/data/ChannelLogoFetcher.java
@@ -23,6 +23,7 @@ import android.media.tv.TvContract;
import android.media.tv.TvContract.Channels;
import android.net.Uri;
import android.os.AsyncTask;
+import android.support.annotation.WorkerThread;
import android.text.TextUtils;
import android.util.Log;
@@ -208,11 +209,11 @@ public class ChannelLogoFetcher {
}
// Find the candidate names. If the channel name is CNN-HD, then find CNNHD
// and CNN. Or if the channel name is KQED+, then find KQED.
- String[] splittedNames = channelName.split(NAME_SEPARATOR_FOR_DB);
- if (splittedNames.length > 1) {
+ String[] splitNames = channelName.split(NAME_SEPARATOR_FOR_DB);
+ if (splitNames.length > 1) {
StringBuilder sb = new StringBuilder();
- for (String splittedName : splittedNames) {
- sb.append(splittedName);
+ for (String splitName : splitNames) {
+ sb.append(splitName);
}
logoUri = channelNameLogoUriMap.get(sb.toString());
if (DEBUG && TextUtils.isEmpty(logoUri)) {
@@ -220,10 +221,10 @@ public class ChannelLogoFetcher {
}
}
if (TextUtils.isEmpty(logoUri)
- && splittedNames[0].length() != channelName.length()) {
- logoUri = channelNameLogoUriMap.get(splittedNames[0]);
+ && splitNames[0].length() != channelName.length()) {
+ logoUri = channelNameLogoUriMap.get(splitNames[0]);
if (DEBUG && TextUtils.isEmpty(logoUri)) {
- Log.d(TAG, "Can't find a logo URI for channel '" + splittedNames[0]
+ Log.d(TAG, "Can't find a logo URI for channel '" + splitNames[0]
+ "'");
}
}
@@ -262,6 +263,7 @@ public class ChannelLogoFetcher {
return null;
}
+ @WorkerThread
private Map<String, String> readTmsFile(Context context, String fileName)
throws IOException {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(
@@ -295,9 +297,9 @@ public class ChannelLogoFetcher {
// Find the candidate names.
// If the name is like "W05AAD (W05AA-D)", then split the names into "W05AAD" and
// "W05AA-D"
- String[] splittedNames = channelName.split(NAME_SEPARATOR_FOR_TMS);
- if (splittedNames.length > 1) {
- for (String name : splittedNames) {
+ String[] splitNames = channelName.split(NAME_SEPARATOR_FOR_TMS);
+ if (splitNames.length > 1) {
+ for (String name : splitNames) {
name = name.trim();
if (channelNameLogoUriMap.get(name) == null) {
channelNameLogoUriMap.put(name, logoUri);
diff --git a/src/com/android/tv/data/DisplayMode.java b/src/com/android/tv/data/DisplayMode.java
index 7f76dde6..ccba5480 100644
--- a/src/com/android/tv/data/DisplayMode.java
+++ b/src/com/android/tv/data/DisplayMode.java
@@ -28,6 +28,11 @@ public class DisplayMode {
public static final int MODE_ZOOM = 2;
public static final int SIZE_OF_RATIO_TYPES = MODE_ZOOM + 1;
+ /**
+ * Constant to indicate that any mode is not set yet.
+ */
+ public static final int MODE_NOT_DEFINED = -1;
+
private DisplayMode() { }
public static String getLabel(int mode, Context context) {
diff --git a/src/com/android/tv/data/Program.java b/src/com/android/tv/data/Program.java
index 7f2f73a5..82638e14 100644
--- a/src/com/android/tv/data/Program.java
+++ b/src/com/android/tv/data/Program.java
@@ -42,7 +42,7 @@ public final class Program implements Comparable<Program> {
private static final String TAG = "Program";
public static final String[] PROJECTION = {
- // Columns should match what is read in Program.fromCursor()
+ // Columns must match what is read in Program.fromCursor()
TvContract.Programs.COLUMN_CHANNEL_ID,
TvContract.Programs.COLUMN_TITLE,
TvContract.Programs.COLUMN_EPISODE_TITLE,
@@ -59,6 +59,32 @@ public final class Program implements Comparable<Program> {
TvContract.Programs.COLUMN_VIDEO_HEIGHT
};
+ /**
+ * Creates {@code Program} object from cursor.
+ *
+ * <p>The query that created the cursor MUST use {@link #PROJECTION}.
+ */
+ public static Program fromCursor(Cursor cursor) {
+ // Columns read must match the order of match {@link #PROJECTION}
+ Builder builder = new Builder();
+ int index = 0;
+ builder.setChannelId(cursor.getLong(index++));
+ builder.setTitle(cursor.getString(index++));
+ builder.setEpisodeTitle(cursor.getString(index++));
+ builder.setSeasonNumber(cursor.getInt(index++));
+ builder.setEpisodeNumber(cursor.getInt(index++));
+ builder.setDescription(cursor.getString(index++));
+ builder.setPosterArtUri(cursor.getString(index++));
+ builder.setThumbnailUri(cursor.getString(index++));
+ builder.setCanonicalGenres(cursor.getString(index++));
+ builder.setContentRatings(Utils.stringToContentRatings(cursor.getString(index++)));
+ builder.setStartTimeUtcMillis(cursor.getLong(index++));
+ builder.setEndTimeUtcMillis(cursor.getLong(index++));
+ builder.setVideoWidth((int) cursor.getLong(index++));
+ builder.setVideoHeight((int) cursor.getLong(index++));
+ return builder.build();
+ }
+
private long mChannelId;
private String mTitle;
private String mEpisodeTitle;
@@ -266,82 +292,6 @@ public final class Program implements Comparable<Program> {
mContentRatings = other.mContentRatings;
}
- public static Program fromCursor(Cursor cursor) {
- // Columns read here should match Program.PROJECTION
-
- Builder builder = new Builder();
- int index = cursor.getColumnIndex(TvContract.Programs.COLUMN_CHANNEL_ID);
- if (index >= 0) {
- builder.setChannelId(cursor.getLong(index));
- }
-
- index = cursor.getColumnIndex(TvContract.Programs.COLUMN_TITLE);
- if (index >= 0) {
- builder.setTitle(cursor.getString(index));
- }
-
- index = cursor.getColumnIndex(TvContract.Programs.COLUMN_EPISODE_TITLE);
- if (index >= 0) {
- builder.setEpisodeTitle(cursor.getString(index));
- }
-
- index = cursor.getColumnIndex(TvContract.Programs.COLUMN_SEASON_NUMBER);
- if(index >= 0) {
- builder.setSeasonNumber(cursor.getInt(index));
- }
-
- index = cursor.getColumnIndex(TvContract.Programs.COLUMN_EPISODE_NUMBER);
- if(index >= 0) {
- builder.setEpisodeNumber(cursor.getInt(index));
- }
-
- index = cursor.getColumnIndex(TvContract.Programs.COLUMN_SHORT_DESCRIPTION);
- if (index >= 0) {
- builder.setDescription(cursor.getString(index));
- }
-
- index = cursor.getColumnIndex(TvContract.Programs.COLUMN_POSTER_ART_URI);
- if (index >= 0) {
- builder.setPosterArtUri(cursor.getString(index));
- }
-
- index = cursor.getColumnIndex(TvContract.Programs.COLUMN_THUMBNAIL_URI);
- if (index >= 0) {
- builder.setThumbnailUri(cursor.getString(index));
- }
-
- index = cursor.getColumnIndex(TvContract.Programs.COLUMN_CANONICAL_GENRE);
- if (index >= 0) {
- builder.setCanonicalGenres(cursor.getString(index));
- }
-
- index = cursor.getColumnIndex(TvContract.Programs.COLUMN_CONTENT_RATING);
- if (index >= 0) {
- builder.setContentRatings(Utils.stringToContentRatings(cursor.getString(index)));
- }
-
- index = cursor.getColumnIndex(TvContract.Programs.COLUMN_START_TIME_UTC_MILLIS);
- if (index >= 0) {
- builder.setStartTimeUtcMillis(cursor.getLong(index));
- }
-
- index = cursor.getColumnIndex(TvContract.Programs.COLUMN_END_TIME_UTC_MILLIS);
- if (index >= 0) {
- builder.setEndTimeUtcMillis(cursor.getLong(index));
- }
-
- index = cursor.getColumnIndex(TvContract.Programs.COLUMN_VIDEO_WIDTH);
- if (index >= 0) {
- builder.setVideoWidth((int) cursor.getLong(index));
- }
- index = cursor.getColumnIndex(TvContract.Programs.COLUMN_VIDEO_HEIGHT);
- if (index >= 0) {
- builder.setVideoHeight((int) cursor.getLong(index));
- }
-
- return builder.build();
- }
-
public static final class Builder {
private final Program mProgram;
diff --git a/src/com/android/tv/data/ProgramDataManager.java b/src/com/android/tv/data/ProgramDataManager.java
index 80733bc5..c12e7094 100644
--- a/src/com/android/tv/data/ProgramDataManager.java
+++ b/src/com/android/tv/data/ProgramDataManager.java
@@ -31,6 +31,7 @@ import android.util.Log;
import android.util.LongSparseArray;
import android.util.LruCache;
+import com.android.tv.BuildConfig;
import com.android.tv.MainActivity.MemoryManageable;
import com.android.tv.util.AsyncDbTask;
import com.android.tv.util.Clock;
@@ -421,6 +422,7 @@ public class ProgramDataManager implements MemoryManageable {
continue;
}
while (c.moveToNext()) {
+ int duplicateCount = 0;
if (isCancelled()) {
if (DEBUG) {
Log.d(TAG, "ProgramsPrefetchTask canceled.");
@@ -429,6 +431,7 @@ public class ProgramDataManager implements MemoryManageable {
}
Program program = Program.fromCursor(c);
if (isDuplicateProgram(program, lastReadProgram)) {
+ duplicateCount++;
continue;
} else {
lastReadProgram = program;
@@ -439,6 +442,9 @@ public class ProgramDataManager implements MemoryManageable {
programMap.put(program.getChannelId(), programs);
}
programs.add(program);
+ if (duplicateCount > 0) {
+ Log.w(TAG, "Found " + duplicateCount + " duplicate programs");
+ }
}
mSuccess = true;
break;
@@ -498,6 +504,7 @@ public class ProgramDataManager implements MemoryManageable {
public List<Program> onQuery(Cursor c) {
final List<Program> programs = new ArrayList<>();
if (c != null) {
+ int duplicateCount = 0;
Program lastReadProgram = null;
while (c.moveToNext()) {
if (isCancelled()) {
@@ -505,21 +512,23 @@ public class ProgramDataManager implements MemoryManageable {
}
Program program = Program.fromCursor(c);
if (isDuplicateProgram(program, lastReadProgram)) {
+ duplicateCount++;
continue;
} else {
lastReadProgram = program;
}
programs.add(program);
}
+ if (duplicateCount > 0) {
+ Log.w(TAG, "Found " + duplicateCount + " duplicate programs");
+ }
}
return programs;
}
@Override
protected void onPostExecute(List<Program> programs) {
- if (DEBUG) {
- Log.d(TAG, "ProgramsUpdateTask done");
- }
+ if (DEBUG) Log.d(TAG, "ProgramsUpdateTask done");
mProgramsUpdateTask = null;
if (programs == null) {
return;
@@ -674,7 +683,7 @@ public class ProgramDataManager implements MemoryManageable {
boolean isDuplicate = p1.getChannelId() == p2.getChannelId()
&& p1.getStartTimeUtcMillis() == p2.getStartTimeUtcMillis()
&& p1.getEndTimeUtcMillis() == p2.getEndTimeUtcMillis();
- if (isDuplicate) {
+ if (BuildConfig.ENG && isDuplicate) {
Log.w(TAG, "Duplicate programs detected! - \"" + p1.getTitle() + "\" and \""
+ p2.getTitle() + "\"");
}
diff --git a/src/com/android/tv/data/StreamInfo.java b/src/com/android/tv/data/StreamInfo.java
index af5b4e3d..04f8258a 100644
--- a/src/com/android/tv/data/StreamInfo.java
+++ b/src/com/android/tv/data/StreamInfo.java
@@ -16,8 +16,6 @@
package com.android.tv.data;
-import android.media.tv.TvInputInfo;
-
public interface StreamInfo {
int VIDEO_DEFINITION_LEVEL_UNKNOWN = 0;
int VIDEO_DEFINITION_LEVEL_SD = 1;
diff --git a/src/com/android/tv/dialog/PinDialogFragment.java b/src/com/android/tv/dialog/PinDialogFragment.java
index 84464461..3952bb0b 100644
--- a/src/com/android/tv/dialog/PinDialogFragment.java
+++ b/src/com/android/tv/dialog/PinDialogFragment.java
@@ -120,8 +120,8 @@ public class PinDialogFragment extends SafeDismissDialogFragment {
setStyle(STYLE_NO_TITLE, 0);
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
mDisablePinUntil = TvSettings.getDisablePinUntil(getActivity());
- if (ActivityManager.isRunningInTestHarness()) {
- // Skip PIN dialog half the time.
+ if (ActivityManager.isUserAMonkey()) {
+ // Skip PIN dialog half the time for monkeys
if (Math.random() < 0.5) {
exit(PIN_DIALOG_RESULT_SUCCESS);
}
diff --git a/src/com/android/tv/dialog/SafeDismissDialogFragment.java b/src/com/android/tv/dialog/SafeDismissDialogFragment.java
index c734653c..bd1c55a6 100644
--- a/src/com/android/tv/dialog/SafeDismissDialogFragment.java
+++ b/src/com/android/tv/dialog/SafeDismissDialogFragment.java
@@ -52,7 +52,6 @@ public abstract class SafeDismissDialogFragment extends DialogFragment
if (mDismissPending) {
mDismissPending = false;
dismiss();
- return;
}
}
diff --git a/src/com/android/tv/guide/ProgramGrid.java b/src/com/android/tv/guide/ProgramGrid.java
index 27c8a0c4..99da84b0 100644
--- a/src/com/android/tv/guide/ProgramGrid.java
+++ b/src/com/android/tv/guide/ProgramGrid.java
@@ -16,11 +16,16 @@
package com.android.tv.guide;
+import com.android.tv.R;
+import com.android.tv.ui.OnRepeatedKeyInterceptListener;
+
import android.content.Context;
+import android.content.res.Resources;
import android.graphics.Rect;
import android.support.v17.leanback.widget.VerticalGridView;
import android.util.AttributeSet;
import android.util.Log;
+import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
@@ -69,12 +74,17 @@ public class ProgramGrid extends VerticalGridView {
private int mFocusRangeLeft;
private int mFocusRangeRight;
+ private final int mRowHeight;
+ private final int mDetailHeight;
+ private final int mSelectionRow; // Row that is focused
+
private View mLastFocusedView;
private final Rect mTempRect = new Rect();
private boolean mKeepCurrentProgram;
private ChildFocusListener mChildFocusListener;
+ private OnRepeatedKeyInterceptListener mOnRepeatedKeyInterceptListener;
interface ChildFocusListener {
/**
@@ -103,6 +113,13 @@ public class ProgramGrid extends VerticalGridView {
// E.g. when scrolling horizontally we would have to update rows above and below the current
// view port even though they are not visible.
setItemViewCacheSize(0);
+
+ Resources res = context.getResources();
+ mRowHeight = res.getDimensionPixelSize(R.dimen.program_guide_table_item_row_height);
+ mDetailHeight = res.getDimensionPixelSize(R.dimen.program_guide_table_detail_height);
+ mSelectionRow = res.getInteger(R.integer.program_guide_selection_row);
+ mOnRepeatedKeyInterceptListener = new OnRepeatedKeyInterceptListener(this);
+ setOnKeyInterceptListener(mOnRepeatedKeyInterceptListener);
}
/**
@@ -326,6 +343,25 @@ public class ProgramGrid extends VerticalGridView {
return super.onRequestFocusInDescendants(direction, previouslyFocusedRect);
}
+ @Override
+ protected void onScrollChanged(int l, int t, int oldl, int oldt) {
+ // It is required to properly handle OnRepeatedKeyInterceptListener. If the focused
+ // item's are at the almost end of screen, focus change to the next item doesn't work.
+ // It restricts that a focus item's position cannot be too far from the desired position.
+ View focusedView = findFocus();
+ if (focusedView != null && mOnRepeatedKeyInterceptListener.isFocusAccelerated()) {
+ int[] location = new int[2];
+ getLocationOnScreen(location);
+ int[] focusedLocation = new int[2];
+ focusedView.getLocationOnScreen(focusedLocation);
+ int y = focusedLocation[1] - location[1];
+ int minY = (mSelectionRow - 1) * mRowHeight;
+ if (y < minY) scrollBy(0, y - minY);
+ int maxY = (mSelectionRow + 1) * mRowHeight + mDetailHeight;
+ if (y > maxY) scrollBy(0, y - maxY);
+ }
+ }
+
private static void findFocusables(View v, ArrayList<View> outFocusable) {
if (v.isFocusable()) {
outFocusable.add(v);
diff --git a/src/com/android/tv/guide/ProgramGuide.java b/src/com/android/tv/guide/ProgramGuide.java
index 03bda694..468f10e0 100644
--- a/src/com/android/tv/guide/ProgramGuide.java
+++ b/src/com/android/tv/guide/ProgramGuide.java
@@ -30,6 +30,7 @@ import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.preference.PreferenceManager;
+import android.support.annotation.NonNull;
import android.support.v17.leanback.widget.OnChildSelectedListener;
import android.support.v17.leanback.widget.SearchOrbView;
import android.support.v17.leanback.widget.VerticalGridView;
@@ -37,6 +38,7 @@ import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.view.View.MeasureSpec;
+import android.view.View.OnScrollChangeListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.ViewTreeObserver;
@@ -46,10 +48,12 @@ import com.android.tv.MainActivity;
import com.android.tv.R;
import com.android.tv.analytics.DurationTimer;
import com.android.tv.analytics.Tracker;
+import com.android.tv.common.WeakHandler;
import com.android.tv.data.ChannelDataManager;
import com.android.tv.data.GenreItems;
import com.android.tv.data.ProgramDataManager;
import com.android.tv.ui.HardwareLayerAnimatorListenerAdapter;
+import com.android.tv.ui.OnRepeatedKeyInterceptListener;
import com.android.tv.util.SystemProperties;
import com.android.tv.util.TvInputManagerHelper;
import com.android.tv.util.Utils;
@@ -81,7 +85,6 @@ public class ProgramGuide implements ProgramGrid.ChildFocusListener {
private static final int MSG_PROGRAM_TABLE_FADE_IN_ANIM = 1000;
- private static final int SELECTION_ROW = 2; // Row that is focused
private static final String SCREEN_NAME = "EPG";
private final MainActivity mActivity;
@@ -96,6 +99,7 @@ public class ProgramGuide implements ProgramGrid.ChildFocusListener {
private final long mViewPortMillis;
private final int mRowHeight;
private final int mDetailHeight;
+ private final int mSelectionRow; // Row that is focused
private final int mTableFadeAnimDuration;
private final int mAnimationDuration;
private final int mDetailPadding;
@@ -134,14 +138,7 @@ public class ProgramGuide implements ProgramGrid.ChildFocusListener {
private boolean mTimelineAnimation;
private int mLastRequestedGenreId = GenreItems.ID_ALL_CHANNELS;
private boolean mIsDuringResetRowSelection;
- private final Handler mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- if (msg.what == MSG_PROGRAM_TABLE_FADE_IN_ANIM) {
- mProgramTableFadeInAnimator.start();
- }
- }
- };
+ private final Handler mHandler = new ProgramGuideHandler(this);
private final Runnable mHideRunnable = new Runnable() {
@Override
@@ -150,6 +147,7 @@ public class ProgramGuide implements ProgramGrid.ChildFocusListener {
}
};
private final long mShowDurationMillis;
+ private ViewTreeObserver.OnGlobalLayoutListener mOnLayoutListenerForShow;
private final ProgramManagerListener mProgramManagerListener = new ProgramManagerListener();
@@ -189,6 +187,7 @@ public class ProgramGuide implements ProgramGrid.ChildFocusListener {
mRowHeight = res.getDimensionPixelSize(R.dimen.program_guide_table_item_row_height);
mDetailHeight = res.getDimensionPixelSize(R.dimen.program_guide_table_detail_height);
+ mSelectionRow = res.getInteger(R.integer.program_guide_selection_row);
mTableFadeAnimDuration =
res.getInteger(R.integer.program_guide_table_detail_fade_anim_duration);
mShowDurationMillis = res.getInteger(R.integer.program_guide_show_duration);
@@ -307,7 +306,7 @@ public class ProgramGuide implements ProgramGrid.ChildFocusListener {
}
});
mGrid.setFocusScrollStrategy(ProgramGrid.FOCUS_SCROLL_ALIGNED);
- mGrid.setWindowAlignmentOffset(SELECTION_ROW * mRowHeight);
+ mGrid.setWindowAlignmentOffset(mSelectionRow * mRowHeight);
mGrid.setWindowAlignmentOffsetPercent(ProgramGrid.WINDOW_ALIGN_OFFSET_PERCENT_DISABLED);
mGrid.setItemAlignmentOffset(0);
mGrid.setItemAlignmentOffsetPercent(ProgramGrid.ITEM_ALIGN_OFFSET_PERCENT_DISABLED);
@@ -353,7 +352,7 @@ public class ProgramGuide implements ProgramGrid.ChildFocusListener {
mHideAnimatorFull.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
- mContainer.setVisibility(View.INVISIBLE);
+ mContainer.setVisibility(View.GONE);
}
});
mHideAnimatorPartial = createAnimator(
@@ -363,7 +362,7 @@ public class ProgramGuide implements ProgramGrid.ChildFocusListener {
mHideAnimatorPartial.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
- mContainer.setVisibility(View.INVISIBLE);
+ mContainer.setVisibility(View.GONE);
}
});
@@ -405,7 +404,7 @@ public class ProgramGuide implements ProgramGrid.ChildFocusListener {
@Override
public void onRequestChildFocus(View oldFocus, View newFocus) {
if (oldFocus != null && newFocus != null) {
- int selectionRowOffset = SELECTION_ROW * mRowHeight;
+ int selectionRowOffset = mSelectionRow * mRowHeight;
if (oldFocus.getTop() < newFocus.getTop()) {
// Selection moves downwards
// Adjust scroll offset to be at the bottom of the target row and to expand up. This
@@ -459,8 +458,12 @@ public class ProgramGuide implements ProgramGrid.ChildFocusListener {
/**
* Show the program guide. This reveals the side panel, and the program guide table is shown
* partially.
+ *
+ * <p>Note: the animation which starts together with ProgramGuide showing animation needs to
+ * be initiated in {@code runnableAfterAnimatorReady}. If the animation starts together
+ * with show(), the animation may drop some frames.
*/
- public void show() {
+ public void show(final Runnable runnableAfterAnimatorReady) {
if (mContainer.getVisibility() == View.VISIBLE) {
return;
}
@@ -475,9 +478,8 @@ public class ProgramGuide implements ProgramGrid.ChildFocusListener {
mStartUtcTime = Utils.floorTime(
System.currentTimeMillis() - MIN_DURATION_FROM_START_TIME_TO_CURRENT_TIME,
HALF_HOUR_IN_MILLIS);
- mProgramManager.setInitialTimeRange(mStartUtcTime, mStartUtcTime + mViewPortMillis);
+ mProgramManager.updateInitialTimeRange(mStartUtcTime, mStartUtcTime + mViewPortMillis);
mProgramManager.addListener(mProgramManagerListener);
- mProgramManager.buildGenreFilters();
mLastRequestedGenreId = GenreItems.ID_ALL_CHANNELS;
mTimeListAdapter.update(mStartUtcTime);
mTimelineRow.resetScroll();
@@ -490,23 +492,48 @@ public class ProgramGuide implements ProgramGrid.ChildFocusListener {
}
mContainer.setVisibility(View.VISIBLE);
+ positionCurrentTimeIndicator();
mSidePanelGridView.setSelectedPosition(0);
- mHandler.post(new Runnable() {
+ if (DEBUG) {
+ Log.d(TAG, "show()");
+ }
+ mOnLayoutListenerForShow = new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
- public void run() {
- // setVisibility is not immediately applied. In order to start animation after
- // making it visible, we post mShowAnimatorXXX.start() instead of calling
- // mShowAnimatorXXX.start() in show().
+ public void onGlobalLayout() {
+ mContainer.getViewTreeObserver().removeOnGlobalLayoutListener(this);
+ mTable.setLayerType(View.LAYER_TYPE_HARDWARE, null);
+ mSidePanelGridView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
+ mTable.buildLayer();
+ mSidePanelGridView.buildLayer();
+ mOnLayoutListenerForShow = null;
+ mTimelineAnimation = true;
+ // Make sure that time indicator update starts after animation is finished.
+ startCurrentTimeIndicator(TIME_INDICATOR_UPDATE_FREQUENCY);
+ if (DEBUG) {
+ mContainer.getViewTreeObserver().addOnDrawListener(
+ new ViewTreeObserver.OnDrawListener() {
+ long time = System.currentTimeMillis();
+ int count = 0;
+ @Override
+ public void onDraw() {
+ long curtime = System.currentTimeMillis();
+ Log.d(TAG, "onDraw " + count++ + " " + (curtime - time) + "ms");
+ time = curtime;
+ if (count > 10) {
+ mContainer.getViewTreeObserver().removeOnDrawListener(this);
+ }
+ }
+ });
+ }
+ runnableAfterAnimatorReady.run();
if (mShowGuidePartial) {
mShowAnimatorPartial.start();
} else {
mShowAnimatorFull.start();
}
}
- });
-
- mTimelineAnimation = true;
- startCurrentTimeIndicator();
+ };
+ mContainer.getViewTreeObserver().addOnGlobalLayoutListener(mOnLayoutListenerForShow);
scheduleHide();
}
@@ -517,6 +544,10 @@ public class ProgramGuide implements ProgramGrid.ChildFocusListener {
if (!isActive()) {
return;
}
+ if (mOnLayoutListenerForShow != null) {
+ mContainer.getViewTreeObserver().removeOnGlobalLayoutListener(mOnLayoutListenerForShow);
+ mOnLayoutListenerForShow = null;
+ }
mTracker.sendHideEpg(mVisibleDuration.reset());
cancelHide();
mProgramManager.programGuideVisibilityChanged(false);
@@ -631,8 +662,8 @@ public class ProgramGuide implements ProgramGrid.ChildFocusListener {
mProgramTableFadeOutAnimator.start();
}
- private void startCurrentTimeIndicator() {
- mHandler.post(mUpdateTimeIndicator);
+ private void startCurrentTimeIndicator(long initialDelay) {
+ mHandler.postDelayed(mUpdateTimeIndicator, initialDelay);
}
private void stopCurrentTimeIndicator() {
@@ -896,4 +927,17 @@ public class ProgramGuide implements ProgramGrid.ChildFocusListener {
mTimelineRow.scrollTo(scrollOffset, mTimelineAnimation);
}
}
+
+ private static class ProgramGuideHandler extends WeakHandler<ProgramGuide> {
+ public ProgramGuideHandler(ProgramGuide ref) {
+ super(ref);
+ }
+
+ @Override
+ public void handleMessage(Message msg, @NonNull ProgramGuide programGuide) {
+ if (msg.what == MSG_PROGRAM_TABLE_FADE_IN_ANIM) {
+ programGuide.mProgramTableFadeInAnimator.start();
+ }
+ }
+ }
}
diff --git a/src/com/android/tv/guide/ProgramItemView.java b/src/com/android/tv/guide/ProgramItemView.java
index 7d3c0190..1babc255 100644
--- a/src/com/android/tv/guide/ProgramItemView.java
+++ b/src/com/android/tv/guide/ProgramItemView.java
@@ -58,7 +58,6 @@ public class ProgramItemView extends TextView {
private static final int[] STATE_TOO_WIDE = { R.attr.state_program_too_wide };
private static int sVisibleThreshold;
- private static int sMinProgramDisplayDurationPixels;
private static int sItemPadding;
private static TextAppearanceSpan sProgramTitleStyle;
private static TextAppearanceSpan sGrayedOutProgramTitleStyle;
@@ -67,6 +66,7 @@ public class ProgramItemView extends TextView {
private TableEntry mTableEntry;
private int mMaxWidthForRipple;
+ private int mTextWidth;
// If set this flag disables requests to re-layout the parent view as a result of changing
// this view, improving performance. This also prevents the parent view to lose child focus
@@ -148,8 +148,6 @@ public class ProgramItemView extends TextView {
sVisibleThreshold = res.getDimensionPixelOffset(
R.dimen.program_guide_table_item_visible_threshold);
- sMinProgramDisplayDurationPixels = res.getDimensionPixelOffset(
- R.dimen.program_guide_table_item_min_program_display_width);
sItemPadding = res.getDimensionPixelOffset(R.dimen.program_guide_table_item_padding);
@@ -256,7 +254,8 @@ public class ProgramItemView extends TextView {
}
setText(description);
}
-
+ measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
+ mTextWidth = getMeasuredWidth() - getPaddingStart() - getPaddingEnd();
int start = GuideUtils.convertMillisToPixel(entry.entryStartUtcMillis);
int guideStart = GuideUtils.convertMillisToPixel(programManager.getFromUtcMillis());
layoutVisibleArea(guideStart - start);
@@ -280,8 +279,9 @@ public class ProgramItemView extends TextView {
public void layoutVisibleArea(int offset) {
int width = mTableEntry.getWidth();
int startPadding = Math.max(0, offset);
- if (startPadding > 0 && width - startPadding < sMinProgramDisplayDurationPixels) {
- startPadding = Math.max(0, width - sMinProgramDisplayDurationPixels);
+ int minWidth = Math.min(width, mTextWidth + 2 * sItemPadding);
+ if (startPadding > 0 && width - startPadding < minWidth) {
+ startPadding = Math.max(0, width - minWidth);
}
if (startPadding + sItemPadding != getPaddingStart()) {
diff --git a/src/com/android/tv/guide/ProgramManager.java b/src/com/android/tv/guide/ProgramManager.java
index 3310e33e..fde903d1 100644
--- a/src/com/android/tv/guide/ProgramManager.java
+++ b/src/com/android/tv/guide/ProgramManager.java
@@ -175,17 +175,17 @@ public class ProgramManager {
mChannelDataManager.addListener(new ChannelDataManager.Listener() {
@Override
public void onLoadFinished() {
- updateChannels(true);
+ updateChannels(true, false);
}
@Override
public void onChannelListUpdated() {
- updateChannels(true);
+ updateChannels(true, false);
}
@Override
public void onChannelBrowsableChanged() {
- updateChannels(true);
+ updateChannels(true, false);
}
});
@@ -300,7 +300,7 @@ public class ProgramManager {
// Note that This can be happens only if program guide isn't shown
// because an user has to select channels as browsable through UI.
- private void updateChannels(boolean notify) {
+ private void updateChannels(boolean notify, boolean clearPreviousTableEntries) {
if (DEBUG) Log.d(TAG, "updateChannels");
mChannels = mChannelDataManager.getBrowsableChannelList();
mSelectedGenreId = GenreItems.ID_ALL_CHANNELS;
@@ -308,7 +308,7 @@ public class ProgramManager {
if (notify) {
notifyChannelsUpdated();
}
- updateTableEntries(notify, false);
+ updateTableEntries(notify, clearPreviousTableEntries);
}
private void updateTableEntries(boolean notify, boolean clear) {
@@ -404,19 +404,16 @@ public class ProgramManager {
}
/**
- * Set the initial time range to manage.
+ * Update the initial time range to manage. It updates program entries and genre as well.
*/
- public void setInitialTimeRange(long startUtcMillis, long endUtcMillis) {
+ public void updateInitialTimeRange(long startUtcMillis, long endUtcMillis) {
mStartUtcMillis = startUtcMillis;
if (endUtcMillis > mEndUtcMillis) {
mEndUtcMillis = endUtcMillis;
}
- updateChannels(true);
mProgramDataManager.setPrefetchTimeRange(mStartUtcMillis);
-
- // Need to clear when the UI starts.
- updateTableEntries(true, true);
+ updateChannels(true, true);
setTimeRange(startUtcMillis, endUtcMillis);
}
@@ -580,7 +577,7 @@ public class ProgramManager {
}
/**
- * Returns the start time set by {@link #setInitialTimeRange}.
+ * Returns the start time set by {@link #updateInitialTimeRange}.
*/
public long getStartTime() {
return mStartUtcMillis;
diff --git a/src/com/android/tv/menu/AppLinkCardView.java b/src/com/android/tv/menu/AppLinkCardView.java
index cad63ced..19f22cc1 100644
--- a/src/com/android/tv/menu/AppLinkCardView.java
+++ b/src/com/android/tv/menu/AppLinkCardView.java
@@ -274,7 +274,9 @@ public class AppLinkCardView extends BaseCardView<Channel> implements Channel.Lo
banner.setBounds(0, 0, mCardImageWidth, mCardImageHeight);
banner.draw(canvas);
mImageView.setImageDrawable(banner);
- extractAndSetMetaViewBackgroundColor(bitmap);
+ if (mChannel.getAppLinkColor() == 0) {
+ extractAndSetMetaViewBackgroundColor(bitmap);
+ }
}
}
diff --git a/src/com/android/tv/menu/ChannelsPosterPrefetcher.java b/src/com/android/tv/menu/ChannelsPosterPrefetcher.java
index 1dca6834..b008fa65 100644
--- a/src/com/android/tv/menu/ChannelsPosterPrefetcher.java
+++ b/src/com/android/tv/menu/ChannelsPosterPrefetcher.java
@@ -19,12 +19,15 @@ package com.android.tv.menu;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
+import android.support.annotation.NonNull;
import android.util.Log;
import com.android.tv.R;
+import com.android.tv.common.WeakHandler;
import com.android.tv.data.Channel;
import com.android.tv.data.Program;
import com.android.tv.data.ProgramDataManager;
+import com.android.tv.util.Utils;
import java.util.List;
@@ -34,27 +37,18 @@ import java.util.List;
public class ChannelsPosterPrefetcher {
private static final String TAG = "PosterPrefetcher";
private static final boolean DEBUG = false;
+ private static final int MSG_PREFETCH_IMAGE = 1000;
+ private static final int ONDEMAND_POSTER_PREFETCH_DELAY_MILLIS = 500; // 500 milliseconds
private final ProgramDataManager mProgramDataManager;
private final ChannelsRowAdapter mChannelsAdapter;
private final int mPosterArtWidth;
private final int mPosterArtHeight;
private final Context mContext;
+ private final Handler mHandler = new PrefetchHandler(this);
- private static final int MSG_PREFETCH_IMAGE = 1000;
+ private boolean isCanceled;
- private static final int ONDEMAND_POSTER_PREFETCH_DELAY_MILLIS = 500; // 500 milliseconds
-
- private final Handler mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case MSG_PREFETCH_IMAGE:
- doPrefetchImages();
- break;
- }
- }
- };
/**
* Create {@link ChannelsPosterPrefetcher} object with given parameters.
@@ -67,13 +61,17 @@ public class ChannelsPosterPrefetcher {
R.dimen.card_image_layout_width);
mPosterArtHeight = context.getResources().getDimensionPixelSize(
R.dimen.card_image_layout_height);
- mContext = context;
+ mContext = context.getApplicationContext();
}
/**
* Start prefetching of program poster art of recommendation.
*/
public void prefetch() {
+ if (isCanceled) {
+ Utils.engThrowElseWarn(TAG, "Prefetch called after cancel was called.");
+ return;
+ }
if (DEBUG) {
Log.d(TAG, "startPrefetching()");
}
@@ -86,6 +84,14 @@ public class ChannelsPosterPrefetcher {
mHandler.obtainMessage(MSG_PREFETCH_IMAGE), ONDEMAND_POSTER_PREFETCH_DELAY_MILLIS);
}
+ /**
+ * Cancels pending and current prefetch requests.
+ */
+ public void cancel() {
+ isCanceled = true;
+ mHandler.removeCallbacksAndMessages(null);
+ }
+
private void doPrefetchImages() {
if (DEBUG) {
Log.d(TAG, "doPrefetchImages()");
@@ -94,6 +100,9 @@ public class ChannelsPosterPrefetcher {
List<Channel> channelList = mChannelsAdapter.getItemList();
if (channelList != null) {
for (Channel channel : channelList) {
+ if (isCanceled) {
+ return;
+ }
if (!Channel.isValid(channel)) {
continue;
}
@@ -106,4 +115,19 @@ public class ChannelsPosterPrefetcher {
}
}
}
+
+ private static class PrefetchHandler extends WeakHandler<ChannelsPosterPrefetcher> {
+ public PrefetchHandler(ChannelsPosterPrefetcher ref) {
+ super(ref);
+ }
+
+ @Override
+ public void handleMessage(Message msg, @NonNull ChannelsPosterPrefetcher prefetcher) {
+ switch (msg.what) {
+ case MSG_PREFETCH_IMAGE:
+ prefetcher.doPrefetchImages();
+ break;
+ }
+ }
+ }
}
diff --git a/src/com/android/tv/menu/ChannelsRow.java b/src/com/android/tv/menu/ChannelsRow.java
index f08cbd57..dedf0993 100644
--- a/src/com/android/tv/menu/ChannelsRow.java
+++ b/src/com/android/tv/menu/ChannelsRow.java
@@ -19,7 +19,7 @@ package com.android.tv.menu;
import android.content.Context;
import com.android.tv.R;
-import com.android.tv.common.TvCommonConstants;
+import com.android.tv.data.ProgramDataManager;
import com.android.tv.recommendation.RecentChannelEvaluator;
import com.android.tv.recommendation.Recommender;
@@ -33,12 +33,8 @@ public class ChannelsRow extends ItemListRow {
private ChannelsRowAdapter mChannelsAdapter;
private ChannelsPosterPrefetcher mChannelsPosterPrefetcher;
- public ChannelsRow(Context context) {
- super(context,
- TvCommonConstants.IS_MNC_OR_HIGHER
- ? R.string.menu_title_channels : R.string.menu_title_channels_legacy,
- R.dimen.card_layout_height,
- null);
+ public ChannelsRow(Context context, Menu menu, ProgramDataManager programDataManager) {
+ super(context, menu, R.string.menu_title_channels, R.dimen.card_layout_height, null);
mTvRecommendation = new Recommender(getContext(), new Recommender.Listener() {
@Override
public void onRecommenderReady() {
@@ -56,21 +52,25 @@ public class ChannelsRow extends ItemListRow {
mChannelsAdapter = new ChannelsRowAdapter(context, mTvRecommendation,
MIN_COUNT_FOR_RECENT_CHANNELS, MAX_COUNT_FOR_RECENT_CHANNELS);
setAdapter(mChannelsAdapter);
- mChannelsPosterPrefetcher = new ChannelsPosterPrefetcher(context,
- getMainActivity().getProgramDataManager(), mChannelsAdapter);
+ mChannelsPosterPrefetcher = new ChannelsPosterPrefetcher(context, programDataManager,
+ mChannelsAdapter);
}
@Override
public void release() {
super.release();
- mTvRecommendation.release();
- mTvRecommendation = null;
+ if (mTvRecommendation != null) {
+ mTvRecommendation.release();
+ mTvRecommendation = null;
+ }
+ mChannelsPosterPrefetcher.cancel();
}
/**
* Handle the update event of the recent channel.
*/
- public void onRecentChannelUpdated() {
+ @Override
+ public void onRecentChannelsChanged() {
mChannelsPosterPrefetcher.prefetch();
}
diff --git a/src/com/android/tv/menu/ChannelsRowAdapter.java b/src/com/android/tv/menu/ChannelsRowAdapter.java
index 8c76912a..8190c976 100644
--- a/src/com/android/tv/menu/ChannelsRowAdapter.java
+++ b/src/com/android/tv/menu/ChannelsRowAdapter.java
@@ -18,13 +18,13 @@ package com.android.tv.menu;
import android.content.Context;
import android.content.Intent;
+import android.os.Build;
import android.view.View;
import com.android.tv.MainActivity;
import com.android.tv.R;
import com.android.tv.TvApplication;
import com.android.tv.analytics.Tracker;
-import com.android.tv.common.TvCommonConstants;
import com.android.tv.data.Channel;
import com.android.tv.recommendation.Recommender;
import com.android.tv.util.SetupUtils;
@@ -151,7 +151,7 @@ public class ChannelsRowAdapter extends ItemListRowView.ItemListAdapter<Channel>
if (mShowSetupCard) {
channelList.add(dummyChannel);
}
- if (TvCommonConstants.IS_MNC_OR_HIGHER) {
+ if (Build.VERSION.SDK_INT >= 23) {
Channel currentChannel = ((MainActivity) mContext).getCurrentChannel();
mShowAppLinkCard = currentChannel != null
&& currentChannel.getAppLinkType(mContext) != Channel.APP_LINK_TYPE_NONE;
diff --git a/src/com/android/tv/menu/IMenuView.java b/src/com/android/tv/menu/IMenuView.java
new file mode 100644
index 00000000..99fb4126
--- /dev/null
+++ b/src/com/android/tv/menu/IMenuView.java
@@ -0,0 +1,60 @@
+/*
+ * 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.menu;
+
+import com.android.tv.menu.Menu.MenuShowReason;
+
+import java.util.List;
+
+/**
+ * An base interface for menu view.
+ */
+public interface IMenuView {
+ /**
+ * Sets menu rows.
+ */
+ void setMenuRows(List<MenuRow> menuRows);
+
+ /**
+ * Shows the main menu.
+ *
+ * <p> The inherited class should show the menu and select the row corresponding to
+ * {@code rowIdToSelect}. If the menu is already visible, change the current selection to the
+ * given row.
+ *
+ * @param reason A reason why this is called. See {@link MenuShowReason}.
+ * @param rowIdToSelect An ID of the row which corresponds to the {@code reason}.
+ */
+ void onShow(@MenuShowReason int reason, String rowIdToSelect, Runnable runnableAfterShow);
+
+ /**
+ * Hides the main menu
+ */
+ void onHide();
+
+ /**
+ * Updates the menu contents.
+ *
+ * <p>Returns <@code true> if the contents have been changed, otherwise {@code false}.
+ */
+ boolean update(boolean menuActive);
+
+ /**
+ * Checks if the menu view is visible or not.
+ */
+ boolean isVisible();
+}
diff --git a/src/com/android/tv/menu/ItemListRow.java b/src/com/android/tv/menu/ItemListRow.java
index ab634783..faa611fa 100644
--- a/src/com/android/tv/menu/ItemListRow.java
+++ b/src/com/android/tv/menu/ItemListRow.java
@@ -30,14 +30,14 @@ import com.android.tv.menu.ItemListRowView.ItemListAdapter;
public class ItemListRow extends MenuRow {
private ItemListAdapter mAdapter;
- public ItemListRow(Context context, int titleResId, int itemHeightResId,
+ public ItemListRow(Context context, Menu menu, int titleResId, int itemHeightResId,
ItemListAdapter adapter) {
- this(context, context.getString(titleResId), itemHeightResId, adapter);
+ this(context, menu, context.getString(titleResId), itemHeightResId, adapter);
}
- public ItemListRow(Context context, String title, int itemHeightResId,
+ public ItemListRow(Context context, Menu menu, String title, int itemHeightResId,
ItemListAdapter adapter) {
- super(context, title, itemHeightResId);
+ super(context, menu, title, itemHeightResId);
mAdapter = adapter;
}
diff --git a/src/com/android/tv/menu/Menu.java b/src/com/android/tv/menu/Menu.java
new file mode 100644
index 00000000..323ce9c5
--- /dev/null
+++ b/src/com/android/tv/menu/Menu.java
@@ -0,0 +1,330 @@
+/*
+ * 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.menu;
+
+import android.animation.Animator;
+import android.animation.AnimatorInflater;
+import android.animation.AnimatorListenerAdapter;
+import android.content.Context;
+import android.content.res.Resources;
+import android.os.Looper;
+import android.os.Message;
+import android.support.annotation.IntDef;
+import android.support.annotation.NonNull;
+import android.support.annotation.VisibleForTesting;
+import android.util.Log;
+
+import com.android.tv.ChannelTuner;
+import com.android.tv.R;
+import com.android.tv.TvApplication;
+import com.android.tv.analytics.DurationTimer;
+import com.android.tv.analytics.Tracker;
+import com.android.tv.common.WeakHandler;
+import com.android.tv.data.Channel;
+import com.android.tv.menu.MenuRowFactory.PartnerRow;
+import com.android.tv.menu.MenuRowFactory.PipOptionsRow;
+import com.android.tv.menu.MenuRowFactory.TvOptionsRow;
+import com.android.tv.util.Utils;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A class which controls the menu.
+ */
+public class Menu {
+ private static final String TAG = "Menu";
+ private static final boolean DEBUG = false;
+
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef({REASON_NONE, REASON_GUIDE, REASON_PLAY_CONTROLS_PLAY, REASON_PLAY_CONTROLS_PAUSE,
+ REASON_PLAY_CONTROLS_PLAY_PAUSE, REASON_PLAY_CONTROLS_REWIND,
+ REASON_PLAY_CONTROLS_FAST_FORWARD, REASON_PLAY_CONTROLS_JUMP_TO_PREVIOUS,
+ REASON_PLAY_CONTROLS_JUMP_TO_NEXT})
+ public @interface MenuShowReason {}
+ public static final int REASON_NONE = 0;
+ public static final int REASON_GUIDE = 1;
+ public static final int REASON_PLAY_CONTROLS_PLAY = 2;
+ public static final int REASON_PLAY_CONTROLS_PAUSE = 3;
+ public static final int REASON_PLAY_CONTROLS_PLAY_PAUSE = 4;
+ public static final int REASON_PLAY_CONTROLS_REWIND = 5;
+ public static final int REASON_PLAY_CONTROLS_FAST_FORWARD = 6;
+ public static final int REASON_PLAY_CONTROLS_JUMP_TO_PREVIOUS = 7;
+ public static final int REASON_PLAY_CONTROLS_JUMP_TO_NEXT = 8;
+
+ private static final List<String> sRowIdListForReason = new ArrayList<>();
+ static {
+ sRowIdListForReason.add(null); // REASON_NONE
+ sRowIdListForReason.add(ChannelsRow.ID); // REASON_GUIDE
+ sRowIdListForReason.add(PlayControlsRow.ID); // REASON_PLAY_CONTROLS_PLAY
+ sRowIdListForReason.add(PlayControlsRow.ID); // REASON_PLAY_CONTROLS_PAUSE
+ sRowIdListForReason.add(PlayControlsRow.ID); // REASON_PLAY_CONTROLS_PLAY_PAUSE
+ sRowIdListForReason.add(PlayControlsRow.ID); // REASON_PLAY_CONTROLS_REWIND
+ sRowIdListForReason.add(PlayControlsRow.ID); // REASON_PLAY_CONTROLS_FAST_FORWARD
+ sRowIdListForReason.add(PlayControlsRow.ID); // REASON_PLAY_CONTROLS_JUMP_TO_PREVIOUS
+ sRowIdListForReason.add(PlayControlsRow.ID); // REASON_PLAY_CONTROLS_JUMP_TO_NEXT
+ }
+
+ private static final String SCREEN_NAME = "Menu";
+
+ private static final int MSG_HIDE_MENU = 1000;
+
+ private final IMenuView mMenuView;
+ private final Tracker mTracker;
+ private final DurationTimer mVisibleTimer = new DurationTimer();
+ private final long mShowDurationMillis;
+ private final OnMenuVisibilityChangeListener mOnMenuVisibilityChangeListener;
+ private final WeakHandler<Menu> mHandler = new MenuWeakHandler(this, Looper.getMainLooper());
+
+ private final ChannelTuner.Listener mChannelTunerListener = new ChannelTuner.Listener() {
+ @Override
+ public void onLoadFinished() {}
+
+ @Override
+ public void onBrowsableChannelListChanged() {
+ mMenuView.update(isActive());
+ }
+
+ @Override
+ public void onCurrentChannelUnavailable(Channel channel) {}
+
+ @Override
+ public void onChannelChanged(Channel previousChannel, Channel currentChannel) {}
+ };
+
+ private final List<MenuRow> mMenuRows = new ArrayList<>();
+ private final Animator mShowAnimator;
+ private final Animator mHideAnimator;
+
+ private ChannelTuner mChannelTuner;
+ private boolean mKeepVisible;
+ private boolean mAnimationDisabledForTest;
+
+ /**
+ * A constructor.
+ */
+ public Menu(Context context, IMenuView menuView, MenuRowFactory menuRowFactory,
+ OnMenuVisibilityChangeListener onMenuVisibilityChangeListener) {
+ mMenuView = menuView;
+ mTracker = ((TvApplication) context.getApplicationContext()).getTracker();
+ Resources res = context.getResources();
+ mShowDurationMillis = res.getInteger(R.integer.menu_show_duration);
+ mOnMenuVisibilityChangeListener = onMenuVisibilityChangeListener;
+ mShowAnimator = AnimatorInflater.loadAnimator(context, R.animator.menu_enter);
+ mShowAnimator.setTarget(mMenuView);
+ mHideAnimator = AnimatorInflater.loadAnimator(context, R.animator.menu_exit);
+ mHideAnimator.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ mMenuView.onHide();
+ }
+ });
+ mHideAnimator.setTarget(mMenuView);
+ // Build menu rows
+ addMenuRow(menuRowFactory.createMenuRow(this, PlayControlsRow.class));
+ addMenuRow(menuRowFactory.createMenuRow(this, ChannelsRow.class));
+ addMenuRow(menuRowFactory.createMenuRow(this, PartnerRow.class));
+ addMenuRow(menuRowFactory.createMenuRow(this, TvOptionsRow.class));
+ addMenuRow(menuRowFactory.createMenuRow(this, PipOptionsRow.class));
+ mMenuView.setMenuRows(mMenuRows);
+ }
+
+ /**
+ * Sets the instance of {@link ChannelTuner}. Call this method when the channel tuner is ready
+ * or not available any more.
+ */
+ public void setChannelTuner(ChannelTuner channelTuner) {
+ if (mChannelTuner != null) {
+ mChannelTuner.removeListener(mChannelTunerListener);
+ }
+ mChannelTuner = channelTuner;
+ if (mChannelTuner != null) {
+ mChannelTuner.addListener(mChannelTunerListener);
+ }
+ mMenuView.update(isActive());
+ }
+
+ private void addMenuRow(MenuRow row) {
+ if (row != null) {
+ mMenuRows.add(row);
+ }
+ }
+
+ /**
+ * Call this method to end the lifetime of the menu.
+ */
+ public void release() {
+ setChannelTuner(null);
+ for (MenuRow row : mMenuRows) {
+ row.release();
+ }
+ mHandler.removeCallbacksAndMessages(null);
+ }
+
+ /**
+ * Shows the main menu.
+ *
+ * @param reason A reason why this is called. See {@link MenuShowReason}
+ */
+ public void show(@MenuShowReason int reason) {
+ if (DEBUG) Log.d(TAG, "show reason:" + reason);
+ mTracker.sendShowMenu();
+ mVisibleTimer.start();
+ mTracker.sendScreenView(SCREEN_NAME);
+ if (mHideAnimator.isStarted()) {
+ mHideAnimator.end();
+ }
+ if (mOnMenuVisibilityChangeListener != null) {
+ mOnMenuVisibilityChangeListener.onMenuVisibilityChange(true);
+ }
+ String rowIdToSelect = sRowIdListForReason.get(reason);
+ mMenuView.onShow(reason, rowIdToSelect, mAnimationDisabledForTest ? null : new Runnable() {
+ @Override
+ public void run() {
+ mShowAnimator.start();
+ }
+ });
+ scheduleHide();
+ }
+
+ /**
+ * Closes the menu.
+ */
+ public void hide(boolean withAnimation) {
+ if (!isActive()) {
+ return;
+ }
+ if (mAnimationDisabledForTest) {
+ withAnimation = false;
+ }
+ mHandler.removeMessages(MSG_HIDE_MENU);
+ if (withAnimation) {
+ if (!mHideAnimator.isStarted()) {
+ mHideAnimator.start();
+ }
+ } else if (mHideAnimator.isStarted()) {
+ // mMenuView.onHide() is called in AnimatorListener.
+ mHideAnimator.end();
+ } else {
+ mMenuView.onHide();
+ mTracker.sendHideMenu(mVisibleTimer.reset());
+ if (mOnMenuVisibilityChangeListener != null) {
+ mOnMenuVisibilityChangeListener.onMenuVisibilityChange(false);
+ }
+ }
+ }
+
+ /**
+ * Schedules to hide the menu in some seconds.
+ */
+ public void scheduleHide() {
+ mHandler.removeMessages(MSG_HIDE_MENU);
+ if (!mKeepVisible) {
+ mHandler.sendEmptyMessageDelayed(MSG_HIDE_MENU, mShowDurationMillis);
+ }
+ }
+
+ /**
+ * Called when the caller wants the main menu to be kept visible or not.
+ * If {@code keepVisible} is set to {@code true}, the hide schedule doesn't close the main menu,
+ * but calling {@link #hide} still hides it.
+ * If {@code keepVisible} is set to {@code false}, the hide schedule works as usual.
+ */
+ public void setKeepVisible(boolean keepVisible) {
+ mKeepVisible = keepVisible;
+ if (mKeepVisible) {
+ mHandler.removeMessages(MSG_HIDE_MENU);
+ } else if (isActive()) {
+ scheduleHide();
+ }
+ }
+
+ @VisibleForTesting
+ boolean isHideScheduled() {
+ return mHandler.hasMessages(MSG_HIDE_MENU);
+ }
+
+ /**
+ * Returns {@code true} if the menu is open and not hiding.
+ */
+ public boolean isActive() {
+ return mMenuView.isVisible() && !mHideAnimator.isStarted();
+ }
+
+ /**
+ * Updates menu contents.
+ *
+ * <p>Returns <@code true> if the contents have been changed, otherwise {@code false}.
+ */
+ public boolean update() {
+ if (DEBUG) Log.d(TAG, "update main menu");
+ return mMenuView.update(isActive());
+ }
+
+ /**
+ * This method is called when channels are changed.
+ */
+ public void onRecentChannelsChanged() {
+ if (DEBUG) Log.d(TAG, "onRecentChannelsChanged");
+ for (MenuRow row : mMenuRows) {
+ row.onRecentChannelsChanged();
+ }
+ }
+
+ /**
+ * This method is called when the stream information is changed.
+ */
+ public void onStreamInfoChanged() {
+ if (DEBUG) Log.d(TAG, "update options row in main menu");
+ for (MenuRow row : mMenuRows) {
+ row.onStreamInfoChanged();
+ }
+ }
+
+ @VisibleForTesting
+ void disableAnimationForTest() {
+ if (!Utils.isRunningInTest()) {
+ throw new RuntimeException("Animation may only be enabled/disabled during tests.");
+ }
+ mAnimationDisabledForTest = true;
+ }
+
+ /**
+ * A listener which receives the notification when the menu is visible/invisible.
+ */
+ public static abstract class OnMenuVisibilityChangeListener {
+ /**
+ * Called when the menu becomes visible/invisible.
+ */
+ public abstract void onMenuVisibilityChange(boolean visible);
+ }
+
+ private static class MenuWeakHandler extends WeakHandler<Menu> {
+ public MenuWeakHandler(Menu menu, Looper mainLooper) {
+ super(mainLooper, menu);
+ }
+
+ @Override
+ public void handleMessage(Message msg, @NonNull Menu menu) {
+ if (msg.what == MSG_HIDE_MENU) {
+ menu.hide(true);
+ }
+ }
+ }
+}
diff --git a/src/com/android/tv/menu/MenuLayoutManager.java b/src/com/android/tv/menu/MenuLayoutManager.java
new file mode 100644
index 00000000..187d0e14
--- /dev/null
+++ b/src/com/android/tv/menu/MenuLayoutManager.java
@@ -0,0 +1,819 @@
+/*
+ * 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.menu;
+
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.AnimatorSet;
+import android.animation.ObjectAnimator;
+import android.animation.TimeInterpolator;
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Rect;
+import android.support.annotation.UiThread;
+import android.support.v4.view.animation.FastOutLinearInInterpolator;
+import android.support.v4.view.animation.FastOutSlowInInterpolator;
+import android.support.v4.view.animation.LinearOutSlowInInterpolator;
+import android.util.Log;
+import android.util.Property;
+import android.view.View;
+import android.view.ViewGroup.MarginLayoutParams;
+import android.widget.TextView;
+
+import com.android.tv.R;
+import com.android.tv.util.Utils;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * A view that represents TV main menu.
+ */
+@UiThread
+public class MenuLayoutManager {
+ static final String TAG = "MenuLayoutManager";
+ static final boolean DEBUG = false;
+
+ // The visible duration of the title before it is hidden.
+ private static final long TITLE_SHOW_DURATION_BEFORE_HIDDEN_MS = TimeUnit.SECONDS.toMillis(2);
+
+ private final MenuView mMenuView;
+ private final List<MenuRow> mMenuRows = new ArrayList<>();
+ private final List<MenuRowView> mMenuRowViews = new ArrayList<>();
+ private final List<Integer> mRemovingRowViews = new ArrayList<>();
+ private int mSelectedPosition = -1;
+
+ private final int mRowAlignFromBottom;
+ private final int mRowContentsPaddingTop;
+ private final int mRowContentsPaddingBottomMax;
+ private final int mRowTitleTextDescenderHeight;
+ private final int mMenuMarginBottomMin;
+ private final int mRowTitleHeight;
+ private final int mRowScrollUpAnimationOffset;
+
+ private final long mRowAnimationDuration;
+ private final long mOldContentsFadeOutDuration;
+ private final long mCurrentContentsFadeInDuration;
+ private final TimeInterpolator mFastOutSlowIn = new FastOutSlowInInterpolator();
+ private final TimeInterpolator mFastOutLinearIn = new FastOutLinearInInterpolator();
+ private final TimeInterpolator mLinearOutSlowIn = new LinearOutSlowInInterpolator();
+ private AnimatorSet mAnimatorSet;
+ private ObjectAnimator mTitleFadeOutAnimator;
+ private final List<ViewPropertyValueHolder> mPropertyValuesAfterAnimation = new ArrayList<>();
+
+ private TextView mTempTitleViewForOld;
+ private TextView mTempTitleViewForCurrent;
+
+ public MenuLayoutManager(Context context, MenuView menuView) {
+ mMenuView = menuView;
+ // Load dimensions
+ Resources res = context.getResources();
+ mRowAlignFromBottom = res.getDimensionPixelOffset(R.dimen.menu_row_align_from_bottom);
+ mRowContentsPaddingTop = res.getDimensionPixelOffset(R.dimen.menu_row_contents_padding_top);
+ mRowContentsPaddingBottomMax = res.getDimensionPixelOffset(
+ R.dimen.menu_row_contents_padding_bottom_max);
+ mRowTitleTextDescenderHeight = res.getDimensionPixelOffset(
+ R.dimen.menu_row_title_text_descender_height);
+ mMenuMarginBottomMin = res.getDimensionPixelOffset(R.dimen.menu_margin_bottom_min);
+ mRowTitleHeight = res.getDimensionPixelSize(R.dimen.menu_row_title_height);
+ mRowScrollUpAnimationOffset =
+ res.getDimensionPixelOffset(R.dimen.menu_row_scroll_up_anim_offset);
+ mRowAnimationDuration = res.getInteger(R.integer.menu_row_selection_anim_duration);
+ mOldContentsFadeOutDuration = res.getInteger(
+ R.integer.menu_previous_contents_fade_out_duration);
+ mCurrentContentsFadeInDuration = res.getInteger(
+ R.integer.menu_current_contents_fade_in_duration);
+ }
+
+ /**
+ * Sets the menu rows and views.
+ */
+ public void setMenuRowsAndViews(List<MenuRow> menuRows, List<MenuRowView> menuRowViews) {
+ mMenuRows.clear();
+ mMenuRows.addAll(menuRows);
+ mMenuRowViews.clear();
+ mMenuRowViews.addAll(menuRowViews);
+ }
+
+ /**
+ * Layouts main menu view.
+ *
+ * <p>Do not call this method directly. It's supposed to be called only by View.onLayout().
+ */
+ public void layout(int left, int top, int right, int bottom) {
+ if (mAnimatorSet != null) {
+ // Layout will be done after the animation ends.
+ return;
+ }
+
+ int count = mMenuRowViews.size();
+ MenuRowView currentView = mMenuRowViews.get(mSelectedPosition);
+ if (currentView.getVisibility() == View.GONE) {
+ // If the selected row is not visible, select the first visible row.
+ int firstVisiblePosition = findNextVisiblePosition(-1);
+ if (firstVisiblePosition != -1) {
+ mSelectedPosition = firstVisiblePosition;
+ } else {
+ // No rows are visible.
+ return;
+ }
+ }
+ List<Rect> layouts = getViewLayouts(left, top, right, bottom);
+ for (int i = 0; i < count; ++i) {
+ Rect rect = layouts.get(i);
+ if (rect != null) {
+ currentView = mMenuRowViews.get(i);
+ currentView.layout(rect.left, rect.top, rect.right, rect.bottom);
+ if (DEBUG) dumpChildren("layout()");
+ }
+ }
+
+ // If the contents view is INVISIBLE initially, it should be changed to GONE after layout.
+ // See MenuRowView.onFinishInflate() for more information
+ // TODO: Find a better way to resolve this issue..
+ for (MenuRowView view : mMenuRowViews) {
+ if (view.getVisibility() == View.VISIBLE
+ && view.getContentsView().getVisibility() == View.INVISIBLE) {
+ view.onDeselected();
+ }
+ }
+ }
+
+ private int findNextVisiblePosition(int start) {
+ int count = mMenuRowViews.size();
+ for (int i = start + 1; i < count; ++i) {
+ if (mMenuRowViews.get(i).getVisibility() != View.GONE) {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ private void dumpChildren(String prefix) {
+ int position = 0;
+ for (MenuRowView view : mMenuRowViews) {
+ View title = view.getChildAt(0);
+ View contents = view.getChildAt(1);
+ Log.d(TAG, prefix + " position=" + position++
+ + " rowView={visiblility=" + view.getVisibility()
+ + ", alpha=" + view.getAlpha()
+ + ", translationY=" + view.getTranslationY()
+ + ", left=" + view.getLeft() + ", top=" + view.getTop()
+ + ", right=" + view.getRight() + ", bottom=" + view.getBottom()
+ + "}, title={visiblility=" + title.getVisibility()
+ + ", alpha=" + title.getAlpha()
+ + ", translationY=" + title.getTranslationY()
+ + ", left=" + title.getLeft() + ", top=" + title.getTop()
+ + ", right=" + title.getRight() + ", bottom=" + title.getBottom()
+ + "}, contents={visiblility=" + contents.getVisibility()
+ + ", alpha=" + contents.getAlpha()
+ + ", translationY=" + contents.getTranslationY()
+ + ", left=" + contents.getLeft() + ", top=" + contents.getTop()
+ + ", right=" + contents.getRight() + ", bottom=" + contents.getBottom()+ "}");
+ }
+ }
+
+ /**
+ * Checks if the view will take up space for the layout not.
+ *
+ * @param position The index of the menu row view in the list. This is not the index of the view
+ * in the screen.
+ * @param view The menu row view.
+ * @param rowsToAdd The menu row views to be added in the next layout process.
+ * @param rowsToRemove The menu row views to be removed in the next layout process.
+ * @return {@code true} if the view will take up space for the layout, otherwise {@code false}.
+ */
+ private boolean isVisibleInLayout(int position, MenuRowView view, List<Integer> rowsToAdd,
+ List<Integer> rowsToRemove) {
+ // Checks if the view will be visible or not.
+ return (view.getVisibility() != View.GONE && !rowsToRemove.contains(position))
+ || rowsToAdd.contains(position);
+ }
+
+ /**
+ * Calculates and returns a list of the layout bounds of the menu row views for the layout.
+ *
+ * @param left The left coordinate of the menu view.
+ * @param top The top coordinate of the menu view.
+ * @param right The right coordinate of the menu view.
+ * @param bottom The bottom coordinate of the menu view.
+ */
+ private List<Rect> getViewLayouts(int left, int top, int right, int bottom) {
+ return getViewLayouts(left, top, right, bottom, Collections.<Integer>emptyList(),
+ Collections.<Integer>emptyList());
+ }
+
+ /**
+ * Calculates and returns a list of the layout bounds of the menu row views for the layout. The
+ * order of the bounds is the same as that of the menu row views. e.g. the second rectangle in
+ * the list is for the second menu row view in the view list (not the second view in the
+ * screen).
+ *
+ * <p>It predicts the layout bounds for the next layout process. Some views will be added or
+ * removed in the layout, so they need to be considered here.
+ *
+ * @param left The left coordinate of the menu view.
+ * @param top The top coordinate of the menu view.
+ * @param right The right coordinate of the menu view.
+ * @param bottom The bottom coordinate of the menu view.
+ * @param rowsToAdd The menu row views to be added in the next layout process.
+ * @param rowsToRemove The menu row views to be removed in the next layout process.
+ * @return the layout bounds of the menu row views.
+ */
+ private List<Rect> getViewLayouts(int left, int top, int right, int bottom,
+ List<Integer> rowsToAdd, List<Integer> rowsToRemove) {
+ // The coordinates should be relative to the parent.
+ int relativeLeft = 0;
+ int relateiveRight = right - left;
+ int relativeBottom = bottom - top;
+
+ List<Rect> layouts = new ArrayList<>();
+ int count = mMenuRowViews.size();
+ MenuRowView selectedView = mMenuRowViews.get(mSelectedPosition);
+ int rowTitleHeight = selectedView.getTitleView().getMeasuredHeight();
+ int rowContentsHeight = selectedView.getPreferredContentsHeight();
+ // Calculate for the selected row first.
+ // The distance between the bottom of the screen and the vertical center of the contents
+ // should be kept fixed. For more information, please see the redlines.
+ int childTop = relativeBottom - mRowAlignFromBottom - rowContentsHeight / 2
+ - mRowContentsPaddingTop - rowTitleHeight;
+ int childBottom = relativeBottom;
+ int position = mSelectedPosition + 1;
+ for (; position < count; ++position) {
+ // Find and layout the next row to calculate the bottom line of the selected row.
+ MenuRowView nextView = mMenuRowViews.get(position);
+ if (isVisibleInLayout(position, nextView, rowsToAdd, rowsToRemove)) {
+ int nextTitleTopMax = relativeBottom - mMenuMarginBottomMin - rowTitleHeight
+ + mRowTitleTextDescenderHeight;
+ int childBottomMax = relativeBottom - mRowAlignFromBottom + rowContentsHeight / 2
+ + mRowContentsPaddingBottomMax - rowTitleHeight;
+ childBottom = Math.min(nextTitleTopMax, childBottomMax);
+ layouts.add(new Rect(relativeLeft, childBottom, relateiveRight, relativeBottom));
+ break;
+ } else {
+ // null means that the row is GONE.
+ layouts.add(null);
+ }
+ }
+ layouts.add(0, new Rect(relativeLeft, childTop, relateiveRight, childBottom));
+ // Layout the previous rows.
+ for (int i = mSelectedPosition - 1; i >= 0; --i) {
+ MenuRowView view = mMenuRowViews.get(i);
+ if (isVisibleInLayout(i, view, rowsToAdd, rowsToRemove)) {
+ childTop -= mRowTitleHeight;
+ childBottom = childTop + rowTitleHeight;
+ layouts.add(0, new Rect(relativeLeft, childTop, relateiveRight, childBottom));
+ } else {
+ layouts.add(0, null);
+ }
+ }
+ // Move all the next rows to the below of the screen.
+ childTop = relativeBottom;
+ for (++position; position < count; ++position) {
+ MenuRowView view = mMenuRowViews.get(position);
+ if (isVisibleInLayout(position, view, rowsToAdd, rowsToRemove)) {
+ childBottom = childTop + rowTitleHeight;
+ layouts.add(new Rect(relativeLeft, childTop, relateiveRight, childBottom));
+ childTop += mRowTitleHeight;
+ } else {
+ layouts.add(null);
+ }
+ }
+ return layouts;
+ }
+
+ /**
+ * Move the current selection to the given {@code position}.
+ */
+ public void setSelectedPosition(int position) {
+ if (DEBUG) {
+ Log.d(TAG, "setSelectedPosition(position=" + position + ") {previousPosition="
+ + mSelectedPosition + "}");
+ }
+ if (mSelectedPosition == position) {
+ return;
+ }
+ if (position < 0 || position >= mMenuRowViews.size()) {
+ String msg = "Invalid position: " + position;
+ Utils.engThrowElseWarn(TAG, msg, new IllegalArgumentException(msg));
+ return;
+ }
+ if (mSelectedPosition >= 0 && mSelectedPosition < mMenuRowViews.size()) {
+ mMenuRowViews.get(mSelectedPosition).onDeselected();
+ }
+ mSelectedPosition = position;
+ if (mSelectedPosition >= 0 && mSelectedPosition < mMenuRowViews.size()) {
+ mMenuRowViews.get(mSelectedPosition).onSelected(false);
+ }
+ if (mMenuView.getVisibility() == View.VISIBLE) {
+ // Request focus after the new contents view shows up.
+ mMenuView.requestFocus();
+ // Adjust the position of the selected row.
+ mMenuView.requestLayout();
+ }
+ }
+
+ /**
+ * Move the current selection to the given {@code position} with animation.
+ * The animation specification is included in http://b/21069476
+ */
+ public void setSelectedPositionSmooth(final int position) {
+ if (DEBUG) {
+ Log.d(TAG, "setSelectedPositionSmooth(position=" + position + ") {previousPosition="
+ + mSelectedPosition + "}");
+ }
+ if (mMenuView.getVisibility() != View.VISIBLE) {
+ setSelectedPosition(position);
+ return;
+ }
+ if (mSelectedPosition == position) {
+ return;
+ }
+ if (mSelectedPosition < 0 || mSelectedPosition >= mMenuRowViews.size()) {
+ String msg = "No previous selection: " + mSelectedPosition;
+ Utils.engThrowElseWarn(TAG, msg, new IllegalStateException(msg));
+ return;
+ }
+ if (position < 0 || position >= mMenuRowViews.size()) {
+ String msg = "Invalid position: " + position;
+ Utils.engThrowElseWarn(TAG, msg, new IllegalArgumentException(msg));
+ return;
+ }
+ if (mAnimatorSet != null) {
+ // Do not cancel the animation here. The property values should be set to the end values
+ // when the animation finishes.
+ mAnimatorSet.end();
+ }
+ if (mTitleFadeOutAnimator != null) {
+ // Cancel the animation instead of ending it in order that the title animation starts
+ // again from the intermediate state.
+ mTitleFadeOutAnimator.cancel();
+ }
+ final int oldPosition = mSelectedPosition;
+ mSelectedPosition = position;
+ if (DEBUG) dumpChildren("startRowAnimation()");
+
+ MenuRowView currentView = mMenuRowViews.get(position);
+ // Show the children of the next row.
+ currentView.getTitleView().setVisibility(View.VISIBLE);
+ currentView.getContentsView().setVisibility(View.VISIBLE);
+ // Request focus after the new contents view shows up.
+ mMenuView.requestFocus();
+ if (mTempTitleViewForOld == null) {
+ // Initialize here because we don't know when the views are inflated.
+ mTempTitleViewForOld =
+ (TextView) mMenuView.findViewById(R.id.temp_title_for_old);
+ mTempTitleViewForCurrent =
+ (TextView) mMenuView.findViewById(R.id.temp_title_for_current);
+ }
+
+ // Animations.
+ mPropertyValuesAfterAnimation.clear();
+ List<Animator> animators = new ArrayList<>();
+ boolean scrollDown = position > oldPosition;
+ List<Rect> layouts = getViewLayouts(mMenuView.getLeft(), mMenuView.getTop(),
+ mMenuView.getRight(), mMenuView.getBottom());
+
+ // Old row.
+ MenuRow oldRow = mMenuRows.get(oldPosition);
+ MenuRowView oldView = mMenuRowViews.get(oldPosition);
+ View oldContentsView = oldView.getContentsView();
+ // Old contents view.
+ animators.add(createAlphaAnimator(oldContentsView, 1.0f, 0.0f, 1.0f, mLinearOutSlowIn)
+ .setDuration(mOldContentsFadeOutDuration));
+ final TextView oldTitleView = oldView.getTitleView();
+ setTempTitleView(mTempTitleViewForOld, oldTitleView);
+ Rect oldLayoutRect = layouts.get(oldPosition);
+ if (scrollDown) {
+ // Old title view.
+ if (oldRow.hideTitleWhenSelected() && oldTitleView.getVisibility() != View.VISIBLE) {
+ // This case is not included in the animation specification.
+ mTempTitleViewForOld.setScaleX(1.0f);
+ mTempTitleViewForOld.setScaleY(1.0f);
+ animators.add(createAlphaAnimator(mTempTitleViewForOld, 0.0f,
+ oldView.getTitleViewAlphaDeselected(), mFastOutLinearIn));
+ int offset = oldLayoutRect.top - mTempTitleViewForOld.getTop();
+ animators.add(createTranslationYAnimator(mTempTitleViewForOld,
+ offset + mRowScrollUpAnimationOffset, offset));
+ } else {
+ animators.add(createScaleXAnimator(mTempTitleViewForOld,
+ oldView.getTitleViewScaleSelected(), 1.0f));
+ animators.add(createScaleYAnimator(mTempTitleViewForOld,
+ oldView.getTitleViewScaleSelected(), 1.0f));
+ animators.add(createAlphaAnimator(mTempTitleViewForOld, oldTitleView.getAlpha(),
+ oldView.getTitleViewAlphaDeselected(), mLinearOutSlowIn));
+ animators.add(createTranslationYAnimator(mTempTitleViewForOld, 0,
+ oldLayoutRect.top - mTempTitleViewForOld.getTop()));
+ }
+ oldTitleView.setAlpha(oldView.getTitleViewAlphaDeselected());
+ oldTitleView.setVisibility(View.INVISIBLE);
+ } else {
+ Rect currentLayoutRect = new Rect(layouts.get(position));
+ // Old title view.
+ // The move distance in the specification is 32dp(mRowScrollUpAnimationOffset).
+ // But if the height of the upper row is small, the upper row will move down a lot. In
+ // this case, this row needs to move more than the specification to avoid the overlap of
+ // the two titles.
+ // The maximum is to the top of the start position of mTempTitleViewForOld.
+ int distanceCurrentTitle = currentLayoutRect.top - currentView.getTop();
+ int distance = Math.max(mRowScrollUpAnimationOffset, distanceCurrentTitle);
+ int distanceToTopOfSecondTitle = oldLayoutRect.top - mRowScrollUpAnimationOffset
+ - oldView.getTop();
+ animators.add(createTranslationYAnimator(oldTitleView, 0.0f,
+ Math.min(distance, distanceToTopOfSecondTitle)));
+ animators.add(createAlphaAnimator(oldTitleView, 1.0f, 0.0f, 1.0f, mLinearOutSlowIn)
+ .setDuration(mOldContentsFadeOutDuration));
+ animators.add(createScaleXAnimator(oldTitleView,
+ oldView.getTitleViewScaleSelected(), 1.0f));
+ animators.add(createScaleYAnimator(oldTitleView,
+ oldView.getTitleViewScaleSelected(), 1.0f));
+ mTempTitleViewForOld.setScaleX(1.0f);
+ mTempTitleViewForOld.setScaleY(1.0f);
+ animators.add(createAlphaAnimator(mTempTitleViewForOld, 0.0f,
+ oldView.getTitleViewAlphaDeselected(), mFastOutLinearIn));
+ int offset = oldLayoutRect.top - mTempTitleViewForOld.getTop();
+ animators.add(createTranslationYAnimator(mTempTitleViewForOld,
+ offset - mRowScrollUpAnimationOffset, offset));
+ }
+ // Current row.
+ Rect currentLayoutRect = new Rect(layouts.get(position));
+ TextView currentTitleView = currentView.getTitleView();
+ View currentContentsView = currentView.getContentsView();
+ currentContentsView.setAlpha(0.0f);
+ if (scrollDown) {
+ // Current title view.
+ setTempTitleView(mTempTitleViewForCurrent, currentTitleView);
+ // The move distance in the specification is 32dp(mRowScrollUpAnimationOffset).
+ // But if the height of the upper row is small, the upper row will move up a lot. In
+ // this case, this row needs to start the move from more than the specification to avoid
+ // the overlap of the two titles.
+ // The maximum is to the top of the end position of mTempTitleViewForCurrent.
+ int distanceOldTitle = oldView.getTop() - oldLayoutRect.top;
+ int distance = Math.max(mRowScrollUpAnimationOffset, distanceOldTitle);
+ int distanceTopOfSecondTitle = currentView.getTop() - mRowScrollUpAnimationOffset
+ - currentLayoutRect.top;
+ animators.add(createTranslationYAnimator(currentTitleView,
+ Math.min(distance, distanceTopOfSecondTitle), 0.0f));
+ currentView.setTop(currentLayoutRect.top);
+ ObjectAnimator animator = createAlphaAnimator(currentTitleView, 0.0f, 1.0f,
+ mFastOutLinearIn).setDuration(mCurrentContentsFadeInDuration);
+ animator.setStartDelay(mOldContentsFadeOutDuration);
+ currentTitleView.setAlpha(0.0f);
+ animators.add(animator);
+ animators.add(createScaleXAnimator(currentTitleView, 1.0f,
+ currentView.getTitleViewScaleSelected()));
+ animators.add(createScaleYAnimator(currentTitleView, 1.0f,
+ currentView.getTitleViewScaleSelected()));
+ animators.add(createTranslationYAnimator(mTempTitleViewForCurrent, 0.0f,
+ -mRowScrollUpAnimationOffset));
+ animators.add(createAlphaAnimator(mTempTitleViewForCurrent,
+ currentView.getTitleViewAlphaDeselected(), 0, mLinearOutSlowIn));
+ // Current contents view.
+ animators.add(createTranslationYAnimator(currentContentsView,
+ mRowScrollUpAnimationOffset, 0.0f));
+ animator = createAlphaAnimator(currentContentsView, 0.0f, 1.0f, mFastOutLinearIn)
+ .setDuration(mCurrentContentsFadeInDuration);
+ animator.setStartDelay(mOldContentsFadeOutDuration);
+ animators.add(animator);
+ } else {
+ currentView.setBottom(currentLayoutRect.bottom);
+ // Current title view.
+ int currentViewOffset = currentLayoutRect.top - currentView.getTop();
+ animators.add(createTranslationYAnimator(currentTitleView, 0, currentViewOffset));
+ animators.add(createAlphaAnimator(currentTitleView,
+ currentView.getTitleViewAlphaDeselected(), 1.0f, mFastOutSlowIn));
+ animators.add(createScaleXAnimator(currentTitleView, 1.0f,
+ currentView.getTitleViewScaleSelected()));
+ animators.add(createScaleYAnimator(currentTitleView, 1.0f,
+ currentView.getTitleViewScaleSelected()));
+ // Current contents view.
+ animators.add(createTranslationYAnimator(currentContentsView,
+ currentViewOffset - mRowScrollUpAnimationOffset, currentViewOffset));
+ ObjectAnimator animator = createAlphaAnimator(currentContentsView, 0.0f, 1.0f,
+ mFastOutLinearIn).setDuration(mCurrentContentsFadeInDuration);
+ animator.setStartDelay(mOldContentsFadeOutDuration);
+ animators.add(animator);
+ }
+ // Next row.
+ int nextPosition;
+ if (scrollDown) {
+ nextPosition = findNextVisiblePosition(position);
+ if (nextPosition != -1) {
+ MenuRowView nextView = mMenuRowViews.get(nextPosition);
+ Rect nextLayoutRect = layouts.get(nextPosition);
+ animators.add(createTranslationYAnimator(nextView,
+ nextLayoutRect.top + mRowScrollUpAnimationOffset - nextView.getTop(),
+ nextLayoutRect.top - nextView.getTop()));
+ animators.add(createAlphaAnimator(nextView, 0.0f, 1.0f, mFastOutLinearIn));
+ }
+ } else {
+ nextPosition = findNextVisiblePosition(oldPosition);
+ if (nextPosition != -1) {
+ MenuRowView nextView = mMenuRowViews.get(nextPosition);
+ animators.add(createTranslationYAnimator(nextView, 0, mRowScrollUpAnimationOffset));
+ animators.add(createAlphaAnimator(nextView,
+ nextView.getTitleViewAlphaDeselected(), 0.0f, 1.0f, mLinearOutSlowIn));
+ }
+ }
+ // Other rows.
+ int count = mMenuRowViews.size();
+ for (int i = 0; i < count; ++i) {
+ MenuRowView view = mMenuRowViews.get(i);
+ if (view.getVisibility() == View.VISIBLE && i != oldPosition && i != position
+ && i != nextPosition) {
+ Rect rect = layouts.get(i);
+ animators.add(createTranslationYAnimator(view, 0, rect.top - view.getTop()));
+ }
+ }
+ // Run animation.
+ final List<ViewPropertyValueHolder> propertyValuesAfterAnimation = new ArrayList<>();
+ propertyValuesAfterAnimation.addAll(mPropertyValuesAfterAnimation);
+ mAnimatorSet = new AnimatorSet();
+ mAnimatorSet.playTogether(animators);
+ mAnimatorSet.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animator) {
+ if (DEBUG) dumpChildren("onRowAnimationEndBefore");
+ mAnimatorSet = null;
+ // The property values which are different from the end values and need to be
+ // changed after the animation are set here.
+ // e.g. setting translationY to 0, alpha of the contents view to 1.
+ for (ViewPropertyValueHolder holder : propertyValuesAfterAnimation) {
+ holder.property.set(holder.view, holder.value);
+ }
+ oldTitleView.setVisibility(View.VISIBLE);
+ mMenuRowViews.get(oldPosition).onDeselected();
+ mMenuRowViews.get(position).onSelected(true);
+ mTempTitleViewForOld.setVisibility(View.GONE);
+ mTempTitleViewForCurrent.setVisibility(View.GONE);
+ layout(mMenuView.getLeft(), mMenuView.getTop(), mMenuView.getRight(),
+ mMenuView.getBottom());
+ if (DEBUG) dumpChildren("onRowAnimationEndAfter");
+
+ MenuRow currentRow = mMenuRows.get(position);
+ if (currentRow.hideTitleWhenSelected()) {
+ View titleView = mMenuRowViews.get(position).getTitleView();
+ mTitleFadeOutAnimator = createAlphaAnimator(titleView, titleView.getAlpha(),
+ 0.0f, mLinearOutSlowIn);
+ mTitleFadeOutAnimator.setStartDelay(TITLE_SHOW_DURATION_BEFORE_HIDDEN_MS);
+ mTitleFadeOutAnimator.addListener(new AnimatorListenerAdapter() {
+ private boolean mCanceled;
+
+ @Override
+ public void onAnimationCancel(Animator animator) {
+ mCanceled = true;
+ }
+
+ @Override
+ public void onAnimationEnd(Animator animator) {
+ mTitleFadeOutAnimator = null;
+ if (!mCanceled) {
+ mMenuRowViews.get(position).onSelected(false);
+ }
+ }
+ });
+ mTitleFadeOutAnimator.start();
+ }
+ }
+ });
+ mAnimatorSet.start();
+ if (DEBUG) dumpChildren("startedRowAnimation()");
+ }
+
+ private void setTempTitleView(TextView dest, TextView src) {
+ dest.setVisibility(View.VISIBLE);
+ dest.setText(src.getText());
+ dest.setTranslationY(0.0f);
+ if (src.getVisibility() == View.VISIBLE) {
+ dest.setAlpha(src.getAlpha());
+ dest.setScaleX(src.getScaleX());
+ dest.setScaleY(src.getScaleY());
+ } else {
+ dest.setAlpha(0.0f);
+ dest.setScaleX(1.0f);
+ dest.setScaleY(1.0f);
+ }
+ View parent = (View) src.getParent();
+ dest.setLeft(src.getLeft() + parent.getLeft());
+ dest.setRight(src.getRight() + parent.getLeft());
+ dest.setTop(src.getTop() + parent.getTop());
+ dest.setBottom(src.getBottom() + parent.getTop());
+ }
+
+ /**
+ * Called when the menu row information is updated. The add/remove animation of the row views
+ * will be started.
+ *
+ * <p>Note that the current row should not be removed.
+ */
+ public void onMenuRowUpdated() {
+ if (mMenuView.getVisibility() != View.VISIBLE) {
+ int count = mMenuRowViews.size();
+ for (int i = 0; i < count; ++i) {
+ mMenuRowViews.get(i).setVisibility(mMenuRows.get(i).isVisible() ? View.VISIBLE
+ : View.GONE);
+ }
+ return;
+ }
+
+ List<Integer> addedRowViews = new ArrayList<>();
+ List<Integer> removedRowViews = new ArrayList<>();
+ Map<Integer, Integer> offsetsToMove = new HashMap<>();
+ int added = 0;
+ for (int i = mSelectedPosition - 1; i >= 0; --i) {
+ MenuRow row = mMenuRows.get(i);
+ MenuRowView view = mMenuRowViews.get(i);
+ if (row.isVisible() && (view.getVisibility() == View.GONE
+ || mRemovingRowViews.contains(i))) {
+ // Removing rows are still VISIBLE.
+ addedRowViews.add(i);
+ ++added;
+ } else if (!row.isVisible() && view.getVisibility() == View.VISIBLE) {
+ removedRowViews.add(i);
+ --added;
+ } else if (added != 0) {
+ offsetsToMove.put(i, -added);
+ }
+ }
+ added = 0;
+ int count = mMenuRowViews.size();
+ for (int i = mSelectedPosition + 1; i < count; ++i) {
+ MenuRow row = mMenuRows.get(i);
+ MenuRowView view = mMenuRowViews.get(i);
+ if (row.isVisible() && (view.getVisibility() == View.GONE
+ || mRemovingRowViews.contains(i))) {
+ // Removing rows are still VISIBLE.
+ addedRowViews.add(i);
+ ++added;
+ } else if (!row.isVisible() && view.getVisibility() == View.VISIBLE) {
+ removedRowViews.add(i);
+ --added;
+ } else if (added != 0) {
+ offsetsToMove.put(i, added);
+ }
+ }
+ if (addedRowViews.size() == 0 && removedRowViews.size() == 0) {
+ return;
+ }
+
+ if (mAnimatorSet != null) {
+ // Do not cancel the animation here. The property values should be set to the end values
+ // when the animation finishes.
+ mAnimatorSet.end();
+ }
+ if (mTitleFadeOutAnimator != null) {
+ mTitleFadeOutAnimator.end();
+ }
+ mPropertyValuesAfterAnimation.clear();
+ List<Animator> animators = new ArrayList<>();
+ List<Rect> layouts = getViewLayouts(mMenuView.getLeft(), mMenuView.getTop(),
+ mMenuView.getRight(), mMenuView.getBottom(), addedRowViews, removedRowViews);
+ for (int position : addedRowViews) {
+ MenuRowView view = mMenuRowViews.get(position);
+ view.setVisibility(View.VISIBLE);
+ Rect rect = layouts.get(position);
+ // TODO: The animation is not visible when it is shown for the first time. Need to find
+ // a better way to resolve this issue.
+ view.layout(rect.left, rect.top, rect.right, rect.bottom);
+ View titleView = view.getTitleView();
+ MarginLayoutParams params = (MarginLayoutParams) titleView.getLayoutParams();
+ titleView.layout(view.getPaddingLeft() + params.leftMargin,
+ view.getPaddingTop() + params.topMargin,
+ rect.right - rect.left - view.getPaddingRight() - params.rightMargin,
+ rect.bottom - rect.top - view.getPaddingBottom() - params.bottomMargin);
+ animators.add(createAlphaAnimator(view, 0.0f, 1.0f, mFastOutLinearIn));
+ }
+ for (int position : removedRowViews) {
+ MenuRowView view = mMenuRowViews.get(position);
+ animators.add(createAlphaAnimator(view, 1.0f, 0.0f, 1.0f, mLinearOutSlowIn));
+ }
+ for (Entry<Integer, Integer> entry : offsetsToMove.entrySet()) {
+ MenuRowView view = mMenuRowViews.get(entry.getKey());
+ animators.add(createTranslationYAnimator(view, 0, entry.getValue() * mRowTitleHeight));
+ }
+ // Run animation.
+ final List<ViewPropertyValueHolder> propertyValuesAfterAnimation = new ArrayList<>();
+ propertyValuesAfterAnimation.addAll(mPropertyValuesAfterAnimation);
+ mRemovingRowViews.clear();
+ mRemovingRowViews.addAll(removedRowViews);
+ mAnimatorSet = new AnimatorSet();
+ mAnimatorSet.playTogether(animators);
+ mAnimatorSet.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ mAnimatorSet = null;
+ // The property values which are different from the end values and need to be
+ // changed after the animation are set here.
+ // e.g. setting translationY to 0, alpha of the contents view to 1.
+ for (ViewPropertyValueHolder holder : propertyValuesAfterAnimation) {
+ holder.property.set(holder.view, holder.value);
+ }
+ for (int position : mRemovingRowViews) {
+ mMenuRowViews.get(position).setVisibility(View.GONE);
+ }
+ layout(mMenuView.getLeft(), mMenuView.getTop(), mMenuView.getRight(),
+ mMenuView.getBottom());
+ }
+ });
+ mAnimatorSet.start();
+ if (DEBUG) dumpChildren("onMenuRowUpdated()");
+ }
+
+ private ObjectAnimator createTranslationYAnimator(View view, float from, float to) {
+ ObjectAnimator animator = ObjectAnimator.ofFloat(view, View.TRANSLATION_Y, from, to);
+ animator.setDuration(mRowAnimationDuration);
+ animator.setInterpolator(mFastOutSlowIn);
+ mPropertyValuesAfterAnimation.add(new ViewPropertyValueHolder(View.TRANSLATION_Y, view, 0));
+ return animator;
+ }
+
+ private ObjectAnimator createAlphaAnimator(View view, float from, float to,
+ TimeInterpolator interpolator) {
+ ObjectAnimator animator = ObjectAnimator.ofFloat(view, View.ALPHA, from, to);
+ animator.setDuration(mRowAnimationDuration);
+ animator.setInterpolator(interpolator);
+ return animator;
+ }
+
+ private ObjectAnimator createAlphaAnimator(View view, float from, float to, float end,
+ TimeInterpolator interpolator) {
+ ObjectAnimator animator = ObjectAnimator.ofFloat(view, View.ALPHA, from, to);
+ animator.setDuration(mRowAnimationDuration);
+ animator.setInterpolator(interpolator);
+ mPropertyValuesAfterAnimation.add(new ViewPropertyValueHolder(View.ALPHA, view, end));
+ return animator;
+ }
+
+ private ObjectAnimator createScaleXAnimator(View view, float from, float to) {
+ ObjectAnimator animator = ObjectAnimator.ofFloat(view, View.SCALE_X, from, to);
+ animator.setDuration(mRowAnimationDuration);
+ animator.setInterpolator(mFastOutSlowIn);
+ return animator;
+ }
+
+ private ObjectAnimator createScaleYAnimator(View view, float from, float to) {
+ ObjectAnimator animator = ObjectAnimator.ofFloat(view, View.SCALE_Y, from, to);
+ animator.setDuration(mRowAnimationDuration);
+ animator.setInterpolator(mFastOutSlowIn);
+ return animator;
+ }
+
+ /**
+ * Returns the current position.
+ */
+ public int getSelectedPosition() {
+ return mSelectedPosition;
+ }
+
+ private static final class ViewPropertyValueHolder {
+ public Property<View, Float> property;
+ public View view;
+ public float value;
+
+ public ViewPropertyValueHolder(Property<View, Float> property, View view, float value) {
+ this.property = property;
+ this.view = view;
+ this.value = value;
+ }
+ }
+
+ /**
+ * Called when the menu becomes visible.
+ */
+ public void onMenuShow() {
+ }
+
+ /**
+ * Called when the menu becomes hidden.
+ */
+ public void onMenuHide() {
+ if (mAnimatorSet != null) {
+ mAnimatorSet.end();
+ mAnimatorSet = null;
+ }
+ // Should be finished after the animator set.
+ if (mTitleFadeOutAnimator != null) {
+ mTitleFadeOutAnimator.end();
+ mTitleFadeOutAnimator = null;
+ }
+ }
+}
diff --git a/src/com/android/tv/menu/MenuRow.java b/src/com/android/tv/menu/MenuRow.java
index 38cda0bf..fe73edd2 100644
--- a/src/com/android/tv/menu/MenuRow.java
+++ b/src/com/android/tv/menu/MenuRow.java
@@ -18,8 +18,6 @@ package com.android.tv.menu;
import android.content.Context;
-import com.android.tv.MainActivity;
-
/**
* A base class of the item which will be displayed in the main menu.
* It contains the data such as title to represent a row.
@@ -30,15 +28,17 @@ public abstract class MenuRow {
private final Context mContext;
private final String mTitle;
private final int mHeight;
+ private final Menu mMenu;
// TODO: Check if the heightResId is really necessary.
- public MenuRow(Context context, int titleResId, int heightResId) {
- this(context, context.getString(titleResId), heightResId);
+ public MenuRow(Context context, Menu menu, int titleResId, int heightResId) {
+ this(context, menu, context.getString(titleResId), heightResId);
}
- public MenuRow(Context context, String title, int heightResId) {
+ public MenuRow(Context context, Menu menu, String title, int heightResId) {
mContext = context;
mTitle = title;
+ mMenu = menu;
mHeight = context.getResources().getDimensionPixelSize(heightResId);
}
@@ -49,8 +49,11 @@ public abstract class MenuRow {
return mContext;
}
- protected MainActivity getMainActivity() {
- return (MainActivity) mContext;
+ /**
+ * Returns the menu object.
+ */
+ public Menu getMenu() {
+ return mMenu;
}
/**
@@ -96,4 +99,21 @@ public abstract class MenuRow {
* Returns the ID of this row. This ID is used to select the row in the main menu.
*/
abstract public String getId();
+
+ /**
+ * This method is called when recent channels are changed.
+ */
+ public void onRecentChannelsChanged() { }
+
+ /**
+ * This method is called when stream information is changed.
+ */
+ public void onStreamInfoChanged() { }
+
+ /**
+ * Returns whether to hide the title when the row is selected.
+ */
+ public boolean hideTitleWhenSelected() {
+ return false;
+ }
}
diff --git a/src/com/android/tv/menu/MenuRowFactory.java b/src/com/android/tv/menu/MenuRowFactory.java
new file mode 100644
index 00000000..b0b000f1
--- /dev/null
+++ b/src/com/android/tv/menu/MenuRowFactory.java
@@ -0,0 +1,118 @@
+/*
+ * 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.menu;
+
+import android.content.Context;
+import android.support.annotation.Nullable;
+import android.text.TextUtils;
+
+import com.android.tv.MainActivity;
+import com.android.tv.R;
+import com.android.tv.customization.CustomAction;
+import com.android.tv.customization.TvCustomizationManager;
+
+import java.util.List;
+
+/**
+ * A factory class to create menu rows.
+ */
+public class MenuRowFactory {
+ private final MainActivity mMainActivity;
+ private final TvCustomizationManager mTvCustomizationManager;
+
+ /**
+ * A constructor.
+ */
+ public MenuRowFactory(MainActivity mainActivity) {
+ mMainActivity = mainActivity;
+ mTvCustomizationManager = new TvCustomizationManager(mainActivity);
+ mTvCustomizationManager.initialize();
+ }
+
+ /**
+ * Creates an object corresponding to the given {@code key}.
+ */
+ @Nullable
+ public MenuRow createMenuRow(Menu menu, Class<?> key) {
+ if (PlayControlsRow.class.equals(key)) {
+ return new PlayControlsRow(mMainActivity, menu, mMainActivity.getTimeShiftManager());
+ } else if (ChannelsRow.class.equals(key)) {
+ return new ChannelsRow(mMainActivity, menu, mMainActivity.getProgramDataManager());
+ } else if (PartnerRow.class.equals(key)) {
+ List<CustomAction> customActions = mTvCustomizationManager.getCustomActions(
+ TvCustomizationManager.ID_PARTNER_ROW);
+ String title = mTvCustomizationManager.getPartnerRowTitle();
+ if (customActions != null && !TextUtils.isEmpty(title)) {
+ return new PartnerRow(mMainActivity, menu, title, customActions);
+ }
+ return null;
+ } else if (TvOptionsRow.class.equals(key)) {
+ return new TvOptionsRow(mMainActivity, menu, mTvCustomizationManager
+ .getCustomActions(TvCustomizationManager.ID_OPTIONS_ROW));
+ } else if (PipOptionsRow.class.equals(key)) {
+ return new PipOptionsRow(mMainActivity, menu);
+ }
+ return null;
+ }
+
+ /**
+ * A menu row which represents the TV options row.
+ */
+ public static class TvOptionsRow extends ItemListRow {
+ private TvOptionsRow(Context context, Menu menu, List<CustomAction> customActions) {
+ super(context, menu, R.string.menu_title_options, R.dimen.action_card_height,
+ new TvOptionsRowAdapter(context, customActions));
+ }
+
+ @Override
+ public void onStreamInfoChanged() {
+ if (getMenu().isActive()) {
+ update();
+ }
+ }
+ }
+
+ /**
+ * A menu row which represents the PIP options row.
+ */
+ public static class PipOptionsRow extends ItemListRow {
+ private final MainActivity mMainActivity;
+
+ private PipOptionsRow(Context context, Menu menu) {
+ super(context, menu, R.string.menu_title_pip_options, R.dimen.action_card_height,
+ new PipOptionsRowAdapter(context));
+ mMainActivity = (MainActivity) context;
+ }
+
+ @Override
+ public boolean isVisible() {
+ // TODO: Remove the dependency on MainActivity.
+ return super.isVisible() && mMainActivity.isPipEnabled();
+ }
+ }
+
+ /**
+ * A menu row which represents the partner row.
+ */
+ public static class PartnerRow extends ItemListRow {
+ private PartnerRow(Context context, Menu menu, String title,
+ List<CustomAction> customActions) {
+ super(context, menu, title, R.dimen.action_card_height,
+ new PartnerOptionsRowAdapter(context, customActions));
+ }
+ }
+}
diff --git a/src/com/android/tv/menu/MenuRowView.java b/src/com/android/tv/menu/MenuRowView.java
index 31ab3d93..a6d8c990 100644
--- a/src/com/android/tv/menu/MenuRowView.java
+++ b/src/com/android/tv/menu/MenuRowView.java
@@ -20,7 +20,6 @@ import android.content.Context;
import android.content.res.Resources;
import android.graphics.Rect;
import android.support.annotation.NonNull;
-import android.support.v17.leanback.widget.VerticalGridView;
import android.util.AttributeSet;
import android.util.Log;
import android.util.TypedValue;
@@ -30,10 +29,10 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import com.android.tv.R;
-import com.android.tv.menu.MenuView.MenuShowReason;
+import com.android.tv.menu.Menu.MenuShowReason;
public abstract class MenuRowView extends LinearLayout {
- private static final String TAG = MenuRowView.class.getSimpleName();
+ private static final String TAG = "MenuRowView";
private static final boolean DEBUG = false;
/**
@@ -57,13 +56,9 @@ public abstract class MenuRowView extends LinearLayout {
private TextView mTitleView;
private View mContentsView;
- private MenuView mMenuView;
- private VerticalGridView mParentView;
- private boolean mIsSelected;
- private final float mTitleScaleSelected;
- private final float mTitleAlphaSelected;
- private final float mTitleAlphaDeselected;
+ private final float mTitleViewAlphaDeselected;
+ private final float mTitleViewScaleSelected;
/**
* The lastly focused view. It is used to keep the focus while navigating the menu rows and
@@ -79,6 +74,20 @@ public abstract class MenuRowView extends LinearLayout {
}
};
+ /**
+ * Returns the alpha value of the title view when it's deselected.
+ */
+ public float getTitleViewAlphaDeselected() {
+ return mTitleViewAlphaDeselected;
+ }
+
+ /**
+ * Returns the scale value of the title view when it's selected.
+ */
+ public float getTitleViewScaleSelected() {
+ return mTitleViewScaleSelected;
+ }
+
public MenuRowView(Context context) {
this(context, null);
}
@@ -93,26 +102,15 @@ public abstract class MenuRowView extends LinearLayout {
public MenuRowView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
-
- mTitleScaleSelected = getTitleScaleSelected();
- mTitleAlphaSelected = getTitleAlphaSelected();
+ Resources res = context.getResources();
TypedValue outValue = new TypedValue();
- context.getResources().getValue(
- R.dimen.menu_row_title_alpha_deselected, outValue, true);
- mTitleAlphaDeselected = outValue.getFloat();
- }
-
- protected float getTitleScaleSelected() {
- Resources res = getContext().getResources();
- int textSizeSelected =
+ res.getValue(R.dimen.menu_row_title_alpha_deselected, outValue, true);
+ mTitleViewAlphaDeselected = outValue.getFloat();
+ float textSizeSelected =
res.getDimensionPixelSize(R.dimen.menu_row_title_text_size_selected);
- int textSizeDeselected =
+ float textSizeDeselected =
res.getDimensionPixelSize(R.dimen.menu_row_title_text_size_deselected);
- return (float) textSizeSelected / textSizeDeselected;
- }
-
- protected float getTitleAlphaSelected() {
- return 1.0f;
+ mTitleViewScaleSelected = textSizeSelected / textSizeDeselected;
}
@Override
@@ -125,6 +123,11 @@ public abstract class MenuRowView extends LinearLayout {
if (mContentsView instanceof ViewGroup) {
setOnFocusChangeListenerToChildren((ViewGroup) mContentsView);
}
+ // Make contents view invisible in order that the view participates in the initial layout.
+ // The visibility is set to GONE after the first layout finishes.
+ // If not, we can't see the contents view animation for the first time it is shown.
+ // TODO: Find a better way to resolve this issue.
+ mContentsView.setVisibility(INVISIBLE);
}
private void setOnFocusChangeListenerToChildren(ViewGroup parent) {
@@ -142,15 +145,18 @@ public abstract class MenuRowView extends LinearLayout {
abstract protected int getContentsViewId();
- protected View getContentsView() {
- return mContentsView;
+ /**
+ * Returns the title view.
+ */
+ public final TextView getTitleView() {
+ return mTitleView;
}
- @Override
- public void onAttachedToWindow() {
- super.onAttachedToWindow();
- updateView(mParentView.getChildAdapterPosition(this) == mParentView.getSelectedPosition()
- ? ANIM_NONE_SELECTED : ANIM_NONE_DESELECTED);
+ /**
+ * Returns the contents view.
+ */
+ public final View getContentsView() {
+ return mContentsView;
}
/**
@@ -164,143 +170,19 @@ public abstract class MenuRowView extends LinearLayout {
mLastFocusView = null;
}
- private void updateView(int animationType) {
- boolean isSelected = animationType == ANIM_SELECTED || animationType == ANIM_NONE_SELECTED;
- if (mIsSelected && isSelected) {
- // Prevent from selected again so later calls to {@link updateView} cancels animation.
- return;
- }
- mIsSelected = isSelected;
- updateRowView(animationType);
- updateTitleView(animationType);
- }
-
- private void updateRowView(int animationType) {
- mContentsView.animate().cancel();
- mContentsView.setAlpha(1f);
- switch (animationType) {
- case ANIM_NONE_SELECTED: {
- mContentsView.setVisibility(View.VISIBLE);
- break;
- }
- case ANIM_NONE_DESELECTED: {
- mContentsView.setVisibility(View.GONE);
- break;
- }
- case ANIM_SELECTED: {
- mContentsView.setVisibility(View.VISIBLE);
- mContentsView.setAlpha(0f);
- mContentsView.animate()
- .alpha(1f)
- .setDuration(getMenuView().getRowSelectionAnimationDurationMs())
- .withLayer();
- break;
- }
- case ANIM_DESELECTED: {
- mContentsView.setVisibility(View.GONE);
- break;
- }
- }
- }
-
- private void updateTitleView(int animationType) {
- boolean withAnimation = animationType == ANIM_SELECTED || animationType == ANIM_DESELECTED;
- int duration = withAnimation ? getMenuView().getRowSelectionAnimationDurationMs() : 0;
-
- mTitleView.animate().cancel();
- switch (animationType) {
- case ANIM_SELECTED:
- mTitleView.animate()
- .alpha(mTitleAlphaSelected)
- .scaleX(mTitleScaleSelected)
- .scaleY(mTitleScaleSelected)
- .setDuration(duration)
- .withLayer();
- break;
- case ANIM_NONE_SELECTED:
- mTitleView.setAlpha(mTitleAlphaSelected);
- mTitleView.setScaleX(mTitleScaleSelected);
- mTitleView.setScaleY(mTitleScaleSelected);
- break;
- case ANIM_DESELECTED:
- mTitleView.animate()
- .alpha(mTitleAlphaDeselected)
- .scaleX(1f)
- .scaleY(1f)
- .setDuration(duration)
- .withLayer();
- break;
- case ANIM_NONE_DESELECTED:
- mTitleView.setAlpha(mTitleAlphaDeselected);
- mTitleView.setScaleX(1f);
- mTitleView.setScaleY(1f);
- break;
- }
- }
-
- /**
- * Updates the view contents.
- * This method is called when the row is selected.
- */
- public void updateView(boolean withAnimation) {
- int position = mParentView.getChildAdapterPosition(this);
- int selectedPosition = mParentView.getSelectedPosition();
- int animationType = ANIM_NONE_DESELECTED;
- if (withAnimation) {
- boolean scrollUp = mMenuView.getPreviousSelectedPosition() > selectedPosition;
- switch (position - selectedPosition) {
- case -2:
- animationType = ANIM_NONE_DESELECTED;
- break;
- case -1:
- animationType = scrollUp ? ANIM_NONE_DESELECTED : ANIM_DESELECTED;
- break;
- case 0:
- animationType = ANIM_SELECTED;
- break;
- case 1:
- animationType = scrollUp ? ANIM_DESELECTED : ANIM_NONE_DESELECTED;
- break;
- case 2:
- animationType = ANIM_NONE_DESELECTED;
- break;
- }
- } else {
- animationType = (position == selectedPosition)
- ? ANIM_NONE_SELECTED : ANIM_NONE_DESELECTED;
- }
- updateView(animationType);
- }
-
- protected MenuView getMenuView() {
- return mMenuView;
- }
-
- public void setMenuView(MenuView view) {
- mMenuView = view;
- }
-
- public void setParentView(VerticalGridView view) {
- mParentView = view;
+ protected Menu getMenu() {
+ return mRow == null ? null : mRow.getMenu();
}
public void onBind(MenuRow row) {
if (DEBUG) Log.d(TAG, "onBind: row=" + row);
mRow = row;
mTitleView.setText(row.getTitle());
-
- // mListView includes paddings to avoid an artifact while alpha animation.
- // See res/layout/item_list.xml for more information.
- ViewGroup.LayoutParams lp = mContentsView.getLayoutParams();
- lp.height = row.getHeight() + mMenuView.getItemPaddingHeight()
- - getContext().getResources().getDimensionPixelSize(
- R.dimen.menu_list_margin_bottom);
}
@Override
protected boolean onRequestFocusInDescendants(int direction, Rect previouslyFocusedRect) {
// Expand view here so initial focused item can be shown.
- updateView(ANIM_SELECTED);
return getInitialFocusView().requestFocus();
}
@@ -337,4 +219,41 @@ public abstract class MenuRowView extends LinearLayout {
public String getRowId() {
return mRow == null ? null : mRow.getId();
}
+
+ /**
+ * Called when this row is selected.
+ *
+ * @param showTitle If {@code true}, the title is not hidden immediately after the row is
+ * selected even though hideTitleWhenSelected() is {@code true}.
+ */
+ public void onSelected(boolean showTitle) {
+ if (mRow.hideTitleWhenSelected() && !showTitle) {
+ // Title view should participate in the layout even though it is not visible.
+ mTitleView.setVisibility(INVISIBLE);
+ } else {
+ mTitleView.setVisibility(VISIBLE);
+ mTitleView.setAlpha(1.0f);
+ mTitleView.setScaleX(mTitleViewScaleSelected);
+ mTitleView.setScaleY(mTitleViewScaleSelected);
+ }
+ mContentsView.setVisibility(VISIBLE);
+ }
+
+ /**
+ * Called when this row is deselected.
+ */
+ public void onDeselected() {
+ mTitleView.setVisibility(VISIBLE);
+ mTitleView.setAlpha(mTitleViewAlphaDeselected);
+ mTitleView.setScaleX(1.0f);
+ mTitleView.setScaleY(1.0f);
+ mContentsView.setVisibility(GONE);
+ }
+
+ /**
+ * Returns the preferred height of the contents view. The top/bottom padding is excluded.
+ */
+ public int getPreferredContentsHeight() {
+ return mRow.getHeight();
+ }
}
diff --git a/src/com/android/tv/menu/MenuView.java b/src/com/android/tv/menu/MenuView.java
index 92243e13..df91ddf3 100644
--- a/src/com/android/tv/menu/MenuView.java
+++ b/src/com/android/tv/menu/MenuView.java
@@ -16,129 +16,35 @@
package com.android.tv.menu;
-import android.animation.Animator;
-import android.animation.AnimatorInflater;
-import android.animation.AnimatorListenerAdapter;
import android.content.Context;
-import android.content.res.Resources;
-import android.support.annotation.IntDef;
-import android.support.v17.leanback.widget.OnChildSelectedListener;
-import android.support.v17.leanback.widget.VerticalGridView;
-import android.support.v7.widget.RecyclerView;
-import android.text.TextUtils;
+import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
-import android.view.ViewGroup;
+import android.view.ViewParent;
+import android.view.ViewTreeObserver.OnGlobalFocusChangeListener;
import android.widget.FrameLayout;
-import android.widget.OverScroller;
-import com.android.tv.ChannelTuner;
-import com.android.tv.MainActivity;
-import com.android.tv.R;
-import com.android.tv.TvApplication;
-import com.android.tv.analytics.DurationTimer;
-import com.android.tv.analytics.Tracker;
-import com.android.tv.customization.CustomAction;
-import com.android.tv.customization.TvCustomizationManager;
-import com.android.tv.data.Channel;
+import com.android.tv.menu.Menu.MenuShowReason;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
/**
- * A subclass of VerticalGridView that shows TV main menu.
+ * A view that represents TV main menu.
*/
-public class MenuView extends FrameLayout implements OnChildSelectedListener {
- static final String TAG = "MenuView";
+public class MenuView extends FrameLayout implements IMenuView {
+ static final String TAG = MenuView.class.getSimpleName();
static final boolean DEBUG = false;
- // TODO: Change the status to STATUS_NONE when the animation for STATUS_CHILD_SELECTING
- // is ended.
- public static final int STATUS_CHILD_SELECTING = 3;
- public static final String SCREEN_NAME = "Menu";
-
- @Retention(RetentionPolicy.SOURCE)
- @IntDef({REASON_NONE, REASON_GUIDE, REASON_PLAY_CONTROLS_PLAY, REASON_PLAY_CONTROLS_PAUSE,
- REASON_PLAY_CONTROLS_PLAY_PAUSE, REASON_PLAY_CONTROLS_REWIND,
- REASON_PLAY_CONTROLS_FAST_FORWARD, REASON_PLAY_CONTROLS_JUMP_TO_PREVIOUS,
- REASON_PLAY_CONTROLS_JUMP_TO_NEXT})
- public @interface MenuShowReason {}
- public static final int REASON_NONE = 0;
- public static final int REASON_GUIDE = 1;
- public static final int REASON_PLAY_CONTROLS_PLAY = 2;
- public static final int REASON_PLAY_CONTROLS_PAUSE = 3;
- public static final int REASON_PLAY_CONTROLS_PLAY_PAUSE = 4;
- public static final int REASON_PLAY_CONTROLS_REWIND = 5;
- public static final int REASON_PLAY_CONTROLS_FAST_FORWARD = 6;
- public static final int REASON_PLAY_CONTROLS_JUMP_TO_PREVIOUS = 7;
- public static final int REASON_PLAY_CONTROLS_JUMP_TO_NEXT = 8;
-
- public static final List<String> sRowIdListForReason = new ArrayList<>();
- static {
- sRowIdListForReason.add(null); // REASON_NONE
- sRowIdListForReason.add(ChannelsRow.ID); // REASON_GUIDE
- sRowIdListForReason.add(PlayControlsRow.ID); // REASON_PLAY_CONTROLS_PLAY
- sRowIdListForReason.add(PlayControlsRow.ID); // REASON_PLAY_CONTROLS_PAUSE
- sRowIdListForReason.add(PlayControlsRow.ID); // REASON_PLAY_CONTROLS_PLAY_PAUSE
- sRowIdListForReason.add(PlayControlsRow.ID); // REASON_PLAY_CONTROLS_REWIND
- sRowIdListForReason.add(PlayControlsRow.ID); // REASON_PLAY_CONTROLS_FAST_FORWARD
- sRowIdListForReason.add(PlayControlsRow.ID); // REASON_PLAY_CONTROLS_JUMP_TO_PREVIOUS
- sRowIdListForReason.add(PlayControlsRow.ID); // REASON_PLAY_CONTROLS_JUMP_TO_NEXT
- }
-
private final LayoutInflater mLayoutInflater;
- private VerticalGridView mMenuList;
- private final MenuAdapter mAdapter = new MenuAdapter();
- private ChannelTuner mChannelTuner;
- private int mPreviousSelectedPosition;
-
- private Runnable mPreShowRunnable;
- private Runnable mPostHideRunnable;
-
- private final Animator mShowAnimator;
- private final Animator mHideAnimator;
- private final int mMenuHeight;
- private final int mMenuRowTitleHeight;
- private final int mMenuRowPaddingHeight;
- private final long mShowDurationMillis;
- private final int mRowSelectionAnimationDurationMs;
- private final OverScroller mScroller;
- private final DurationTimer mVisibleTimer = new DurationTimer();
-
- private ChannelsRow mChannelsRow;
-
- private Tracker mTracker;
-
- private boolean mKeepVisible;
- @MenuShowReason private int mShowReason = REASON_NONE;
+ private final List<MenuRow> mMenuRows = new ArrayList<>();
+ private final List<MenuRowView> mMenuRowViews = new ArrayList<>();
- private final Runnable mHideRunnable = new Runnable() {
- @Override
- public void run() {
- hide(true);
- }
- };
-
- private final ChannelTuner.Listener mChannelTunerListener = new ChannelTuner.Listener() {
- @Override
- public void onLoadFinished() {}
-
- @Override
- public void onBrowsableChannelListChanged() {
- update();
- }
-
- @Override
- public void onCurrentChannelUnavailable(Channel channel) {}
+ @MenuShowReason private int mShowReason = Menu.REASON_NONE;
- @Override
- public void onChannelChanged(Channel previousChannel, Channel currentChannel) {}
- };
+ private final MenuLayoutManager mLayoutManager;
public MenuView(Context context) {
this(context, null, 0);
@@ -150,516 +56,197 @@ public class MenuView extends FrameLayout implements OnChildSelectedListener {
public MenuView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
-
mLayoutInflater = LayoutInflater.from(context);
- mShowAnimator = AnimatorInflater.loadAnimator(context, R.animator.menu_enter);
- mShowAnimator.setTarget(this);
- mHideAnimator = AnimatorInflater.loadAnimator(context, R.animator.menu_exit);
- mHideAnimator.addListener(new AnimatorListenerAdapter() {
+ getViewTreeObserver().addOnGlobalFocusChangeListener(new OnGlobalFocusChangeListener() {
@Override
- public void onAnimationEnd(Animator animation) {
- // Animation is still in running state at this point.
- hideInternal();
+ public void onGlobalFocusChanged(View oldFocus, View newFocus) {
+ MenuRowView newParent = getParentMenuRowView(newFocus);
+ if (newParent != null) {
+ if (DEBUG) Log.d(TAG, "Focus changed to " + newParent);
+ // When the row is selected, the row view itself has the focus because the row
+ // is collapsed. To make the child of the row have the focus, requestFocus()
+ // should be called again after the row is expanded. It's done in
+ // setSelectedPosition().
+ setSelectedPositionSmooth(mMenuRowViews.indexOf(newParent));
+ }
}
});
- mHideAnimator.setTarget(this);
-
- Resources res = context.getResources();
- mShowDurationMillis = res.getInteger(R.integer.menu_show_duration);
- mMenuHeight = res.getDimensionPixelSize(R.dimen.menu_height);
- mMenuRowTitleHeight = res.getDimensionPixelSize(R.dimen.menu_row_title_height);
- mMenuRowPaddingHeight = res.getDimensionPixelOffset(R.dimen.menu_list_padding_top)
- + res.getDimensionPixelOffset(R.dimen.menu_list_padding_bottom)
- + res.getDimensionPixelOffset(R.dimen.menu_list_margin_top);
- mRowSelectionAnimationDurationMs =
- res.getInteger(R.integer.menu_row_selection_anim_duration);
-
- mScroller = new OverScroller(context);
+ mLayoutManager = new MenuLayoutManager(context, this);
}
- private MainActivity getMainActivity() {
- return (MainActivity) getContext();
- }
-
- /**
- * This method will be called from MainActivity.onStart()
- */
- public void onStart() {
- Context context = getContext();
-
- // Menu list(VerticalGridView) should be refreshed to forget the previous status.
- // If not, mMenuList.setSelectedPosition() would not work properly.
- mAdapter.notifyDataSetChanged();
-
- MainActivity mainActivity = getMainActivity();
- mTracker= ((TvApplication) mainActivity.getApplication()).getTracker();
-
- // Build menu rows
- TvCustomizationManager manager = mainActivity.getTvCustomizationManager();
- List<MenuRow> itemList = new ArrayList<>();
- itemList.add(new PlayControlsRow(context));
- itemList.add(mChannelsRow = new ChannelsRow(context));
- List<CustomAction> customActions =
- manager.getCustomActions(TvCustomizationManager.ID_PARTNER_ROW);
- String title = manager.getPartnerRowTitle();
- if (customActions != null && !TextUtils.isEmpty(title)) {
- itemList.add(new PartnerRow(context, title, customActions));
+ @Override
+ public void setMenuRows(List<MenuRow> menuRows) {
+ mMenuRows.clear();
+ mMenuRows.addAll(menuRows);
+ for (MenuRow row : menuRows) {
+ MenuRowView view = createMenuRowView(row);
+ mMenuRowViews.add(view);
+ addView(view);
}
- itemList.add(new TvOptionsRow(
- context, manager.getCustomActions(TvCustomizationManager.ID_OPTIONS_ROW)));
- itemList.add(new PipOptionsRow(context));
-
- mAdapter.setItemList(itemList);
+ mLayoutManager.setMenuRowsAndViews(mMenuRows, mMenuRowViews);
}
- /**
- * This method will be called from MainActivity.onStop()
- */
- public void onStop() {
- mAdapter.resetItemList();
- }
-
- /**
- * This method will be called when channels are updated.
- */
- public void onRecentChannelUpdated() {
- if (mChannelsRow != null) {
- mChannelsRow.onRecentChannelUpdated();
- }
+ private MenuRowView createMenuRowView(MenuRow row) {
+ MenuRowView view = (MenuRowView) mLayoutInflater.inflate(row.getLayoutResId(), this, false);
+ view.onBind(row);
+ return view;
}
@Override
- protected void onFinishInflate() {
- mMenuList = (VerticalGridView) findViewById(R.id.menu_list);
- mMenuList.setOnChildSelectedListener(this);
- mMenuList.setScrollEnabled(false);
- mMenuList.setAdapter(mAdapter);
- // TODO: Use alignment features of GridView once the bugs of the features are fixed.
- // NOTE: There's a problem that the menu jumps up/down, if a row whose position is less than
- // the selected position is inserted or removed while the menu is displayed.
- // The reason is because we use OverScroller to scroll the rows.
- }
-
- public void setPreShowCallback(Runnable preShowRunnable) {
- mPreShowRunnable = preShowRunnable;
- }
-
- public void setPostHideCallback(Runnable postHideRunnable) {
- mPostHideRunnable = postHideRunnable;
- }
-
- public boolean isActive() {
- return getVisibility() == View.VISIBLE && !isHiding();
+ protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+ mLayoutManager.layout(left, top, right, bottom);
}
- public boolean isHiding() {
- return mHideAnimator.isStarted();
- }
-
- /**
- * Returns the padding to the height of the item.
- *
- * <p>It is used to calculate the exact height of the item.
- */
- public int getItemPaddingHeight() {
- return mMenuRowPaddingHeight;
- }
-
- /**
- * Shows the main menu.
- *
- * @param reason A reason why this is called. See {@link MenuShowReason}
- */
- public void show(@MenuShowReason int reason) {
- if (DEBUG) Log.d(TAG, "show reason:" + reason);
- mTracker.sendShowMenu();
- mVisibleTimer.start();
- mShowReason = reason;
- if (isHiding()) {
- mHideAnimator.end();
+ @Override
+ public void onShow(@MenuShowReason int reason, String rowIdToSelect,
+ final Runnable runnableAfterShow) {
+ if (DEBUG) {
+ Log.d(TAG, "onShow(reason=" + reason + ", rowIdToSelect=" + rowIdToSelect + ")");
}
- String rowIdToSelect = sRowIdListForReason.get(reason);
- if (getVisibility() == View.VISIBLE) {
+ mShowReason = reason;
+ if (getVisibility() == VISIBLE) {
if (rowIdToSelect != null) {
- int position = mAdapter.getItemPosition(rowIdToSelect);
+ int position = getItemPosition(rowIdToSelect);
if (position >= 0) {
- for (int i = 0; i < mMenuList.getChildCount(); ++i) {
- MenuRowView rowView = (MenuRowView) mMenuList.getChildAt(i);
- if (rowIdToSelect.equals(rowView.getRowId())) {
- rowView.initialize(reason);
- break;
- }
- }
- mMenuList.setSelectedPosition(position);
- requestFocus();
+ MenuRowView rowView = mMenuRowViews.get(position);
+ rowView.initialize(reason);
+ setSelectedPosition(position);
}
}
return;
}
+ initializeChildren();
+ update(true);
if (rowIdToSelect == null) {
rowIdToSelect = ChannelsRow.ID;
}
- // The child row views need be initialized before they become visible.
- initializeChildren();
- setVisibility(View.VISIBLE);
- mTracker.sendScreenView(SCREEN_NAME);
- if (mPreShowRunnable != null) {
- mPreShowRunnable.run();
- }
- if (update()) {
- // To apply the row insertion or removal immediately,
- // notifyDataSetChanged need to be called after update.
- // If we don't call this, the intermediate state might be shown.
- mAdapter.notifyDataSetChanged();
- }
- int positionToSelect = mAdapter.getItemPosition(rowIdToSelect);
- resetSelectedItemPosition(positionToSelect);
+ int position = getItemPosition(rowIdToSelect);
+ setSelectedPosition(position);
+ // Change the visibility as late as possible to avoid the unnecessary animation.
+ setVisibility(VISIBLE);
+ // Make the selected row have the focus.
requestFocus();
-
- // Abort animation because the scroll animation can occur while updating the adapter above.
- mScroller.abortAnimation();
- setScrollY(getScrollPosition(positionToSelect));
- mShowAnimator.start();
- scheduleHide();
- }
-
- int getItemPositionY(int position) {
- return mMenuHeight - mMenuRowTitleHeight - mAdapter.getItemHeight(position);
- }
-
- private void initializeChildren() {
- for (int i = 0, count = mMenuList.getChildCount(); i < count; ++i) {
- MenuRowView rowView = (MenuRowView) mMenuList.getChildAt(i);
- rowView.initialize(mShowReason);
- }
- }
-
- private void resetSelectedItemPosition(int positionToSelect) {
- mPreviousSelectedPosition = positionToSelect;
- if (DEBUG) Log.d(TAG, "Row count of the main menu is " + mMenuList.getChildCount());
- /*
- * Must reset mMenuList's selected position after resetting selected position of child
- * ListView. Otherwise it can be changed while resetting child ListView.
- */
- mMenuList.setSelectedPosition(mPreviousSelectedPosition);
- for (int i = 0, count = mMenuList.getChildCount(); i < count; ++i) {
- MenuRowView rowView = (MenuRowView) mMenuList.getChildAt(i);
- if (DEBUG) {
- Log.d(TAG, "The child position of the row " + i + " is "
- + mMenuList.getChildAdapterPosition(rowView));
- }
- rowView.updateView(false);
+ if (runnableAfterShow != null) {
+ runnableAfterShow.run();
}
+ mLayoutManager.onMenuShow();
}
- public void hide(boolean withAnimation) {
- removeCallbacks(mHideRunnable);
- if (withAnimation) {
- if (!isHiding()) {
- mHideAnimator.start();
- }
- return;
- }
- if (isHiding()) {
- mHideAnimator.end();
- return;
- }
- hideInternal();
- }
-
- private void hideInternal() {
- if (getVisibility() == View.GONE) {
+ @Override
+ public void onHide() {
+ if (getVisibility() == GONE) {
return;
}
- mTracker.sendHideMenu(mVisibleTimer.reset());
- setVisibility(View.GONE);
- if (mPostHideRunnable != null) {
- mPostHideRunnable.run();
- }
- }
-
- public void scheduleHide() {
- removeCallbacks(mHideRunnable);
- if (!mKeepVisible) {
- postDelayed(mHideRunnable, mShowDurationMillis);
- }
+ mLayoutManager.onMenuHide();
+ setVisibility(GONE);
}
- /**
- * Called when the caller wants the main menu to be kept visible or not.
- * If {@code keepVisible} is set to {@code true}, the hide schedule doesn't close the main menu,
- * but calling {@link #hide} still hides it.
- * If {@code keepVisible} is set to {@code false}, the hide schedule works as usual.
- */
- public void setKeepVisible(boolean keepVisible) {
- mKeepVisible = keepVisible;
- if (mKeepVisible) {
- removeCallbacks(mHideRunnable);
- } else if (isActive()) {
- scheduleHide();
- }
- }
-
- public void setChannelTuner(ChannelTuner channelTuner) {
- if (mChannelTuner != null) {
- mChannelTuner.removeListener(mChannelTunerListener);
- }
- mChannelTuner = channelTuner;
- if (mChannelTuner != null) {
- mChannelTuner.addListener(mChannelTunerListener);
- }
- update();
- }
-
- /**
- * Updates the options row.
- */
- public void updateOptionsRow() {
- if (DEBUG) {
- Log.d(TAG, "update options row in main menu");
- }
- mAdapter.updateOptionsRow();
+ @Override
+ public boolean isVisible() {
+ return getVisibility() == VISIBLE;
}
- /**
- * Updates the adapter.
- *
- * <p>Returns <@code true> if the adapter has been changed, otherwise {@code false}.
- */
- public boolean update() {
- if (DEBUG) {
- Log.d(TAG, "update main menu");
+ @Override
+ public boolean update(boolean menuActive) {
+ if (menuActive) {
+ for (MenuRow row : mMenuRows) {
+ row.update();
+ }
+ mLayoutManager.onMenuRowUpdated();
+ return true;
}
- return mAdapter.update();
- }
-
- /**
- * Returns a duration of the animation when the row selection changes.
- */
- public int getRowSelectionAnimationDurationMs() {
- return mRowSelectionAnimationDurationMs;
+ return false;
}
@Override
- public void computeScroll() {
- super.computeScroll();
- if (mScroller.computeScrollOffset()) {
- setScrollY(mScroller.getCurrY());
- invalidate();
+ protected boolean onRequestFocusInDescendants(int direction, Rect previouslyFocusedRect) {
+ int selectedPosition = mLayoutManager.getSelectedPosition();
+ // When the menu shows up, the selected row should have focus.
+ if (selectedPosition >= 0 && selectedPosition < mMenuRowViews.size()) {
+ return mMenuRowViews.get(selectedPosition).requestFocus();
}
+ return super.onRequestFocusInDescendants(direction, previouslyFocusedRect);
}
- private boolean scrollYSmooth(int position) {
- int newScrollPosition = getScrollPosition(position);
- if (newScrollPosition == getScrollY()) {
- return false;
- }
- mScroller.startScroll(0, getScrollY(), 0, newScrollPosition - getScrollY(),
- mRowSelectionAnimationDurationMs);
- return true;
+ private void setSelectedPosition(int position) {
+ mLayoutManager.setSelectedPosition(position);
}
- private int getScrollPosition(int selectedPosition) {
- int visibleHeight = mMenuRowTitleHeight * selectedPosition
- + mAdapter.getItemHeight(selectedPosition);
- boolean lastItem = selectedPosition == mAdapter.getItemCount() - 1;
- if (!lastItem) {
- visibleHeight += mMenuRowTitleHeight;
- }
- return visibleHeight - mMenuHeight;
+ private void setSelectedPositionSmooth(int position) {
+ mLayoutManager.setSelectedPositionSmooth(position);
}
- @Override
- public void onChildSelected(ViewGroup parent, View child, int position, long id) {
- boolean withAnimation = mPreviousSelectedPosition != position;
- for (int i = 0; i < mMenuList.getChildCount(); i++) {
- MenuRowView rowView = (MenuRowView) mMenuList.getChildAt(i);
- rowView.updateView(withAnimation);
- }
- mPreviousSelectedPosition = position;
- if (withAnimation) {
- mScroller.abortAnimation();
- scrollYSmooth(position);
+ private void initializeChildren() {
+ for (MenuRowView view : mMenuRowViews) {
+ view.initialize(mShowReason);
}
}
- /**
- * Returns the previous selected position.
- */
- public int getPreviousSelectedPosition() {
- return mPreviousSelectedPosition;
- }
-
- private class MenuAdapter extends RecyclerView.Adapter<MenuViewHolder> {
- private List<MenuRow> mAllItems = Collections.emptyList();
- private List<MenuRow> mVisibleItems = new ArrayList<>();
-
- private void setItemList(List<MenuRow> items) {
- mAllItems = items;
- updateVisibleItems();
+ private int getItemPosition(String rowIdToSelect) {
+ if (rowIdToSelect == null) {
+ return -1;
}
-
- private void resetItemList() {
- for (MenuRow item : mAllItems) {
- item.release();
+ int position = 0;
+ for (MenuRow item : mMenuRows) {
+ if (rowIdToSelect.equals(item.getId())) {
+ return position;
}
- setItemList(Collections.<MenuRow>emptyList());
+ ++position;
}
+ return -1;
+ }
- private void updateOptionsRow() {
- if (isActive()) {
- for (MenuRow item : mAllItems) {
- if (item.getId().equals(TvOptionsRow.ID)) {
- item.update();
+ @Override
+ public View focusSearch(View focused, int direction) {
+ // The bounds of the views move and overlap with each other during the animation. In this
+ // situation, the framework can't perform the correct focus navigation. So the menu view
+ // should search by itself.
+ if (direction == View.FOCUS_UP) {
+ View newView = super.focusSearch(focused, direction);
+ MenuRowView oldfocusedParent = getParentMenuRowView(focused);
+ MenuRowView newFocusedParent = getParentMenuRowView(newView);
+ int selectedPosition = mLayoutManager.getSelectedPosition();
+ if (newFocusedParent != oldfocusedParent) {
+ // The focus leaves from the current menu row view.
+ for (int i = selectedPosition - 1; i >= 0; --i) {
+ MenuRowView view = mMenuRowViews.get(i);
+ if (view.getVisibility() == View.VISIBLE) {
+ return view;
}
}
}
- }
-
- private boolean update() {
- if (isActive()) {
- for (MenuRow item : mAllItems) {
- item.update();
- }
- return updateVisibleItems();
- }
- return false;
- }
-
- private boolean updateVisibleItems() {
- // To preserve the item focus, we need a fine-grained control using notifyItemXXXed()
- // instead of using notifyDataSetChanged().
- // We assume that the order of the adapters will not be changed.
- List<MenuRow> oldVisibleItems = mVisibleItems;
- mVisibleItems = new ArrayList<>();
- boolean changed = false;
- int oldSelectedPosition = mMenuList.getSelectedPosition();
- MenuRow oldSelectedRow = null;
- if (oldSelectedPosition >= 0 && oldSelectedPosition < oldVisibleItems.size()) {
- oldSelectedRow = oldVisibleItems.get(oldSelectedPosition);
- }
- int position = 0;
- int newSelectedPosition = 0;
- for (MenuRow item : mAllItems) {
- if (item.isVisible()) {
- mVisibleItems.add(item);
- if (!oldVisibleItems.contains(item)) {
- notifyItemInserted(position);
- changed = true;
+ return newView;
+ } else if (direction == View.FOCUS_DOWN) {
+ View newView = super.focusSearch(focused, direction);
+ MenuRowView oldfocusedParent = getParentMenuRowView(focused);
+ MenuRowView newFocusedParent = getParentMenuRowView(newView);
+ int selectedPosition = mLayoutManager.getSelectedPosition();
+ if (newFocusedParent != oldfocusedParent) {
+ // The focus leaves from the current menu row view.
+ int count = mMenuRowViews.size();
+ for (int i = selectedPosition + 1; i < count; ++i) {
+ MenuRowView view = mMenuRowViews.get(i);
+ if (view.getVisibility() == View.VISIBLE) {
+ return view;
}
- if (item.equals(oldSelectedRow)) {
- newSelectedPosition = position;
- }
- ++position;
- } else if (oldVisibleItems.contains(item)) {
- notifyItemRemoved(position);
- changed = true;
- }
- }
- if (DEBUG) Log.d(TAG, "Visible item count is " + mVisibleItems.size());
- if (changed && scrollYSmooth(newSelectedPosition)) {
- // Call invalidate() to make sure that computeScroll() is invoked.
- invalidate();
- }
- return changed;
- }
-
- @Override
- public int getItemViewType(int position) {
- // Each row needs to have a unique view type to avoid messing the focus up.
- // If a row is recycled from a view of another type, the previous focus will not be
- // preserved.
- return mVisibleItems.get(position).getId().hashCode();
- }
-
- @Override
- public MenuViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- for (MenuRow item : mVisibleItems) {
- if (viewType == item.getId().hashCode()) {
- MenuRowView view = (MenuRowView) mLayoutInflater.inflate(item.getLayoutResId(),
- parent, false);
- view.setMenuView(MenuView.this);
- view.setParentView(mMenuList);
- return new MenuViewHolder(view);
- }
- }
- // Main menu is in the illegal state.
- Log.e(TAG, "Error in creating view holder", new IllegalStateException(
- "Can't create view holder due to the invalid view type " + viewType));
- return null;
- }
-
- @Override
- public void onBindViewHolder(MenuViewHolder viewHolder, int position) {
- MenuRowView itemView = (MenuRowView) viewHolder.itemView;
- MenuRow item = mVisibleItems.get(position);
- itemView.onBind(item);
- itemView.initialize(mShowReason);
- }
-
- @Override
- public int getItemCount() {
- return mVisibleItems.size();
- }
-
- private int getItemPosition(String rowIdToSelect) {
- if (rowIdToSelect == null) {
- return -1;
- }
- int position = 0;
- for (MenuRow item : mVisibleItems) {
- if (rowIdToSelect.equals(item.getId())) {
- return position;
}
- ++position;
- }
- return -1;
- }
-
- private int getItemHeight(int position) {
- if (position < 0 || position >= mVisibleItems.size()) {
- return mMenuRowTitleHeight;
}
- return mVisibleItems.get(position).getHeight() + mMenuRowPaddingHeight
- + mMenuRowTitleHeight;
+ return newView;
}
+ return super.focusSearch(focused, direction);
}
- private static class MenuViewHolder extends RecyclerView.ViewHolder {
- MenuViewHolder(View view) {
- super(view);
- }
- }
-
- private static class TvOptionsRow extends ItemListRow {
- private static final String ID = TvOptionsRow.class.getName();
- public TvOptionsRow(Context context, List<CustomAction> customActions) {
- super(context, R.string.menu_title_options, R.dimen.action_card_height,
- new TvOptionsRowAdapter(context, customActions));
- }
-
- @Override
- public String getId() {
- return ID;
- }
- }
-
- private static class PipOptionsRow extends ItemListRow {
- public PipOptionsRow(Context context) {
- super(context, R.string.menu_title_pip_options, R.dimen.action_card_height,
- new PipOptionsRowAdapter(context));
+ private MenuRowView getParentMenuRowView(View view) {
+ if (view == null) {
+ return null;
}
-
- @Override
- public boolean isVisible() {
- return super.isVisible() && getMainActivity().isPipEnabled();
+ ViewParent parent = view.getParent();
+ if (parent == MenuView.this) {
+ return (MenuRowView) view;
}
- }
-
- private static class PartnerRow extends ItemListRow {
- public PartnerRow(Context context, String title, List<CustomAction> customActions) {
- super(context, title, R.dimen.action_card_height,
- new PartnerOptionsRowAdapter(context, customActions));
+ if (parent instanceof View) {
+ return getParentMenuRowView((View) parent);
}
+ return null;
}
}
diff --git a/src/com/android/tv/menu/PlayControlsRow.java b/src/com/android/tv/menu/PlayControlsRow.java
index 442407df..588ecf6a 100644
--- a/src/com/android/tv/menu/PlayControlsRow.java
+++ b/src/com/android/tv/menu/PlayControlsRow.java
@@ -20,13 +20,15 @@ import android.content.Context;
import com.android.tv.R;
import com.android.tv.TimeShiftManager;
-import com.android.tv.common.TvCommonConstants;
public class PlayControlsRow extends MenuRow {
public static final String ID = PlayControlsRow.class.getName();
- public PlayControlsRow(Context context) {
- super(context, R.string.menu_title_play_controls, R.dimen.play_controls_height);
+ private final TimeShiftManager mTimeShiftManager;
+
+ public PlayControlsRow(Context context, Menu menu, TimeShiftManager timeShiftManager) {
+ super(context, menu, R.string.menu_title_play_controls, R.dimen.play_controls_height);
+ mTimeShiftManager = timeShiftManager;
}
@Override
@@ -38,8 +40,11 @@ public class PlayControlsRow extends MenuRow {
return R.layout.play_controls;
}
+ /**
+ * Returns an instance of {@link TimeShiftManager}.
+ */
public TimeShiftManager getTimeShiftManager() {
- return getMainActivity().getTimeShiftManager();
+ return mTimeShiftManager;
}
@Override
@@ -49,6 +54,11 @@ public class PlayControlsRow extends MenuRow {
@Override
public boolean isVisible() {
- return TvCommonConstants.HAS_TIME_SHIFT_API;
+ return mTimeShiftManager.isAvailable();
+ }
+
+ @Override
+ public boolean hideTitleWhenSelected() {
+ return true;
}
}
diff --git a/src/com/android/tv/menu/PlayControlsRowView.java b/src/com/android/tv/menu/PlayControlsRowView.java
index 96b0ece3..d4ad7877 100644
--- a/src/com/android/tv/menu/PlayControlsRowView.java
+++ b/src/com/android/tv/menu/PlayControlsRowView.java
@@ -28,7 +28,7 @@ import com.android.tv.R;
import com.android.tv.TimeShiftManager;
import com.android.tv.TimeShiftManager.TimeShiftActionId;
import com.android.tv.data.Program;
-import com.android.tv.menu.MenuView.MenuShowReason;
+import com.android.tv.menu.Menu.MenuShowReason;
public class PlayControlsRowView extends MenuRowView {
// Dimensions
@@ -36,7 +36,6 @@ public class PlayControlsRowView extends MenuRowView {
private final int mTimeTextLeftMargin;
private final int mTimelineWidth;
// Views
- private View mTitleView;
private View mBackgroundView;
private View mTimeIndicator;
private TextView mTimeText;
@@ -91,7 +90,6 @@ public class PlayControlsRowView extends MenuRowView {
super.onFinishInflate();
// Clip the ViewGroup(body) to the rounded rectangle of outline.
findViewById(R.id.body).setClipToOutline(true);
- mTitleView = findViewById(R.id.title);
mBackgroundView = findViewById(R.id.background);
mTimeIndicator = findViewById(R.id.time_indicator);
mTimeText = (TextView) findViewById(R.id.time_text);
@@ -159,18 +157,6 @@ public class PlayControlsRowView extends MenuRowView {
}
}
});
- changeFocusableForDescendents(false);
- }
-
- private void changeFocusableForDescendents(boolean focusable) {
- setFocusable(focusable);
- setDescendantFocusability(focusable ? FOCUS_AFTER_DESCENDANTS : FOCUS_BLOCK_DESCENDANTS);
- }
-
- private void setRowEnable(boolean enable) {
- setEnabled(enable);
- changeFocusableForDescendents(enable);
- mTitleView.setVisibility(enable ? View.VISIBLE : View.INVISIBLE);
}
private void initializeButton(PlayControlsButton button, int imageResId,
@@ -250,11 +236,11 @@ public class PlayControlsRowView extends MenuRowView {
private void onAvailabilityChanged() {
if (mTimeShiftManager.isAvailable()) {
- setRowEnable(true);
+ setEnabled(true);
initializeTimeline();
mBackgroundView.setEnabled(true);
} else {
- setRowEnable(false);
+ setEnabled(false);
mBackgroundView.setEnabled(false);
}
updateAll();
@@ -269,31 +255,21 @@ public class PlayControlsRowView extends MenuRowView {
private void updateMenuVisibility() {
boolean keepMenuVisible =
mTimeShiftManager.isAvailable() && !mTimeShiftManager.isNormalPlaying();
- getMenuView().setKeepVisible(keepMenuVisible);
+ getMenu().setKeepVisible(keepMenuVisible);
}
@Override
- public void updateView(boolean withAnimation) {
- super.updateView(withAnimation);
+ public void onSelected(boolean showTitle) {
+ super.onSelected(showTitle);
updateAll();
postHideRippleAnimation();
}
@Override
- protected float getTitleScaleSelected() {
- return 1.0f;
- }
-
- @Override
- protected float getTitleAlphaSelected() {
- return 0.0f;
- }
-
- @Override
public void initialize(@MenuShowReason int reason) {
super.initialize(reason);
switch (reason) {
- case MenuView.REASON_PLAY_CONTROLS_JUMP_TO_PREVIOUS:
+ case Menu.REASON_PLAY_CONTROLS_JUMP_TO_PREVIOUS:
if (mTimeShiftManager.isActionEnabled(
TimeShiftManager.TIME_SHIFT_ACTION_ID_JUMP_TO_PREVIOUS)) {
setInitialFocusView(mJumpPreviousButton);
@@ -301,7 +277,7 @@ public class PlayControlsRowView extends MenuRowView {
setInitialFocusView(mPlayPauseButton);
}
break;
- case MenuView.REASON_PLAY_CONTROLS_REWIND:
+ case Menu.REASON_PLAY_CONTROLS_REWIND:
if (mTimeShiftManager.isActionEnabled(
TimeShiftManager.TIME_SHIFT_ACTION_ID_REWIND)) {
setInitialFocusView(mRewindButton);
@@ -309,7 +285,7 @@ public class PlayControlsRowView extends MenuRowView {
setInitialFocusView(mPlayPauseButton);
}
break;
- case MenuView.REASON_PLAY_CONTROLS_FAST_FORWARD:
+ case Menu.REASON_PLAY_CONTROLS_FAST_FORWARD:
if (mTimeShiftManager.isActionEnabled(
TimeShiftManager.TIME_SHIFT_ACTION_ID_FAST_FORWARD)) {
setInitialFocusView(mFastForwardButton);
@@ -317,7 +293,7 @@ public class PlayControlsRowView extends MenuRowView {
setInitialFocusView(mPlayPauseButton);
}
break;
- case MenuView.REASON_PLAY_CONTROLS_JUMP_TO_NEXT:
+ case Menu.REASON_PLAY_CONTROLS_JUMP_TO_NEXT:
if (mTimeShiftManager.isActionEnabled(
TimeShiftManager.TIME_SHIFT_ACTION_ID_JUMP_TO_NEXT)) {
setInitialFocusView(mJumpNextButton);
@@ -325,9 +301,9 @@ public class PlayControlsRowView extends MenuRowView {
setInitialFocusView(mPlayPauseButton);
}
break;
- case MenuView.REASON_PLAY_CONTROLS_PLAY_PAUSE:
- case MenuView.REASON_PLAY_CONTROLS_PLAY:
- case MenuView.REASON_PLAY_CONTROLS_PAUSE:
+ case Menu.REASON_PLAY_CONTROLS_PLAY_PAUSE:
+ case Menu.REASON_PLAY_CONTROLS_PLAY:
+ case Menu.REASON_PLAY_CONTROLS_PAUSE:
default:
setInitialFocusView(mPlayPauseButton);
break;
diff --git a/src/com/android/tv/menu/TvOptionsRowAdapter.java b/src/com/android/tv/menu/TvOptionsRowAdapter.java
index 5b203551..b7814fa5 100644
--- a/src/com/android/tv/menu/TvOptionsRowAdapter.java
+++ b/src/com/android/tv/menu/TvOptionsRowAdapter.java
@@ -18,6 +18,7 @@ package com.android.tv.menu;
import android.content.Context;
import android.media.tv.TvTrackInfo;
+import android.support.annotation.VisibleForTesting;
import com.android.tv.R;
import com.android.tv.TvOptionsManager;
@@ -138,7 +139,8 @@ public class TvOptionsRowAdapter extends CustomizableOptionsRowAdapter {
return changed;
}
- private boolean updateMultiAudioAction() {
+ @VisibleForTesting
+ boolean updateMultiAudioAction() {
List<TvTrackInfo> audioTracks = getMainActivity().getTracks(TvTrackInfo.TYPE_AUDIO);
boolean oldEnabled = MenuAction.SELECT_AUDIO_LANGUAGE_ACTION.isEnabled();
boolean newEnabled = audioTracks != null && audioTracks.size() > 1;
diff --git a/src/com/android/tv/receiver/AudioCapabilitiesReceiver.java b/src/com/android/tv/receiver/AudioCapabilitiesReceiver.java
index ca3cb176..949222a9 100644
--- a/src/com/android/tv/receiver/AudioCapabilitiesReceiver.java
+++ b/src/com/android/tv/receiver/AudioCapabilitiesReceiver.java
@@ -36,6 +36,13 @@ public final class AudioCapabilitiesReceiver {
private static final String PREFS_NAME = "com.android.tv.audio_capabilities";
private static final String SETTINGS_KEY_AC3_PASSTHRU_REPORTED = "ac3_passthrough_reported";
private static final String SETTINGS_KEY_AC3_PASSTHRU_CAPABILITIES = "ac3_passthrough";
+ private static final String SETTINGS_KEY_AC3_REPORT_REVISION = "ac3_report_revision";
+
+ // AC3 capabilities stat is sent to Google Analytics just once in order to avoid
+ // duplicated stat reports since it doesn't change over time in most cases.
+ // Increase this revision when we should force the stat to be sent again.
+ // TODO: Consier using custom metrics.
+ private static final int REPORT_REVISION = 1;
private final Context mContext;
private final Tracker mTracker;
@@ -72,17 +79,21 @@ public final class AudioCapabilitiesReceiver {
}
private void reportAudioCapabilities(int[] supportedEncodings) {
- boolean newVal = supportedEncodings == null
- ? false : Arrays.binarySearch(supportedEncodings, AudioFormat.ENCODING_AC3) >= 0;
- boolean oldVal = getBoolean(SETTINGS_KEY_AC3_PASSTHRU_REPORTED, false);
- boolean reported = getBoolean(SETTINGS_KEY_AC3_PASSTHRU_CAPABILITIES, false);
+ boolean newVal = supportedEncodings != null
+ && Arrays.binarySearch(supportedEncodings, AudioFormat.ENCODING_AC3) >= 0;
+ boolean oldVal = getBoolean(SETTINGS_KEY_AC3_PASSTHRU_CAPABILITIES, false);
+ boolean reported = getBoolean(SETTINGS_KEY_AC3_PASSTHRU_REPORTED, false);
+ int revision = getInt(SETTINGS_KEY_AC3_REPORT_REVISION, 0);
// Send the value just once. But we send it again if the value changed, to include
// the case where users have switched TV device with different AC3 passthrough capabilities.
- if (!reported || oldVal != newVal) {
+ if (!reported || oldVal != newVal || REPORT_REVISION > revision) {
mTracker.sendAc3PassthroughCapabilities(newVal);
setBoolean(SETTINGS_KEY_AC3_PASSTHRU_REPORTED, true);
setBoolean(SETTINGS_KEY_AC3_PASSTHRU_CAPABILITIES, newVal);
+ if (REPORT_REVISION > revision) {
+ setInt(SETTINGS_KEY_AC3_REPORT_REVISION, REPORT_REVISION);
+ }
}
}
@@ -97,4 +108,12 @@ public final class AudioCapabilitiesReceiver {
private void setBoolean(String key, boolean val) {
getSharedPreferences().edit().putBoolean(key, val).apply();
}
+
+ private int getInt(String key, int def) {
+ return getSharedPreferences().getInt(key, def);
+ }
+
+ private void setInt(String key, int val) {
+ getSharedPreferences().edit().putInt(key, val).apply();
+ }
}
diff --git a/src/com/android/tv/recommendation/NotificationService.java b/src/com/android/tv/recommendation/NotificationService.java
index 00cad116..835a3e53 100644
--- a/src/com/android/tv/recommendation/NotificationService.java
+++ b/src/com/android/tv/recommendation/NotificationService.java
@@ -31,13 +31,17 @@ import android.media.tv.TvInputInfo;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
+import android.os.Looper;
import android.os.Message;
+import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.util.Log;
import android.util.SparseLongArray;
import android.view.View;
import com.android.tv.R;
+import com.android.tv.TvApplication;
+import com.android.tv.common.WeakHandler;
import com.android.tv.data.Channel;
import com.android.tv.data.Program;
import com.android.tv.util.BitmapUtils;
@@ -59,8 +63,13 @@ public class NotificationService extends Service implements Recommender.Listener
public static final String ACTION_HIDE_RECOMMENDATION =
"com.android.tv.notification.ACTION_HIDE_RECOMMENDATION";
- private static final String TUNE_PARAMS_RECOMMENDATION_TYPE =
+ /**
+ * Recommendation intent has an extra data for the recommendation type. It'll be also
+ * sent to a TV input as a tune parameter.
+ */
+ public static final String TUNE_PARAMS_RECOMMENDATION_TYPE =
"com.android.tv.recommendation_type";
+
private static final String TYPE_RANDOM_RECOMMENDATION = "random";
private static final String TYPE_ROUTINE_WATCH_RECOMMENDATION = "routine_watch";
private static final String TYPE_ROUTINE_WATCH_AND_FAVORITE_CHANNEL_RECOMMENDATION =
@@ -132,66 +141,52 @@ public class NotificationService extends Service implements Recommender.Listener
getResources().getDimensionPixelOffset(R.dimen.notif_ch_logo_padding_bottom);
mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
- mTvInputManagerHelper = new TvInputManagerHelper(this);
- mTvInputManagerHelper.start();
-
+ mTvInputManagerHelper = ((TvApplication) getApplicationContext()).getTvInputManagerHelper();
mHandlerThread = new HandlerThread("tv notification");
mHandlerThread.start();
- mHandler = new Handler(mHandlerThread.getLooper()) {
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case MSG_INITIALIZE_RECOMMENDER: {
- mRecommender = new Recommender(
- NotificationService.this, NotificationService.this, true);
- if (TYPE_RANDOM_RECOMMENDATION.equals(mRecommendationType)) {
- mRecommender.registerEvaluator(new RandomEvaluator());
- } else if (TYPE_ROUTINE_WATCH_RECOMMENDATION.equals(mRecommendationType)) {
- mRecommender.registerEvaluator(new RoutineWatchEvaluator());
- } else if (TYPE_ROUTINE_WATCH_AND_FAVORITE_CHANNEL_RECOMMENDATION.equals(
- mRecommendationType)) {
- mRecommender.registerEvaluator(
- new FavoriteChannelEvaluator(), 0.5, 0.5);
- mRecommender.registerEvaluator(new RoutineWatchEvaluator(), 1.0, 1.0);
- } else {
- throw new IllegalStateException("Undefined recommendation type: "
- + mRecommendationType);
- }
- }
- case MSG_SHOW_RECOMMENDATION: {
- if (!mRecommender.isReady()) {
- mShowRecommendationAfterRecommenderReady = true;
- } else {
- showRecommendation();
- }
- break;
- }
- case MSG_UPDATE_RECOMMENDATION: {
- int notificationId = msg.arg1;
- Channel channel = ((Channel) msg.obj);
- if (mNotificationChannels[notificationId] == Channel.INVALID_ID
- || !sendNotification(channel.getId(), notificationId)) {
- changeRecommendation(notificationId);
- }
- break;
- }
- case MSG_HIDE_RECOMMENDATION: {
- if (!mRecommender.isReady()) {
- mShowRecommendationAfterRecommenderReady = false;
- } else {
- hideAllRecommendation();
- }
- break;
- }
- default: {
- super.handleMessage(msg);
- }
- }
- }
- };
+ mHandler = new NotificationHandler(mHandlerThread.getLooper(), this);
mHandler.sendEmptyMessage(MSG_INITIALIZE_RECOMMENDER);
}
+ private void handleInitializeRecommender() {
+ mRecommender = new Recommender(NotificationService.this, NotificationService.this, true);
+ if (TYPE_RANDOM_RECOMMENDATION.equals(mRecommendationType)) {
+ mRecommender.registerEvaluator(new RandomEvaluator());
+ } else if (TYPE_ROUTINE_WATCH_RECOMMENDATION.equals(mRecommendationType)) {
+ mRecommender.registerEvaluator(new RoutineWatchEvaluator());
+ } else if (TYPE_ROUTINE_WATCH_AND_FAVORITE_CHANNEL_RECOMMENDATION
+ .equals(mRecommendationType)) {
+ mRecommender.registerEvaluator(new FavoriteChannelEvaluator(), 0.5, 0.5);
+ mRecommender.registerEvaluator(new RoutineWatchEvaluator(), 1.0, 1.0);
+ } else {
+ throw new IllegalStateException(
+ "Undefined recommendation type: " + mRecommendationType);
+ }
+ }
+
+ private void handleShowRecommendation() {
+ if (!mRecommender.isReady()) {
+ mShowRecommendationAfterRecommenderReady = true;
+ } else {
+ showRecommendation();
+ }
+ }
+
+ private void handleUpdateRecommendation(int notificationId, Channel channel) {
+ if (mNotificationChannels[notificationId] == Channel.INVALID_ID || !sendNotification(
+ channel.getId(), notificationId)) {
+ changeRecommendation(notificationId);
+ }
+ }
+
+ private void handleHideRecommendation() {
+ if (!mRecommender.isReady()) {
+ mShowRecommendationAfterRecommenderReady = false;
+ } else {
+ hideAllRecommendation();
+ }
+ }
+
@Override
public void onDestroy() {
mRecommender.release();
@@ -456,4 +451,37 @@ public class NotificationService extends Service implements Recommender.Listener
}
return -1;
}
+
+ private static class NotificationHandler extends WeakHandler<NotificationService> {
+ public NotificationHandler(@NonNull Looper looper, NotificationService ref) {
+ super(looper, ref);
+ }
+
+ @Override
+ public void handleMessage(Message msg, @NonNull NotificationService notificationService) {
+ switch (msg.what) {
+ case MSG_INITIALIZE_RECOMMENDER: {
+ notificationService.handleInitializeRecommender();
+ break;
+ }
+ case MSG_SHOW_RECOMMENDATION: {
+ notificationService.handleShowRecommendation();
+ break;
+ }
+ case MSG_UPDATE_RECOMMENDATION: {
+ int notificationId = msg.arg1;
+ Channel channel = ((Channel) msg.obj);
+ notificationService.handleUpdateRecommendation(notificationId, channel);
+ break;
+ }
+ case MSG_HIDE_RECOMMENDATION: {
+ notificationService.handleHideRecommendation();
+ break;
+ }
+ default: {
+ super.handleMessage(msg);
+ }
+ }
+ }
+ }
}
diff --git a/src/com/android/tv/recommendation/RecommendationDataManager.java b/src/com/android/tv/recommendation/RecommendationDataManager.java
index 2445cce8..0f59e2bd 100644
--- a/src/com/android/tv/recommendation/RecommendationDataManager.java
+++ b/src/com/android/tv/recommendation/RecommendationDataManager.java
@@ -28,9 +28,12 @@ import android.media.tv.TvInputManager.TvInputCallback;
import android.net.Uri;
import android.os.Handler;
import android.os.HandlerThread;
+import android.os.Looper;
import android.os.Message;
import android.support.annotation.NonNull;
+import android.support.annotation.WorkerThread;
+import com.android.tv.common.WeakHandler;
import com.android.tv.data.Channel;
import com.android.tv.data.Program;
@@ -71,11 +74,12 @@ public class RecommendationDataManager {
private static final int INVALID_INDEX = -1;
private static RecommendationDataManager sManager;
+ private final static Object sListenerLock = new Object();
private final ContentObserver mContentObserver;
private final Map<Long, ChannelRecord> mChannelRecordMap = new ConcurrentHashMap<>();
private final Map<Long, ChannelRecord> mAvailableChannelRecordMap = new ConcurrentHashMap<>();
- private Context mContext;
+ private final Context mContext;
private boolean mStarted;
private boolean mCancelLoadTask;
private boolean mChannelRecordMapLoaded;
@@ -90,7 +94,6 @@ public class RecommendationDataManager {
private final HandlerThread mHandlerThread;
- @SuppressWarnings("unchecked")
private final Handler mHandler;
private final List<ListenerRecord> mListeners = new ArrayList<>();
@@ -117,7 +120,7 @@ public class RecommendationDataManager {
*/
public void release(@NonNull Listener listener) {
removeListener(listener);
- synchronized (mListeners) {
+ synchronized (sListenerLock) {
if (mListeners.size() == 0) {
stop();
}
@@ -183,46 +186,7 @@ public class RecommendationDataManager {
mContext = context.getApplicationContext();
mHandlerThread = new HandlerThread("RecommendationDataManager");
mHandlerThread.start();
- mHandler = new Handler(mHandlerThread.getLooper()) {
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case MSG_START:
- onStart();
- break;
- case MSG_STOP:
- if (mStarted) {
- onStop();
- }
- break;
- case MSG_UPDATE_CHANNEL:
- if (mStarted) {
- onUpdateChannel((Uri) msg.obj);
- }
- break;
- case MSG_UPDATE_CHANNELS:
- if (mStarted) {
- onUpdateChannels((Uri) msg.obj);
- }
- break;
- case MSG_UPDATE_WATCH_HISTORY:
- if (mStarted) {
- onLoadWatchHistory((Uri) msg.obj);
- }
- break;
- case MSG_NOTIFY_CHANNEL_RECORD_MAP_LOADED:
- if (mStarted) {
- onNotifyChannelRecordMapLoaded();
- }
- break;
- case MSG_NOTIFY_CHANNEL_RECORD_MAP_CHANGED:
- if (mStarted) {
- onNotifyChannelRecordMapChanged();
- }
- break;
- }
- }
- };
+ mHandler = new RecommendationHandler(mHandlerThread.getLooper(), this);
mContentObserver = new RecommendationContentObserver(mHandler);
}
@@ -270,7 +234,7 @@ public class RecommendationDataManager {
}
private void addListener(Listener listener) {
- synchronized (mListeners) {
+ synchronized (sListenerLock) {
if (getListenerIndexLocked(listener) == INVALID_INDEX) {
mListeners.add((new ListenerRecord(listener)));
}
@@ -278,10 +242,11 @@ public class RecommendationDataManager {
}
private void removeListener(Listener listener) {
- synchronized (mListeners) {
+ synchronized (sListenerLock) {
int idx = getListenerIndexLocked(listener);
if (idx != INVALID_INDEX) {
- mListeners.remove(idx);
+ ListenerRecord record = mListeners.remove(idx);
+ record.mListener = null;
}
}
}
@@ -319,6 +284,7 @@ public class RecommendationDataManager {
mStarted = false;
}
+ @WorkerThread
private void onUpdateChannel(Uri uri) {
Channel channel = null;
try (Cursor cursor = mContext.getContentResolver().query(uri, Channel.PROJECTION,
@@ -341,6 +307,7 @@ public class RecommendationDataManager {
}
}
+ @WorkerThread
private void onUpdateChannels(Uri uri) {
List<Channel> channels = new ArrayList<>();
try (Cursor cursor = mContext.getContentResolver().query(uri, Channel.PROJECTION,
@@ -378,6 +345,7 @@ public class RecommendationDataManager {
}
}
+ @WorkerThread
private void onLoadWatchHistory(Uri uri) {
List<WatchedProgram> history = new ArrayList<>();
try (Cursor cursor = mContext.getContentResolver().query(uri, null, null, null, null)) {
@@ -394,7 +362,7 @@ public class RecommendationDataManager {
final ChannelRecord channelRecord =
updateChannelRecordFromWatchedProgram(watchedProgram);
if (mChannelRecordMapLoaded && channelRecord != null) {
- synchronized (mListeners) {
+ synchronized (sListenerLock) {
for (ListenerRecord l : mListeners) {
l.postNewWatchLog(channelRecord);
}
@@ -437,7 +405,7 @@ public class RecommendationDataManager {
private void onNotifyChannelRecordMapLoaded() {
mChannelRecordMapLoaded = true;
- synchronized (mListeners) {
+ synchronized (sListenerLock) {
for (ListenerRecord l : mListeners) {
l.postChannelRecordLoaded();
}
@@ -445,7 +413,7 @@ public class RecommendationDataManager {
}
private void onNotifyChannelRecordMapChanged() {
- synchronized (mListeners) {
+ synchronized (sListenerLock) {
for (ListenerRecord l : mListeners) {
l.postChannelRecordChanged();
}
@@ -551,8 +519,10 @@ public class RecommendationDataManager {
mHandler.post(new Runnable() {
@Override
public void run() {
- if (mListener != null) {
- mListener.onChannelRecordLoaded();
+ synchronized (sListenerLock) {
+ if (mListener != null) {
+ mListener.onChannelRecordLoaded();
+ }
}
}
});
@@ -562,8 +532,10 @@ public class RecommendationDataManager {
mHandler.post(new Runnable() {
@Override
public void run() {
- if (mListener != null) {
- mListener.onNewWatchLog(channelRecord);
+ synchronized (sListenerLock) {
+ if (mListener != null) {
+ mListener.onNewWatchLog(channelRecord);
+ }
}
}
});
@@ -573,11 +545,58 @@ public class RecommendationDataManager {
mHandler.post(new Runnable() {
@Override
public void run() {
- if (mListener != null) {
- mListener.onChannelRecordChanged();
+ synchronized (sListenerLock) {
+ if (mListener != null) {
+ mListener.onChannelRecordChanged();
+ }
}
}
});
}
}
+
+ private static class RecommendationHandler extends WeakHandler<RecommendationDataManager> {
+ public RecommendationHandler(@NonNull Looper looper, RecommendationDataManager ref) {
+ super(looper, ref);
+ }
+
+ @Override
+ public void handleMessage(Message msg, @NonNull RecommendationDataManager dataManager) {
+ switch (msg.what) {
+ case MSG_START:
+ dataManager.onStart();
+ break;
+ case MSG_STOP:
+ if (dataManager.mStarted) {
+ dataManager.onStop();
+ }
+ break;
+ case MSG_UPDATE_CHANNEL:
+ if (dataManager.mStarted) {
+ dataManager.onUpdateChannel((Uri) msg.obj);
+ }
+ break;
+ case MSG_UPDATE_CHANNELS:
+ if (dataManager.mStarted) {
+ dataManager.onUpdateChannels((Uri) msg.obj);
+ }
+ break;
+ case MSG_UPDATE_WATCH_HISTORY:
+ if (dataManager.mStarted) {
+ dataManager.onLoadWatchHistory((Uri) msg.obj);
+ }
+ break;
+ case MSG_NOTIFY_CHANNEL_RECORD_MAP_LOADED:
+ if (dataManager.mStarted) {
+ dataManager.onNotifyChannelRecordMapLoaded();
+ }
+ break;
+ case MSG_NOTIFY_CHANNEL_RECORD_MAP_CHANGED:
+ if (dataManager.mStarted) {
+ dataManager.onNotifyChannelRecordMapChanged();
+ }
+ break;
+ }
+ }
+ }
}
diff --git a/src/com/android/tv/recommendation/RoutineWatchEvaluator.java b/src/com/android/tv/recommendation/RoutineWatchEvaluator.java
index 8f6f203d..694da6bf 100644
--- a/src/com/android/tv/recommendation/RoutineWatchEvaluator.java
+++ b/src/com/android/tv/recommendation/RoutineWatchEvaluator.java
@@ -17,7 +17,6 @@
package com.android.tv.recommendation;
import android.support.annotation.VisibleForTesting;
-import android.text.TextUtils;
import com.android.tv.data.Program;
@@ -26,7 +25,6 @@ import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.concurrent.TimeUnit;
-import java.util.regex.Pattern;
public class RoutineWatchEvaluator extends Recommender.Evaluator {
// TODO: test and refine constant values in WatchedProgramRecommender in order to
diff --git a/src/com/android/tv/search/TvProviderSearch.java b/src/com/android/tv/search/TvProviderSearch.java
index 2548d34a..00eb68bb 100644
--- a/src/com/android/tv/search/TvProviderSearch.java
+++ b/src/com/android/tv/search/TvProviderSearch.java
@@ -28,6 +28,7 @@ import android.media.tv.TvContract.WatchedPrograms;
import android.media.tv.TvInputInfo;
import android.media.tv.TvInputManager;
import android.net.Uri;
+import android.support.annotation.WorkerThread;
import android.text.TextUtils;
import android.util.Log;
@@ -76,6 +77,7 @@ public class TvProviderSearch {
* @param action One of {@link #ACTION_TYPE_SWITCH_CHANNEL}, {@link #ACTION_TYPE_SWITCH_INPUT},
* or {@link #ACTION_TYPE_AMBIGUOUS},
*/
+ @WorkerThread
public List<SearchResult> search(String query, int limit, int action) {
List<SearchResult> results = new ArrayList<>();
Set<Long> channelsFound = new HashSet<>();
@@ -108,8 +110,8 @@ public class TvProviderSearch {
return results;
}
- private StringBuilder appendSelectionString(StringBuilder sb,
- String[] columnForExactMatching, String[] columnForPartialMatching) {
+ private void appendSelectionString(StringBuilder sb, String[] columnForExactMatching,
+ String[] columnForPartialMatching) {
boolean firstColumn = true;
if (columnForExactMatching != null) {
for (String column : columnForExactMatching) {
@@ -131,7 +133,6 @@ public class TvProviderSearch {
sb.append(column).append(" LIKE ?");
}
}
- return sb;
}
private void insertSelectionArgumentStrings(String[] selectionArgs, int pos,
@@ -151,6 +152,7 @@ public class TvProviderSearch {
}
}
+ @WorkerThread
private List<SearchResult> searchChannels(String query, Set<Long> channels, int limit) {
List<SearchResult> results = new ArrayList<>();
if (TextUtils.isDigitsOnly(query)) {
@@ -174,6 +176,7 @@ public class TvProviderSearch {
return results;
}
+ @WorkerThread
private List<SearchResult> searchChannels(String query, String[] columnForExactMatching,
String[] columnForPartialMatching, Set<Long> channelsFound, int limit) {
Assert.assertTrue(
@@ -246,6 +249,7 @@ public class TvProviderSearch {
* program information of the channel if the current program information exists and it is not
* blocked.
*/
+ @WorkerThread
private void fillProgramInfo(SearchResult result) {
long now = System.currentTimeMillis();
Uri uri = TvContract.buildProgramsUriForChannel(result.channelId, now, now);
@@ -293,6 +297,7 @@ public class TvProviderSearch {
return (int)(100 * (current - startUtcMillis) / (endUtcMillis - startUtcMillis));
}
+ @WorkerThread
private List<SearchResult> searchPrograms(String query, String[] columnForExactMatching,
String[] columnForPartialMatching, Set<Long> channelsFound, int limit) {
Assert.assertTrue(
@@ -459,6 +464,8 @@ public class TvProviderSearch {
return result;
}
+
+ @WorkerThread
private class ChannelComparatorWithSameDisplayNumber implements Comparator<SearchResult> {
private final Map<Long, Long> mMaxWatchStartTimeMap = new HashMap<>();
diff --git a/src/com/android/tv/ui/ChannelBannerView.java b/src/com/android/tv/ui/ChannelBannerView.java
index 277ccb0a..683e6c3a 100644
--- a/src/com/android/tv/ui/ChannelBannerView.java
+++ b/src/com/android/tv/ui/ChannelBannerView.java
@@ -124,7 +124,11 @@ public class ChannelBannerView extends FrameLayout implements Channel.LoadImageC
@Override
public void run() {
mCurrentHeight = 0;
- mMainActivity.goToEmptyScene(true);
+ mMainActivity.getOverlayManager().hideOverlays(
+ TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_DIALOG
+ | TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_SIDE_PANELS
+ | TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_PROGRAM_GUIDE
+ | TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_MENU);
}
};
private final long mShowDurationMillis;
diff --git a/src/com/android/tv/ui/FullscreenDialogView.java b/src/com/android/tv/ui/FullscreenDialogView.java
index 9cda1f3a..e2220722 100644
--- a/src/com/android/tv/ui/FullscreenDialogView.java
+++ b/src/com/android/tv/ui/FullscreenDialogView.java
@@ -16,13 +16,14 @@
package com.android.tv.ui;
-import android.animation.Animator;
import android.animation.TimeInterpolator;
import android.app.Dialog;
import android.content.Context;
import android.os.Handler;
import android.util.AttributeSet;
+import android.util.Log;
import android.view.View;
+import android.view.ViewTreeObserver;
import android.view.animation.AnimationUtils;
import android.widget.FrameLayout;
@@ -32,18 +33,18 @@ import com.android.tv.dialog.FullscreenDialogFragment;
public class FullscreenDialogView extends FrameLayout
implements FullscreenDialogFragment.DialogView {
+ private static final String TAG = "FullscreenDialogView";
+ private static final boolean DEBUG = false;
+
private static final int FADE_IN_DURATION_MS = 400;
- private static final int FADE_OUT_DURATION_MS = 300;
+ private static final int FADE_OUT_DURATION_MS = 250;
private static final int TRANSITION_INTERVAL_MS = 300;
private MainActivity mActivity;
private Dialog mDialog;
private boolean mSkipEnterAlphaAnimation;
private boolean mSkipExitAlphaAnimation;
- private boolean mUseTranslationAnimation;
- private final int mEnterTranslationX;
- private final int mExitTranslationX;
private final TimeInterpolator mLinearOutSlowIn;
private final TimeInterpolator mFastOutLinearIn;
@@ -57,18 +58,18 @@ public class FullscreenDialogView extends FrameLayout
public FullscreenDialogView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
- mEnterTranslationX = context.getResources().getInteger(
- R.integer.fullscreen_dialog_enter_translation_x);
- mExitTranslationX = context.getResources().getInteger(
- R.integer.fullscreen_dialog_exit_translation_x);
mLinearOutSlowIn = AnimationUtils.loadInterpolator(context,
android.R.interpolator.linear_out_slow_in);
mFastOutLinearIn = AnimationUtils.loadInterpolator(context,
android.R.interpolator.fast_out_linear_in);
- }
-
- public void setTransitionAnimationEnabled(boolean enable) {
- mUseTranslationAnimation = enable;
+ getViewTreeObserver().addOnGlobalLayoutListener(
+ new ViewTreeObserver.OnGlobalLayoutListener() {
+ @Override
+ public void onGlobalLayout() {
+ getViewTreeObserver().removeOnGlobalLayoutListener(this);
+ startEnterAnimation();
+ }
+ });
}
protected MainActivity getActivity() {
@@ -106,12 +107,6 @@ public class FullscreenDialogView extends FrameLayout
@Override
public void onDestroy() { }
- @Override
- protected void onAttachedToWindow() {
- super.onAttachedToWindow();
- startEnterAnimation();
- }
-
/**
* Transitions to another view inside the host {@link Dialog}.
*/
@@ -133,70 +128,45 @@ public class FullscreenDialogView extends FrameLayout
});
}
+ /**
+ * Called when an enter animation starts. Sub-view specific animation can be implemented.
+ */
+ protected void onStartEnterAnimation(TimeInterpolator interpolator, long duration) {
+ }
+
+ /**
+ * Called when an exit animation starts. Sub-view specific animation can be implemented.
+ */
+ protected void onStartExitAnimation(TimeInterpolator interpolator, long duration,
+ Runnable onAnimationEnded) {
+ }
+
private void startEnterAnimation() {
- View v = findViewById(R.id.container);
- if (mUseTranslationAnimation) {
- v.setTranslationX(mEnterTranslationX);
- v.animate()
- .translationX(0)
- .setInterpolator(mLinearOutSlowIn)
- .setDuration(FADE_IN_DURATION_MS)
- .setListener(new HardwareLayerAnimatorListenerAdapter(this))
- .start();
- }
+ if (DEBUG) Log.d(TAG, "start an enter animation");
+ View backgroundView = findViewById(R.id.background);
if (!mSkipEnterAlphaAnimation) {
- setAlpha(0);
- animate()
- .alpha(1.0f)
- .setInterpolator(mLinearOutSlowIn)
- .setDuration(FADE_IN_DURATION_MS)
- .setListener(new HardwareLayerAnimatorListenerAdapter(this))
- .start();
- } else {
- v.setAlpha(0);
- v.animate()
+ backgroundView.setAlpha(0);
+ backgroundView.animate()
.alpha(1.0f)
.setInterpolator(mLinearOutSlowIn)
.setDuration(FADE_IN_DURATION_MS)
- .setListener(new HardwareLayerAnimatorListenerAdapter(this))
+ .withLayer()
.start();
}
+ onStartEnterAnimation(mLinearOutSlowIn, FADE_IN_DURATION_MS);
}
private void startExitAnimation(final Runnable onAnimationEnded) {
- View v = findViewById(R.id.container);
- if (mUseTranslationAnimation) {
- v.animate()
- .translationX(mExitTranslationX)
- .setInterpolator(mFastOutLinearIn)
- .setDuration(FADE_OUT_DURATION_MS)
- .setListener(new HardwareLayerAnimatorListenerAdapter(this))
- .start();
- }
+ if (DEBUG) Log.d(TAG, "start an exit animation");
+ View backgroundView = findViewById(R.id.background);
if (!mSkipExitAlphaAnimation) {
- animate()
- .alpha(0.0f)
- .setInterpolator(mFastOutLinearIn)
- .setDuration(FADE_OUT_DURATION_MS)
- .setListener(new HardwareLayerAnimatorListenerAdapter(this) {
- @Override
- public void onAnimationEnd(Animator animation) {
- onAnimationEnded.run();
- }
- })
- .start();
- } else {
- v.animate()
+ backgroundView.animate()
.alpha(0.0f)
.setInterpolator(mFastOutLinearIn)
.setDuration(FADE_OUT_DURATION_MS)
- .setListener(new HardwareLayerAnimatorListenerAdapter(this) {
- @Override
- public void onAnimationEnd(Animator animation) {
- onAnimationEnded.run();
- }
- })
+ .withLayer()
.start();
}
+ onStartExitAnimation(mFastOutLinearIn, FADE_OUT_DURATION_MS, onAnimationEnded);
}
}
diff --git a/src/com/android/tv/ui/InputBannerView.java b/src/com/android/tv/ui/InputBannerView.java
index cc7a9443..649331f4 100644
--- a/src/com/android/tv/ui/InputBannerView.java
+++ b/src/com/android/tv/ui/InputBannerView.java
@@ -34,7 +34,11 @@ public class InputBannerView extends LinearLayout implements TvTransitionManager
private final Runnable mHideRunnable = new Runnable() {
@Override
public void run() {
- ((MainActivity) getContext()).goToEmptyScene(true);
+ ((MainActivity) getContext()).getOverlayManager().hideOverlays(
+ TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_DIALOG
+ | TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_SIDE_PANELS
+ | TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_PROGRAM_GUIDE
+ | TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_MENU);
}
};
diff --git a/src/com/android/tv/ui/IntroView.java b/src/com/android/tv/ui/IntroView.java
index 4266b30d..7530f283 100644
--- a/src/com/android/tv/ui/IntroView.java
+++ b/src/com/android/tv/ui/IntroView.java
@@ -16,6 +16,7 @@
package com.android.tv.ui;
+import android.animation.TimeInterpolator;
import android.content.Context;
import android.graphics.drawable.AnimationDrawable;
import android.util.AttributeSet;
@@ -23,7 +24,7 @@ import android.view.KeyEvent;
import android.view.View;
import com.android.tv.R;
-import com.android.tv.menu.MenuView;
+import com.android.tv.menu.Menu;
public class IntroView extends FullscreenDialogView {
private AnimationDrawable mRippleDrawable;
@@ -39,7 +40,6 @@ public class IntroView extends FullscreenDialogView {
public IntroView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
- setTransitionAnimationEnabled(false);
}
@Override
@@ -78,7 +78,37 @@ public class IntroView extends FullscreenDialogView {
@Override
public void onDestroy() {
if (mOpenMenu) {
- getActivity().getOverlayManager().showMenu(MenuView.REASON_GUIDE);
+ getActivity().getOverlayManager().showMenu(Menu.REASON_GUIDE);
}
}
+
+ @Override
+ protected void onStartEnterAnimation(TimeInterpolator interpolator, long duration) {
+ View v = findViewById(R.id.container);
+ v.setAlpha(0);
+ v.animate()
+ .alpha(1.0f)
+ .setInterpolator(interpolator)
+ .setDuration(duration)
+ .withLayer()
+ .start();
+ }
+
+ @Override
+ protected void onStartExitAnimation(TimeInterpolator interpolator, long duration,
+ final Runnable onAnimationEnded) {
+ View v = findViewById(R.id.container);
+ v.animate()
+ .alpha(0.0f)
+ .setInterpolator(interpolator)
+ .setDuration(duration)
+ .withLayer()
+ .withEndAction(new Runnable() {
+ @Override
+ public void run() {
+ onAnimationEnded.run();
+ }
+ })
+ .start();
+ }
}
diff --git a/src/com/android/tv/ui/KeypadChannelSwitchView.java b/src/com/android/tv/ui/KeypadChannelSwitchView.java
index bfbb6e9c..3ba2738e 100644
--- a/src/com/android/tv/ui/KeypadChannelSwitchView.java
+++ b/src/com/android/tv/ui/KeypadChannelSwitchView.java
@@ -79,7 +79,11 @@ public class KeypadChannelSwitchView extends LinearLayout implements
mMainActivity.tuneToChannel(mSelectedChannel);
mTracker.sendChannelNumberItemChosenByTimeout();
} else {
- mMainActivity.goToEmptyScene(true);
+ mMainActivity.getOverlayManager().hideOverlays(
+ TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_DIALOG
+ | TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_SIDE_PANELS
+ | TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_PROGRAM_GUIDE
+ | TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_MENU);
}
}
};
diff --git a/src/com/android/tv/ui/OnRepeatedKeyInterceptListener.java b/src/com/android/tv/ui/OnRepeatedKeyInterceptListener.java
new file mode 100644
index 00000000..2a59e6f6
--- /dev/null
+++ b/src/com/android/tv/ui/OnRepeatedKeyInterceptListener.java
@@ -0,0 +1,112 @@
+/*
+ * 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.ui;
+
+import android.os.Message;
+import android.support.annotation.NonNull;
+import android.support.v17.leanback.widget.VerticalGridView;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.View;
+
+import com.android.tv.common.WeakHandler;
+
+/**
+ * Listener to make focus change faster over time.
+ */
+public class OnRepeatedKeyInterceptListener implements VerticalGridView.OnKeyInterceptListener {
+ private static final String TAG = "OnRepeatedKeyInterceptListener";
+ private static final boolean DEBUG = false;
+
+ private static final int[] THRESHOLD_FAST_FOCUS_CHANGE_TIME_MS = { 2000, 5000 };
+ private static final int[] MAX_SKIPPED_VIEW_COUNT = { 1, 4 };
+ private static final int MSG_MOVE_FOCUS = 1000;
+
+ private VerticalGridView mView;
+ private MyHandler mHandler = new MyHandler(this);
+ private int mDirection;
+ private boolean mFocusAccelerated;
+ private long mRepeatedKeyInterval;
+
+ public OnRepeatedKeyInterceptListener(VerticalGridView view) {
+ mView = view;
+ }
+
+ public boolean isFocusAccelerated() {
+ return mFocusAccelerated;
+ }
+
+ @Override
+ public boolean onInterceptKeyEvent(KeyEvent event) {
+ mHandler.removeMessages(MSG_MOVE_FOCUS);
+ if (event.getKeyCode() != KeyEvent.KEYCODE_DPAD_UP &&
+ event.getKeyCode() != KeyEvent.KEYCODE_DPAD_DOWN) {
+ return false;
+ }
+
+ long duration = event.getEventTime() - event.getDownTime();
+ if (duration < THRESHOLD_FAST_FOCUS_CHANGE_TIME_MS[0]
+ || event.isCanceled()) {
+ mFocusAccelerated = false;
+ return false;
+ }
+ mDirection = event.getKeyCode() == KeyEvent.KEYCODE_DPAD_UP ? View.FOCUS_UP
+ : View.FOCUS_DOWN;
+ int skippedViewCount = MAX_SKIPPED_VIEW_COUNT[0];
+ for (int i = 1 ;i < THRESHOLD_FAST_FOCUS_CHANGE_TIME_MS.length; ++i) {
+ if (THRESHOLD_FAST_FOCUS_CHANGE_TIME_MS[i] < duration) {
+ skippedViewCount = MAX_SKIPPED_VIEW_COUNT[i];
+ } else {
+ break;
+ }
+ }
+ if (event.getAction() == KeyEvent.ACTION_DOWN) {
+ mRepeatedKeyInterval = duration / event.getRepeatCount();
+ mFocusAccelerated = true;
+ } else {
+ // HACK: we move focus skippedViewCount times more even after ACTION_UP. Without this
+ // hack, a focused view's position doesn't reach to the desired position
+ // in ProgramGrid.
+ mFocusAccelerated = false;
+ }
+ for (int i = 0; i < skippedViewCount; ++i) {
+ mHandler.sendEmptyMessageDelayed(MSG_MOVE_FOCUS,
+ mRepeatedKeyInterval * i / (skippedViewCount + 1));
+ }
+ if (DEBUG) Log.d(TAG, "onInterceptKeyEvent: focused view " + mView.findFocus());
+ return false;
+ }
+
+ private static class MyHandler extends WeakHandler<OnRepeatedKeyInterceptListener> {
+ private MyHandler(OnRepeatedKeyInterceptListener listener) {
+ super(listener);
+ }
+
+ @Override
+ public void handleMessage(Message msg, @NonNull OnRepeatedKeyInterceptListener listener) {
+ if (msg.what == MSG_MOVE_FOCUS) {
+ View focused = listener.mView.findFocus();
+ if (DEBUG) Log.d(TAG, "MSG_MOVE_FOCUS: focused view " + focused);
+ if (focused != null) {
+ View v = focused.focusSearch(listener.mDirection);
+ if (v != null && v != focused) {
+ v.requestFocus(listener.mDirection);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/com/android/tv/ui/SelectInputView.java b/src/com/android/tv/ui/SelectInputView.java
index 54889d8d..e347fbb1 100644
--- a/src/com/android/tv/ui/SelectInputView.java
+++ b/src/com/android/tv/ui/SelectInputView.java
@@ -68,7 +68,11 @@ public class SelectInputView extends VerticalGridView implements
if (mSelectedInput == null
|| TextUtils.equals(mSelectedInput.getId(), mCurrentInputId)
|| (!mSelectedInput.isPassthroughInput() && mCurrentInputId == null)) {
- mMainActivity.goToEmptyScene(true);
+ mMainActivity.getOverlayManager().hideOverlays(
+ TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_DIALOG
+ | TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_SIDE_PANELS
+ | TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_PROGRAM_GUIDE
+ | TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_MENU);
return;
}
// TODO: pass english label to tracker http://b/22355024
diff --git a/src/com/android/tv/ui/SetupView.java b/src/com/android/tv/ui/SetupView.java
index ba90dcfe..330b7e9f 100644
--- a/src/com/android/tv/ui/SetupView.java
+++ b/src/com/android/tv/ui/SetupView.java
@@ -16,14 +16,21 @@
package com.android.tv.ui;
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
+import android.animation.AnimatorSet;
+import android.animation.ObjectAnimator;
+import android.animation.PropertyValuesHolder;
+import android.animation.TimeInterpolator;
import android.app.Dialog;
import android.content.Context;
-import android.content.pm.ApplicationInfo;
import android.media.tv.TvInputInfo;
+import android.media.tv.TvInputManager.TvInputCallback;
import android.support.annotation.VisibleForTesting;
import android.support.v17.leanback.widget.VerticalGridView;
import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
+import android.util.Log;
import android.util.TypedValue;
import android.view.KeyEvent;
import android.view.LayoutInflater;
@@ -38,17 +45,22 @@ import com.android.tv.util.SetupUtils;
import com.android.tv.util.TvInputManagerHelper;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class SetupView extends FullscreenDialogView {
+ private static final String TAG = "SetupView";
+ private static final boolean DEBUG = false;
+
private static final int FINISH_ACTIVITY_DELAY_MS = 200;
private static final int REFRESH_DELAY_MS_AFTER_WINDOW_FOCUS_GAINED = 200;
+ private static final long ANIMATION_START_DELAY = 25;
+
private VerticalGridView mInputView;
private ChannelDataManager mChannelDataManager;
+ private TvInputManagerHelper mInputManager;
private List<TvInputInfo> mInputList;
// mInputList[0:mKnownInputStartIndex - 1] are new inputs.
// And mInputList[mKnownInputStartIndex:end] are inputs which have been shown in SetupView.
@@ -59,25 +71,52 @@ public class SetupView extends FullscreenDialogView {
private boolean mInitialized;
private SetupUtils mSetupUtils;
private boolean mNeedIntroDialog;
+ private final int mEnterTranslationX;
+ private final int mExitTranslationX;
+ private Animator mEnterAnimator;
- private final ChannelDataManager.Listener mChannelDataListener = new ChannelDataManager.Listener() {
- @Override
- public void onLoadFinished() { }
-
+ private final TvInputCallback mInputCallback = new TvInputCallback() {
@Override
- public void onChannelListUpdated() {
- if (mAdapter != null) {
- mAdapter.notifyDataSetChanged();
+ public void onInputAdded(String inputId) {
+ if (DEBUG) {
+ Log.d(TAG, "onInputAdded: " + inputId);
+ }
+ if (!mInitialized) {
+ return;
}
+ updateInputList();
}
@Override
- public void onChannelBrowsableChanged() {
- if (mAdapter != null) {
- mAdapter.notifyDataSetChanged();
+ public void onInputRemoved(String inputId) {
+ if (DEBUG) {
+ Log.d(TAG, "onInputRemoved: " + inputId);
+ }
+ if (!mInitialized) {
+ return;
}
+ updateInputList();
}
};
+ private final ChannelDataManager.Listener mChannelDataListener =
+ new ChannelDataManager.Listener() {
+ @Override
+ public void onLoadFinished() { }
+
+ @Override
+ public void onChannelListUpdated() {
+ if (mAdapter != null) {
+ mAdapter.notifyDataSetChanged();
+ }
+ }
+
+ @Override
+ public void onChannelBrowsableChanged() {
+ if (mAdapter != null) {
+ mAdapter.notifyDataSetChanged();
+ }
+ }
+ };
public SetupView(Context context) {
this(context, null, 0);
@@ -89,7 +128,10 @@ public class SetupView extends FullscreenDialogView {
public SetupView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
- setTransitionAnimationEnabled(true);
+ mEnterTranslationX = context.getResources().getInteger(
+ R.integer.fullscreen_dialog_enter_translation_x);
+ mExitTranslationX = context.getResources().getInteger(
+ R.integer.fullscreen_dialog_exit_translation_x);
}
@Override
@@ -106,6 +148,18 @@ public class SetupView extends FullscreenDialogView {
}
@Override
+ public void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ mInputManager.addCallback(mInputCallback);
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ super.onDetachedFromWindow();
+ mInputManager.removeCallback(mInputCallback);
+ }
+
+ @Override
public boolean dispatchKeyEvent(KeyEvent event) {
return mClosing || super.dispatchKeyEvent(event);
}
@@ -138,12 +192,21 @@ public class SetupView extends FullscreenDialogView {
throw new IllegalStateException("initialize() is called more than once");
}
mInitialized = true;
- final TvInputManagerHelper inputManager = getActivity().getTvInputManagerHelper();
+ mInputManager = getActivity().getTvInputManagerHelper();
mChannelDataManager = getActivity().getChannelDataManager();
mSetupUtils = SetupUtils.getInstance(activity);
+ mNeedIntroDialog = mSetupUtils.isFirstTune();
+ mAdapter = new SetupAdapter();
+ mInputView.setAdapter(mAdapter);
+ mChannelDataManager.addListener(mChannelDataListener);
+ updateInputList();
+ }
+
+ private void updateInputList() {
+ mInputList = new ArrayList<>();
mKnownInputStartIndex = 0;
- mInputList = inputManager.getTvInputInfos(true, true);
- Collections.sort(mInputList, new TvInputInfoComparator(mSetupUtils, inputManager));
+ mInputList = mInputManager.getTvInputInfos(true, true);
+ Collections.sort(mInputList, new TvInputInfoComparator(mSetupUtils, mInputManager));
for (TvInputInfo input : mInputList) {
if (mSetupUtils.isNewInput(input.getId())) {
mSetupUtils.markAsKnownInput(input.getId());
@@ -151,10 +214,8 @@ public class SetupView extends FullscreenDialogView {
}
}
mShowDivider = mKnownInputStartIndex != 0 && mKnownInputStartIndex != mInputList.size();
- mAdapter = new SetupAdapter();
- mInputView.setAdapter(mAdapter);
- mChannelDataManager.addListener(mChannelDataListener);
mNeedIntroDialog = mSetupUtils.isFirstTune();
+ mAdapter.notifyDataSetChanged();
}
/**
@@ -188,6 +249,79 @@ public class SetupView extends FullscreenDialogView {
dismiss();
}
+ @Override
+ protected void onStartEnterAnimation(final TimeInterpolator interpolator, final long duration) {
+ List<Animator> animatorList = new ArrayList<>();
+ View leftPanel = findViewById(R.id.setup_left);
+ leftPanel.setAlpha(0);
+ leftPanel.setTranslationX(mEnterTranslationX);
+ animatorList.add(buildEnterAnimator(leftPanel, duration, 0, interpolator));
+
+ for (int i = 0; i < mInputView.getChildCount(); ++i) {
+ View itemView = mInputView.getChildAt(i);
+ itemView.setAlpha(0);
+ itemView.setTranslationX(mEnterTranslationX);
+ int itemPosition = mInputView.getChildAdapterPosition(itemView);
+ animatorList.add(buildEnterAnimator(itemView, duration,
+ ANIMATION_START_DELAY * (itemPosition + 1), interpolator));
+ }
+ AnimatorSet animatorSet = new AnimatorSet();
+ animatorSet.playTogether(animatorList);
+ mEnterAnimator = animatorSet;
+ mEnterAnimator.start();
+ }
+
+ private Animator buildEnterAnimator(View v, long duration, long startDelay,
+ TimeInterpolator interpolator) {
+ Animator animator = ObjectAnimator.ofPropertyValuesHolder(v,
+ PropertyValuesHolder.ofFloat(View.ALPHA, 0f, 1.0f),
+ PropertyValuesHolder.ofFloat(View.TRANSLATION_X, mEnterTranslationX, 0));
+ animator.setStartDelay(startDelay);
+ animator.setDuration(duration);
+ animator.setInterpolator(interpolator);
+ animator.addListener(new HardwareLayerAnimatorListenerAdapter(v));
+ return animator;
+ }
+
+ @Override
+ protected void onStartExitAnimation(TimeInterpolator interpolator, long duration,
+ final Runnable onAnimationEnded) {
+ if (mEnterAnimator != null && mEnterAnimator.isRunning()) {
+ mEnterAnimator.cancel();
+ }
+ List<Animator> animatorList = new ArrayList<>();
+ animatorList.add(
+ buildExitAnimator(findViewById(R.id.setup_left), duration, 0, interpolator));
+ for (int i = 0; i < mInputView.getChildCount(); ++i) {
+ View itemView = mInputView.getChildAt(i);
+ int itemPosition = mInputView.getChildAdapterPosition(itemView);
+ animatorList.add(buildExitAnimator(itemView, duration,
+ ANIMATION_START_DELAY * (itemPosition + 1), interpolator));
+ }
+ AnimatorSet animatorSet = new AnimatorSet();
+ animatorSet.playTogether(animatorList);
+ animatorSet.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ onAnimationEnded.run();
+ }
+ });
+ animatorSet.start();
+ }
+
+ private Animator buildExitAnimator(View v, long duration, long startDelay,
+ TimeInterpolator interpolator) {
+ Animator animator = ObjectAnimator.ofPropertyValuesHolder(v,
+ PropertyValuesHolder.ofFloat(View.ALPHA, v.getAlpha(), 0f),
+ PropertyValuesHolder.ofFloat(View.TRANSLATION_X,
+ v.getTranslationX(), mExitTranslationX));
+ animator.setStartDelay(startDelay);
+ animator.setDuration(duration);
+ animator.setInterpolator(interpolator);
+ animator.addListener(new HardwareLayerAnimatorListenerAdapter(v));
+ return animator;
+ }
+
private class SetupAdapter extends RecyclerView.Adapter<MyViewHolder> {
@Override
public int getItemViewType(int position) {
@@ -286,8 +420,8 @@ public class SetupView extends FullscreenDialogView {
@VisibleForTesting
static class TvInputInfoComparator implements Comparator<TvInputInfo> {
- private SetupUtils mSetupUtils;
- private TvInputManagerHelper mInputManager;
+ private final SetupUtils mSetupUtils;
+ private final TvInputManagerHelper mInputManager;
public TvInputInfoComparator(SetupUtils setupUtils, TvInputManagerHelper inputManager) {
mSetupUtils = setupUtils;
@@ -303,5 +437,5 @@ public class SetupView extends FullscreenDialogView {
}
return mInputManager.getDefaultTvInputInfoComparator().compare(lhs, rhs);
}
- };
+ }
}
diff --git a/src/com/android/tv/ui/TunableTvView.java b/src/com/android/tv/ui/TunableTvView.java
index cbf61304..eba43594 100644
--- a/src/com/android/tv/ui/TunableTvView.java
+++ b/src/com/android/tv/ui/TunableTvView.java
@@ -53,6 +53,7 @@ import com.android.tv.common.TvCommonConstants;
import com.android.tv.data.Channel;
import com.android.tv.data.StreamInfo;
import com.android.tv.parental.ContentRatingsManager;
+import com.android.tv.recommendation.NotificationService;
import com.android.tv.util.TvInputManagerHelper;
import com.android.tv.util.Utils;
@@ -233,7 +234,7 @@ public class TunableTvView extends FrameLayout implements StreamInfo {
List<TvTrackInfo> tracks = getTracks(type);
boolean trackFound = false;
if (tracks != null) {
- for (TvTrackInfo track : getTracks(type)) {
+ for (TvTrackInfo track : tracks) {
if (track.getId().equals(trackId)) {
if (type == TvTrackInfo.TYPE_VIDEO) {
mVideoWidth = track.getVideoWidth();
@@ -454,7 +455,9 @@ public class TunableTvView extends FrameLayout implements StreamInfo {
}
mOnTuneListener = listener;
mCurrentChannel = channel;
- mTracker.sendChannelViewStart(mCurrentChannel);
+ boolean tunedByRecommendation = params != null
+ && params.getString(NotificationService.TUNE_PARAMS_RECOMMENDATION_TYPE) != null;
+ mTracker.sendChannelViewStart(mCurrentChannel, tunedByRecommendation);
mChannelViewTimer.start();
boolean needSurfaceSizeUpdate = false;
if (!inputInfo.equals(mInputInfo)) {
diff --git a/src/com/android/tv/ui/TvOverlayManager.java b/src/com/android/tv/ui/TvOverlayManager.java
index 28f16980..b3c009d8 100644
--- a/src/com/android/tv/ui/TvOverlayManager.java
+++ b/src/com/android/tv/ui/TvOverlayManager.java
@@ -16,9 +16,13 @@
package com.android.tv.ui;
+import android.os.Handler;
+import android.os.Message;
import android.support.annotation.IntDef;
+import android.support.annotation.NonNull;
import android.util.Log;
import android.view.KeyEvent;
+import android.view.ViewGroup;
import com.android.tv.ChannelTuner;
import com.android.tv.MainActivity;
@@ -27,13 +31,16 @@ import com.android.tv.R;
import com.android.tv.TimeShiftManager;
import com.android.tv.TvApplication;
import com.android.tv.analytics.Tracker;
+import com.android.tv.common.WeakHandler;
import com.android.tv.dialog.FullscreenDialogFragment;
import com.android.tv.dialog.PinDialogFragment;
import com.android.tv.dialog.RecentlyWatchedDialogFragment;
import com.android.tv.dialog.SafeDismissDialogFragment;
import com.android.tv.guide.ProgramGuide;
+import com.android.tv.menu.Menu;
+import com.android.tv.menu.Menu.MenuShowReason;
+import com.android.tv.menu.MenuRowFactory;
import com.android.tv.menu.MenuView;
-import com.android.tv.menu.MenuView.MenuShowReason;
import com.android.tv.search.ProgramGuideSearchFragment;
import com.android.tv.ui.TvTransitionManager.SceneType;
import com.android.tv.ui.sidepanel.AboutFragment;
@@ -60,7 +67,7 @@ public class TvOverlayManager {
value = {FLAG_HIDE_OVERLAYS_DEFAULT, FLAG_HIDE_OVERLAYS_WITHOUT_ANIMATION,
FLAG_HIDE_OVERLAYS_KEEP_SCENE, FLAG_HIDE_OVERLAYS_KEEP_DIALOG,
FLAG_HIDE_OVERLAYS_KEEP_SIDE_PANELS, FLAG_HIDE_OVERLAYS_KEEP_SIDE_PANEL_HISTORY,
- FLAG_HIDE_OVERLAYS_KEEP_PROGRAM_GUIDE})
+ FLAG_HIDE_OVERLAYS_KEEP_PROGRAM_GUIDE, FLAG_HIDE_OVERLAYS_KEEP_MENU})
public @interface HideOverlayFlag {}
// FLAG_HIDE_OVERLAYs must be bitwise exclusive.
public static final int FLAG_HIDE_OVERLAYS_DEFAULT = 0b00000000;
@@ -70,6 +77,9 @@ public class TvOverlayManager {
public static final int FLAG_HIDE_OVERLAYS_KEEP_SIDE_PANELS = 0b00010000;
public static final int FLAG_HIDE_OVERLAYS_KEEP_SIDE_PANEL_HISTORY = 0b00100000;
public static final int FLAG_HIDE_OVERLAYS_KEEP_PROGRAM_GUIDE = 0b01000000;
+ public static final int FLAG_HIDE_OVERLAYS_KEEP_MENU = 0b10000000;
+
+ public static final int MSG_SHOW_DIALOG = 1000;
@Retention(RetentionPolicy.SOURCE)
@IntDef(flag = true,
@@ -101,7 +111,7 @@ public class TvOverlayManager {
private final MainActivity mMainActivity;
private final ChannelTuner mChannelTuner;
private final TvTransitionManager mTransitionManager;
- private final MenuView mMenuView;
+ private final Menu mMenu;
private final SideFragmentManager mSideFragmentManager;
private final ProgramGuide mProgramGuide;
private final KeypadChannelSwitchView mKeypadChannelSwitchView;
@@ -109,20 +119,24 @@ public class TvOverlayManager {
private final ProgramGuideSearchFragment mSearchFragment;
private final Tracker mTracker;
private SafeDismissDialogFragment mCurrentDialog;
+ private final Handler mHandler = new TvOverlayHandler(this);
private @TvOverlayType int mOpenedOverlays;
public TvOverlayManager(MainActivity mainActivity, ChannelTuner channelTuner,
- TvTransitionManager transitionManager, KeypadChannelSwitchView keypadChannelSwitchView,
- SelectInputView selectInputView, ProgramGuideSearchFragment searchFragment) {
+ KeypadChannelSwitchView keypadChannelSwitchView,
+ ChannelBannerView channelBannerView, InputBannerView inputBannerView,
+ SelectInputView selectInputView, ViewGroup sceneContainer,
+ ProgramGuideSearchFragment searchFragment) {
mMainActivity = mainActivity;
mChannelTuner = channelTuner;
- mTransitionManager = transitionManager;
mKeypadChannelSwitchView = keypadChannelSwitchView;
mSelectInputView = selectInputView;
mSearchFragment = searchFragment;
mTracker = ((TvApplication) mainActivity.getApplication()).getTracker();
- transitionManager.setListener(new TvTransitionManager.Listener() {
+ mTransitionManager = new TvTransitionManager(mainActivity, sceneContainer,
+ channelBannerView, inputBannerView, mKeypadChannelSwitchView, selectInputView);
+ mTransitionManager.setListener(new TvTransitionManager.Listener() {
@Override
public void onSceneChanged(int fromScene, int toScene) {
// Call notifyOverlayOpened first so that the listener can know that a new scene
@@ -136,19 +150,18 @@ public class TvOverlayManager {
}
});
// Menu
- mMenuView = (MenuView) mainActivity.findViewById(R.id.menu);
- mMenuView.setPreShowCallback(new Runnable() {
- @Override
- public void run() {
- onOverlayOpened(OVERLAY_TYPE_MENU);
- }
- });
- mMenuView.setPostHideCallback(new Runnable() {
- @Override
- public void run() {
- onOverlayClosed(OVERLAY_TYPE_MENU);
- }
- });
+ MenuView menuView = (MenuView) mainActivity.findViewById(R.id.menu);
+ mMenu = new Menu(mainActivity, menuView, new MenuRowFactory(mainActivity),
+ new Menu.OnMenuVisibilityChangeListener() {
+ @Override
+ public void onMenuVisibilityChange(boolean visible) {
+ if (visible) {
+ onOverlayOpened(OVERLAY_TYPE_MENU);
+ } else {
+ onOverlayClosed(OVERLAY_TYPE_MENU);
+ }
+ }
+ });
// Side Fragment
mSideFragmentManager = new SideFragmentManager(mainActivity,
new Runnable() {
@@ -185,26 +198,19 @@ public class TvOverlayManager {
}
/**
- * A method to follow the lifecycle of the {@link MainActivity}.
- * This is called from {@link MainActivity#onStart}.
+ * A method to release all the allocated resources or unregister listeners.
+ * This is called from {@link MainActivity#onDestroy}.
*/
- public void onStart() {
- mMenuView.onStart();
+ public void release() {
+ mMenu.release();
+ mHandler.removeCallbacksAndMessages(null);
}
/**
- * A method to follow the lifecycle of the {@link MainActivity}.
- * This is called from {@link MainActivity#onStop}.
+ * Returns the instance of {@link Menu}.
*/
- public void onStop() {
- mMenuView.onStop();
- }
-
- /**
- * Returns the instance of {@link MenuView}.
- */
- public MenuView getMenuView() {
- return mMenuView;
+ public Menu getMenu() {
+ return mMenu;
}
/**
@@ -233,7 +239,7 @@ public class TvOverlayManager {
*/
public void showMenu(@MenuShowReason int reason) {
if (mChannelTuner != null && mChannelTuner.areAllChannelsLoaded()) {
- mMenuView.show(reason);
+ mMenu.show(reason);
}
}
@@ -242,7 +248,7 @@ public class TvOverlayManager {
*/
public boolean showMenuWithTimeShiftPauseIfNeeded() {
if (mMainActivity.getTimeShiftManager().isPaused()) {
- showMenu(MenuView.REASON_PLAY_CONTROLS_PAUSE);
+ showMenu(Menu.REASON_PLAY_CONTROLS_PAUSE);
return true;
}
return false;
@@ -253,6 +259,14 @@ public class TvOverlayManager {
*/
public void showDialogFragment(String tag, SafeDismissDialogFragment dialog,
boolean keepSidePanelHistory) {
+ showDialogFragment(tag, dialog, keepSidePanelHistory, 0);
+ }
+
+ /**
+ * Shows the given dialog with a delay {@code delayMillis}.
+ */
+ public void showDialogFragment(String tag, SafeDismissDialogFragment dialog,
+ boolean keepSidePanelHistory, long delayMillis) {
int flags = FLAG_HIDE_OVERLAYS_KEEP_DIALOG;
if (keepSidePanelHistory) {
flags |= FLAG_HIDE_OVERLAYS_KEEP_SIDE_PANEL_HISTORY;
@@ -269,7 +283,11 @@ public class TvOverlayManager {
}
mCurrentDialog = dialog;
- dialog.show(mMainActivity.getFragmentManager(), tag);
+ if (delayMillis == 0) {
+ dialog.show(mMainActivity.getFragmentManager(), tag);
+ } else {
+ mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SHOW_DIALOG, tag), delayMillis);
+ }
// Calling this from SafeDismissDialogFragment.onCreated() might be late
// because it takes time for onCreated to be called
@@ -281,9 +299,17 @@ public class TvOverlayManager {
* Shows setup dialog.
*/
public void showSetupDialog() {
+ showSetupDialog(0);
+ }
+
+ /**
+ * Shows setup dialog with a delay {@code delayMillis}.
+ */
+ public void showSetupDialog(long delayMillis) {
if (DEBUG) Log.d(TAG,"showSetupDialog");
showDialogFragment(FullscreenDialogFragment.DIALOG_TAG,
- new FullscreenDialogFragment(R.layout.setup_dialog, SETUP_TRACKER_LABEL), false);
+ new FullscreenDialogFragment(R.layout.setup_dialog, SETUP_TRACKER_LABEL), false,
+ delayMillis);
}
/**
@@ -304,6 +330,35 @@ public class TvOverlayManager {
}
/**
+ * Shows banner view.
+ */
+ public void showBanner() {
+ mTransitionManager.goToChannelBannerScene();
+ }
+
+ public void showKeypadChannelSwitch() {
+ hideOverlays(TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_SCENE
+ | TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_SIDE_PANELS
+ | TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_DIALOG);
+ mTransitionManager.goToKeypadChannelSwitchScene();
+ }
+
+ /**
+ * Shows select input view.
+ */
+ public void showSelectInputView() {
+ hideOverlays(TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_SCENE);
+ mTransitionManager.goToSelectInputScene();
+ }
+
+ /**
+ * Initializes animators if animators are not initialized yet.
+ */
+ public void initAnimatorIfNeeded() {
+ mTransitionManager.initIfNeeded();
+ }
+
+ /**
* It is called when a SafeDismissDialogFragment is destroyed.
*/
public void onDialogDestroyed() {
@@ -315,8 +370,12 @@ public class TvOverlayManager {
* Shows the program guide.
*/
public void showProgramGuide() {
- hideOverlays(TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_PROGRAM_GUIDE);
- mProgramGuide.show();
+ mProgramGuide.show(new Runnable() {
+ @Override
+ public void run() {
+ hideOverlays(TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_PROGRAM_GUIDE);
+ }
+ });
}
/**
@@ -337,14 +396,23 @@ public class TvOverlayManager {
// to null.
((PinDialogFragment) mCurrentDialog).setResultListener(null);
}
- mCurrentDialog.dismiss();
+ if (mHandler.hasMessages(MSG_SHOW_DIALOG)) {
+ mHandler.removeMessages(MSG_SHOW_DIALOG);
+ onDialogDestroyed();
+ } else {
+ mCurrentDialog.dismiss();
+ }
}
mCurrentDialog = null;
}
boolean withAnimation = (flags & FLAG_HIDE_OVERLAYS_WITHOUT_ANIMATION) == 0;
- mMenuView.hide(withAnimation);
+ if ((flags & FLAG_HIDE_OVERLAYS_KEEP_MENU) != 0) {
+ // Keeps the menu.
+ } else {
+ mMenu.hide(withAnimation);
+ }
if ((flags & FLAG_HIDE_OVERLAYS_KEEP_SCENE) != 0) {
// Keeps the current scene.
} else {
@@ -366,6 +434,17 @@ public class TvOverlayManager {
}
}
+ /**
+ * Returns true, if a main view needs to hide informational text. Specifically, when overlay
+ * UIs except banner is shown, the informational text needs to be hidden for clean UI.
+ */
+ public boolean needHideTextOnMainView() {
+ return getSideFragmentManager().isActive()
+ || getMenu().isActive()
+ || mTransitionManager.isKeypadChannelSwitchActive()
+ || mTransitionManager.isSelectInputActive();
+ }
+
@TvOverlayType private int convertSceneToOverlayType(@SceneType int sceneType) {
switch (sceneType) {
case TvTransitionManager.SCENE_TYPE_CHANNEL_BANNER:
@@ -419,8 +498,8 @@ public class TvOverlayManager {
public void onUserInteraction() {
if (mSideFragmentManager.isActive()) {
mSideFragmentManager.scheduleHideAll();
- } else if (mMenuView.isActive()) {
- mMenuView.scheduleHide();
+ } else if (mMenu.isActive()) {
+ mMenu.scheduleHide();
} else if (mProgramGuide.isActive()) {
mProgramGuide.scheduleHide();
}
@@ -439,7 +518,7 @@ public class TvOverlayManager {
// Consumes the keys which may trigger system's default music player.
return MainActivity.KEY_EVENT_HANDLER_RESULT_HANDLED;
}
- if (mMenuView.isActive() || mSideFragmentManager.isActive() || mProgramGuide.isActive()) {
+ if (mMenu.isActive() || mSideFragmentManager.isActive() || mProgramGuide.isActive()) {
return MainActivity.KEY_EVENT_HANDLER_RESULT_DISPATCH_TO_OVERLAY;
}
if (mTransitionManager.isKeypadChannelSwitchActive()) {
@@ -477,31 +556,31 @@ public class TvOverlayManager {
switch (keyCode) {
case KeyEvent.KEYCODE_MEDIA_PLAY:
timeShiftManager.play();
- showMenu(MenuView.REASON_PLAY_CONTROLS_PLAY);
+ showMenu(Menu.REASON_PLAY_CONTROLS_PLAY);
break;
case KeyEvent.KEYCODE_MEDIA_PAUSE:
timeShiftManager.pause();
- showMenu(MenuView.REASON_PLAY_CONTROLS_PAUSE);
+ showMenu(Menu.REASON_PLAY_CONTROLS_PAUSE);
break;
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
timeShiftManager.togglePlayPause();
- showMenu(MenuView.REASON_PLAY_CONTROLS_PLAY_PAUSE);
+ showMenu(Menu.REASON_PLAY_CONTROLS_PLAY_PAUSE);
break;
case KeyEvent.KEYCODE_MEDIA_REWIND:
timeShiftManager.rewind();
- showMenu(MenuView.REASON_PLAY_CONTROLS_REWIND);
+ showMenu(Menu.REASON_PLAY_CONTROLS_REWIND);
break;
case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
timeShiftManager.fastForward();
- showMenu(MenuView.REASON_PLAY_CONTROLS_FAST_FORWARD);
+ showMenu(Menu.REASON_PLAY_CONTROLS_FAST_FORWARD);
break;
case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
timeShiftManager.jumpToPrevious();
- showMenu(MenuView.REASON_PLAY_CONTROLS_JUMP_TO_PREVIOUS);
+ showMenu(Menu.REASON_PLAY_CONTROLS_JUMP_TO_PREVIOUS);
break;
case KeyEvent.KEYCODE_MEDIA_NEXT:
timeShiftManager.jumpToNext();
- showMenu(MenuView.REASON_PLAY_CONTROLS_JUMP_TO_NEXT);
+ showMenu(Menu.REASON_PLAY_CONTROLS_JUMP_TO_NEXT);
break;
default:
// Does nothing.
@@ -513,7 +592,7 @@ public class TvOverlayManager {
if (mTransitionManager.isSelectInputActive()) {
mSelectInputView.onKeyUp(keyCode, event);
} else {
- mMainActivity.showSelectInputView();
+ showSelectInputView();
}
return MainActivity.KEY_EVENT_HANDLER_RESULT_HANDLED;
}
@@ -537,7 +616,7 @@ public class TvOverlayManager {
}
return MainActivity.KEY_EVENT_HANDLER_RESULT_DISPATCH_TO_OVERLAY;
}
- if (mMenuView.isActive() || mTransitionManager.isSceneActive()) {
+ if (mMenu.isActive() || mTransitionManager.isSceneActive()) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
TimeShiftManager timeShiftManager = mMainActivity.getTimeShiftManager();
if (timeShiftManager.isPaused()) {
@@ -547,7 +626,7 @@ public class TvOverlayManager {
| TvOverlayManager.FLAG_HIDE_OVERLAYS_KEEP_DIALOG);
return MainActivity.KEY_EVENT_HANDLER_RESULT_HANDLED;
}
- if (mMenuView.isActive()) {
+ if (mMenu.isActive()) {
if (KeypadChannelSwitchView.isChannelNumberKey(keyCode)) {
mMainActivity.showKeypadChannelSwitchView(keyCode);
return MainActivity.KEY_EVENT_HANDLER_RESULT_HANDLED;
@@ -592,4 +671,19 @@ public class TvOverlayManager {
}
return false;
}
+
+ private static class TvOverlayHandler extends WeakHandler<TvOverlayManager> {
+ public TvOverlayHandler(TvOverlayManager ref) {
+ super(ref);
+ }
+
+ @Override
+ public void handleMessage(Message msg, @NonNull TvOverlayManager tvOverlayManager) {
+ if (msg.what == MSG_SHOW_DIALOG) {
+ String tag = (String) msg.obj;
+ tvOverlayManager.mCurrentDialog
+ .show(tvOverlayManager.mMainActivity.getFragmentManager(), tag);
+ }
+ }
+ }
}
diff --git a/src/com/android/tv/ui/TvViewUiManager.java b/src/com/android/tv/ui/TvViewUiManager.java
index 3793d245..f93cf45c 100644
--- a/src/com/android/tv/ui/TvViewUiManager.java
+++ b/src/com/android/tv/ui/TvViewUiManager.java
@@ -99,6 +99,11 @@ public class TvViewUiManager {
private MarginLayoutParams mOldTvViewFrame;
private ObjectAnimator mBackgroundAnimator;
private int mBackgroundColor;
+ private int mAppliedDisplayedMode = DisplayMode.MODE_NOT_DEFINED;
+ private int mAppliedVideoWidth;
+ private int mAppliedVideoHeight;
+ private int mAppliedTvViewStartMargin;
+ private int mAppliedTvViewEndMargin;
public TvViewUiManager(Context context, TunableTvView tvView, TunableTvView pipView,
FrameLayout contentView, TvOptionsManager tvOptionManager) {
@@ -442,7 +447,7 @@ public class TvViewUiManager {
mBackgroundAnimator.setInterpolator(mFastOutLinearIn);
mBackgroundAnimator.start();
}
- // In the 'else'case (TV activity is getting out of the shrunken tv view mode and will
+ // In the 'else' case (TV activity is getting out of the shrunken tv view mode and will
// have a pillar box), we keep the background color and don't show the animation.
} else {
mContentView.setBackgroundColor(color);
@@ -698,6 +703,19 @@ public class TvViewUiManager {
}
private void applyDisplayMode(int videoWidth, int videoHeight, boolean animate) {
+ if (mAppliedDisplayedMode == mDisplayMode
+ && mAppliedVideoWidth == videoWidth
+ && mAppliedVideoHeight == videoHeight
+ && mAppliedTvViewStartMargin == mTvViewStartMargin
+ && mAppliedTvViewEndMargin == mTvViewEndMargin) {
+ return;
+ } else {
+ mAppliedDisplayedMode = mDisplayMode;
+ mAppliedVideoHeight = videoHeight;
+ mAppliedVideoWidth = videoWidth;
+ mAppliedTvViewStartMargin = mTvViewStartMargin;
+ mAppliedTvViewEndMargin = mTvViewEndMargin;
+ }
int availableAreaWidth = mScreenWidth - mTvViewStartMargin - mTvViewEndMargin;
int availableAreaHeight = availableAreaWidth * mScreenHeight / mScreenWidth;
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(0, 0,
diff --git a/src/com/android/tv/ui/sidepanel/ChannelSourcesFragment.java b/src/com/android/tv/ui/sidepanel/ChannelSourcesFragment.java
index a1d527a5..a95b8149 100644
--- a/src/com/android/tv/ui/sidepanel/ChannelSourcesFragment.java
+++ b/src/com/android/tv/ui/sidepanel/ChannelSourcesFragment.java
@@ -28,6 +28,9 @@ import java.util.List;
public class ChannelSourcesFragment extends SideFragment {
private static final String TRACKER_LABEL = "channel sources";
+
+ private static int ADDITIONAL_DELAY_TO_SHOW_SETUP_DIALOG_MILLIS = 50;
+
private final long mCurrentChannelId;
public ChannelSourcesFragment(long currentChannelId) {
@@ -80,7 +83,11 @@ public class ChannelSourcesFragment extends SideFragment {
@Override
protected void onSelected() {
closeFragment();
- activity.getOverlayManager().showSetupDialog();
+ // Running two animations at the same time causes performance drop.
+ // Show the setup dialog with delayed animation.
+ activity.getOverlayManager().showSetupDialog(
+ activity.getResources().getInteger(R.integer.side_panel_anim_short_duration)
+ + ADDITIONAL_DELAY_TO_SHOW_SETUP_DIALOG_MILLIS);
}
});
return items;
diff --git a/src/com/android/tv/ui/sidepanel/CustomizeChannelListFragment.java b/src/com/android/tv/ui/sidepanel/CustomizeChannelListFragment.java
index 15b9d8c0..85050dc4 100644
--- a/src/com/android/tv/ui/sidepanel/CustomizeChannelListFragment.java
+++ b/src/com/android/tv/ui/sidepanel/CustomizeChannelListFragment.java
@@ -29,6 +29,7 @@ import com.android.tv.MainActivity;
import com.android.tv.R;
import com.android.tv.data.Channel;
import com.android.tv.data.ChannelNumber;
+import com.android.tv.ui.OnRepeatedKeyInterceptListener;
import com.android.tv.util.TvInputManagerHelper;
import com.android.tv.util.Utils;
@@ -54,27 +55,6 @@ public class CustomizeChannelListFragment extends SideFragment {
private final List<Item> mItems = new ArrayList<>();
- private final VerticalGridView.OnKeyInterceptListener mOnKeyInterceptListener =
- new VerticalGridView.OnKeyInterceptListener() {
- @Override
- public boolean onInterceptKeyEvent(KeyEvent event) {
- // In order to send tune operation once for continuous channel up/down events, we only
- // call the moveToChannel method on ACTION_UP event of channel switch keys.
- if (event.getAction() == KeyEvent.ACTION_UP) {
- switch (event.getKeyCode()) {
- case KeyEvent.KEYCODE_DPAD_UP:
- case KeyEvent.KEYCODE_DPAD_DOWN:
- if (mLastFocusedChannelId != Channel.INVALID_ID) {
- getMainActivity().tuneToChannel(
- getChannelDataManager().getChannel(mLastFocusedChannelId));
- }
- break;
- }
- }
- return false;
- }
- };
-
public CustomizeChannelListFragment() {
this(Channel.INVALID_ID);
}
@@ -95,7 +75,25 @@ public class CustomizeChannelListFragment extends SideFragment {
Bundle savedInstanceState) {
View view = super.onCreateView(inflater, container, savedInstanceState);
VerticalGridView listView = (VerticalGridView) view.findViewById(R.id.side_panel_list);
- listView.setOnKeyInterceptListener(mOnKeyInterceptListener);
+ listView.setOnKeyInterceptListener(new OnRepeatedKeyInterceptListener(listView) {
+ @Override
+ public boolean onInterceptKeyEvent(KeyEvent event) {
+ // In order to send tune operation once for continuous channel up/down events,
+ // we only call the moveToChannel method on ACTION_UP event of channel switch keys.
+ if (event.getAction() == KeyEvent.ACTION_UP) {
+ switch (event.getKeyCode()) {
+ case KeyEvent.KEYCODE_DPAD_UP:
+ case KeyEvent.KEYCODE_DPAD_DOWN:
+ if (mLastFocusedChannelId != Channel.INVALID_ID) {
+ getMainActivity().tuneToChannel(
+ getChannelDataManager().getChannel(mLastFocusedChannelId));
+ }
+ break;
+ }
+ }
+ return super.onInterceptKeyEvent(event);
+ }
+ });
if (!mGroupByFragmentRunning) {
getMainActivity().startShrunkenTvView(false, true);
diff --git a/src/com/android/tv/ui/sidepanel/parentalcontrols/ChannelsBlockedFragment.java b/src/com/android/tv/ui/sidepanel/parentalcontrols/ChannelsBlockedFragment.java
index 41e2ec37..ede5c268 100644
--- a/src/com/android/tv/ui/sidepanel/parentalcontrols/ChannelsBlockedFragment.java
+++ b/src/com/android/tv/ui/sidepanel/parentalcontrols/ChannelsBlockedFragment.java
@@ -31,6 +31,7 @@ import android.widget.TextView;
import com.android.tv.R;
import com.android.tv.data.Channel;
import com.android.tv.data.ChannelNumber;
+import com.android.tv.ui.OnRepeatedKeyInterceptListener;
import com.android.tv.ui.sidepanel.ActionItem;
import com.android.tv.ui.sidepanel.ChannelCheckItem;
import com.android.tv.ui.sidepanel.DividerItem;
@@ -57,27 +58,6 @@ public class ChannelsBlockedFragment extends SideFragment {
private final Item mLockAllItem = new BlockAllItem();
private final List<Item> mItems = new ArrayList<>();
- private final VerticalGridView.OnKeyInterceptListener mOnKeyInterceptListener =
- new VerticalGridView.OnKeyInterceptListener() {
- @Override
- public boolean onInterceptKeyEvent(KeyEvent event) {
- // In order to send tune operation once for continuous channel up/down events, we only
- // call the moveToChannel method on ACTION_UP event of channel switch keys.
- if (event.getAction() == KeyEvent.ACTION_UP) {
- switch (event.getKeyCode()) {
- case KeyEvent.KEYCODE_DPAD_UP:
- case KeyEvent.KEYCODE_DPAD_DOWN:
- if (mLastFocusedChannelId != Channel.INVALID_ID) {
- getMainActivity().tuneToChannel(
- getChannelDataManager().getChannel(mLastFocusedChannelId));
- }
- break;
- }
- }
- return false;
- }
- };
-
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
@@ -86,7 +66,25 @@ public class ChannelsBlockedFragment extends SideFragment {
setSelectedPosition(mSelectedPosition);
}
VerticalGridView listView = (VerticalGridView) view.findViewById(R.id.side_panel_list);
- listView.setOnKeyInterceptListener(mOnKeyInterceptListener);
+ listView.setOnKeyInterceptListener(new OnRepeatedKeyInterceptListener(listView) {
+ @Override
+ public boolean onInterceptKeyEvent(KeyEvent event) {
+ // In order to send tune operation once for continuous channel up/down events,
+ // we only call the moveToChannel method on ACTION_UP event of channel switch keys.
+ if (event.getAction() == KeyEvent.ACTION_UP) {
+ switch (event.getKeyCode()) {
+ case KeyEvent.KEYCODE_DPAD_UP:
+ case KeyEvent.KEYCODE_DPAD_DOWN:
+ if (mLastFocusedChannelId != Channel.INVALID_ID) {
+ getMainActivity().tuneToChannel(
+ getChannelDataManager().getChannel(mLastFocusedChannelId));
+ }
+ break;
+ }
+ }
+ return super.onInterceptKeyEvent(event);
+ }
+ });
getActivity().getContentResolver().registerContentObserver(TvContract.Programs.CONTENT_URI,
true, mProgramUpdateObserver);
getMainActivity().startShrunkenTvView(true, true);
diff --git a/src/com/android/tv/util/AsyncDbTask.java b/src/com/android/tv/util/AsyncDbTask.java
index 73f45638..82d42377 100644
--- a/src/com/android/tv/util/AsyncDbTask.java
+++ b/src/com/android/tv/util/AsyncDbTask.java
@@ -21,7 +21,9 @@ import android.database.Cursor;
import android.media.tv.TvContract;
import android.net.Uri;
import android.os.AsyncTask;
+import android.support.annotation.MainThread;
import android.support.annotation.NonNull;
+import android.support.annotation.WorkerThread;
import android.util.Log;
import android.util.Range;
@@ -168,6 +170,7 @@ public abstract class AsyncDbTask<Params, Progress, Result>
*
* <p><b>Note</b> This is executed on the DB thread by {@link #doInBackground(Void...)}
*/
+ @WorkerThread
protected abstract Result onQuery(Cursor c);
@Override
@@ -215,6 +218,7 @@ public abstract class AsyncDbTask<Params, Progress, Result>
*
* @param c The cursor with the values to create T from.
*/
+ @WorkerThread
protected abstract T fromCursor(Cursor c);
}
@@ -238,6 +242,7 @@ public abstract class AsyncDbTask<Params, Progress, Result>
* Execute the task on the {@link #DB_EXECUTOR} thread.
*/
@SafeVarargs
+ @MainThread
public final void executeOnDbThread(Params... params) {
executeOnExecutor(DB_EXECUTOR, params);
}
diff --git a/src/com/android/tv/util/BitmapUtils.java b/src/com/android/tv/util/BitmapUtils.java
index c06eac03..fd07507a 100644
--- a/src/com/android/tv/util/BitmapUtils.java
+++ b/src/com/android/tv/util/BitmapUtils.java
@@ -233,7 +233,7 @@ public class BitmapUtils {
|| size.bottom >= bitmap.getHeight() * 2);
if (DEBUG) {
Log.d(TAG, "needToReload(" + reqWidth + ", " + reqHeight + ")=" + reload
- + " becuase the new size would be " + size + " for " + this);
+ + " because the new size would be " + size + " for " + this);
}
return reload;
}
diff --git a/src/com/android/tv/util/BooleanSystemProperty.java b/src/com/android/tv/util/BooleanSystemProperty.java
index 11dd5ab8..6786868e 100644
--- a/src/com/android/tv/util/BooleanSystemProperty.java
+++ b/src/com/android/tv/util/BooleanSystemProperty.java
@@ -24,8 +24,13 @@ import java.util.List;
/**
* Lazy loaded boolean system property.
- * <p>
- * Set with <code>adb shell setprop <em>key</em> <em>value</em></code> where value is
+ *
+ * <p>Set with <code>adb shell setprop <em>key</em> <em>value</em></code> where:
+ * Values 'n', 'no', '0', 'false' or 'off' are considered false.
+ * Values 'y', 'yes', '1', 'true' or 'on' are considered true.
+ * (case sensitive). See <a href=
+ * "https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/os/SystemProperties.java"
+ * >android.os.SystemProperties.getBoolean</a>.
*/
public final class BooleanSystemProperty {
private final static String TAG = "BooleanSystemProperty";
diff --git a/src/com/android/tv/util/RecurringRunner.java b/src/com/android/tv/util/RecurringRunner.java
new file mode 100644
index 00000000..f51918e9
--- /dev/null
+++ b/src/com/android/tv/util/RecurringRunner.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.tv.util;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.AsyncTask;
+import android.os.Handler;
+import android.support.annotation.WorkerThread;
+import android.util.Log;
+
+import java.util.Date;
+
+/**
+ * Repeatedly executes a {@link Runnable}.
+ *
+ * <p>The next execution time is saved to a {@link SharedPreferences}, and used on the next start.
+ * The given {@link Runnable} will run in the main thread.
+ */
+public final class RecurringRunner {
+ private static final String TAG = "RecurringRunner";
+ private static final boolean DEBUG = false;
+
+ private final Handler mHandler;
+ private final long mIntervalMs;
+ private final Runnable mRunnable;
+ private final Context mContext;
+ private final String mName;
+ private boolean mRunning;
+
+ public RecurringRunner(Context context, long intervalMs, Runnable runnable) {
+ mContext = context.getApplicationContext();
+ mRunnable = runnable;
+ mIntervalMs = intervalMs;
+ if (DEBUG) Log.i(TAG, "Delaying " + (intervalMs / 1000.0) + " seconds");
+ mName = runnable.getClass().getCanonicalName();
+ mHandler = new Handler(mContext.getMainLooper());
+ }
+
+ public void start() {
+ if (mRunning) {
+ Utils.engThrowElseWarn(TAG, "start is called twice.", new IllegalStateException());
+ return;
+ }
+ mRunning = true;
+ new AsyncTask<Void, Void, Long>() {
+ @Override
+ protected Long doInBackground(Void... params) {
+ return getNextRunTime();
+ }
+
+ @Override
+ protected void onPostExecute(Long nextRunTime) {
+ postAt(nextRunTime);
+ }
+ }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ }
+
+ public void stop() {
+ mRunning = false;
+ mHandler.removeCallbacksAndMessages(null);
+ }
+
+ private void postAt(long next) {
+ if (!mRunning) {
+ return;
+ }
+ long now = System.currentTimeMillis();
+ // Run it anyways even if it is in the past
+ if (DEBUG) Log.i(TAG, "Next run of " + mName + " at " + new Date(next));
+ long delay = Math.max(next - now, 0);
+ boolean posted = mHandler.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ if (DEBUG) Log.i(TAG, "Starting " + mName);
+ mRunnable.run();
+ } catch (Exception e) {
+ Log.w(TAG, "Error running " + mName, e);
+ }
+ postAt(resetNextRunTime());
+ }
+ }, delay);
+ if (!posted) {
+ Log.w(TAG, "Scheduling a future run of " + mName + " at " + new Date(next) + "failed");
+ }
+ if (DEBUG) Log.i(TAG, "Actual delay is " + (delay / 1000.0) + " seconds.");
+ }
+
+ private SharedPreferences getSharedPreferences() {
+ return mContext.getSharedPreferences(RecurringRunner.class.getCanonicalName(),
+ Context.MODE_PRIVATE);
+ }
+
+ @WorkerThread
+ private long getNextRunTime() {
+ // The access to SharedPreferences is done by an AsyncTask thread because
+ // SharedPreferences reads to disk at first time.
+ long next = getSharedPreferences().getLong(mName, System.currentTimeMillis());
+ if (next > System.currentTimeMillis() + mIntervalMs) {
+ next = resetNextRunTime();
+ }
+ return next;
+ }
+
+ private long resetNextRunTime() {
+ long next = System.currentTimeMillis() + mIntervalMs;
+ getSharedPreferences().edit().putLong(mName, next).apply();
+ return next;
+ }
+}
diff --git a/src/com/android/tv/util/SearchManagerHelper.java b/src/com/android/tv/util/SearchManagerHelper.java
index 3a3f82f3..bd5db6ec 100644
--- a/src/com/android/tv/util/SearchManagerHelper.java
+++ b/src/com/android/tv/util/SearchManagerHelper.java
@@ -18,12 +18,11 @@ package com.android.tv.util;
import android.app.SearchManager;
import android.content.Context;
+import android.os.Build;
import android.os.Bundle;
import android.os.UserHandle;
import android.util.Log;
-import com.android.tv.common.TvCommonConstants;
-
import java.lang.reflect.InvocationTargetException;
/**
@@ -51,25 +50,20 @@ public final class SearchManagerHelper {
}
}
- public boolean launchAssistAction() {
+ public void launchAssistAction() {
try {
- if (TvCommonConstants.IS_MNC_PREVIEW) {
- return (boolean) SearchManager.class.getDeclaredMethod(
- "launchAssistAction", String.class, Integer.TYPE, Bundle.class).invoke(
- mSearchManager, null, UserHandle.myUserId(), null);
- } else if (TvCommonConstants.IS_MNC_OR_HIGHER) {
- return (boolean) SearchManager.class.getDeclaredMethod(
+ if (Build.VERSION.SDK_INT >= 23) {
+ SearchManager.class.getDeclaredMethod(
"launchLegacyAssist", String.class, Integer.TYPE, Bundle.class).invoke(
mSearchManager, null, UserHandle.myUserId(), null);
} else {
- return (boolean) SearchManager.class.getDeclaredMethod(
+ SearchManager.class.getDeclaredMethod(
"launchAssistAction", Integer.TYPE, String.class, Integer.TYPE).invoke(
mSearchManager, 0, null, UserHandle.myUserId());
}
} catch (NoSuchMethodException | IllegalArgumentException | IllegalAccessException
| InvocationTargetException e) {
Log.e(TAG, "Fail to call SearchManager.launchAssistAction", e);
- return false;
}
}
}
diff --git a/src/com/android/tv/util/SystemProperties.java b/src/com/android/tv/util/SystemProperties.java
index 6f661976..88266cad 100644
--- a/src/com/android/tv/util/SystemProperties.java
+++ b/src/com/android/tv/util/SystemProperties.java
@@ -20,6 +20,25 @@ package com.android.tv.util;
* A convenience class for getting TV related system properties.
*/
public final class SystemProperties {
+
+ /**
+ * Allow Google Analytics for eng builds.
+ */
+ public static final BooleanSystemProperty ALLOW_ANALYTICS_IN_ENG = new BooleanSystemProperty(
+ "tv_allow_analytics_in_eng", false);
+
+ /**
+ * Allow Strict mode for debug builds.
+ */
+ public static final BooleanSystemProperty ALLOW_STRICT_MODE = new BooleanSystemProperty(
+ "tv_allow_strict_mode", true);
+
+ /**
+ * Allow Strict death penalty for eng builds.
+ */
+ public static final BooleanSystemProperty ALLOW_DEATH_PENALTY = new BooleanSystemProperty(
+ "tv_allow_death_penalty", true);
+
/**
* When true {@link android.view.KeyEvent}s are logged. Defaults to false.
*/
diff --git a/src/com/android/tv/util/TvInputManagerHelper.java b/src/com/android/tv/util/TvInputManagerHelper.java
index 63d62697..66c0ba81 100644
--- a/src/com/android/tv/util/TvInputManagerHelper.java
+++ b/src/com/android/tv/util/TvInputManagerHelper.java
@@ -47,60 +47,61 @@ public class TvInputManagerHelper {
// Bundled (system) inputs not in the list will get the high priority
// so they and their channels come first in the UI.
private static final Set<String> BUNDLED_PACKAGE_SET = new HashSet<>();
+
static {
BUNDLED_PACKAGE_SET.add("com.android.tv");
BUNDLED_PACKAGE_SET.add("com.android.tv");
- };
+ BUNDLED_PACKAGE_SET.add("com.google.android.usbtuner");
+ }
private final Context mContext;
private final TvInputManager mTvInputManager;
private final Map<String, Integer> mInputStateMap = new HashMap<>();
private final Map<String, TvInputInfo> mInputMap = new HashMap<>();
private final Map<String, Boolean> mInputIdToPartnerInputMap = new HashMap<>();
- private final TvInputCallback mInternalCallback =
- new TvInputCallback() {
- @Override
- public void onInputStateChanged(String inputId, int state) {
- mInputStateMap.put(inputId, state);
- for (TvInputCallback callback : mCallbacks) {
- callback.onInputStateChanged(inputId, state);
- }
- }
-
- @Override
- public void onInputAdded(String inputId) {
- TvInputInfo info = mTvInputManager.getTvInputInfo(inputId);
- if (info != null) {
- mInputMap.put(inputId, info);
- mInputStateMap.put(inputId, mTvInputManager.getInputState(inputId));
- mInputIdToPartnerInputMap.put(inputId, isPartnerInput(info));
- }
- mContentRatingsManager.update();
- for (TvInputCallback callback : mCallbacks) {
- callback.onInputAdded(inputId);
- }
- }
-
- @Override
- public void onInputRemoved(String inputId) {
- mInputMap.remove(inputId);
- mInputStateMap.remove(inputId);
- mInputIdToPartnerInputMap.remove(inputId);
- mContentRatingsManager.update();
- for (TvInputCallback callback : mCallbacks) {
- callback.onInputRemoved(inputId);
- }
- }
-
- @Override
- public void onInputUpdated(String inputId) {
- TvInputInfo info = mTvInputManager.getTvInputInfo(inputId);
- mInputMap.put(inputId, info);
- for (TvInputCallback callback : mCallbacks) {
- callback.onInputUpdated(inputId);
- }
- }
- };
+ private final TvInputCallback mInternalCallback = new TvInputCallback() {
+ @Override
+ public void onInputStateChanged(String inputId, int state) {
+ mInputStateMap.put(inputId, state);
+ for (TvInputCallback callback : mCallbacks) {
+ callback.onInputStateChanged(inputId, state);
+ }
+ }
+
+ @Override
+ public void onInputAdded(String inputId) {
+ TvInputInfo info = mTvInputManager.getTvInputInfo(inputId);
+ if (info != null) {
+ mInputMap.put(inputId, info);
+ mInputStateMap.put(inputId, mTvInputManager.getInputState(inputId));
+ mInputIdToPartnerInputMap.put(inputId, isPartnerInput(info));
+ }
+ mContentRatingsManager.update();
+ for (TvInputCallback callback : mCallbacks) {
+ callback.onInputAdded(inputId);
+ }
+ }
+
+ @Override
+ public void onInputRemoved(String inputId) {
+ mInputMap.remove(inputId);
+ mInputStateMap.remove(inputId);
+ mInputIdToPartnerInputMap.remove(inputId);
+ mContentRatingsManager.update();
+ for (TvInputCallback callback : mCallbacks) {
+ callback.onInputRemoved(inputId);
+ }
+ }
+
+ @Override
+ public void onInputUpdated(String inputId) {
+ TvInputInfo info = mTvInputManager.getTvInputInfo(inputId);
+ mInputMap.put(inputId, info);
+ for (TvInputCallback callback : mCallbacks) {
+ callback.onInputUpdated(inputId);
+ }
+ }
+ };
private final Handler mHandler = new Handler();
private boolean mStarted;
@@ -178,15 +179,30 @@ public class TvInputManagerHelper {
* Checks if the input is from a partner.
*
* It's visible for comparator test.
- * Package private is enough for this method, but public is necessary to workaround mockito bug.
+ * Package private is enough for this method, but public is necessary to workaround mockito
+ * bug.
*/
@VisibleForTesting
public boolean isPartnerInput(TvInputInfo inputInfo) {
+ return isSystemInput(inputInfo) && !isBundledInput(inputInfo);
+ }
+
+ /**
+ * Does the input have {@link ApplicationInfo#FLAG_SYSTEM} set.
+ */
+ public boolean isSystemInput(TvInputInfo inputInfo) {
return inputInfo != null
&& (inputInfo.getServiceInfo().applicationInfo.flags
- & ApplicationInfo.FLAG_SYSTEM) != 0
- && !BUNDLED_PACKAGE_SET.contains(
- inputInfo.getServiceInfo().applicationInfo.packageName);
+ & ApplicationInfo.FLAG_SYSTEM) != 0;
+ }
+
+ /**
+ * Is the input one known bundled inputs not written by OEM/SOCs.
+ */
+ public boolean isBundledInput(TvInputInfo inputInfo) {
+ return inputInfo != null
+ && BUNDLED_PACKAGE_SET.contains(
+ inputInfo.getServiceInfo().applicationInfo.packageName);
}
/**
@@ -202,7 +218,8 @@ public class TvInputManagerHelper {
* Loads label of {@param info}.
*
* It's visible for comparator test to mock TvInputInfo.
- * Package private is enough for this method, but public is necessary to workaround mockito bug.
+ * Package private is enough for this method, but public is necessary to workaround mockito
+ * bug.
*/
@VisibleForTesting
public String loadLabel(TvInputInfo info) {
@@ -214,7 +231,8 @@ public class TvInputManagerHelper {
*/
public boolean hasTvInputInfo(String inputId) {
if (!mStarted) {
- Log.w(TAG, "hasTvInputInfo() called before TvInputManagerHelper was started.");
+ Utils.engThrowElseWarn(TAG,
+ "hasTvInputInfo() called before TvInputManagerHelper was started.");
return false;
}
return !TextUtils.isEmpty(inputId) && mInputMap.get(inputId) != null;
@@ -222,7 +240,8 @@ public class TvInputManagerHelper {
public TvInputInfo getTvInputInfo(String inputId) {
if (!mStarted) {
- Log.w(TAG, "getTvInputInfo() called before TvInputManagerHelper was started.");
+ Utils.engThrowElseWarn(TAG,
+ "getTvInputInfo() called before TvInputManagerHelper was started.");
return null;
}
if (inputId == null) {
@@ -291,7 +310,7 @@ public class TvInputManagerHelper {
*/
@VisibleForTesting
static class TvInputInfoComparator implements Comparator<TvInputInfo> {
- private TvInputManagerHelper mInputManager;
+ private final TvInputManagerHelper mInputManager;
public TvInputInfoComparator(TvInputManagerHelper inputManager) {
mInputManager = inputManager;
@@ -304,5 +323,5 @@ public class TvInputManagerHelper {
}
return mInputManager.loadLabel(lhs).compareTo(mInputManager.loadLabel(rhs));
}
- };
+ }
}
diff --git a/src/com/android/tv/util/Utils.java b/src/com/android/tv/util/Utils.java
index b0822517..a0ed0924 100644
--- a/src/com/android/tv/util/Utils.java
+++ b/src/com/android/tv/util/Utils.java
@@ -32,11 +32,13 @@ import android.net.Uri;
import android.preference.PreferenceManager;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
+import android.support.annotation.WorkerThread;
import android.text.TextUtils;
import android.text.format.DateUtils;
import android.util.Log;
import android.view.View;
+import com.android.tv.BuildConfig;
import com.android.tv.R;
import com.android.tv.data.Channel;
import com.android.tv.data.Program;
@@ -124,6 +126,7 @@ public class Utils {
return sb.toString();
}
+ @WorkerThread
public static String getInputIdForChannel(Context context, long channelId) {
if (channelId == Channel.INVALID_ID) {
return null;
@@ -219,6 +222,7 @@ public class Utils {
/**
* Gets the info of the program on particular time.
*/
+ @WorkerThread
public static Program getProgramAt(Context context, long channelId, long timeMs) {
if (channelId == Channel.INVALID_ID) {
Log.e(TAG, "getCurrentProgramAt - channelId is invalid");
@@ -247,6 +251,7 @@ public class Utils {
/**
* Gets the info of the current program.
*/
+ @WorkerThread
public static Program getCurrentProgram(Context context, long channelId) {
return getProgramAt(context, channelId, System.currentTimeMillis());
}
@@ -265,8 +270,8 @@ public class Utils {
*/
public static String getDurationString(
Context context, long startUtcMillis, long endUtcMillis, boolean useShortFormat) {
- return getDurationString(context, System.currentTimeMillis(),
- startUtcMillis, endUtcMillis, useShortFormat, 0);
+ return getDurationString(context, System.currentTimeMillis(), startUtcMillis, endUtcMillis,
+ useShortFormat, 0);
}
@VisibleForTesting
@@ -495,6 +500,7 @@ public class Utils {
/**
* Enable all channels synchronously.
*/
+ @WorkerThread
public static void enableAllChannels(Context context) {
ContentValues values = new ContentValues();
values.put(Channels.COLUMN_BROWSABLE, 1);
@@ -544,4 +550,48 @@ public class Utils {
public static String intern(@Nullable String string) {
return string == null ? null : string.intern();
}
+
+ /**
+ * Checks if this application is running in tests.
+ *
+ * <p>{@link android.app.ActivityManager#isRunningInTestHarness} doesn't return {@code true} for
+ * the usual devices even the application is running in tests. We need to figure it out by
+ * checking whether the class in tv-tests-common module can be loaded or not.
+ */
+ public static boolean isRunningInTest() {
+ try {
+ Class.forName("com.android.tv.testing.Utils");
+ return true;
+ } catch (ClassNotFoundException e) {
+ return false;
+ }
+ }
+
+ /**
+ * Throws a {@link RuntimeException} if {@link BuildConfig#ENG} is true, else log a warning.
+ *
+ * @param tag Used to log message.
+ * @param msg The message
+ */
+ public static void engThrowElseWarn(String tag, String msg) {
+ if (BuildConfig.ENG) {
+ throw new RuntimeException(msg);
+ } else {
+ Log.w(tag, msg);
+ }
+ }
+
+ /**
+ * Throws a {@link RuntimeException} if {@link BuildConfig#ENG} is true, else log a warning.
+ *
+ * @param tag Used to log message.
+ * @param msg The message
+ */
+ public static void engThrowElseWarn(String tag, String msg, RuntimeException e) {
+ if (BuildConfig.ENG) {
+ throw e;
+ } else {
+ Log.w(tag, msg);
+ }
+ }
}
diff --git a/tests/common/Android.mk b/tests/common/Android.mk
index f8263311..62005890 100644
--- a/tests/common/Android.mk
+++ b/tests/common/Android.mk
@@ -9,9 +9,11 @@ LOCAL_SRC_FILES := \
LOCAL_STATIC_JAVA_LIBRARIES := \
android-support-annotations \
mockito-target \
- tv-common \
ub-uiautomator
+# Link tv-common as shared library to avoid the problem of initialization of the constants
+LOCAL_JAVA_LIBRARIES := tv-common
+
LOCAL_INSTRUMENTATION_FOR := TV
LOCAL_MODULE := tv-test-common
LOCAL_MODULE_TAGS := optional
diff --git a/tests/common/src/com/android/tv/testing/ChannelInfo.java b/tests/common/src/com/android/tv/testing/ChannelInfo.java
index 5197630f..40a8bba8 100644
--- a/tests/common/src/com/android/tv/testing/ChannelInfo.java
+++ b/tests/common/src/com/android/tv/testing/ChannelInfo.java
@@ -22,6 +22,8 @@ import android.media.tv.TvContract;
import android.support.annotation.Nullable;
import android.util.SparseArray;
+import java.util.Objects;
+
/**
* Channel Information.
*/
@@ -78,8 +80,12 @@ public final class ChannelInfo {
.setName("Channel " + channelNumber)
.setOriginalNetworkId(channelNumber);
if (context != null) {
- builder.setLogoUrl(Utils.getUriStringForResource(
- context, LOGOS_RES[channelNumber % LOGOS_RES.length]));
+ // tests/input/tools/get_test_logos.sh only stores 1000 logos.
+ int logo_num = (channelNumber % 1000) + 1;
+ builder.setLogoUrl(
+ "android.resource://com.android.tv.testinput/drawable/ch_" + logo_num
+ + "_logo"
+ );
}
return builder.build();
}
@@ -146,6 +152,37 @@ public final class ChannelInfo {
+ ", appLinkIntentUri=" + appLinkIntentUri + "}";
}
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ChannelInfo that = (ChannelInfo) o;
+ return Objects.equals(originalNetworkId, that.originalNetworkId) &&
+ Objects.equals(videoWidth, that.videoWidth) &&
+ Objects.equals(videoHeight, that.videoHeight) &&
+ Objects.equals(audioChannel, that.audioChannel) &&
+ Objects.equals(audioLanguageCount, that.audioLanguageCount) &&
+ Objects.equals(hasClosedCaption, that.hasClosedCaption) &&
+ Objects.equals(appLinkColor, that.appLinkColor) &&
+ Objects.equals(number, that.number) &&
+ Objects.equals(name, that.name) &&
+ Objects.equals(logoUrl, that.logoUrl) &&
+ Objects.equals(program, that.program) &&
+ Objects.equals(appLinkText, that.appLinkText) &&
+ Objects.equals(appLinkIconUri, that.appLinkIconUri) &&
+ Objects.equals(appLinkPosterArtUri, that.appLinkPosterArtUri) &&
+ Objects.equals(appLinkIntentUri, that.appLinkIntentUri);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(number, name, originalNetworkId);
+ }
+
/**
* Builder class for {@code ChannelInfo}.
*/
diff --git a/tests/common/src/com/android/tv/testing/ChannelUtils.java b/tests/common/src/com/android/tv/testing/ChannelUtils.java
index aadbf727..8d96cbed 100644
--- a/tests/common/src/com/android/tv/testing/ChannelUtils.java
+++ b/tests/common/src/com/android/tv/testing/ChannelUtils.java
@@ -15,7 +15,6 @@
*/
package com.android.tv.testing;
-import android.annotation.TargetApi;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
@@ -30,8 +29,6 @@ import android.text.TextUtils;
import android.util.Log;
import android.util.SparseArray;
-import com.android.tv.common.TvCommonConstants;
-
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -57,9 +54,7 @@ public class ChannelUtils {
String[] projections = new String[ChannelInfo.PROJECTION.length + 1];
projections[0] = Channels._ID;
- for (int i = 0; i < ChannelInfo.PROJECTION.length; i++) {
- projections[i + 1] = ChannelInfo.PROJECTION[i];
- }
+ System.arraycopy(ChannelInfo.PROJECTION, 0, projections, 1, ChannelInfo.PROJECTION.length);
try (Cursor cursor = context.getContentResolver()
.query(uri, projections, null, null, null)) {
if (cursor != null) {
@@ -100,7 +95,7 @@ public class ChannelUtils {
} else {
values.putNull(Channels.COLUMN_VIDEO_FORMAT);
}
- if (TvCommonConstants.IS_MNC_OR_HIGHER) {
+ if (Build.VERSION.SDK_INT >= 23) {
if (!TextUtils.isEmpty(channel.appLinkText)) {
values.put(Channels.COLUMN_APP_LINK_TEXT, channel.appLinkText);
}
diff --git a/tests/common/src/com/android/tv/testing/ComparableTester.java b/tests/common/src/com/android/tv/testing/ComparableTester.java
index d82e25c8..fe6e72f5 100644
--- a/tests/common/src/com/android/tv/testing/ComparableTester.java
+++ b/tests/common/src/com/android/tv/testing/ComparableTester.java
@@ -35,9 +35,9 @@ import java.util.List;
*
* <pre>{@code
* new ComparableTester<String>()
- * .addEquivelentGroup("Hello", "HELLO")
- * .addEquivelentGroup("World", "wORLD")
- * .addEquivelentGroup("ZEBRA")
+ * .addEquivalentGroup("Hello", "HELLO")
+ * .addEquivalentGroup("World", "wORLD")
+ * .addEquivalentGroup("ZEBRA")
* .test();
* }
* </pre>
@@ -49,7 +49,7 @@ public class ComparableTester<T extends Comparable<T>> {
private final List<List<T>> listOfGroups = new ArrayList<>();
@SafeVarargs
- public final ComparableTester<T> addEquivelentGroup(T... items) {
+ public final ComparableTester<T> addEquivalentGroup(T... items) {
listOfGroups.add(Arrays.asList(items));
return this;
}
diff --git a/tests/common/src/com/android/tv/testing/Constants.java b/tests/common/src/com/android/tv/testing/Constants.java
index 6575fa9e..83d8d293 100644
--- a/tests/common/src/com/android/tv/testing/Constants.java
+++ b/tests/common/src/com/android/tv/testing/Constants.java
@@ -23,7 +23,7 @@ import android.media.tv.TvTrackInfo;
public final class Constants {
public static final int FUNC_TEST_CHANNEL_COUNT = 100;
public static final int UNIT_TEST_CHANNEL_COUNT = 4;
- public static final int JANK_TEST_CHANNEL_COUNT = 1000;
+ public static final int JANK_TEST_CHANNEL_COUNT = 500; // TODO: increase to 1000 see b/23526997
public static final TvTrackInfo EN_STEREO_AUDIO_TRACK = new TvTrackInfo.Builder(
TvTrackInfo.TYPE_AUDIO, "English Stereo Audio").setLanguage("en")
diff --git a/tests/common/src/com/android/tv/testing/ProgramInfo.java b/tests/common/src/com/android/tv/testing/ProgramInfo.java
index 5b47d104..3f1f30ce 100644
--- a/tests/common/src/com/android/tv/testing/ProgramInfo.java
+++ b/tests/common/src/com/android/tv/testing/ProgramInfo.java
@@ -21,6 +21,7 @@ import android.database.Cursor;
import android.media.tv.TvContentRating;
import android.media.tv.TvContract;
+import java.util.Objects;
import java.util.concurrent.TimeUnit;
public final class ProgramInfo {
@@ -70,8 +71,8 @@ public final class ProgramInfo {
private static long DURATIONS_SUM_MS;
static {
DURATIONS_SUM_MS = 0;
- for (int i = 0; i < DURATIONS_MS.length; i++) {
- DURATIONS_SUM_MS += DURATIONS_MS[i];
+ for (long duration : DURATIONS_MS) {
+ DURATIONS_SUM_MS += duration;
}
}
@@ -212,6 +213,32 @@ public final class ProgramInfo {
+ ", durationMs=" + durationMs + "}";
}
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ ProgramInfo that = (ProgramInfo) o;
+ return Objects.equals(seasonNumber, that.seasonNumber) &&
+ Objects.equals(episodeNumber, that.episodeNumber) &&
+ Objects.equals(durationMs, that.durationMs) &&
+ Objects.equals(title, that.title) &&
+ Objects.equals(episode, that.episode) &&
+ Objects.equals(posterArtUri, that.posterArtUri) &&
+ Objects.equals(description, that.description) &&
+ Objects.equals(genre, that.genre) &&
+ Objects.equals(contentRatings, that.contentRatings) &&
+ Objects.equals(resourceUri, that.resourceUri);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(title, episode, seasonNumber, episodeNumber);
+ }
+
public static class Builder {
private String mTitle = GEN_TITLE;
private String mEpisode = GEN_EPISODE;
diff --git a/tests/common/src/com/android/tv/testing/Utils.java b/tests/common/src/com/android/tv/testing/Utils.java
index af4dbd18..33fe4c54 100644
--- a/tests/common/src/com/android/tv/testing/Utils.java
+++ b/tests/common/src/com/android/tv/testing/Utils.java
@@ -16,7 +16,6 @@
package com.android.tv.testing;
-import android.annotation.TargetApi;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
@@ -26,13 +25,19 @@ import android.media.tv.TvContentRating;
import android.media.tv.TvInputInfo;
import android.media.tv.TvInputManager;
import android.net.Uri;
-import android.os.Build;
import android.text.TextUtils;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+/**
+ * An utility class for testing.
+ *
+ * <p>This class is also used to check whether TV app is running in tests or not.
+ *
+ * @see com.android.tv.util.Utils#isRunningInTest
+ */
public class Utils {
public static String getUriStringForResource(Context context, int resId) {
if (resId == 0) {
diff --git a/tests/common/src/com/android/tv/testing/testinput/ChannelState.java b/tests/common/src/com/android/tv/testing/testinput/ChannelState.java
index 3d234dac..1b8f63cd 100644
--- a/tests/common/src/com/android/tv/testing/testinput/ChannelState.java
+++ b/tests/common/src/com/android/tv/testing/testinput/ChannelState.java
@@ -30,19 +30,19 @@ public class ChannelState {
/**
* The video track a channel has by default.
*/
- public static TvTrackInfo DEFAULT_VIDEO_TRACK = Constants.FHD1080P50_VIDEO_TRACK;
+ public static final TvTrackInfo DEFAULT_VIDEO_TRACK = Constants.FHD1080P50_VIDEO_TRACK;
/**
* The video track a channel has by default.
*/
- public static TvTrackInfo DEFAULT_AUDIO_TRACK = Constants.EN_STEREO_AUDIO_TRACK;
+ public static final TvTrackInfo DEFAULT_AUDIO_TRACK = Constants.EN_STEREO_AUDIO_TRACK;
/**
- * The channel is "tuned" and video availale.
+ * The channel is "tuned" and video available.
*
* @see #getTuneStatus()
*/
- public static int TUNE_STATUS_VIDEO_AVAILABLE = -2;
+ public static final int TUNE_STATUS_VIDEO_AVAILABLE = -2;
- private static int CHANNEL_VERSION_DEFAULT = 1;
+ private static final int CHANNEL_VERSION_DEFAULT = 1;
/**
* Default ChannelState with version @{value #CHANNEL_VERSION_DEFAULT} and default {@link
* ChannelStateData}.
diff --git a/tests/common/src/com/android/tv/testing/testinput/TvTestInputConstants.java b/tests/common/src/com/android/tv/testing/testinput/TvTestInputConstants.java
index e7ff4f5d..498addfd 100644
--- a/tests/common/src/com/android/tv/testing/testinput/TvTestInputConstants.java
+++ b/tests/common/src/com/android/tv/testing/testinput/TvTestInputConstants.java
@@ -28,7 +28,7 @@ public final class TvTestInputConstants {
* <p> By convention Channel 1 should not be changed. Test often start by tuning to this
* channel.
*/
- public static final ChannelInfo CH_1 = ChannelInfo.create(null, 1);
+ public static final ChannelInfo CH_1_DEFAULT_DONT_MODIFY = ChannelInfo.create(null, 1);
/**
* Channel 2.
*
diff --git a/tests/common/src/com/android/tv/testing/uihelper/Constants.java b/tests/common/src/com/android/tv/testing/uihelper/Constants.java
index 0297f3db..8f607fbf 100644
--- a/tests/common/src/com/android/tv/testing/uihelper/Constants.java
+++ b/tests/common/src/com/android/tv/testing/uihelper/Constants.java
@@ -20,12 +20,14 @@ import android.support.test.uiautomator.BySelector;
public final class Constants {
- public static final double EXTRA_TIMEOUT_PRECENT = .05;
+ public static final double EXTRA_TIMEOUT_PERCENT = .05;
public static final int MIN_EXTRA_TIMEOUT = 10;
public static final long MAX_SHOW_DELAY_MILLIS = 200;
public static final String TV_APP_PACKAGE = "com.android.tv";
+ public static final BySelector TV_VIEW = By.res(TV_APP_PACKAGE, "main_tunable_tv_view");
public static final BySelector CHANNEL_BANNER = By.res(TV_APP_PACKAGE, "channel_banner_view");
- public static final BySelector MENU = By.res(TV_APP_PACKAGE, "menu_list");
+ public static final BySelector KEYPAD_CHANNEL_SWITCH = By.res(TV_APP_PACKAGE, "channel_number");
+ public static final BySelector MENU = By.res(TV_APP_PACKAGE, "menu");
public static final BySelector SIDE_PANEL = By.res(TV_APP_PACKAGE, "side_panel");
public static final BySelector PROGRAM_GUIDE = By.res(TV_APP_PACKAGE, "program_guide");
public static final BySelector FOCUSED_VIEW = By.focused(true);
diff --git a/tests/common/src/com/android/tv/testing/uihelper/DialogHelper.java b/tests/common/src/com/android/tv/testing/uihelper/DialogHelper.java
index a2476a68..9e4040a8 100644
--- a/tests/common/src/com/android/tv/testing/uihelper/DialogHelper.java
+++ b/tests/common/src/com/android/tv/testing/uihelper/DialogHelper.java
@@ -26,9 +26,6 @@ import android.support.test.uiautomator.UiDevice;
import android.support.test.uiautomator.Until;
import com.android.tv.R;
-import com.android.tv.testing.uihelper.BaseUiDeviceHelper;
-import com.android.tv.testing.uihelper.ByResource;
-import com.android.tv.testing.uihelper.Constants;
/**
* Helper for testing {@link DialogFragment}s.
diff --git a/tests/common/src/com/android/tv/testing/uihelper/LiveChannelsUiDeviceHelper.java b/tests/common/src/com/android/tv/testing/uihelper/LiveChannelsUiDeviceHelper.java
index ffa45b35..31204410 100644
--- a/tests/common/src/com/android/tv/testing/uihelper/LiveChannelsUiDeviceHelper.java
+++ b/tests/common/src/com/android/tv/testing/uihelper/LiveChannelsUiDeviceHelper.java
@@ -1,5 +1,7 @@
package com.android.tv.testing.uihelper;
+import static com.android.tv.testing.uihelper.UiDeviceAsserts.waitForCondition;
+
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
@@ -7,6 +9,7 @@ import android.support.test.uiautomator.By;
import android.support.test.uiautomator.BySelector;
import android.support.test.uiautomator.UiDevice;
import android.support.test.uiautomator.Until;
+import android.util.Log;
import junit.framework.Assert;
@@ -14,7 +17,8 @@ import junit.framework.Assert;
* Helper for testing the Live TV Application.
*/
public class LiveChannelsUiDeviceHelper extends BaseUiDeviceHelper {
- private static final int APPLICATION_START_TIMEOUT_MSEC = 500;
+ private static final String TAG = "LiveChannelsUiDevice";
+ private static final int APPLICATION_START_TIMEOUT_MSEC = 5000;
private final Context mContext;
@@ -29,14 +33,18 @@ public class LiveChannelsUiDeviceHelper extends BaseUiDeviceHelper {
.getLaunchIntentForPackage(Constants.TV_APP_PACKAGE);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); // Clear out any previous instances
mContext.startActivity(intent);
+ // Wait for idle state before checking the channel banner because waitForCondition() has
+ // timeout.
mUiDevice.waitForIdle();
+ // Make sure that the activity is resumed.
+ waitForCondition(mUiDevice, Until.hasObject(Constants.TV_VIEW));
Assert.assertTrue(Constants.TV_APP_PACKAGE + " did not start", mUiDevice
.wait(Until.hasObject(By.pkg(Constants.TV_APP_PACKAGE).depth(0)),
APPLICATION_START_TIMEOUT_MSEC));
-
BySelector welcome = ByResource.id(mTargetResources, com.android.tv.R.id.intro);
if (mUiDevice.hasObject(welcome)) {
+ Log.i(TAG, "Welcome screen shown. Clearing dialog by pressing back");
mUiDevice.pressBack();
}
}
diff --git a/tests/common/src/com/android/tv/testing/uihelper/MenuHelper.java b/tests/common/src/com/android/tv/testing/uihelper/MenuHelper.java
index fe16ec27..cb403a61 100644
--- a/tests/common/src/com/android/tv/testing/uihelper/MenuHelper.java
+++ b/tests/common/src/com/android/tv/testing/uihelper/MenuHelper.java
@@ -27,13 +27,11 @@ import android.support.test.uiautomator.UiObject2;
import android.support.test.uiautomator.Until;
import com.android.tv.R;
-import com.android.tv.common.TvCommonConstants;
-import com.android.tv.menu.MenuView;
import junit.framework.Assert;
/**
- * Helper for testing {@link MenuView}.
+ * Helper for testing {@link com.android.tv.menu.Menu}.
*/
public class MenuHelper extends BaseUiDeviceHelper {
private final BySelector byChannels;
@@ -41,12 +39,7 @@ public class MenuHelper extends BaseUiDeviceHelper {
public MenuHelper(UiDevice uiDevice, Resources targetResources) {
super(uiDevice, targetResources);
byChannels = ByResource.id(mTargetResources, R.id.item_list)
- .hasDescendant(ByResource.text(mTargetResources, getMenuTitleChannelsResId()));
- }
-
- public int getMenuTitleChannelsResId() {
- return TvCommonConstants.IS_MNC_OR_HIGHER ? R.string.menu_title_channels
- : R.string.menu_title_channels_legacy;
+ .hasDescendant(ByResource.text(mTargetResources, R.string.menu_title_channels));
}
public BySelector getByChannels() {
@@ -104,7 +97,7 @@ public class MenuHelper extends BaseUiDeviceHelper {
UiDeviceAsserts.assertHas(mUiDevice, MENU, true);
// The play controls row doesn't have title when selected, so can't use
// MenuHelper.assertNavigateToRow().
- assertNavigateToRow(getMenuTitleChannelsResId());
+ assertNavigateToRow(R.string.menu_title_channels);
mUiDevice.pressDPadUp();
}
@@ -148,7 +141,7 @@ public class MenuHelper extends BaseUiDeviceHelper {
}
public UiObject2 assertPressProgramGuide() {
- return assertPressMenuItem(getMenuTitleChannelsResId(),
+ return assertPressMenuItem(R.string.menu_title_channels,
R.string.channels_item_program_guide);
}
diff --git a/tests/common/src/com/android/tv/testing/uihelper/SidePanelHelper.java b/tests/common/src/com/android/tv/testing/uihelper/SidePanelHelper.java
index d342723d..66edd4bb 100644
--- a/tests/common/src/com/android/tv/testing/uihelper/SidePanelHelper.java
+++ b/tests/common/src/com/android/tv/testing/uihelper/SidePanelHelper.java
@@ -24,10 +24,6 @@ import android.support.test.uiautomator.UiDevice;
import android.support.test.uiautomator.UiObject2;
import com.android.tv.R;
-import com.android.tv.testing.uihelper.BaseUiDeviceHelper;
-import com.android.tv.testing.uihelper.ByResource;
-import com.android.tv.testing.uihelper.Constants;
-import com.android.tv.testing.uihelper.UiDeviceAsserts;
import com.android.tv.ui.sidepanel.SideFragment;
import junit.framework.Assert;
diff --git a/tests/common/src/com/android/tv/testing/uihelper/UiDeviceAsserts.java b/tests/common/src/com/android/tv/testing/uihelper/UiDeviceAsserts.java
index 90d5a297..ea9b5460 100644
--- a/tests/common/src/com/android/tv/testing/uihelper/UiDeviceAsserts.java
+++ b/tests/common/src/com/android/tv/testing/uihelper/UiDeviceAsserts.java
@@ -16,7 +16,6 @@
package com.android.tv.testing.uihelper;
import static com.android.tv.testing.uihelper.Constants.FOCUSED_VIEW;
-
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertTrue;
@@ -68,7 +67,7 @@ public final class UiDeviceAsserts {
*
* @param uiDevice The device under test.
* @param searchCondition The condition to wait for.
- * @return {@true} if the condition is met, otherwise {@code false}.
+ * @return {@code true} if the condition is met, otherwise {@code false}.
*/
public static boolean waitForCondition(UiDevice uiDevice,
SearchCondition<Boolean> searchCondition) {
@@ -78,7 +77,7 @@ public final class UiDeviceAsserts {
private static boolean waitForCondition(UiDevice uiDevice,
SearchCondition<Boolean> searchCondition, long timeout) {
long adjustedTimeout = timeout + Math.max(Constants.MIN_EXTRA_TIMEOUT,
- (long) (timeout * Constants.EXTRA_TIMEOUT_PRECENT));
+ (long) (timeout * Constants.EXTRA_TIMEOUT_PERCENT));
return uiDevice.wait(searchCondition, adjustedTimeout);
}
diff --git a/tests/common/src/com/android/tv/testing/uihelper/UiDeviceUtils.java b/tests/common/src/com/android/tv/testing/uihelper/UiDeviceUtils.java
index 420e0824..577559c2 100644
--- a/tests/common/src/com/android/tv/testing/uihelper/UiDeviceUtils.java
+++ b/tests/common/src/com/android/tv/testing/uihelper/UiDeviceUtils.java
@@ -24,16 +24,20 @@ import android.view.KeyEvent;
*/
public final class UiDeviceUtils {
- public static boolean pressDpad(UiDevice uiDevice, Direction direction) {
+ public static void pressDpad(UiDevice uiDevice, Direction direction) {
switch (direction) {
case UP:
- return uiDevice.pressDPadUp();
+ uiDevice.pressDPadUp();
+ break;
case DOWN:
- return uiDevice.pressDPadDown();
+ uiDevice.pressDPadDown();
+ break;
case LEFT:
- return uiDevice.pressDPadLeft();
+ uiDevice.pressDPadLeft();
+ break;
case RIGHT:
- return uiDevice.pressDPadRight();
+ uiDevice.pressDPadRight();
+ break;
default:
throw new IllegalArgumentException(direction.toString());
}
diff --git a/tests/common/src/com/android/tv/testing/uihelper/UiObject2Asserts.java b/tests/common/src/com/android/tv/testing/uihelper/UiObject2Asserts.java
index 9db70930..aba29f0e 100644
--- a/tests/common/src/com/android/tv/testing/uihelper/UiObject2Asserts.java
+++ b/tests/common/src/com/android/tv/testing/uihelper/UiObject2Asserts.java
@@ -52,7 +52,7 @@ public final class UiObject2Asserts {
public static long getAdjustedTimeout(long timeout) {
return timeout + Math.max(
- Constants.MIN_EXTRA_TIMEOUT, (long) (timeout * Constants.EXTRA_TIMEOUT_PRECENT));
+ Constants.MIN_EXTRA_TIMEOUT, (long) (timeout * Constants.EXTRA_TIMEOUT_PERCENT));
}
private UiObject2Asserts() {
diff --git a/tests/func/src/com/android/tv/tests/ui/LiveChannelsAppTest.java b/tests/func/src/com/android/tv/tests/ui/LiveChannelsAppTest.java
index 8190d79d..28b54bae 100644
--- a/tests/func/src/com/android/tv/tests/ui/LiveChannelsAppTest.java
+++ b/tests/func/src/com/android/tv/tests/ui/LiveChannelsAppTest.java
@@ -42,7 +42,7 @@ public class LiveChannelsAppTest extends LiveChannelsTestCase {
super.setUp();
mSidePanelHelper = new SidePanelHelper(mDevice, mTargetResources);
mLiveChannelsHelper.assertAppStarted();
- pressKeysForChannel(TvTestInputConstants.CH_1);
+ pressKeysForChannel(TvTestInputConstants.CH_1_DEFAULT_DONT_MODIFY);
getInstrumentation().waitForIdleSync();
}
@@ -74,11 +74,11 @@ public class LiveChannelsAppTest extends LiveChannelsTestCase {
updateThenTune(data, TvTestInputConstants.CH_2);
mMenuHelper.assertPressOptionsDisplayMode();
- BySelector byDisplayModeSidelPanel = mSidePanelHelper
+ BySelector byDisplayModeSidePanel = mSidePanelHelper
.bySidePanelTitled(R.string.side_panel_title_display_mode);
- assertWaitForCondition(mDevice, Until.hasObject(byDisplayModeSidelPanel));
+ assertWaitForCondition(mDevice, Until.hasObject(byDisplayModeSidePanel));
mDevice.pressBack();
- assertWaitForCondition(mDevice, Until.gone(byDisplayModeSidelPanel));
+ assertWaitForCondition(mDevice, Until.gone(byDisplayModeSidePanel));
assertHas(mDevice, Constants.MENU, false);
}
@@ -95,11 +95,11 @@ public class LiveChannelsAppTest extends LiveChannelsTestCase {
updateThenTune(data, TvTestInputConstants.CH_2);
mMenuHelper.assertPressOptionsMultiAudio();
- BySelector byMultiAudioSidelPanel = mSidePanelHelper
+ BySelector byMultiAudioSidePanel = mSidePanelHelper
.bySidePanelTitled(R.string.side_panel_title_multi_audio);
- assertWaitForCondition(mDevice, Until.hasObject(byMultiAudioSidelPanel));
+ assertWaitForCondition(mDevice, Until.hasObject(byMultiAudioSidePanel));
mDevice.pressBack();
- assertWaitForCondition(mDevice, Until.gone(byMultiAudioSidelPanel));
+ assertWaitForCondition(mDevice, Until.gone(byMultiAudioSidePanel));
assertHas(mDevice, Constants.MENU, false);
}
diff --git a/tests/func/src/com/android/tv/tests/ui/LiveChannelsTestCase.java b/tests/func/src/com/android/tv/tests/ui/LiveChannelsTestCase.java
index af61abc4..96f0e1f8 100644
--- a/tests/func/src/com/android/tv/tests/ui/LiveChannelsTestCase.java
+++ b/tests/func/src/com/android/tv/tests/ui/LiveChannelsTestCase.java
@@ -16,9 +16,12 @@
package com.android.tv.tests.ui;
+import static com.android.tv.testing.uihelper.UiDeviceAsserts.assertWaitForCondition;
+
import android.content.Context;
import android.content.res.Resources;
import android.support.test.uiautomator.UiDevice;
+import android.support.test.uiautomator.Until;
import android.test.InstrumentationTestCase;
import com.android.tv.testing.ChannelInfo;
@@ -78,8 +81,7 @@ public abstract class LiveChannelsTestCase extends InstrumentationTestCase {
*/
protected void pressKeysForChannel(ChannelInfo channel) {
UiDeviceUtils.pressKeys(mDevice, channel.number);
- // TODO: Sometimes, next statement doesn't close the SelectInputView. It makes the tests
- // which use this method flaky. b/22509489
+ assertWaitForCondition(mDevice, Until.hasObject(Constants.KEYPAD_CHANNEL_SWITCH));
mDevice.pressDPadCenter();
}
diff --git a/tests/func/src/com/android/tv/tests/ui/PlayControlsRowViewTest.java b/tests/func/src/com/android/tv/tests/ui/PlayControlsRowViewTest.java
index 2ee18562..8b7eaeae 100644
--- a/tests/func/src/com/android/tv/tests/ui/PlayControlsRowViewTest.java
+++ b/tests/func/src/com/android/tv/tests/ui/PlayControlsRowViewTest.java
@@ -41,7 +41,7 @@ public class PlayControlsRowViewTest extends LiveChannelsTestCase {
protected void setUp() throws Exception {
super.setUp();
mLiveChannelsHelper.assertAppStarted();
- pressKeysForChannel(TvTestInputConstants.CH_1);
+ pressKeysForChannel(TvTestInputConstants.CH_1_DEFAULT_DONT_MODIFY);
// Tune to a new channel to ensure that the channel is changed.
mDevice.pressDPadUp();
getInstrumentation().waitForIdleSync();
diff --git a/tests/func/src/com/android/tv/tests/ui/ProgramGuidePerformanceTest.java b/tests/func/src/com/android/tv/tests/ui/ProgramGuidePerformanceTest.java
index 833ed954..5c09dd61 100644
--- a/tests/func/src/com/android/tv/tests/ui/ProgramGuidePerformanceTest.java
+++ b/tests/func/src/com/android/tv/tests/ui/ProgramGuidePerformanceTest.java
@@ -36,7 +36,7 @@ public class ProgramGuidePerformanceTest extends LiveChannelsTestCase {
public void testShowMenu() {
mLiveChannelsHelper.assertAppStarted();
mMenuHelper.showMenu();
- mMenuHelper.assertNavigateToMenuItem(mMenuHelper.getMenuTitleChannelsResId(),
+ mMenuHelper.assertNavigateToMenuItem(R.string.menu_title_channels,
R.string.channels_item_program_guide);
//TODO: build a simple performance framework like JankTest
long start = SystemClock.elapsedRealtime();
diff --git a/tests/func/src/com/android/tv/tests/ui/ProgramGuideTest.java b/tests/func/src/com/android/tv/tests/ui/ProgramGuideTest.java
index 2778e54a..a018f012 100644
--- a/tests/func/src/com/android/tv/tests/ui/ProgramGuideTest.java
+++ b/tests/func/src/com/android/tv/tests/ui/ProgramGuideTest.java
@@ -15,15 +15,15 @@
*/
package com.android.tv.tests.ui;
+import static com.android.tv.testing.uihelper.UiDeviceAsserts.assertHas;
+import static com.android.tv.testing.uihelper.UiDeviceAsserts.assertWaitForCondition;
+
import android.support.test.uiautomator.Until;
import android.test.suitebuilder.annotation.LargeTest;
import com.android.tv.guide.ProgramGuide;
import com.android.tv.testing.uihelper.Constants;
-import static com.android.tv.testing.uihelper.UiDeviceAsserts.assertHas;
-import static com.android.tv.testing.uihelper.UiDeviceAsserts.assertWaitForCondition;
-
/**
* Tests for {@link ProgramGuide}.
*/
diff --git a/tests/func/src/com/android/tv/tests/ui/TimeoutTest.java b/tests/func/src/com/android/tv/tests/ui/TimeoutTest.java
index dd727eaa..413a783e 100644
--- a/tests/func/src/com/android/tv/tests/ui/TimeoutTest.java
+++ b/tests/func/src/com/android/tv/tests/ui/TimeoutTest.java
@@ -20,7 +20,6 @@ import static com.android.tv.testing.uihelper.UiDeviceAsserts.assertWaitForCondi
import android.support.test.uiautomator.Until;
import android.test.suitebuilder.annotation.LargeTest;
-import android.test.suitebuilder.annotation.Suppress;
import com.android.tv.R;
import com.android.tv.testing.uihelper.Constants;
@@ -31,7 +30,6 @@ import com.android.tv.testing.uihelper.Constants;
* <b>WARNING</b> some of these timeouts are 60 seconds. These tests will take a long time
* complete.
*/
-@Suppress // TODO: b/20111741
@LargeTest
public class TimeoutTest extends LiveChannelsTestCase {
diff --git a/tests/input/res/drawable-xhdpi/ch_1000_logo.png b/tests/input/res/drawable-xhdpi/ch_1000_logo.png
new file mode 100644
index 00000000..1fb2569d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_1000_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_100_logo.png b/tests/input/res/drawable-xhdpi/ch_100_logo.png
new file mode 100644
index 00000000..fd627a6d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_100_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_101_logo.png b/tests/input/res/drawable-xhdpi/ch_101_logo.png
new file mode 100644
index 00000000..5cb4c11a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_101_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_102_logo.png b/tests/input/res/drawable-xhdpi/ch_102_logo.png
new file mode 100644
index 00000000..b590b2ef
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_102_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_103_logo.png b/tests/input/res/drawable-xhdpi/ch_103_logo.png
new file mode 100644
index 00000000..3228ec01
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_103_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_104_logo.png b/tests/input/res/drawable-xhdpi/ch_104_logo.png
new file mode 100644
index 00000000..17d497cb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_104_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_105_logo.png b/tests/input/res/drawable-xhdpi/ch_105_logo.png
new file mode 100644
index 00000000..e6282624
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_105_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_106_logo.png b/tests/input/res/drawable-xhdpi/ch_106_logo.png
new file mode 100644
index 00000000..9f7d11c8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_106_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_107_logo.png b/tests/input/res/drawable-xhdpi/ch_107_logo.png
new file mode 100644
index 00000000..acf25db1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_107_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_108_logo.png b/tests/input/res/drawable-xhdpi/ch_108_logo.png
new file mode 100644
index 00000000..a9a0446f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_108_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_109_logo.png b/tests/input/res/drawable-xhdpi/ch_109_logo.png
new file mode 100644
index 00000000..6bba9f5a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_109_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_10_logo.png b/tests/input/res/drawable-xhdpi/ch_10_logo.png
new file mode 100644
index 00000000..7f7041ac
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_10_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_110_logo.png b/tests/input/res/drawable-xhdpi/ch_110_logo.png
new file mode 100644
index 00000000..d3f04154
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_110_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_111_logo.png b/tests/input/res/drawable-xhdpi/ch_111_logo.png
new file mode 100644
index 00000000..08a8a272
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_111_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_112_logo.png b/tests/input/res/drawable-xhdpi/ch_112_logo.png
new file mode 100644
index 00000000..46bfd644
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_112_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_113_logo.png b/tests/input/res/drawable-xhdpi/ch_113_logo.png
new file mode 100644
index 00000000..dfd5bb0e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_113_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_114_logo.png b/tests/input/res/drawable-xhdpi/ch_114_logo.png
new file mode 100644
index 00000000..f5e5b8ec
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_114_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_115_logo.png b/tests/input/res/drawable-xhdpi/ch_115_logo.png
new file mode 100644
index 00000000..9c507671
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_115_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_116_logo.png b/tests/input/res/drawable-xhdpi/ch_116_logo.png
new file mode 100644
index 00000000..f05f3d55
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_116_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_117_logo.png b/tests/input/res/drawable-xhdpi/ch_117_logo.png
new file mode 100644
index 00000000..0d4d0164
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_117_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_118_logo.png b/tests/input/res/drawable-xhdpi/ch_118_logo.png
new file mode 100644
index 00000000..6c4aaea0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_118_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_119_logo.png b/tests/input/res/drawable-xhdpi/ch_119_logo.png
new file mode 100644
index 00000000..4f7c9584
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_119_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_11_logo.png b/tests/input/res/drawable-xhdpi/ch_11_logo.png
new file mode 100644
index 00000000..94cd25aa
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_11_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_120_logo.png b/tests/input/res/drawable-xhdpi/ch_120_logo.png
new file mode 100644
index 00000000..d8f5c667
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_120_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_121_logo.png b/tests/input/res/drawable-xhdpi/ch_121_logo.png
new file mode 100644
index 00000000..5e0c64ea
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_121_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_122_logo.png b/tests/input/res/drawable-xhdpi/ch_122_logo.png
new file mode 100644
index 00000000..8e36412a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_122_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_123_logo.png b/tests/input/res/drawable-xhdpi/ch_123_logo.png
new file mode 100644
index 00000000..0ab2f45f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_123_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_124_logo.png b/tests/input/res/drawable-xhdpi/ch_124_logo.png
new file mode 100644
index 00000000..5f3ae948
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_124_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_125_logo.png b/tests/input/res/drawable-xhdpi/ch_125_logo.png
new file mode 100644
index 00000000..e3b0614d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_125_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_126_logo.png b/tests/input/res/drawable-xhdpi/ch_126_logo.png
new file mode 100644
index 00000000..d9ef549f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_126_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_127_logo.png b/tests/input/res/drawable-xhdpi/ch_127_logo.png
new file mode 100644
index 00000000..46630a6d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_127_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_128_logo.png b/tests/input/res/drawable-xhdpi/ch_128_logo.png
new file mode 100644
index 00000000..fa0cd533
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_128_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_129_logo.png b/tests/input/res/drawable-xhdpi/ch_129_logo.png
new file mode 100644
index 00000000..a169cf1b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_129_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_12_logo.png b/tests/input/res/drawable-xhdpi/ch_12_logo.png
new file mode 100644
index 00000000..aafcc88e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_12_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_130_logo.png b/tests/input/res/drawable-xhdpi/ch_130_logo.png
new file mode 100644
index 00000000..e575b055
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_130_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_131_logo.png b/tests/input/res/drawable-xhdpi/ch_131_logo.png
new file mode 100644
index 00000000..d711d0fb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_131_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_132_logo.png b/tests/input/res/drawable-xhdpi/ch_132_logo.png
new file mode 100644
index 00000000..cb9b097e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_132_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_133_logo.png b/tests/input/res/drawable-xhdpi/ch_133_logo.png
new file mode 100644
index 00000000..855328ac
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_133_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_134_logo.png b/tests/input/res/drawable-xhdpi/ch_134_logo.png
new file mode 100644
index 00000000..2c5086e8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_134_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_135_logo.png b/tests/input/res/drawable-xhdpi/ch_135_logo.png
new file mode 100644
index 00000000..ed914baa
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_135_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_136_logo.png b/tests/input/res/drawable-xhdpi/ch_136_logo.png
new file mode 100644
index 00000000..923462c0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_136_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_137_logo.png b/tests/input/res/drawable-xhdpi/ch_137_logo.png
new file mode 100644
index 00000000..28e5a4af
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_137_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_138_logo.png b/tests/input/res/drawable-xhdpi/ch_138_logo.png
new file mode 100644
index 00000000..677cfaab
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_138_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_139_logo.png b/tests/input/res/drawable-xhdpi/ch_139_logo.png
new file mode 100644
index 00000000..2d343ea4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_139_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_13_logo.png b/tests/input/res/drawable-xhdpi/ch_13_logo.png
new file mode 100644
index 00000000..b54a709f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_13_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_140_logo.png b/tests/input/res/drawable-xhdpi/ch_140_logo.png
new file mode 100644
index 00000000..b109d1cf
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_140_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_141_logo.png b/tests/input/res/drawable-xhdpi/ch_141_logo.png
new file mode 100644
index 00000000..7541a9de
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_141_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_142_logo.png b/tests/input/res/drawable-xhdpi/ch_142_logo.png
new file mode 100644
index 00000000..0f333da5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_142_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_143_logo.png b/tests/input/res/drawable-xhdpi/ch_143_logo.png
new file mode 100644
index 00000000..dc437d8e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_143_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_144_logo.png b/tests/input/res/drawable-xhdpi/ch_144_logo.png
new file mode 100644
index 00000000..5f0d01c1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_144_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_145_logo.png b/tests/input/res/drawable-xhdpi/ch_145_logo.png
new file mode 100644
index 00000000..9bba8991
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_145_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_146_logo.png b/tests/input/res/drawable-xhdpi/ch_146_logo.png
new file mode 100644
index 00000000..badc014b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_146_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_147_logo.png b/tests/input/res/drawable-xhdpi/ch_147_logo.png
new file mode 100644
index 00000000..0f8449e2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_147_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_148_logo.png b/tests/input/res/drawable-xhdpi/ch_148_logo.png
new file mode 100644
index 00000000..49c7f238
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_148_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_149_logo.png b/tests/input/res/drawable-xhdpi/ch_149_logo.png
new file mode 100644
index 00000000..b05d9511
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_149_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_14_logo.png b/tests/input/res/drawable-xhdpi/ch_14_logo.png
new file mode 100644
index 00000000..b053d12a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_14_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_150_logo.png b/tests/input/res/drawable-xhdpi/ch_150_logo.png
new file mode 100644
index 00000000..435b113d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_150_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_151_logo.png b/tests/input/res/drawable-xhdpi/ch_151_logo.png
new file mode 100644
index 00000000..e572bf4f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_151_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_152_logo.png b/tests/input/res/drawable-xhdpi/ch_152_logo.png
new file mode 100644
index 00000000..2df1a6b1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_152_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_153_logo.png b/tests/input/res/drawable-xhdpi/ch_153_logo.png
new file mode 100644
index 00000000..71a4ac20
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_153_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_154_logo.png b/tests/input/res/drawable-xhdpi/ch_154_logo.png
new file mode 100644
index 00000000..559f52e6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_154_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_155_logo.png b/tests/input/res/drawable-xhdpi/ch_155_logo.png
new file mode 100644
index 00000000..c61f7f00
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_155_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_156_logo.png b/tests/input/res/drawable-xhdpi/ch_156_logo.png
new file mode 100644
index 00000000..b98c6788
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_156_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_157_logo.png b/tests/input/res/drawable-xhdpi/ch_157_logo.png
new file mode 100644
index 00000000..e0cad6c8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_157_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_158_logo.png b/tests/input/res/drawable-xhdpi/ch_158_logo.png
new file mode 100644
index 00000000..30dad457
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_158_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_159_logo.png b/tests/input/res/drawable-xhdpi/ch_159_logo.png
new file mode 100644
index 00000000..64c1577f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_159_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_15_logo.png b/tests/input/res/drawable-xhdpi/ch_15_logo.png
new file mode 100644
index 00000000..bc7133aa
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_15_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_160_logo.png b/tests/input/res/drawable-xhdpi/ch_160_logo.png
new file mode 100644
index 00000000..97333899
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_160_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_161_logo.png b/tests/input/res/drawable-xhdpi/ch_161_logo.png
new file mode 100644
index 00000000..1749aeeb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_161_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_162_logo.png b/tests/input/res/drawable-xhdpi/ch_162_logo.png
new file mode 100644
index 00000000..ef7466c0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_162_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_163_logo.png b/tests/input/res/drawable-xhdpi/ch_163_logo.png
new file mode 100644
index 00000000..ceabbd01
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_163_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_164_logo.png b/tests/input/res/drawable-xhdpi/ch_164_logo.png
new file mode 100644
index 00000000..89ab660b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_164_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_165_logo.png b/tests/input/res/drawable-xhdpi/ch_165_logo.png
new file mode 100644
index 00000000..b8c5020a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_165_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_166_logo.png b/tests/input/res/drawable-xhdpi/ch_166_logo.png
new file mode 100644
index 00000000..81929866
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_166_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_167_logo.png b/tests/input/res/drawable-xhdpi/ch_167_logo.png
new file mode 100644
index 00000000..dc2de092
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_167_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_168_logo.png b/tests/input/res/drawable-xhdpi/ch_168_logo.png
new file mode 100644
index 00000000..d02097f5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_168_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_169_logo.png b/tests/input/res/drawable-xhdpi/ch_169_logo.png
new file mode 100644
index 00000000..afb0b63c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_169_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_16_logo.png b/tests/input/res/drawable-xhdpi/ch_16_logo.png
new file mode 100644
index 00000000..27df7079
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_16_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_170_logo.png b/tests/input/res/drawable-xhdpi/ch_170_logo.png
new file mode 100644
index 00000000..2e33612c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_170_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_171_logo.png b/tests/input/res/drawable-xhdpi/ch_171_logo.png
new file mode 100644
index 00000000..730bbdaf
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_171_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_172_logo.png b/tests/input/res/drawable-xhdpi/ch_172_logo.png
new file mode 100644
index 00000000..5af80238
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_172_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_173_logo.png b/tests/input/res/drawable-xhdpi/ch_173_logo.png
new file mode 100644
index 00000000..367d53e7
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_173_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_174_logo.png b/tests/input/res/drawable-xhdpi/ch_174_logo.png
new file mode 100644
index 00000000..0b562ae0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_174_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_175_logo.png b/tests/input/res/drawable-xhdpi/ch_175_logo.png
new file mode 100644
index 00000000..4265d9fc
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_175_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_176_logo.png b/tests/input/res/drawable-xhdpi/ch_176_logo.png
new file mode 100644
index 00000000..ccaeda9d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_176_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_177_logo.png b/tests/input/res/drawable-xhdpi/ch_177_logo.png
new file mode 100644
index 00000000..5710e37e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_177_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_178_logo.png b/tests/input/res/drawable-xhdpi/ch_178_logo.png
new file mode 100644
index 00000000..0d6e2300
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_178_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_179_logo.png b/tests/input/res/drawable-xhdpi/ch_179_logo.png
new file mode 100644
index 00000000..a974eaba
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_179_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_17_logo.png b/tests/input/res/drawable-xhdpi/ch_17_logo.png
new file mode 100644
index 00000000..0a12c236
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_17_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_180_logo.png b/tests/input/res/drawable-xhdpi/ch_180_logo.png
new file mode 100644
index 00000000..fa0bf275
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_180_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_181_logo.png b/tests/input/res/drawable-xhdpi/ch_181_logo.png
new file mode 100644
index 00000000..fb29917b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_181_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_182_logo.png b/tests/input/res/drawable-xhdpi/ch_182_logo.png
new file mode 100644
index 00000000..4120522e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_182_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_183_logo.png b/tests/input/res/drawable-xhdpi/ch_183_logo.png
new file mode 100644
index 00000000..72bcc596
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_183_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_184_logo.png b/tests/input/res/drawable-xhdpi/ch_184_logo.png
new file mode 100644
index 00000000..b007b58f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_184_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_185_logo.png b/tests/input/res/drawable-xhdpi/ch_185_logo.png
new file mode 100644
index 00000000..e1e0cc00
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_185_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_186_logo.png b/tests/input/res/drawable-xhdpi/ch_186_logo.png
new file mode 100644
index 00000000..646d1ca1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_186_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_187_logo.png b/tests/input/res/drawable-xhdpi/ch_187_logo.png
new file mode 100644
index 00000000..6e4d3de5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_187_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_188_logo.png b/tests/input/res/drawable-xhdpi/ch_188_logo.png
new file mode 100644
index 00000000..cf25ed3c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_188_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_189_logo.png b/tests/input/res/drawable-xhdpi/ch_189_logo.png
new file mode 100644
index 00000000..54fbefb6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_189_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_18_logo.png b/tests/input/res/drawable-xhdpi/ch_18_logo.png
new file mode 100644
index 00000000..26d7c79b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_18_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_190_logo.png b/tests/input/res/drawable-xhdpi/ch_190_logo.png
new file mode 100644
index 00000000..dcfecac0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_190_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_191_logo.png b/tests/input/res/drawable-xhdpi/ch_191_logo.png
new file mode 100644
index 00000000..b45f2491
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_191_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_192_logo.png b/tests/input/res/drawable-xhdpi/ch_192_logo.png
new file mode 100644
index 00000000..4f884b8c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_192_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_193_logo.png b/tests/input/res/drawable-xhdpi/ch_193_logo.png
new file mode 100644
index 00000000..c321ba96
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_193_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_194_logo.png b/tests/input/res/drawable-xhdpi/ch_194_logo.png
new file mode 100644
index 00000000..47fa3348
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_194_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_195_logo.png b/tests/input/res/drawable-xhdpi/ch_195_logo.png
new file mode 100644
index 00000000..e91b9d9b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_195_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_196_logo.png b/tests/input/res/drawable-xhdpi/ch_196_logo.png
new file mode 100644
index 00000000..43e9d3a6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_196_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_197_logo.png b/tests/input/res/drawable-xhdpi/ch_197_logo.png
new file mode 100644
index 00000000..21fb6ad5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_197_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_198_logo.png b/tests/input/res/drawable-xhdpi/ch_198_logo.png
new file mode 100644
index 00000000..5626d6c5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_198_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_199_logo.png b/tests/input/res/drawable-xhdpi/ch_199_logo.png
new file mode 100644
index 00000000..493bb6bb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_199_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_19_logo.png b/tests/input/res/drawable-xhdpi/ch_19_logo.png
new file mode 100644
index 00000000..ac3eb0a2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_19_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_1_logo.png b/tests/input/res/drawable-xhdpi/ch_1_logo.png
new file mode 100644
index 00000000..79824607
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_1_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_200_logo.png b/tests/input/res/drawable-xhdpi/ch_200_logo.png
new file mode 100644
index 00000000..1b36f263
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_200_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_201_logo.png b/tests/input/res/drawable-xhdpi/ch_201_logo.png
new file mode 100644
index 00000000..2aae3a45
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_201_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_202_logo.png b/tests/input/res/drawable-xhdpi/ch_202_logo.png
new file mode 100644
index 00000000..2f4d7ff9
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_202_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_203_logo.png b/tests/input/res/drawable-xhdpi/ch_203_logo.png
new file mode 100644
index 00000000..467dd943
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_203_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_204_logo.png b/tests/input/res/drawable-xhdpi/ch_204_logo.png
new file mode 100644
index 00000000..9046979b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_204_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_205_logo.png b/tests/input/res/drawable-xhdpi/ch_205_logo.png
new file mode 100644
index 00000000..ad27bb8a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_205_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_206_logo.png b/tests/input/res/drawable-xhdpi/ch_206_logo.png
new file mode 100644
index 00000000..06a4a65f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_206_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_207_logo.png b/tests/input/res/drawable-xhdpi/ch_207_logo.png
new file mode 100644
index 00000000..9bcbca6e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_207_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_208_logo.png b/tests/input/res/drawable-xhdpi/ch_208_logo.png
new file mode 100644
index 00000000..737145c5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_208_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_209_logo.png b/tests/input/res/drawable-xhdpi/ch_209_logo.png
new file mode 100644
index 00000000..73f5b15f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_209_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_20_logo.png b/tests/input/res/drawable-xhdpi/ch_20_logo.png
new file mode 100644
index 00000000..8bf17352
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_20_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_210_logo.png b/tests/input/res/drawable-xhdpi/ch_210_logo.png
new file mode 100644
index 00000000..cfc35f2e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_210_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_211_logo.png b/tests/input/res/drawable-xhdpi/ch_211_logo.png
new file mode 100644
index 00000000..42a32d17
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_211_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_212_logo.png b/tests/input/res/drawable-xhdpi/ch_212_logo.png
new file mode 100644
index 00000000..3deeb0ff
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_212_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_213_logo.png b/tests/input/res/drawable-xhdpi/ch_213_logo.png
new file mode 100644
index 00000000..21f15ffb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_213_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_214_logo.png b/tests/input/res/drawable-xhdpi/ch_214_logo.png
new file mode 100644
index 00000000..327bf5c2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_214_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_215_logo.png b/tests/input/res/drawable-xhdpi/ch_215_logo.png
new file mode 100644
index 00000000..8f70a773
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_215_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_216_logo.png b/tests/input/res/drawable-xhdpi/ch_216_logo.png
new file mode 100644
index 00000000..4db98a3b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_216_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_217_logo.png b/tests/input/res/drawable-xhdpi/ch_217_logo.png
new file mode 100644
index 00000000..a5be7a53
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_217_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_218_logo.png b/tests/input/res/drawable-xhdpi/ch_218_logo.png
new file mode 100644
index 00000000..9a407691
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_218_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_219_logo.png b/tests/input/res/drawable-xhdpi/ch_219_logo.png
new file mode 100644
index 00000000..dd3947ec
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_219_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_21_logo.png b/tests/input/res/drawable-xhdpi/ch_21_logo.png
new file mode 100644
index 00000000..bd177b27
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_21_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_220_logo.png b/tests/input/res/drawable-xhdpi/ch_220_logo.png
new file mode 100644
index 00000000..53bdd383
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_220_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_221_logo.png b/tests/input/res/drawable-xhdpi/ch_221_logo.png
new file mode 100644
index 00000000..1134ef84
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_221_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_222_logo.png b/tests/input/res/drawable-xhdpi/ch_222_logo.png
new file mode 100644
index 00000000..227a9d5e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_222_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_223_logo.png b/tests/input/res/drawable-xhdpi/ch_223_logo.png
new file mode 100644
index 00000000..b99511d6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_223_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_224_logo.png b/tests/input/res/drawable-xhdpi/ch_224_logo.png
new file mode 100644
index 00000000..5a6d4410
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_224_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_225_logo.png b/tests/input/res/drawable-xhdpi/ch_225_logo.png
new file mode 100644
index 00000000..5562344f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_225_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_226_logo.png b/tests/input/res/drawable-xhdpi/ch_226_logo.png
new file mode 100644
index 00000000..8588c73c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_226_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_227_logo.png b/tests/input/res/drawable-xhdpi/ch_227_logo.png
new file mode 100644
index 00000000..2c97997b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_227_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_228_logo.png b/tests/input/res/drawable-xhdpi/ch_228_logo.png
new file mode 100644
index 00000000..f0d2829e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_228_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_229_logo.png b/tests/input/res/drawable-xhdpi/ch_229_logo.png
new file mode 100644
index 00000000..d83db934
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_229_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_22_logo.png b/tests/input/res/drawable-xhdpi/ch_22_logo.png
new file mode 100644
index 00000000..517f8205
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_22_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_230_logo.png b/tests/input/res/drawable-xhdpi/ch_230_logo.png
new file mode 100644
index 00000000..a143b9b6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_230_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_231_logo.png b/tests/input/res/drawable-xhdpi/ch_231_logo.png
new file mode 100644
index 00000000..099a451e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_231_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_232_logo.png b/tests/input/res/drawable-xhdpi/ch_232_logo.png
new file mode 100644
index 00000000..f674e86c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_232_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_233_logo.png b/tests/input/res/drawable-xhdpi/ch_233_logo.png
new file mode 100644
index 00000000..e2ad8ed5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_233_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_234_logo.png b/tests/input/res/drawable-xhdpi/ch_234_logo.png
new file mode 100644
index 00000000..a24d0a80
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_234_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_235_logo.png b/tests/input/res/drawable-xhdpi/ch_235_logo.png
new file mode 100644
index 00000000..d9122ba4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_235_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_236_logo.png b/tests/input/res/drawable-xhdpi/ch_236_logo.png
new file mode 100644
index 00000000..4726b5c6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_236_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_237_logo.png b/tests/input/res/drawable-xhdpi/ch_237_logo.png
new file mode 100644
index 00000000..91e0e172
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_237_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_238_logo.png b/tests/input/res/drawable-xhdpi/ch_238_logo.png
new file mode 100644
index 00000000..a18f8152
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_238_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_239_logo.png b/tests/input/res/drawable-xhdpi/ch_239_logo.png
new file mode 100644
index 00000000..04baed0b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_239_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_23_logo.png b/tests/input/res/drawable-xhdpi/ch_23_logo.png
new file mode 100644
index 00000000..b4c2f91e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_23_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_240_logo.png b/tests/input/res/drawable-xhdpi/ch_240_logo.png
new file mode 100644
index 00000000..76998dfb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_240_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_241_logo.png b/tests/input/res/drawable-xhdpi/ch_241_logo.png
new file mode 100644
index 00000000..a033502e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_241_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_242_logo.png b/tests/input/res/drawable-xhdpi/ch_242_logo.png
new file mode 100644
index 00000000..877fb101
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_242_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_243_logo.png b/tests/input/res/drawable-xhdpi/ch_243_logo.png
new file mode 100644
index 00000000..d7f4e8d1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_243_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_244_logo.png b/tests/input/res/drawable-xhdpi/ch_244_logo.png
new file mode 100644
index 00000000..8494f5dc
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_244_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_245_logo.png b/tests/input/res/drawable-xhdpi/ch_245_logo.png
new file mode 100644
index 00000000..24a3614b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_245_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_246_logo.png b/tests/input/res/drawable-xhdpi/ch_246_logo.png
new file mode 100644
index 00000000..1fb507f0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_246_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_247_logo.png b/tests/input/res/drawable-xhdpi/ch_247_logo.png
new file mode 100644
index 00000000..79cc5d9d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_247_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_248_logo.png b/tests/input/res/drawable-xhdpi/ch_248_logo.png
new file mode 100644
index 00000000..9e30777a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_248_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_249_logo.png b/tests/input/res/drawable-xhdpi/ch_249_logo.png
new file mode 100644
index 00000000..65961a99
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_249_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_24_logo.png b/tests/input/res/drawable-xhdpi/ch_24_logo.png
new file mode 100644
index 00000000..5cd4932d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_24_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_250_logo.png b/tests/input/res/drawable-xhdpi/ch_250_logo.png
new file mode 100644
index 00000000..0a5fb825
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_250_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_251_logo.png b/tests/input/res/drawable-xhdpi/ch_251_logo.png
new file mode 100644
index 00000000..972a7ae2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_251_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_252_logo.png b/tests/input/res/drawable-xhdpi/ch_252_logo.png
new file mode 100644
index 00000000..91a464db
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_252_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_253_logo.png b/tests/input/res/drawable-xhdpi/ch_253_logo.png
new file mode 100644
index 00000000..7a96f676
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_253_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_254_logo.png b/tests/input/res/drawable-xhdpi/ch_254_logo.png
new file mode 100644
index 00000000..20b690b1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_254_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_255_logo.png b/tests/input/res/drawable-xhdpi/ch_255_logo.png
new file mode 100644
index 00000000..2db8df71
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_255_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_256_logo.png b/tests/input/res/drawable-xhdpi/ch_256_logo.png
new file mode 100644
index 00000000..f16050e5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_256_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_257_logo.png b/tests/input/res/drawable-xhdpi/ch_257_logo.png
new file mode 100644
index 00000000..e796edfc
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_257_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_258_logo.png b/tests/input/res/drawable-xhdpi/ch_258_logo.png
new file mode 100644
index 00000000..dc949df7
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_258_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_259_logo.png b/tests/input/res/drawable-xhdpi/ch_259_logo.png
new file mode 100644
index 00000000..95e11e65
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_259_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_25_logo.png b/tests/input/res/drawable-xhdpi/ch_25_logo.png
new file mode 100644
index 00000000..39959a8b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_25_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_260_logo.png b/tests/input/res/drawable-xhdpi/ch_260_logo.png
new file mode 100644
index 00000000..4184495a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_260_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_261_logo.png b/tests/input/res/drawable-xhdpi/ch_261_logo.png
new file mode 100644
index 00000000..530644ea
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_261_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_262_logo.png b/tests/input/res/drawable-xhdpi/ch_262_logo.png
new file mode 100644
index 00000000..27de42c0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_262_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_263_logo.png b/tests/input/res/drawable-xhdpi/ch_263_logo.png
new file mode 100644
index 00000000..8606e576
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_263_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_264_logo.png b/tests/input/res/drawable-xhdpi/ch_264_logo.png
new file mode 100644
index 00000000..2b35de28
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_264_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_265_logo.png b/tests/input/res/drawable-xhdpi/ch_265_logo.png
new file mode 100644
index 00000000..b205acb3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_265_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_266_logo.png b/tests/input/res/drawable-xhdpi/ch_266_logo.png
new file mode 100644
index 00000000..f4b87fe6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_266_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_267_logo.png b/tests/input/res/drawable-xhdpi/ch_267_logo.png
new file mode 100644
index 00000000..39f406e6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_267_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_268_logo.png b/tests/input/res/drawable-xhdpi/ch_268_logo.png
new file mode 100644
index 00000000..36794586
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_268_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_269_logo.png b/tests/input/res/drawable-xhdpi/ch_269_logo.png
new file mode 100644
index 00000000..813d85f7
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_269_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_26_logo.png b/tests/input/res/drawable-xhdpi/ch_26_logo.png
new file mode 100644
index 00000000..cf1212f3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_26_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_270_logo.png b/tests/input/res/drawable-xhdpi/ch_270_logo.png
new file mode 100644
index 00000000..f21a39fb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_270_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_271_logo.png b/tests/input/res/drawable-xhdpi/ch_271_logo.png
new file mode 100644
index 00000000..0aac87e8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_271_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_272_logo.png b/tests/input/res/drawable-xhdpi/ch_272_logo.png
new file mode 100644
index 00000000..74466267
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_272_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_273_logo.png b/tests/input/res/drawable-xhdpi/ch_273_logo.png
new file mode 100644
index 00000000..ef2d379a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_273_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_274_logo.png b/tests/input/res/drawable-xhdpi/ch_274_logo.png
new file mode 100644
index 00000000..8c1cb1b8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_274_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_275_logo.png b/tests/input/res/drawable-xhdpi/ch_275_logo.png
new file mode 100644
index 00000000..a3e2b915
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_275_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_276_logo.png b/tests/input/res/drawable-xhdpi/ch_276_logo.png
new file mode 100644
index 00000000..cbcab727
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_276_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_277_logo.png b/tests/input/res/drawable-xhdpi/ch_277_logo.png
new file mode 100644
index 00000000..a291b95b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_277_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_278_logo.png b/tests/input/res/drawable-xhdpi/ch_278_logo.png
new file mode 100644
index 00000000..03fc4154
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_278_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_279_logo.png b/tests/input/res/drawable-xhdpi/ch_279_logo.png
new file mode 100644
index 00000000..6d64901e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_279_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_27_logo.png b/tests/input/res/drawable-xhdpi/ch_27_logo.png
new file mode 100644
index 00000000..a9b23816
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_27_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_280_logo.png b/tests/input/res/drawable-xhdpi/ch_280_logo.png
new file mode 100644
index 00000000..c01599d4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_280_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_281_logo.png b/tests/input/res/drawable-xhdpi/ch_281_logo.png
new file mode 100644
index 00000000..5015b975
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_281_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_282_logo.png b/tests/input/res/drawable-xhdpi/ch_282_logo.png
new file mode 100644
index 00000000..9ddb94c4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_282_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_283_logo.png b/tests/input/res/drawable-xhdpi/ch_283_logo.png
new file mode 100644
index 00000000..b72a1fb4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_283_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_284_logo.png b/tests/input/res/drawable-xhdpi/ch_284_logo.png
new file mode 100644
index 00000000..3c9358b3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_284_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_285_logo.png b/tests/input/res/drawable-xhdpi/ch_285_logo.png
new file mode 100644
index 00000000..5c661286
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_285_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_286_logo.png b/tests/input/res/drawable-xhdpi/ch_286_logo.png
new file mode 100644
index 00000000..156693b0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_286_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_287_logo.png b/tests/input/res/drawable-xhdpi/ch_287_logo.png
new file mode 100644
index 00000000..cd835f37
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_287_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_288_logo.png b/tests/input/res/drawable-xhdpi/ch_288_logo.png
new file mode 100644
index 00000000..fa207e55
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_288_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_289_logo.png b/tests/input/res/drawable-xhdpi/ch_289_logo.png
new file mode 100644
index 00000000..f3a8c5a7
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_289_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_28_logo.png b/tests/input/res/drawable-xhdpi/ch_28_logo.png
new file mode 100644
index 00000000..6c45dd1f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_28_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_290_logo.png b/tests/input/res/drawable-xhdpi/ch_290_logo.png
new file mode 100644
index 00000000..9f106cb5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_290_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_291_logo.png b/tests/input/res/drawable-xhdpi/ch_291_logo.png
new file mode 100644
index 00000000..88fbeadb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_291_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_292_logo.png b/tests/input/res/drawable-xhdpi/ch_292_logo.png
new file mode 100644
index 00000000..7d3f6cd9
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_292_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_293_logo.png b/tests/input/res/drawable-xhdpi/ch_293_logo.png
new file mode 100644
index 00000000..5e78c871
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_293_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_294_logo.png b/tests/input/res/drawable-xhdpi/ch_294_logo.png
new file mode 100644
index 00000000..78c99725
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_294_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_295_logo.png b/tests/input/res/drawable-xhdpi/ch_295_logo.png
new file mode 100644
index 00000000..f7eaa8ed
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_295_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_296_logo.png b/tests/input/res/drawable-xhdpi/ch_296_logo.png
new file mode 100644
index 00000000..eb062b9b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_296_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_297_logo.png b/tests/input/res/drawable-xhdpi/ch_297_logo.png
new file mode 100644
index 00000000..9eedeb10
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_297_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_298_logo.png b/tests/input/res/drawable-xhdpi/ch_298_logo.png
new file mode 100644
index 00000000..44565ee1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_298_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_299_logo.png b/tests/input/res/drawable-xhdpi/ch_299_logo.png
new file mode 100644
index 00000000..12f2a234
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_299_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_29_logo.png b/tests/input/res/drawable-xhdpi/ch_29_logo.png
new file mode 100644
index 00000000..87c282db
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_29_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_2_logo.png b/tests/input/res/drawable-xhdpi/ch_2_logo.png
new file mode 100644
index 00000000..47bf5543
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_2_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_300_logo.png b/tests/input/res/drawable-xhdpi/ch_300_logo.png
new file mode 100644
index 00000000..f34993d0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_300_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_301_logo.png b/tests/input/res/drawable-xhdpi/ch_301_logo.png
new file mode 100644
index 00000000..8362be93
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_301_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_302_logo.png b/tests/input/res/drawable-xhdpi/ch_302_logo.png
new file mode 100644
index 00000000..d59cdddd
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_302_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_303_logo.png b/tests/input/res/drawable-xhdpi/ch_303_logo.png
new file mode 100644
index 00000000..3aa9dca8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_303_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_304_logo.png b/tests/input/res/drawable-xhdpi/ch_304_logo.png
new file mode 100644
index 00000000..154abfc6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_304_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_305_logo.png b/tests/input/res/drawable-xhdpi/ch_305_logo.png
new file mode 100644
index 00000000..dd6e809d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_305_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_306_logo.png b/tests/input/res/drawable-xhdpi/ch_306_logo.png
new file mode 100644
index 00000000..906ba315
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_306_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_307_logo.png b/tests/input/res/drawable-xhdpi/ch_307_logo.png
new file mode 100644
index 00000000..9031296c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_307_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_308_logo.png b/tests/input/res/drawable-xhdpi/ch_308_logo.png
new file mode 100644
index 00000000..2d388b4b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_308_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_309_logo.png b/tests/input/res/drawable-xhdpi/ch_309_logo.png
new file mode 100644
index 00000000..8deddd0b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_309_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_30_logo.png b/tests/input/res/drawable-xhdpi/ch_30_logo.png
new file mode 100644
index 00000000..84947048
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_30_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_310_logo.png b/tests/input/res/drawable-xhdpi/ch_310_logo.png
new file mode 100644
index 00000000..5ca898d7
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_310_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_311_logo.png b/tests/input/res/drawable-xhdpi/ch_311_logo.png
new file mode 100644
index 00000000..ceda180c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_311_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_312_logo.png b/tests/input/res/drawable-xhdpi/ch_312_logo.png
new file mode 100644
index 00000000..d149b0d6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_312_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_313_logo.png b/tests/input/res/drawable-xhdpi/ch_313_logo.png
new file mode 100644
index 00000000..e8cde0d4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_313_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_314_logo.png b/tests/input/res/drawable-xhdpi/ch_314_logo.png
new file mode 100644
index 00000000..cab79a1a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_314_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_315_logo.png b/tests/input/res/drawable-xhdpi/ch_315_logo.png
new file mode 100644
index 00000000..de0229e1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_315_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_316_logo.png b/tests/input/res/drawable-xhdpi/ch_316_logo.png
new file mode 100644
index 00000000..21e074b3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_316_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_317_logo.png b/tests/input/res/drawable-xhdpi/ch_317_logo.png
new file mode 100644
index 00000000..a9a0e604
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_317_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_318_logo.png b/tests/input/res/drawable-xhdpi/ch_318_logo.png
new file mode 100644
index 00000000..fbdb3ab0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_318_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_319_logo.png b/tests/input/res/drawable-xhdpi/ch_319_logo.png
new file mode 100644
index 00000000..9d23ae89
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_319_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_31_logo.png b/tests/input/res/drawable-xhdpi/ch_31_logo.png
new file mode 100644
index 00000000..cf6f865e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_31_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_320_logo.png b/tests/input/res/drawable-xhdpi/ch_320_logo.png
new file mode 100644
index 00000000..4dd5c201
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_320_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_321_logo.png b/tests/input/res/drawable-xhdpi/ch_321_logo.png
new file mode 100644
index 00000000..cc0bf527
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_321_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_322_logo.png b/tests/input/res/drawable-xhdpi/ch_322_logo.png
new file mode 100644
index 00000000..5b2e3e2b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_322_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_323_logo.png b/tests/input/res/drawable-xhdpi/ch_323_logo.png
new file mode 100644
index 00000000..213d10ff
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_323_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_324_logo.png b/tests/input/res/drawable-xhdpi/ch_324_logo.png
new file mode 100644
index 00000000..81bea5cc
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_324_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_325_logo.png b/tests/input/res/drawable-xhdpi/ch_325_logo.png
new file mode 100644
index 00000000..811da30e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_325_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_326_logo.png b/tests/input/res/drawable-xhdpi/ch_326_logo.png
new file mode 100644
index 00000000..157dbb19
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_326_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_327_logo.png b/tests/input/res/drawable-xhdpi/ch_327_logo.png
new file mode 100644
index 00000000..57808898
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_327_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_328_logo.png b/tests/input/res/drawable-xhdpi/ch_328_logo.png
new file mode 100644
index 00000000..1f95d3de
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_328_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_329_logo.png b/tests/input/res/drawable-xhdpi/ch_329_logo.png
new file mode 100644
index 00000000..6eaf15a9
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_329_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_32_logo.png b/tests/input/res/drawable-xhdpi/ch_32_logo.png
new file mode 100644
index 00000000..6618debe
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_32_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_330_logo.png b/tests/input/res/drawable-xhdpi/ch_330_logo.png
new file mode 100644
index 00000000..936053a7
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_330_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_331_logo.png b/tests/input/res/drawable-xhdpi/ch_331_logo.png
new file mode 100644
index 00000000..fa04e972
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_331_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_332_logo.png b/tests/input/res/drawable-xhdpi/ch_332_logo.png
new file mode 100644
index 00000000..29621c61
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_332_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_333_logo.png b/tests/input/res/drawable-xhdpi/ch_333_logo.png
new file mode 100644
index 00000000..4ff2396a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_333_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_334_logo.png b/tests/input/res/drawable-xhdpi/ch_334_logo.png
new file mode 100644
index 00000000..2222f42a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_334_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_335_logo.png b/tests/input/res/drawable-xhdpi/ch_335_logo.png
new file mode 100644
index 00000000..138761b1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_335_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_336_logo.png b/tests/input/res/drawable-xhdpi/ch_336_logo.png
new file mode 100644
index 00000000..082c376f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_336_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_337_logo.png b/tests/input/res/drawable-xhdpi/ch_337_logo.png
new file mode 100644
index 00000000..3841ffc3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_337_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_338_logo.png b/tests/input/res/drawable-xhdpi/ch_338_logo.png
new file mode 100644
index 00000000..597524ce
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_338_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_339_logo.png b/tests/input/res/drawable-xhdpi/ch_339_logo.png
new file mode 100644
index 00000000..635bd339
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_339_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_33_logo.png b/tests/input/res/drawable-xhdpi/ch_33_logo.png
new file mode 100644
index 00000000..28faf971
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_33_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_340_logo.png b/tests/input/res/drawable-xhdpi/ch_340_logo.png
new file mode 100644
index 00000000..84d8ca2b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_340_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_341_logo.png b/tests/input/res/drawable-xhdpi/ch_341_logo.png
new file mode 100644
index 00000000..0f8bf318
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_341_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_342_logo.png b/tests/input/res/drawable-xhdpi/ch_342_logo.png
new file mode 100644
index 00000000..dcfe9b8c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_342_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_343_logo.png b/tests/input/res/drawable-xhdpi/ch_343_logo.png
new file mode 100644
index 00000000..8d534621
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_343_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_344_logo.png b/tests/input/res/drawable-xhdpi/ch_344_logo.png
new file mode 100644
index 00000000..cb9b5f29
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_344_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_345_logo.png b/tests/input/res/drawable-xhdpi/ch_345_logo.png
new file mode 100644
index 00000000..ec566640
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_345_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_346_logo.png b/tests/input/res/drawable-xhdpi/ch_346_logo.png
new file mode 100644
index 00000000..ad013b18
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_346_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_347_logo.png b/tests/input/res/drawable-xhdpi/ch_347_logo.png
new file mode 100644
index 00000000..ae979990
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_347_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_348_logo.png b/tests/input/res/drawable-xhdpi/ch_348_logo.png
new file mode 100644
index 00000000..94ef1d40
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_348_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_349_logo.png b/tests/input/res/drawable-xhdpi/ch_349_logo.png
new file mode 100644
index 00000000..6b9eae58
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_349_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_34_logo.png b/tests/input/res/drawable-xhdpi/ch_34_logo.png
new file mode 100644
index 00000000..ffe43d5b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_34_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_350_logo.png b/tests/input/res/drawable-xhdpi/ch_350_logo.png
new file mode 100644
index 00000000..5f764eb2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_350_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_351_logo.png b/tests/input/res/drawable-xhdpi/ch_351_logo.png
new file mode 100644
index 00000000..1eff168b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_351_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_352_logo.png b/tests/input/res/drawable-xhdpi/ch_352_logo.png
new file mode 100644
index 00000000..666784d6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_352_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_353_logo.png b/tests/input/res/drawable-xhdpi/ch_353_logo.png
new file mode 100644
index 00000000..d0db848d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_353_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_354_logo.png b/tests/input/res/drawable-xhdpi/ch_354_logo.png
new file mode 100644
index 00000000..e4b4016a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_354_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_355_logo.png b/tests/input/res/drawable-xhdpi/ch_355_logo.png
new file mode 100644
index 00000000..25061a42
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_355_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_356_logo.png b/tests/input/res/drawable-xhdpi/ch_356_logo.png
new file mode 100644
index 00000000..d7d2be0a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_356_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_357_logo.png b/tests/input/res/drawable-xhdpi/ch_357_logo.png
new file mode 100644
index 00000000..d8b991ea
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_357_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_358_logo.png b/tests/input/res/drawable-xhdpi/ch_358_logo.png
new file mode 100644
index 00000000..cc9babf0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_358_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_359_logo.png b/tests/input/res/drawable-xhdpi/ch_359_logo.png
new file mode 100644
index 00000000..649e2bb1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_359_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_35_logo.png b/tests/input/res/drawable-xhdpi/ch_35_logo.png
new file mode 100644
index 00000000..2c0cdee6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_35_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_360_logo.png b/tests/input/res/drawable-xhdpi/ch_360_logo.png
new file mode 100644
index 00000000..3a026c6f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_360_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_361_logo.png b/tests/input/res/drawable-xhdpi/ch_361_logo.png
new file mode 100644
index 00000000..f4bc741c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_361_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_362_logo.png b/tests/input/res/drawable-xhdpi/ch_362_logo.png
new file mode 100644
index 00000000..36ed58de
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_362_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_363_logo.png b/tests/input/res/drawable-xhdpi/ch_363_logo.png
new file mode 100644
index 00000000..121e8b89
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_363_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_364_logo.png b/tests/input/res/drawable-xhdpi/ch_364_logo.png
new file mode 100644
index 00000000..27e6b9ec
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_364_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_365_logo.png b/tests/input/res/drawable-xhdpi/ch_365_logo.png
new file mode 100644
index 00000000..fb7839f0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_365_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_366_logo.png b/tests/input/res/drawable-xhdpi/ch_366_logo.png
new file mode 100644
index 00000000..a85568ae
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_366_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_367_logo.png b/tests/input/res/drawable-xhdpi/ch_367_logo.png
new file mode 100644
index 00000000..7eb14267
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_367_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_368_logo.png b/tests/input/res/drawable-xhdpi/ch_368_logo.png
new file mode 100644
index 00000000..9023261f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_368_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_369_logo.png b/tests/input/res/drawable-xhdpi/ch_369_logo.png
new file mode 100644
index 00000000..07124c27
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_369_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_36_logo.png b/tests/input/res/drawable-xhdpi/ch_36_logo.png
new file mode 100644
index 00000000..66e59fcd
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_36_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_370_logo.png b/tests/input/res/drawable-xhdpi/ch_370_logo.png
new file mode 100644
index 00000000..b2d0f4c1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_370_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_371_logo.png b/tests/input/res/drawable-xhdpi/ch_371_logo.png
new file mode 100644
index 00000000..fe685db9
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_371_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_372_logo.png b/tests/input/res/drawable-xhdpi/ch_372_logo.png
new file mode 100644
index 00000000..a083c6cd
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_372_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_373_logo.png b/tests/input/res/drawable-xhdpi/ch_373_logo.png
new file mode 100644
index 00000000..152bc6ce
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_373_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_374_logo.png b/tests/input/res/drawable-xhdpi/ch_374_logo.png
new file mode 100644
index 00000000..c0469e26
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_374_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_375_logo.png b/tests/input/res/drawable-xhdpi/ch_375_logo.png
new file mode 100644
index 00000000..0f1f4c2a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_375_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_376_logo.png b/tests/input/res/drawable-xhdpi/ch_376_logo.png
new file mode 100644
index 00000000..503c39ad
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_376_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_377_logo.png b/tests/input/res/drawable-xhdpi/ch_377_logo.png
new file mode 100644
index 00000000..1a16efea
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_377_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_378_logo.png b/tests/input/res/drawable-xhdpi/ch_378_logo.png
new file mode 100644
index 00000000..e23ddd77
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_378_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_379_logo.png b/tests/input/res/drawable-xhdpi/ch_379_logo.png
new file mode 100644
index 00000000..ec6fa2dc
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_379_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_37_logo.png b/tests/input/res/drawable-xhdpi/ch_37_logo.png
new file mode 100644
index 00000000..6d0f27f3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_37_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_380_logo.png b/tests/input/res/drawable-xhdpi/ch_380_logo.png
new file mode 100644
index 00000000..31d2fafa
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_380_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_381_logo.png b/tests/input/res/drawable-xhdpi/ch_381_logo.png
new file mode 100644
index 00000000..e7efb1c8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_381_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_382_logo.png b/tests/input/res/drawable-xhdpi/ch_382_logo.png
new file mode 100644
index 00000000..ee082821
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_382_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_383_logo.png b/tests/input/res/drawable-xhdpi/ch_383_logo.png
new file mode 100644
index 00000000..f9f69248
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_383_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_384_logo.png b/tests/input/res/drawable-xhdpi/ch_384_logo.png
new file mode 100644
index 00000000..1096faa8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_384_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_385_logo.png b/tests/input/res/drawable-xhdpi/ch_385_logo.png
new file mode 100644
index 00000000..cd0b9db4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_385_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_386_logo.png b/tests/input/res/drawable-xhdpi/ch_386_logo.png
new file mode 100644
index 00000000..0b9fe16d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_386_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_387_logo.png b/tests/input/res/drawable-xhdpi/ch_387_logo.png
new file mode 100644
index 00000000..45d0d225
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_387_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_388_logo.png b/tests/input/res/drawable-xhdpi/ch_388_logo.png
new file mode 100644
index 00000000..8bcce1b4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_388_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_389_logo.png b/tests/input/res/drawable-xhdpi/ch_389_logo.png
new file mode 100644
index 00000000..a0251351
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_389_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_38_logo.png b/tests/input/res/drawable-xhdpi/ch_38_logo.png
new file mode 100644
index 00000000..0e2539de
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_38_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_390_logo.png b/tests/input/res/drawable-xhdpi/ch_390_logo.png
new file mode 100644
index 00000000..dbc5a19d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_390_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_391_logo.png b/tests/input/res/drawable-xhdpi/ch_391_logo.png
new file mode 100644
index 00000000..b0a7f9ca
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_391_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_392_logo.png b/tests/input/res/drawable-xhdpi/ch_392_logo.png
new file mode 100644
index 00000000..1a303e63
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_392_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_393_logo.png b/tests/input/res/drawable-xhdpi/ch_393_logo.png
new file mode 100644
index 00000000..69f7e765
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_393_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_394_logo.png b/tests/input/res/drawable-xhdpi/ch_394_logo.png
new file mode 100644
index 00000000..c1e08355
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_394_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_395_logo.png b/tests/input/res/drawable-xhdpi/ch_395_logo.png
new file mode 100644
index 00000000..c8df82e2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_395_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_396_logo.png b/tests/input/res/drawable-xhdpi/ch_396_logo.png
new file mode 100644
index 00000000..61fa2b7b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_396_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_397_logo.png b/tests/input/res/drawable-xhdpi/ch_397_logo.png
new file mode 100644
index 00000000..01bea3af
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_397_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_398_logo.png b/tests/input/res/drawable-xhdpi/ch_398_logo.png
new file mode 100644
index 00000000..c6f3c193
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_398_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_399_logo.png b/tests/input/res/drawable-xhdpi/ch_399_logo.png
new file mode 100644
index 00000000..036cb786
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_399_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_39_logo.png b/tests/input/res/drawable-xhdpi/ch_39_logo.png
new file mode 100644
index 00000000..3b719c30
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_39_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_3_logo.png b/tests/input/res/drawable-xhdpi/ch_3_logo.png
new file mode 100644
index 00000000..b0e29425
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_3_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_400_logo.png b/tests/input/res/drawable-xhdpi/ch_400_logo.png
new file mode 100644
index 00000000..8680df86
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_400_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_401_logo.png b/tests/input/res/drawable-xhdpi/ch_401_logo.png
new file mode 100644
index 00000000..987dd616
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_401_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_402_logo.png b/tests/input/res/drawable-xhdpi/ch_402_logo.png
new file mode 100644
index 00000000..00c6d6fe
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_402_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_403_logo.png b/tests/input/res/drawable-xhdpi/ch_403_logo.png
new file mode 100644
index 00000000..2929a7bd
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_403_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_404_logo.png b/tests/input/res/drawable-xhdpi/ch_404_logo.png
new file mode 100644
index 00000000..eae3f461
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_404_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_405_logo.png b/tests/input/res/drawable-xhdpi/ch_405_logo.png
new file mode 100644
index 00000000..8672cb0f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_405_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_406_logo.png b/tests/input/res/drawable-xhdpi/ch_406_logo.png
new file mode 100644
index 00000000..cbd69f3e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_406_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_407_logo.png b/tests/input/res/drawable-xhdpi/ch_407_logo.png
new file mode 100644
index 00000000..003b3e42
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_407_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_408_logo.png b/tests/input/res/drawable-xhdpi/ch_408_logo.png
new file mode 100644
index 00000000..1b2a0dc5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_408_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_409_logo.png b/tests/input/res/drawable-xhdpi/ch_409_logo.png
new file mode 100644
index 00000000..1d4dd21e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_409_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_40_logo.png b/tests/input/res/drawable-xhdpi/ch_40_logo.png
new file mode 100644
index 00000000..1e0c8720
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_40_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_410_logo.png b/tests/input/res/drawable-xhdpi/ch_410_logo.png
new file mode 100644
index 00000000..49bec68d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_410_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_411_logo.png b/tests/input/res/drawable-xhdpi/ch_411_logo.png
new file mode 100644
index 00000000..e002d190
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_411_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_412_logo.png b/tests/input/res/drawable-xhdpi/ch_412_logo.png
new file mode 100644
index 00000000..f2add1e1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_412_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_413_logo.png b/tests/input/res/drawable-xhdpi/ch_413_logo.png
new file mode 100644
index 00000000..4c400c26
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_413_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_414_logo.png b/tests/input/res/drawable-xhdpi/ch_414_logo.png
new file mode 100644
index 00000000..3119a703
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_414_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_415_logo.png b/tests/input/res/drawable-xhdpi/ch_415_logo.png
new file mode 100644
index 00000000..9f634433
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_415_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_416_logo.png b/tests/input/res/drawable-xhdpi/ch_416_logo.png
new file mode 100644
index 00000000..a0bf863a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_416_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_417_logo.png b/tests/input/res/drawable-xhdpi/ch_417_logo.png
new file mode 100644
index 00000000..a475f405
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_417_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_418_logo.png b/tests/input/res/drawable-xhdpi/ch_418_logo.png
new file mode 100644
index 00000000..1c8b9af4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_418_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_419_logo.png b/tests/input/res/drawable-xhdpi/ch_419_logo.png
new file mode 100644
index 00000000..e0e3aeec
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_419_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_41_logo.png b/tests/input/res/drawable-xhdpi/ch_41_logo.png
new file mode 100644
index 00000000..a3e80d91
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_41_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_420_logo.png b/tests/input/res/drawable-xhdpi/ch_420_logo.png
new file mode 100644
index 00000000..a34ce714
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_420_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_421_logo.png b/tests/input/res/drawable-xhdpi/ch_421_logo.png
new file mode 100644
index 00000000..a6539075
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_421_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_422_logo.png b/tests/input/res/drawable-xhdpi/ch_422_logo.png
new file mode 100644
index 00000000..4eb3189a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_422_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_423_logo.png b/tests/input/res/drawable-xhdpi/ch_423_logo.png
new file mode 100644
index 00000000..8d83bd46
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_423_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_424_logo.png b/tests/input/res/drawable-xhdpi/ch_424_logo.png
new file mode 100644
index 00000000..3eed5fa1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_424_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_425_logo.png b/tests/input/res/drawable-xhdpi/ch_425_logo.png
new file mode 100644
index 00000000..2ffca333
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_425_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_426_logo.png b/tests/input/res/drawable-xhdpi/ch_426_logo.png
new file mode 100644
index 00000000..5a9ee457
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_426_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_427_logo.png b/tests/input/res/drawable-xhdpi/ch_427_logo.png
new file mode 100644
index 00000000..28ebd5dd
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_427_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_428_logo.png b/tests/input/res/drawable-xhdpi/ch_428_logo.png
new file mode 100644
index 00000000..68769207
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_428_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_429_logo.png b/tests/input/res/drawable-xhdpi/ch_429_logo.png
new file mode 100644
index 00000000..c8b71730
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_429_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_42_logo.png b/tests/input/res/drawable-xhdpi/ch_42_logo.png
new file mode 100644
index 00000000..806d0186
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_42_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_430_logo.png b/tests/input/res/drawable-xhdpi/ch_430_logo.png
new file mode 100644
index 00000000..be69f765
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_430_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_431_logo.png b/tests/input/res/drawable-xhdpi/ch_431_logo.png
new file mode 100644
index 00000000..23869ee5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_431_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_432_logo.png b/tests/input/res/drawable-xhdpi/ch_432_logo.png
new file mode 100644
index 00000000..023f2467
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_432_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_433_logo.png b/tests/input/res/drawable-xhdpi/ch_433_logo.png
new file mode 100644
index 00000000..4d089a91
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_433_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_434_logo.png b/tests/input/res/drawable-xhdpi/ch_434_logo.png
new file mode 100644
index 00000000..80be3347
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_434_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_435_logo.png b/tests/input/res/drawable-xhdpi/ch_435_logo.png
new file mode 100644
index 00000000..ee68a104
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_435_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_436_logo.png b/tests/input/res/drawable-xhdpi/ch_436_logo.png
new file mode 100644
index 00000000..1cbecf67
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_436_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_437_logo.png b/tests/input/res/drawable-xhdpi/ch_437_logo.png
new file mode 100644
index 00000000..86f0051d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_437_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_438_logo.png b/tests/input/res/drawable-xhdpi/ch_438_logo.png
new file mode 100644
index 00000000..68e96389
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_438_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_439_logo.png b/tests/input/res/drawable-xhdpi/ch_439_logo.png
new file mode 100644
index 00000000..6cb790f7
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_439_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_43_logo.png b/tests/input/res/drawable-xhdpi/ch_43_logo.png
new file mode 100644
index 00000000..20aaff1b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_43_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_440_logo.png b/tests/input/res/drawable-xhdpi/ch_440_logo.png
new file mode 100644
index 00000000..ff8a9967
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_440_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_441_logo.png b/tests/input/res/drawable-xhdpi/ch_441_logo.png
new file mode 100644
index 00000000..691bdb1f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_441_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_442_logo.png b/tests/input/res/drawable-xhdpi/ch_442_logo.png
new file mode 100644
index 00000000..c2180054
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_442_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_443_logo.png b/tests/input/res/drawable-xhdpi/ch_443_logo.png
new file mode 100644
index 00000000..865b0101
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_443_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_444_logo.png b/tests/input/res/drawable-xhdpi/ch_444_logo.png
new file mode 100644
index 00000000..ed770663
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_444_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_445_logo.png b/tests/input/res/drawable-xhdpi/ch_445_logo.png
new file mode 100644
index 00000000..1d8c4996
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_445_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_446_logo.png b/tests/input/res/drawable-xhdpi/ch_446_logo.png
new file mode 100644
index 00000000..1fc1b386
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_446_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_447_logo.png b/tests/input/res/drawable-xhdpi/ch_447_logo.png
new file mode 100644
index 00000000..59a8adc8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_447_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_448_logo.png b/tests/input/res/drawable-xhdpi/ch_448_logo.png
new file mode 100644
index 00000000..820d61f9
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_448_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_449_logo.png b/tests/input/res/drawable-xhdpi/ch_449_logo.png
new file mode 100644
index 00000000..94a1a70f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_449_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_44_logo.png b/tests/input/res/drawable-xhdpi/ch_44_logo.png
new file mode 100644
index 00000000..409b5df4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_44_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_450_logo.png b/tests/input/res/drawable-xhdpi/ch_450_logo.png
new file mode 100644
index 00000000..bdcd5bdb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_450_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_451_logo.png b/tests/input/res/drawable-xhdpi/ch_451_logo.png
new file mode 100644
index 00000000..4339f74c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_451_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_452_logo.png b/tests/input/res/drawable-xhdpi/ch_452_logo.png
new file mode 100644
index 00000000..b7a403fa
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_452_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_453_logo.png b/tests/input/res/drawable-xhdpi/ch_453_logo.png
new file mode 100644
index 00000000..4e234270
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_453_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_454_logo.png b/tests/input/res/drawable-xhdpi/ch_454_logo.png
new file mode 100644
index 00000000..4873c1ec
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_454_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_455_logo.png b/tests/input/res/drawable-xhdpi/ch_455_logo.png
new file mode 100644
index 00000000..2c7dcffe
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_455_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_456_logo.png b/tests/input/res/drawable-xhdpi/ch_456_logo.png
new file mode 100644
index 00000000..05a2db14
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_456_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_457_logo.png b/tests/input/res/drawable-xhdpi/ch_457_logo.png
new file mode 100644
index 00000000..7772b418
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_457_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_458_logo.png b/tests/input/res/drawable-xhdpi/ch_458_logo.png
new file mode 100644
index 00000000..e44d6c92
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_458_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_459_logo.png b/tests/input/res/drawable-xhdpi/ch_459_logo.png
new file mode 100644
index 00000000..a946b148
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_459_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_45_logo.png b/tests/input/res/drawable-xhdpi/ch_45_logo.png
new file mode 100644
index 00000000..fc725dbf
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_45_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_460_logo.png b/tests/input/res/drawable-xhdpi/ch_460_logo.png
new file mode 100644
index 00000000..bb19236d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_460_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_461_logo.png b/tests/input/res/drawable-xhdpi/ch_461_logo.png
new file mode 100644
index 00000000..be531cf0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_461_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_462_logo.png b/tests/input/res/drawable-xhdpi/ch_462_logo.png
new file mode 100644
index 00000000..c7568f3e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_462_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_463_logo.png b/tests/input/res/drawable-xhdpi/ch_463_logo.png
new file mode 100644
index 00000000..3ac05577
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_463_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_464_logo.png b/tests/input/res/drawable-xhdpi/ch_464_logo.png
new file mode 100644
index 00000000..35d263e2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_464_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_465_logo.png b/tests/input/res/drawable-xhdpi/ch_465_logo.png
new file mode 100644
index 00000000..44e94fa8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_465_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_466_logo.png b/tests/input/res/drawable-xhdpi/ch_466_logo.png
new file mode 100644
index 00000000..453b1085
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_466_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_467_logo.png b/tests/input/res/drawable-xhdpi/ch_467_logo.png
new file mode 100644
index 00000000..c1577d0f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_467_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_468_logo.png b/tests/input/res/drawable-xhdpi/ch_468_logo.png
new file mode 100644
index 00000000..11238603
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_468_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_469_logo.png b/tests/input/res/drawable-xhdpi/ch_469_logo.png
new file mode 100644
index 00000000..e0373ea6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_469_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_46_logo.png b/tests/input/res/drawable-xhdpi/ch_46_logo.png
new file mode 100644
index 00000000..0c9b740e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_46_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_470_logo.png b/tests/input/res/drawable-xhdpi/ch_470_logo.png
new file mode 100644
index 00000000..aa04ce40
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_470_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_471_logo.png b/tests/input/res/drawable-xhdpi/ch_471_logo.png
new file mode 100644
index 00000000..b2793a22
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_471_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_472_logo.png b/tests/input/res/drawable-xhdpi/ch_472_logo.png
new file mode 100644
index 00000000..d00ea6a4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_472_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_473_logo.png b/tests/input/res/drawable-xhdpi/ch_473_logo.png
new file mode 100644
index 00000000..9fcb5c65
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_473_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_474_logo.png b/tests/input/res/drawable-xhdpi/ch_474_logo.png
new file mode 100644
index 00000000..8e13450c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_474_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_475_logo.png b/tests/input/res/drawable-xhdpi/ch_475_logo.png
new file mode 100644
index 00000000..ebb96f74
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_475_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_476_logo.png b/tests/input/res/drawable-xhdpi/ch_476_logo.png
new file mode 100644
index 00000000..39a81c4b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_476_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_477_logo.png b/tests/input/res/drawable-xhdpi/ch_477_logo.png
new file mode 100644
index 00000000..48ec00de
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_477_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_478_logo.png b/tests/input/res/drawable-xhdpi/ch_478_logo.png
new file mode 100644
index 00000000..b6e08715
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_478_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_479_logo.png b/tests/input/res/drawable-xhdpi/ch_479_logo.png
new file mode 100644
index 00000000..5d964709
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_479_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_47_logo.png b/tests/input/res/drawable-xhdpi/ch_47_logo.png
new file mode 100644
index 00000000..b4aee717
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_47_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_480_logo.png b/tests/input/res/drawable-xhdpi/ch_480_logo.png
new file mode 100644
index 00000000..708ab0cb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_480_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_481_logo.png b/tests/input/res/drawable-xhdpi/ch_481_logo.png
new file mode 100644
index 00000000..019de9d6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_481_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_482_logo.png b/tests/input/res/drawable-xhdpi/ch_482_logo.png
new file mode 100644
index 00000000..1399a206
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_482_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_483_logo.png b/tests/input/res/drawable-xhdpi/ch_483_logo.png
new file mode 100644
index 00000000..cca5aef0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_483_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_484_logo.png b/tests/input/res/drawable-xhdpi/ch_484_logo.png
new file mode 100644
index 00000000..5c2fd6b2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_484_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_485_logo.png b/tests/input/res/drawable-xhdpi/ch_485_logo.png
new file mode 100644
index 00000000..7e239c2b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_485_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_486_logo.png b/tests/input/res/drawable-xhdpi/ch_486_logo.png
new file mode 100644
index 00000000..7b26dc96
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_486_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_487_logo.png b/tests/input/res/drawable-xhdpi/ch_487_logo.png
new file mode 100644
index 00000000..24c5f25b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_487_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_488_logo.png b/tests/input/res/drawable-xhdpi/ch_488_logo.png
new file mode 100644
index 00000000..ca4c76fc
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_488_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_489_logo.png b/tests/input/res/drawable-xhdpi/ch_489_logo.png
new file mode 100644
index 00000000..a139bbc4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_489_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_48_logo.png b/tests/input/res/drawable-xhdpi/ch_48_logo.png
new file mode 100644
index 00000000..28e01441
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_48_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_490_logo.png b/tests/input/res/drawable-xhdpi/ch_490_logo.png
new file mode 100644
index 00000000..25634d4f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_490_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_491_logo.png b/tests/input/res/drawable-xhdpi/ch_491_logo.png
new file mode 100644
index 00000000..fa5b6d3f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_491_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_492_logo.png b/tests/input/res/drawable-xhdpi/ch_492_logo.png
new file mode 100644
index 00000000..ce5443fd
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_492_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_493_logo.png b/tests/input/res/drawable-xhdpi/ch_493_logo.png
new file mode 100644
index 00000000..717787cf
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_493_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_494_logo.png b/tests/input/res/drawable-xhdpi/ch_494_logo.png
new file mode 100644
index 00000000..46d78ffb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_494_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_495_logo.png b/tests/input/res/drawable-xhdpi/ch_495_logo.png
new file mode 100644
index 00000000..d55b34df
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_495_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_496_logo.png b/tests/input/res/drawable-xhdpi/ch_496_logo.png
new file mode 100644
index 00000000..85fc1f89
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_496_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_497_logo.png b/tests/input/res/drawable-xhdpi/ch_497_logo.png
new file mode 100644
index 00000000..c4e9843d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_497_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_498_logo.png b/tests/input/res/drawable-xhdpi/ch_498_logo.png
new file mode 100644
index 00000000..1b027ad4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_498_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_499_logo.png b/tests/input/res/drawable-xhdpi/ch_499_logo.png
new file mode 100644
index 00000000..25464c7a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_499_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_49_logo.png b/tests/input/res/drawable-xhdpi/ch_49_logo.png
new file mode 100644
index 00000000..979d7a16
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_49_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_4_logo.png b/tests/input/res/drawable-xhdpi/ch_4_logo.png
new file mode 100644
index 00000000..bdcba74f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_4_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_500_logo.png b/tests/input/res/drawable-xhdpi/ch_500_logo.png
new file mode 100644
index 00000000..c7666c60
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_500_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_501_logo.png b/tests/input/res/drawable-xhdpi/ch_501_logo.png
new file mode 100644
index 00000000..f3902ad6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_501_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_502_logo.png b/tests/input/res/drawable-xhdpi/ch_502_logo.png
new file mode 100644
index 00000000..6d3d3a56
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_502_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_503_logo.png b/tests/input/res/drawable-xhdpi/ch_503_logo.png
new file mode 100644
index 00000000..8e729042
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_503_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_504_logo.png b/tests/input/res/drawable-xhdpi/ch_504_logo.png
new file mode 100644
index 00000000..72347b6e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_504_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_505_logo.png b/tests/input/res/drawable-xhdpi/ch_505_logo.png
new file mode 100644
index 00000000..c50cce8c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_505_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_506_logo.png b/tests/input/res/drawable-xhdpi/ch_506_logo.png
new file mode 100644
index 00000000..a56cbe5d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_506_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_507_logo.png b/tests/input/res/drawable-xhdpi/ch_507_logo.png
new file mode 100644
index 00000000..f5dbb30f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_507_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_508_logo.png b/tests/input/res/drawable-xhdpi/ch_508_logo.png
new file mode 100644
index 00000000..62ed0c19
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_508_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_509_logo.png b/tests/input/res/drawable-xhdpi/ch_509_logo.png
new file mode 100644
index 00000000..513444a0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_509_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_50_logo.png b/tests/input/res/drawable-xhdpi/ch_50_logo.png
new file mode 100644
index 00000000..8d347d77
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_50_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_510_logo.png b/tests/input/res/drawable-xhdpi/ch_510_logo.png
new file mode 100644
index 00000000..ebf5f565
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_510_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_511_logo.png b/tests/input/res/drawable-xhdpi/ch_511_logo.png
new file mode 100644
index 00000000..3a062b08
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_511_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_512_logo.png b/tests/input/res/drawable-xhdpi/ch_512_logo.png
new file mode 100644
index 00000000..1660c8fe
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_512_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_513_logo.png b/tests/input/res/drawable-xhdpi/ch_513_logo.png
new file mode 100644
index 00000000..24a4ac12
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_513_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_514_logo.png b/tests/input/res/drawable-xhdpi/ch_514_logo.png
new file mode 100644
index 00000000..83b7c4ce
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_514_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_515_logo.png b/tests/input/res/drawable-xhdpi/ch_515_logo.png
new file mode 100644
index 00000000..dcd64054
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_515_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_516_logo.png b/tests/input/res/drawable-xhdpi/ch_516_logo.png
new file mode 100644
index 00000000..20f6f8f2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_516_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_517_logo.png b/tests/input/res/drawable-xhdpi/ch_517_logo.png
new file mode 100644
index 00000000..9630234e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_517_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_518_logo.png b/tests/input/res/drawable-xhdpi/ch_518_logo.png
new file mode 100644
index 00000000..65f85a37
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_518_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_519_logo.png b/tests/input/res/drawable-xhdpi/ch_519_logo.png
new file mode 100644
index 00000000..c963ef2a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_519_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_51_logo.png b/tests/input/res/drawable-xhdpi/ch_51_logo.png
new file mode 100644
index 00000000..ecf8f5d5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_51_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_520_logo.png b/tests/input/res/drawable-xhdpi/ch_520_logo.png
new file mode 100644
index 00000000..b6ad9b49
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_520_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_521_logo.png b/tests/input/res/drawable-xhdpi/ch_521_logo.png
new file mode 100644
index 00000000..874185ea
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_521_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_522_logo.png b/tests/input/res/drawable-xhdpi/ch_522_logo.png
new file mode 100644
index 00000000..ea273252
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_522_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_523_logo.png b/tests/input/res/drawable-xhdpi/ch_523_logo.png
new file mode 100644
index 00000000..eb27f052
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_523_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_524_logo.png b/tests/input/res/drawable-xhdpi/ch_524_logo.png
new file mode 100644
index 00000000..e3ea1563
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_524_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_525_logo.png b/tests/input/res/drawable-xhdpi/ch_525_logo.png
new file mode 100644
index 00000000..2321e786
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_525_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_526_logo.png b/tests/input/res/drawable-xhdpi/ch_526_logo.png
new file mode 100644
index 00000000..57c0e5f2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_526_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_527_logo.png b/tests/input/res/drawable-xhdpi/ch_527_logo.png
new file mode 100644
index 00000000..cad756c2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_527_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_528_logo.png b/tests/input/res/drawable-xhdpi/ch_528_logo.png
new file mode 100644
index 00000000..be46d47f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_528_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_529_logo.png b/tests/input/res/drawable-xhdpi/ch_529_logo.png
new file mode 100644
index 00000000..54fece7f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_529_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_52_logo.png b/tests/input/res/drawable-xhdpi/ch_52_logo.png
new file mode 100644
index 00000000..ec3eb477
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_52_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_530_logo.png b/tests/input/res/drawable-xhdpi/ch_530_logo.png
new file mode 100644
index 00000000..27709060
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_530_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_531_logo.png b/tests/input/res/drawable-xhdpi/ch_531_logo.png
new file mode 100644
index 00000000..44c6b84a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_531_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_532_logo.png b/tests/input/res/drawable-xhdpi/ch_532_logo.png
new file mode 100644
index 00000000..e6076ce1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_532_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_533_logo.png b/tests/input/res/drawable-xhdpi/ch_533_logo.png
new file mode 100644
index 00000000..3d19a963
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_533_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_534_logo.png b/tests/input/res/drawable-xhdpi/ch_534_logo.png
new file mode 100644
index 00000000..50784977
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_534_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_535_logo.png b/tests/input/res/drawable-xhdpi/ch_535_logo.png
new file mode 100644
index 00000000..8163a96f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_535_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_536_logo.png b/tests/input/res/drawable-xhdpi/ch_536_logo.png
new file mode 100644
index 00000000..a03f9e04
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_536_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_537_logo.png b/tests/input/res/drawable-xhdpi/ch_537_logo.png
new file mode 100644
index 00000000..17434611
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_537_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_538_logo.png b/tests/input/res/drawable-xhdpi/ch_538_logo.png
new file mode 100644
index 00000000..3141c0dc
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_538_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_539_logo.png b/tests/input/res/drawable-xhdpi/ch_539_logo.png
new file mode 100644
index 00000000..b110e032
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_539_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_53_logo.png b/tests/input/res/drawable-xhdpi/ch_53_logo.png
new file mode 100644
index 00000000..0e656758
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_53_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_540_logo.png b/tests/input/res/drawable-xhdpi/ch_540_logo.png
new file mode 100644
index 00000000..8ebf4165
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_540_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_541_logo.png b/tests/input/res/drawable-xhdpi/ch_541_logo.png
new file mode 100644
index 00000000..3e1af08b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_541_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_542_logo.png b/tests/input/res/drawable-xhdpi/ch_542_logo.png
new file mode 100644
index 00000000..d5f22057
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_542_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_543_logo.png b/tests/input/res/drawable-xhdpi/ch_543_logo.png
new file mode 100644
index 00000000..3e0f7509
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_543_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_544_logo.png b/tests/input/res/drawable-xhdpi/ch_544_logo.png
new file mode 100644
index 00000000..d86af336
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_544_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_545_logo.png b/tests/input/res/drawable-xhdpi/ch_545_logo.png
new file mode 100644
index 00000000..17660161
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_545_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_546_logo.png b/tests/input/res/drawable-xhdpi/ch_546_logo.png
new file mode 100644
index 00000000..50f6511f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_546_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_547_logo.png b/tests/input/res/drawable-xhdpi/ch_547_logo.png
new file mode 100644
index 00000000..cea4ddc5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_547_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_548_logo.png b/tests/input/res/drawable-xhdpi/ch_548_logo.png
new file mode 100644
index 00000000..22e8cde1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_548_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_549_logo.png b/tests/input/res/drawable-xhdpi/ch_549_logo.png
new file mode 100644
index 00000000..517abc60
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_549_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_54_logo.png b/tests/input/res/drawable-xhdpi/ch_54_logo.png
new file mode 100644
index 00000000..b5ab64d8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_54_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_550_logo.png b/tests/input/res/drawable-xhdpi/ch_550_logo.png
new file mode 100644
index 00000000..34000a65
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_550_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_551_logo.png b/tests/input/res/drawable-xhdpi/ch_551_logo.png
new file mode 100644
index 00000000..f64a3f9b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_551_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_552_logo.png b/tests/input/res/drawable-xhdpi/ch_552_logo.png
new file mode 100644
index 00000000..2c814f31
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_552_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_553_logo.png b/tests/input/res/drawable-xhdpi/ch_553_logo.png
new file mode 100644
index 00000000..6feb5fd5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_553_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_554_logo.png b/tests/input/res/drawable-xhdpi/ch_554_logo.png
new file mode 100644
index 00000000..4fc0815a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_554_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_555_logo.png b/tests/input/res/drawable-xhdpi/ch_555_logo.png
new file mode 100644
index 00000000..b156f760
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_555_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_556_logo.png b/tests/input/res/drawable-xhdpi/ch_556_logo.png
new file mode 100644
index 00000000..6db0f725
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_556_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_557_logo.png b/tests/input/res/drawable-xhdpi/ch_557_logo.png
new file mode 100644
index 00000000..b718c7d4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_557_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_558_logo.png b/tests/input/res/drawable-xhdpi/ch_558_logo.png
new file mode 100644
index 00000000..3a031f7c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_558_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_559_logo.png b/tests/input/res/drawable-xhdpi/ch_559_logo.png
new file mode 100644
index 00000000..21e086d3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_559_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_55_logo.png b/tests/input/res/drawable-xhdpi/ch_55_logo.png
new file mode 100644
index 00000000..d5aa5fc9
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_55_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_560_logo.png b/tests/input/res/drawable-xhdpi/ch_560_logo.png
new file mode 100644
index 00000000..0862c7e2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_560_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_561_logo.png b/tests/input/res/drawable-xhdpi/ch_561_logo.png
new file mode 100644
index 00000000..0ae7b9fb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_561_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_562_logo.png b/tests/input/res/drawable-xhdpi/ch_562_logo.png
new file mode 100644
index 00000000..e3b0e337
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_562_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_563_logo.png b/tests/input/res/drawable-xhdpi/ch_563_logo.png
new file mode 100644
index 00000000..35d8552f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_563_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_564_logo.png b/tests/input/res/drawable-xhdpi/ch_564_logo.png
new file mode 100644
index 00000000..1e5d0750
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_564_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_565_logo.png b/tests/input/res/drawable-xhdpi/ch_565_logo.png
new file mode 100644
index 00000000..c5e0c341
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_565_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_566_logo.png b/tests/input/res/drawable-xhdpi/ch_566_logo.png
new file mode 100644
index 00000000..a2178ba0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_566_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_567_logo.png b/tests/input/res/drawable-xhdpi/ch_567_logo.png
new file mode 100644
index 00000000..66b56918
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_567_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_568_logo.png b/tests/input/res/drawable-xhdpi/ch_568_logo.png
new file mode 100644
index 00000000..ef977e4c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_568_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_569_logo.png b/tests/input/res/drawable-xhdpi/ch_569_logo.png
new file mode 100644
index 00000000..f234dfd2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_569_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_56_logo.png b/tests/input/res/drawable-xhdpi/ch_56_logo.png
new file mode 100644
index 00000000..da62a21a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_56_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_570_logo.png b/tests/input/res/drawable-xhdpi/ch_570_logo.png
new file mode 100644
index 00000000..61e8e57a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_570_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_571_logo.png b/tests/input/res/drawable-xhdpi/ch_571_logo.png
new file mode 100644
index 00000000..4a62e9f0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_571_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_572_logo.png b/tests/input/res/drawable-xhdpi/ch_572_logo.png
new file mode 100644
index 00000000..c4b7638a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_572_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_573_logo.png b/tests/input/res/drawable-xhdpi/ch_573_logo.png
new file mode 100644
index 00000000..458544be
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_573_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_574_logo.png b/tests/input/res/drawable-xhdpi/ch_574_logo.png
new file mode 100644
index 00000000..0c29bf9f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_574_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_575_logo.png b/tests/input/res/drawable-xhdpi/ch_575_logo.png
new file mode 100644
index 00000000..51397746
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_575_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_576_logo.png b/tests/input/res/drawable-xhdpi/ch_576_logo.png
new file mode 100644
index 00000000..ba443bd8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_576_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_577_logo.png b/tests/input/res/drawable-xhdpi/ch_577_logo.png
new file mode 100644
index 00000000..d7fa7f31
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_577_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_578_logo.png b/tests/input/res/drawable-xhdpi/ch_578_logo.png
new file mode 100644
index 00000000..30464d8e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_578_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_579_logo.png b/tests/input/res/drawable-xhdpi/ch_579_logo.png
new file mode 100644
index 00000000..a43e8d6f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_579_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_57_logo.png b/tests/input/res/drawable-xhdpi/ch_57_logo.png
new file mode 100644
index 00000000..ce0f92f8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_57_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_580_logo.png b/tests/input/res/drawable-xhdpi/ch_580_logo.png
new file mode 100644
index 00000000..97db5776
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_580_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_581_logo.png b/tests/input/res/drawable-xhdpi/ch_581_logo.png
new file mode 100644
index 00000000..f2c1dc72
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_581_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_582_logo.png b/tests/input/res/drawable-xhdpi/ch_582_logo.png
new file mode 100644
index 00000000..0941a065
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_582_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_583_logo.png b/tests/input/res/drawable-xhdpi/ch_583_logo.png
new file mode 100644
index 00000000..02de0c0b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_583_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_584_logo.png b/tests/input/res/drawable-xhdpi/ch_584_logo.png
new file mode 100644
index 00000000..213822f2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_584_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_585_logo.png b/tests/input/res/drawable-xhdpi/ch_585_logo.png
new file mode 100644
index 00000000..dedf2b25
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_585_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_586_logo.png b/tests/input/res/drawable-xhdpi/ch_586_logo.png
new file mode 100644
index 00000000..a2b6b734
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_586_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_587_logo.png b/tests/input/res/drawable-xhdpi/ch_587_logo.png
new file mode 100644
index 00000000..7fad4ebb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_587_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_588_logo.png b/tests/input/res/drawable-xhdpi/ch_588_logo.png
new file mode 100644
index 00000000..95bac09c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_588_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_589_logo.png b/tests/input/res/drawable-xhdpi/ch_589_logo.png
new file mode 100644
index 00000000..a991b260
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_589_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_58_logo.png b/tests/input/res/drawable-xhdpi/ch_58_logo.png
new file mode 100644
index 00000000..ac701108
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_58_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_590_logo.png b/tests/input/res/drawable-xhdpi/ch_590_logo.png
new file mode 100644
index 00000000..a34664f7
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_590_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_591_logo.png b/tests/input/res/drawable-xhdpi/ch_591_logo.png
new file mode 100644
index 00000000..67809b8a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_591_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_592_logo.png b/tests/input/res/drawable-xhdpi/ch_592_logo.png
new file mode 100644
index 00000000..7af17289
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_592_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_593_logo.png b/tests/input/res/drawable-xhdpi/ch_593_logo.png
new file mode 100644
index 00000000..a07c2451
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_593_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_594_logo.png b/tests/input/res/drawable-xhdpi/ch_594_logo.png
new file mode 100644
index 00000000..59b8565b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_594_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_595_logo.png b/tests/input/res/drawable-xhdpi/ch_595_logo.png
new file mode 100644
index 00000000..063905a4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_595_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_596_logo.png b/tests/input/res/drawable-xhdpi/ch_596_logo.png
new file mode 100644
index 00000000..1ab7ff66
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_596_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_597_logo.png b/tests/input/res/drawable-xhdpi/ch_597_logo.png
new file mode 100644
index 00000000..f8be3409
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_597_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_598_logo.png b/tests/input/res/drawable-xhdpi/ch_598_logo.png
new file mode 100644
index 00000000..55f93ba1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_598_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_599_logo.png b/tests/input/res/drawable-xhdpi/ch_599_logo.png
new file mode 100644
index 00000000..b1038a22
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_599_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_59_logo.png b/tests/input/res/drawable-xhdpi/ch_59_logo.png
new file mode 100644
index 00000000..df3f65ad
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_59_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_5_logo.png b/tests/input/res/drawable-xhdpi/ch_5_logo.png
new file mode 100644
index 00000000..b9a72610
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_5_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_600_logo.png b/tests/input/res/drawable-xhdpi/ch_600_logo.png
new file mode 100644
index 00000000..de16f61c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_600_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_601_logo.png b/tests/input/res/drawable-xhdpi/ch_601_logo.png
new file mode 100644
index 00000000..9bbf9dad
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_601_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_602_logo.png b/tests/input/res/drawable-xhdpi/ch_602_logo.png
new file mode 100644
index 00000000..72b291c5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_602_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_603_logo.png b/tests/input/res/drawable-xhdpi/ch_603_logo.png
new file mode 100644
index 00000000..14c3a5eb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_603_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_604_logo.png b/tests/input/res/drawable-xhdpi/ch_604_logo.png
new file mode 100644
index 00000000..c4b9edc7
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_604_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_605_logo.png b/tests/input/res/drawable-xhdpi/ch_605_logo.png
new file mode 100644
index 00000000..2f1150af
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_605_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_606_logo.png b/tests/input/res/drawable-xhdpi/ch_606_logo.png
new file mode 100644
index 00000000..e87a1d30
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_606_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_607_logo.png b/tests/input/res/drawable-xhdpi/ch_607_logo.png
new file mode 100644
index 00000000..73fb5fec
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_607_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_608_logo.png b/tests/input/res/drawable-xhdpi/ch_608_logo.png
new file mode 100644
index 00000000..0a084556
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_608_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_609_logo.png b/tests/input/res/drawable-xhdpi/ch_609_logo.png
new file mode 100644
index 00000000..fb9b4d49
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_609_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_60_logo.png b/tests/input/res/drawable-xhdpi/ch_60_logo.png
new file mode 100644
index 00000000..2d98ef39
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_60_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_610_logo.png b/tests/input/res/drawable-xhdpi/ch_610_logo.png
new file mode 100644
index 00000000..468b1d90
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_610_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_611_logo.png b/tests/input/res/drawable-xhdpi/ch_611_logo.png
new file mode 100644
index 00000000..0ae9d397
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_611_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_612_logo.png b/tests/input/res/drawable-xhdpi/ch_612_logo.png
new file mode 100644
index 00000000..c2f003dc
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_612_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_613_logo.png b/tests/input/res/drawable-xhdpi/ch_613_logo.png
new file mode 100644
index 00000000..d8ddd450
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_613_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_614_logo.png b/tests/input/res/drawable-xhdpi/ch_614_logo.png
new file mode 100644
index 00000000..2db895ce
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_614_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_615_logo.png b/tests/input/res/drawable-xhdpi/ch_615_logo.png
new file mode 100644
index 00000000..e5bd8e5a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_615_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_616_logo.png b/tests/input/res/drawable-xhdpi/ch_616_logo.png
new file mode 100644
index 00000000..ca6d8baf
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_616_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_617_logo.png b/tests/input/res/drawable-xhdpi/ch_617_logo.png
new file mode 100644
index 00000000..830998f6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_617_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_618_logo.png b/tests/input/res/drawable-xhdpi/ch_618_logo.png
new file mode 100644
index 00000000..b95b2235
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_618_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_619_logo.png b/tests/input/res/drawable-xhdpi/ch_619_logo.png
new file mode 100644
index 00000000..fcb8b5b6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_619_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_61_logo.png b/tests/input/res/drawable-xhdpi/ch_61_logo.png
new file mode 100644
index 00000000..46f8a3c6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_61_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_620_logo.png b/tests/input/res/drawable-xhdpi/ch_620_logo.png
new file mode 100644
index 00000000..a9120460
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_620_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_621_logo.png b/tests/input/res/drawable-xhdpi/ch_621_logo.png
new file mode 100644
index 00000000..552af5ef
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_621_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_622_logo.png b/tests/input/res/drawable-xhdpi/ch_622_logo.png
new file mode 100644
index 00000000..87e1bcfd
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_622_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_623_logo.png b/tests/input/res/drawable-xhdpi/ch_623_logo.png
new file mode 100644
index 00000000..eb187bbc
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_623_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_624_logo.png b/tests/input/res/drawable-xhdpi/ch_624_logo.png
new file mode 100644
index 00000000..8615a41f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_624_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_625_logo.png b/tests/input/res/drawable-xhdpi/ch_625_logo.png
new file mode 100644
index 00000000..d75d7c0f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_625_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_626_logo.png b/tests/input/res/drawable-xhdpi/ch_626_logo.png
new file mode 100644
index 00000000..41d8d0df
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_626_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_627_logo.png b/tests/input/res/drawable-xhdpi/ch_627_logo.png
new file mode 100644
index 00000000..5dd145bf
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_627_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_628_logo.png b/tests/input/res/drawable-xhdpi/ch_628_logo.png
new file mode 100644
index 00000000..455eb4dd
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_628_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_629_logo.png b/tests/input/res/drawable-xhdpi/ch_629_logo.png
new file mode 100644
index 00000000..41f69d00
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_629_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_62_logo.png b/tests/input/res/drawable-xhdpi/ch_62_logo.png
new file mode 100644
index 00000000..f5f4e383
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_62_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_630_logo.png b/tests/input/res/drawable-xhdpi/ch_630_logo.png
new file mode 100644
index 00000000..bdb78df6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_630_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_631_logo.png b/tests/input/res/drawable-xhdpi/ch_631_logo.png
new file mode 100644
index 00000000..548526c3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_631_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_632_logo.png b/tests/input/res/drawable-xhdpi/ch_632_logo.png
new file mode 100644
index 00000000..708ee74c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_632_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_633_logo.png b/tests/input/res/drawable-xhdpi/ch_633_logo.png
new file mode 100644
index 00000000..996cf780
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_633_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_634_logo.png b/tests/input/res/drawable-xhdpi/ch_634_logo.png
new file mode 100644
index 00000000..2fe92b32
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_634_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_635_logo.png b/tests/input/res/drawable-xhdpi/ch_635_logo.png
new file mode 100644
index 00000000..353c3b42
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_635_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_636_logo.png b/tests/input/res/drawable-xhdpi/ch_636_logo.png
new file mode 100644
index 00000000..aef47ced
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_636_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_637_logo.png b/tests/input/res/drawable-xhdpi/ch_637_logo.png
new file mode 100644
index 00000000..5f61016c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_637_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_638_logo.png b/tests/input/res/drawable-xhdpi/ch_638_logo.png
new file mode 100644
index 00000000..5b280f70
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_638_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_639_logo.png b/tests/input/res/drawable-xhdpi/ch_639_logo.png
new file mode 100644
index 00000000..81b537e5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_639_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_63_logo.png b/tests/input/res/drawable-xhdpi/ch_63_logo.png
new file mode 100644
index 00000000..128205f7
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_63_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_640_logo.png b/tests/input/res/drawable-xhdpi/ch_640_logo.png
new file mode 100644
index 00000000..17935dcd
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_640_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_641_logo.png b/tests/input/res/drawable-xhdpi/ch_641_logo.png
new file mode 100644
index 00000000..bae9b10e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_641_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_642_logo.png b/tests/input/res/drawable-xhdpi/ch_642_logo.png
new file mode 100644
index 00000000..b0f9f91c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_642_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_643_logo.png b/tests/input/res/drawable-xhdpi/ch_643_logo.png
new file mode 100644
index 00000000..a8b84a80
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_643_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_644_logo.png b/tests/input/res/drawable-xhdpi/ch_644_logo.png
new file mode 100644
index 00000000..05940f12
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_644_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_645_logo.png b/tests/input/res/drawable-xhdpi/ch_645_logo.png
new file mode 100644
index 00000000..6f99f635
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_645_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_646_logo.png b/tests/input/res/drawable-xhdpi/ch_646_logo.png
new file mode 100644
index 00000000..dc114cbc
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_646_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_647_logo.png b/tests/input/res/drawable-xhdpi/ch_647_logo.png
new file mode 100644
index 00000000..8a5fd7e4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_647_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_648_logo.png b/tests/input/res/drawable-xhdpi/ch_648_logo.png
new file mode 100644
index 00000000..0aa2f162
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_648_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_649_logo.png b/tests/input/res/drawable-xhdpi/ch_649_logo.png
new file mode 100644
index 00000000..507a0856
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_649_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_64_logo.png b/tests/input/res/drawable-xhdpi/ch_64_logo.png
new file mode 100644
index 00000000..c65289ce
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_64_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_650_logo.png b/tests/input/res/drawable-xhdpi/ch_650_logo.png
new file mode 100644
index 00000000..9f523276
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_650_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_651_logo.png b/tests/input/res/drawable-xhdpi/ch_651_logo.png
new file mode 100644
index 00000000..73bc87ca
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_651_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_652_logo.png b/tests/input/res/drawable-xhdpi/ch_652_logo.png
new file mode 100644
index 00000000..f99d75c8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_652_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_653_logo.png b/tests/input/res/drawable-xhdpi/ch_653_logo.png
new file mode 100644
index 00000000..9edeef1e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_653_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_654_logo.png b/tests/input/res/drawable-xhdpi/ch_654_logo.png
new file mode 100644
index 00000000..c94b8708
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_654_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_655_logo.png b/tests/input/res/drawable-xhdpi/ch_655_logo.png
new file mode 100644
index 00000000..ea3251c0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_655_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_656_logo.png b/tests/input/res/drawable-xhdpi/ch_656_logo.png
new file mode 100644
index 00000000..5ea07b59
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_656_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_657_logo.png b/tests/input/res/drawable-xhdpi/ch_657_logo.png
new file mode 100644
index 00000000..2cce7067
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_657_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_658_logo.png b/tests/input/res/drawable-xhdpi/ch_658_logo.png
new file mode 100644
index 00000000..28b87454
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_658_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_659_logo.png b/tests/input/res/drawable-xhdpi/ch_659_logo.png
new file mode 100644
index 00000000..73285caf
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_659_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_65_logo.png b/tests/input/res/drawable-xhdpi/ch_65_logo.png
new file mode 100644
index 00000000..81d7ac20
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_65_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_660_logo.png b/tests/input/res/drawable-xhdpi/ch_660_logo.png
new file mode 100644
index 00000000..b49cfac0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_660_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_661_logo.png b/tests/input/res/drawable-xhdpi/ch_661_logo.png
new file mode 100644
index 00000000..3ce1072b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_661_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_662_logo.png b/tests/input/res/drawable-xhdpi/ch_662_logo.png
new file mode 100644
index 00000000..e29aa8f8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_662_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_663_logo.png b/tests/input/res/drawable-xhdpi/ch_663_logo.png
new file mode 100644
index 00000000..0f8da210
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_663_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_664_logo.png b/tests/input/res/drawable-xhdpi/ch_664_logo.png
new file mode 100644
index 00000000..9b1d9111
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_664_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_665_logo.png b/tests/input/res/drawable-xhdpi/ch_665_logo.png
new file mode 100644
index 00000000..d8fae363
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_665_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_666_logo.png b/tests/input/res/drawable-xhdpi/ch_666_logo.png
new file mode 100644
index 00000000..e3efa18c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_666_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_667_logo.png b/tests/input/res/drawable-xhdpi/ch_667_logo.png
new file mode 100644
index 00000000..70572014
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_667_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_668_logo.png b/tests/input/res/drawable-xhdpi/ch_668_logo.png
new file mode 100644
index 00000000..04b3f3ac
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_668_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_669_logo.png b/tests/input/res/drawable-xhdpi/ch_669_logo.png
new file mode 100644
index 00000000..6067444b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_669_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_66_logo.png b/tests/input/res/drawable-xhdpi/ch_66_logo.png
new file mode 100644
index 00000000..d07139c0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_66_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_670_logo.png b/tests/input/res/drawable-xhdpi/ch_670_logo.png
new file mode 100644
index 00000000..e2e7206b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_670_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_671_logo.png b/tests/input/res/drawable-xhdpi/ch_671_logo.png
new file mode 100644
index 00000000..51e54b94
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_671_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_672_logo.png b/tests/input/res/drawable-xhdpi/ch_672_logo.png
new file mode 100644
index 00000000..88dfea80
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_672_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_673_logo.png b/tests/input/res/drawable-xhdpi/ch_673_logo.png
new file mode 100644
index 00000000..00090169
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_673_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_674_logo.png b/tests/input/res/drawable-xhdpi/ch_674_logo.png
new file mode 100644
index 00000000..4931fadb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_674_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_675_logo.png b/tests/input/res/drawable-xhdpi/ch_675_logo.png
new file mode 100644
index 00000000..d82d3bdb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_675_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_676_logo.png b/tests/input/res/drawable-xhdpi/ch_676_logo.png
new file mode 100644
index 00000000..c4735ac7
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_676_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_677_logo.png b/tests/input/res/drawable-xhdpi/ch_677_logo.png
new file mode 100644
index 00000000..4d099f48
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_677_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_678_logo.png b/tests/input/res/drawable-xhdpi/ch_678_logo.png
new file mode 100644
index 00000000..3680766d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_678_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_679_logo.png b/tests/input/res/drawable-xhdpi/ch_679_logo.png
new file mode 100644
index 00000000..c36ef2e5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_679_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_67_logo.png b/tests/input/res/drawable-xhdpi/ch_67_logo.png
new file mode 100644
index 00000000..d01eade6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_67_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_680_logo.png b/tests/input/res/drawable-xhdpi/ch_680_logo.png
new file mode 100644
index 00000000..2fef4629
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_680_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_681_logo.png b/tests/input/res/drawable-xhdpi/ch_681_logo.png
new file mode 100644
index 00000000..ae68f8c6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_681_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_682_logo.png b/tests/input/res/drawable-xhdpi/ch_682_logo.png
new file mode 100644
index 00000000..7eac1354
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_682_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_683_logo.png b/tests/input/res/drawable-xhdpi/ch_683_logo.png
new file mode 100644
index 00000000..27a8fdf4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_683_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_684_logo.png b/tests/input/res/drawable-xhdpi/ch_684_logo.png
new file mode 100644
index 00000000..1eba95fe
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_684_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_685_logo.png b/tests/input/res/drawable-xhdpi/ch_685_logo.png
new file mode 100644
index 00000000..21f49b0e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_685_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_686_logo.png b/tests/input/res/drawable-xhdpi/ch_686_logo.png
new file mode 100644
index 00000000..0b3f511f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_686_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_687_logo.png b/tests/input/res/drawable-xhdpi/ch_687_logo.png
new file mode 100644
index 00000000..37d380c5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_687_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_688_logo.png b/tests/input/res/drawable-xhdpi/ch_688_logo.png
new file mode 100644
index 00000000..5d0d78fd
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_688_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_689_logo.png b/tests/input/res/drawable-xhdpi/ch_689_logo.png
new file mode 100644
index 00000000..4f3ae717
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_689_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_68_logo.png b/tests/input/res/drawable-xhdpi/ch_68_logo.png
new file mode 100644
index 00000000..28284848
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_68_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_690_logo.png b/tests/input/res/drawable-xhdpi/ch_690_logo.png
new file mode 100644
index 00000000..50d8ccfb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_690_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_691_logo.png b/tests/input/res/drawable-xhdpi/ch_691_logo.png
new file mode 100644
index 00000000..2a6957b0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_691_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_692_logo.png b/tests/input/res/drawable-xhdpi/ch_692_logo.png
new file mode 100644
index 00000000..245e0b28
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_692_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_693_logo.png b/tests/input/res/drawable-xhdpi/ch_693_logo.png
new file mode 100644
index 00000000..ccc1d79c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_693_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_694_logo.png b/tests/input/res/drawable-xhdpi/ch_694_logo.png
new file mode 100644
index 00000000..3141e0fc
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_694_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_695_logo.png b/tests/input/res/drawable-xhdpi/ch_695_logo.png
new file mode 100644
index 00000000..96eabf5d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_695_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_696_logo.png b/tests/input/res/drawable-xhdpi/ch_696_logo.png
new file mode 100644
index 00000000..1e127f7c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_696_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_697_logo.png b/tests/input/res/drawable-xhdpi/ch_697_logo.png
new file mode 100644
index 00000000..45f91a89
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_697_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_698_logo.png b/tests/input/res/drawable-xhdpi/ch_698_logo.png
new file mode 100644
index 00000000..920ec7af
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_698_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_699_logo.png b/tests/input/res/drawable-xhdpi/ch_699_logo.png
new file mode 100644
index 00000000..0f2c79f4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_699_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_69_logo.png b/tests/input/res/drawable-xhdpi/ch_69_logo.png
new file mode 100644
index 00000000..f4ba87ce
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_69_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_6_logo.png b/tests/input/res/drawable-xhdpi/ch_6_logo.png
new file mode 100644
index 00000000..017af150
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_6_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_700_logo.png b/tests/input/res/drawable-xhdpi/ch_700_logo.png
new file mode 100644
index 00000000..764bf18d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_700_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_701_logo.png b/tests/input/res/drawable-xhdpi/ch_701_logo.png
new file mode 100644
index 00000000..02385412
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_701_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_702_logo.png b/tests/input/res/drawable-xhdpi/ch_702_logo.png
new file mode 100644
index 00000000..812cfe7d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_702_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_703_logo.png b/tests/input/res/drawable-xhdpi/ch_703_logo.png
new file mode 100644
index 00000000..2a8173b6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_703_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_704_logo.png b/tests/input/res/drawable-xhdpi/ch_704_logo.png
new file mode 100644
index 00000000..320f5833
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_704_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_705_logo.png b/tests/input/res/drawable-xhdpi/ch_705_logo.png
new file mode 100644
index 00000000..a92a1e1f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_705_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_706_logo.png b/tests/input/res/drawable-xhdpi/ch_706_logo.png
new file mode 100644
index 00000000..6e159bea
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_706_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_707_logo.png b/tests/input/res/drawable-xhdpi/ch_707_logo.png
new file mode 100644
index 00000000..3e61c6c8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_707_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_708_logo.png b/tests/input/res/drawable-xhdpi/ch_708_logo.png
new file mode 100644
index 00000000..b8a8ce34
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_708_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_709_logo.png b/tests/input/res/drawable-xhdpi/ch_709_logo.png
new file mode 100644
index 00000000..2ca3238b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_709_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_70_logo.png b/tests/input/res/drawable-xhdpi/ch_70_logo.png
new file mode 100644
index 00000000..7d72badf
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_70_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_710_logo.png b/tests/input/res/drawable-xhdpi/ch_710_logo.png
new file mode 100644
index 00000000..563b7493
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_710_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_711_logo.png b/tests/input/res/drawable-xhdpi/ch_711_logo.png
new file mode 100644
index 00000000..6c8de85b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_711_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_712_logo.png b/tests/input/res/drawable-xhdpi/ch_712_logo.png
new file mode 100644
index 00000000..1b0fa6fb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_712_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_713_logo.png b/tests/input/res/drawable-xhdpi/ch_713_logo.png
new file mode 100644
index 00000000..c2f89dc8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_713_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_714_logo.png b/tests/input/res/drawable-xhdpi/ch_714_logo.png
new file mode 100644
index 00000000..83a159d6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_714_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_715_logo.png b/tests/input/res/drawable-xhdpi/ch_715_logo.png
new file mode 100644
index 00000000..07b54ade
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_715_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_716_logo.png b/tests/input/res/drawable-xhdpi/ch_716_logo.png
new file mode 100644
index 00000000..2d0e1320
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_716_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_717_logo.png b/tests/input/res/drawable-xhdpi/ch_717_logo.png
new file mode 100644
index 00000000..dbe319b3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_717_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_718_logo.png b/tests/input/res/drawable-xhdpi/ch_718_logo.png
new file mode 100644
index 00000000..91525ffc
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_718_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_719_logo.png b/tests/input/res/drawable-xhdpi/ch_719_logo.png
new file mode 100644
index 00000000..f0219111
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_719_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_71_logo.png b/tests/input/res/drawable-xhdpi/ch_71_logo.png
new file mode 100644
index 00000000..286b88a0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_71_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_720_logo.png b/tests/input/res/drawable-xhdpi/ch_720_logo.png
new file mode 100644
index 00000000..a26db569
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_720_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_721_logo.png b/tests/input/res/drawable-xhdpi/ch_721_logo.png
new file mode 100644
index 00000000..bda52ec3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_721_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_722_logo.png b/tests/input/res/drawable-xhdpi/ch_722_logo.png
new file mode 100644
index 00000000..9d1dfc5e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_722_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_723_logo.png b/tests/input/res/drawable-xhdpi/ch_723_logo.png
new file mode 100644
index 00000000..0148215f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_723_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_724_logo.png b/tests/input/res/drawable-xhdpi/ch_724_logo.png
new file mode 100644
index 00000000..4a07ad49
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_724_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_725_logo.png b/tests/input/res/drawable-xhdpi/ch_725_logo.png
new file mode 100644
index 00000000..833fc93d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_725_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_726_logo.png b/tests/input/res/drawable-xhdpi/ch_726_logo.png
new file mode 100644
index 00000000..074a4321
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_726_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_727_logo.png b/tests/input/res/drawable-xhdpi/ch_727_logo.png
new file mode 100644
index 00000000..df12c2a6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_727_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_728_logo.png b/tests/input/res/drawable-xhdpi/ch_728_logo.png
new file mode 100644
index 00000000..9f2be10b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_728_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_729_logo.png b/tests/input/res/drawable-xhdpi/ch_729_logo.png
new file mode 100644
index 00000000..c73e460e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_729_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_72_logo.png b/tests/input/res/drawable-xhdpi/ch_72_logo.png
new file mode 100644
index 00000000..e50d00f1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_72_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_730_logo.png b/tests/input/res/drawable-xhdpi/ch_730_logo.png
new file mode 100644
index 00000000..d822f3b5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_730_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_731_logo.png b/tests/input/res/drawable-xhdpi/ch_731_logo.png
new file mode 100644
index 00000000..c0a057b4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_731_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_732_logo.png b/tests/input/res/drawable-xhdpi/ch_732_logo.png
new file mode 100644
index 00000000..323da948
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_732_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_733_logo.png b/tests/input/res/drawable-xhdpi/ch_733_logo.png
new file mode 100644
index 00000000..62a6d9b5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_733_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_734_logo.png b/tests/input/res/drawable-xhdpi/ch_734_logo.png
new file mode 100644
index 00000000..19995ea4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_734_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_735_logo.png b/tests/input/res/drawable-xhdpi/ch_735_logo.png
new file mode 100644
index 00000000..3c5f9686
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_735_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_736_logo.png b/tests/input/res/drawable-xhdpi/ch_736_logo.png
new file mode 100644
index 00000000..741abecb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_736_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_737_logo.png b/tests/input/res/drawable-xhdpi/ch_737_logo.png
new file mode 100644
index 00000000..f0ee672b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_737_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_738_logo.png b/tests/input/res/drawable-xhdpi/ch_738_logo.png
new file mode 100644
index 00000000..666ffb32
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_738_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_739_logo.png b/tests/input/res/drawable-xhdpi/ch_739_logo.png
new file mode 100644
index 00000000..8680c2db
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_739_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_73_logo.png b/tests/input/res/drawable-xhdpi/ch_73_logo.png
new file mode 100644
index 00000000..604af9a4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_73_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_740_logo.png b/tests/input/res/drawable-xhdpi/ch_740_logo.png
new file mode 100644
index 00000000..f666e327
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_740_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_741_logo.png b/tests/input/res/drawable-xhdpi/ch_741_logo.png
new file mode 100644
index 00000000..2527ce5d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_741_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_742_logo.png b/tests/input/res/drawable-xhdpi/ch_742_logo.png
new file mode 100644
index 00000000..c9b1c397
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_742_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_743_logo.png b/tests/input/res/drawable-xhdpi/ch_743_logo.png
new file mode 100644
index 00000000..4284b6c4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_743_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_744_logo.png b/tests/input/res/drawable-xhdpi/ch_744_logo.png
new file mode 100644
index 00000000..5daf188f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_744_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_745_logo.png b/tests/input/res/drawable-xhdpi/ch_745_logo.png
new file mode 100644
index 00000000..45a7ff51
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_745_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_746_logo.png b/tests/input/res/drawable-xhdpi/ch_746_logo.png
new file mode 100644
index 00000000..54a79c1a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_746_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_747_logo.png b/tests/input/res/drawable-xhdpi/ch_747_logo.png
new file mode 100644
index 00000000..f854c2e1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_747_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_748_logo.png b/tests/input/res/drawable-xhdpi/ch_748_logo.png
new file mode 100644
index 00000000..fb7cf30f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_748_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_749_logo.png b/tests/input/res/drawable-xhdpi/ch_749_logo.png
new file mode 100644
index 00000000..332b8bd2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_749_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_74_logo.png b/tests/input/res/drawable-xhdpi/ch_74_logo.png
new file mode 100644
index 00000000..cf0250e7
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_74_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_750_logo.png b/tests/input/res/drawable-xhdpi/ch_750_logo.png
new file mode 100644
index 00000000..47300227
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_750_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_751_logo.png b/tests/input/res/drawable-xhdpi/ch_751_logo.png
new file mode 100644
index 00000000..06ad62d8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_751_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_752_logo.png b/tests/input/res/drawable-xhdpi/ch_752_logo.png
new file mode 100644
index 00000000..b263daa3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_752_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_753_logo.png b/tests/input/res/drawable-xhdpi/ch_753_logo.png
new file mode 100644
index 00000000..a7aa046c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_753_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_754_logo.png b/tests/input/res/drawable-xhdpi/ch_754_logo.png
new file mode 100644
index 00000000..cc3f9f39
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_754_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_755_logo.png b/tests/input/res/drawable-xhdpi/ch_755_logo.png
new file mode 100644
index 00000000..e3f5a1ea
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_755_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_756_logo.png b/tests/input/res/drawable-xhdpi/ch_756_logo.png
new file mode 100644
index 00000000..bd0374bd
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_756_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_757_logo.png b/tests/input/res/drawable-xhdpi/ch_757_logo.png
new file mode 100644
index 00000000..3d355b6d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_757_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_758_logo.png b/tests/input/res/drawable-xhdpi/ch_758_logo.png
new file mode 100644
index 00000000..95d35d59
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_758_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_759_logo.png b/tests/input/res/drawable-xhdpi/ch_759_logo.png
new file mode 100644
index 00000000..dbac83cc
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_759_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_75_logo.png b/tests/input/res/drawable-xhdpi/ch_75_logo.png
new file mode 100644
index 00000000..93690282
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_75_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_760_logo.png b/tests/input/res/drawable-xhdpi/ch_760_logo.png
new file mode 100644
index 00000000..6a4b3515
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_760_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_761_logo.png b/tests/input/res/drawable-xhdpi/ch_761_logo.png
new file mode 100644
index 00000000..90dfd653
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_761_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_762_logo.png b/tests/input/res/drawable-xhdpi/ch_762_logo.png
new file mode 100644
index 00000000..43aa7a9e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_762_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_763_logo.png b/tests/input/res/drawable-xhdpi/ch_763_logo.png
new file mode 100644
index 00000000..3a7a22cc
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_763_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_764_logo.png b/tests/input/res/drawable-xhdpi/ch_764_logo.png
new file mode 100644
index 00000000..1decc311
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_764_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_765_logo.png b/tests/input/res/drawable-xhdpi/ch_765_logo.png
new file mode 100644
index 00000000..377aecce
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_765_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_766_logo.png b/tests/input/res/drawable-xhdpi/ch_766_logo.png
new file mode 100644
index 00000000..212a1e2b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_766_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_767_logo.png b/tests/input/res/drawable-xhdpi/ch_767_logo.png
new file mode 100644
index 00000000..d237213e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_767_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_768_logo.png b/tests/input/res/drawable-xhdpi/ch_768_logo.png
new file mode 100644
index 00000000..863c4be5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_768_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_769_logo.png b/tests/input/res/drawable-xhdpi/ch_769_logo.png
new file mode 100644
index 00000000..9543ddb0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_769_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_76_logo.png b/tests/input/res/drawable-xhdpi/ch_76_logo.png
new file mode 100644
index 00000000..3107f033
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_76_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_770_logo.png b/tests/input/res/drawable-xhdpi/ch_770_logo.png
new file mode 100644
index 00000000..2ae7bff5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_770_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_771_logo.png b/tests/input/res/drawable-xhdpi/ch_771_logo.png
new file mode 100644
index 00000000..3b8e6299
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_771_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_772_logo.png b/tests/input/res/drawable-xhdpi/ch_772_logo.png
new file mode 100644
index 00000000..b439232b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_772_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_773_logo.png b/tests/input/res/drawable-xhdpi/ch_773_logo.png
new file mode 100644
index 00000000..b3bb644f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_773_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_774_logo.png b/tests/input/res/drawable-xhdpi/ch_774_logo.png
new file mode 100644
index 00000000..147df7bf
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_774_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_775_logo.png b/tests/input/res/drawable-xhdpi/ch_775_logo.png
new file mode 100644
index 00000000..06fb2934
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_775_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_776_logo.png b/tests/input/res/drawable-xhdpi/ch_776_logo.png
new file mode 100644
index 00000000..c73f2bd7
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_776_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_777_logo.png b/tests/input/res/drawable-xhdpi/ch_777_logo.png
new file mode 100644
index 00000000..2fc8f34b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_777_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_778_logo.png b/tests/input/res/drawable-xhdpi/ch_778_logo.png
new file mode 100644
index 00000000..66546159
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_778_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_779_logo.png b/tests/input/res/drawable-xhdpi/ch_779_logo.png
new file mode 100644
index 00000000..6d8841c4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_779_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_77_logo.png b/tests/input/res/drawable-xhdpi/ch_77_logo.png
new file mode 100644
index 00000000..01927e94
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_77_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_780_logo.png b/tests/input/res/drawable-xhdpi/ch_780_logo.png
new file mode 100644
index 00000000..59683d8f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_780_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_781_logo.png b/tests/input/res/drawable-xhdpi/ch_781_logo.png
new file mode 100644
index 00000000..a553b0e6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_781_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_782_logo.png b/tests/input/res/drawable-xhdpi/ch_782_logo.png
new file mode 100644
index 00000000..04dccb8e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_782_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_783_logo.png b/tests/input/res/drawable-xhdpi/ch_783_logo.png
new file mode 100644
index 00000000..f1d7afca
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_783_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_784_logo.png b/tests/input/res/drawable-xhdpi/ch_784_logo.png
new file mode 100644
index 00000000..5feead87
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_784_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_785_logo.png b/tests/input/res/drawable-xhdpi/ch_785_logo.png
new file mode 100644
index 00000000..393340a3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_785_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_786_logo.png b/tests/input/res/drawable-xhdpi/ch_786_logo.png
new file mode 100644
index 00000000..b3fa139f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_786_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_787_logo.png b/tests/input/res/drawable-xhdpi/ch_787_logo.png
new file mode 100644
index 00000000..d84af6e4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_787_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_788_logo.png b/tests/input/res/drawable-xhdpi/ch_788_logo.png
new file mode 100644
index 00000000..1578e21b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_788_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_789_logo.png b/tests/input/res/drawable-xhdpi/ch_789_logo.png
new file mode 100644
index 00000000..ac2db334
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_789_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_78_logo.png b/tests/input/res/drawable-xhdpi/ch_78_logo.png
new file mode 100644
index 00000000..a1b4243b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_78_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_790_logo.png b/tests/input/res/drawable-xhdpi/ch_790_logo.png
new file mode 100644
index 00000000..c5d9823e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_790_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_791_logo.png b/tests/input/res/drawable-xhdpi/ch_791_logo.png
new file mode 100644
index 00000000..f7e1dacb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_791_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_792_logo.png b/tests/input/res/drawable-xhdpi/ch_792_logo.png
new file mode 100644
index 00000000..c15a0044
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_792_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_793_logo.png b/tests/input/res/drawable-xhdpi/ch_793_logo.png
new file mode 100644
index 00000000..280f46f1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_793_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_794_logo.png b/tests/input/res/drawable-xhdpi/ch_794_logo.png
new file mode 100644
index 00000000..9ae6b17f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_794_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_795_logo.png b/tests/input/res/drawable-xhdpi/ch_795_logo.png
new file mode 100644
index 00000000..7efd3347
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_795_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_796_logo.png b/tests/input/res/drawable-xhdpi/ch_796_logo.png
new file mode 100644
index 00000000..7dda53ce
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_796_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_797_logo.png b/tests/input/res/drawable-xhdpi/ch_797_logo.png
new file mode 100644
index 00000000..2c93401f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_797_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_798_logo.png b/tests/input/res/drawable-xhdpi/ch_798_logo.png
new file mode 100644
index 00000000..7ee1dd73
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_798_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_799_logo.png b/tests/input/res/drawable-xhdpi/ch_799_logo.png
new file mode 100644
index 00000000..ad318c0c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_799_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_79_logo.png b/tests/input/res/drawable-xhdpi/ch_79_logo.png
new file mode 100644
index 00000000..e5319376
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_79_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_7_logo.png b/tests/input/res/drawable-xhdpi/ch_7_logo.png
new file mode 100644
index 00000000..cf7e0607
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_7_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_800_logo.png b/tests/input/res/drawable-xhdpi/ch_800_logo.png
new file mode 100644
index 00000000..8a337024
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_800_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_801_logo.png b/tests/input/res/drawable-xhdpi/ch_801_logo.png
new file mode 100644
index 00000000..46fc4670
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_801_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_802_logo.png b/tests/input/res/drawable-xhdpi/ch_802_logo.png
new file mode 100644
index 00000000..353122bc
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_802_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_803_logo.png b/tests/input/res/drawable-xhdpi/ch_803_logo.png
new file mode 100644
index 00000000..4ec39903
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_803_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_804_logo.png b/tests/input/res/drawable-xhdpi/ch_804_logo.png
new file mode 100644
index 00000000..90346cb4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_804_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_805_logo.png b/tests/input/res/drawable-xhdpi/ch_805_logo.png
new file mode 100644
index 00000000..6db24339
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_805_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_806_logo.png b/tests/input/res/drawable-xhdpi/ch_806_logo.png
new file mode 100644
index 00000000..f17943d7
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_806_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_807_logo.png b/tests/input/res/drawable-xhdpi/ch_807_logo.png
new file mode 100644
index 00000000..c348272c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_807_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_808_logo.png b/tests/input/res/drawable-xhdpi/ch_808_logo.png
new file mode 100644
index 00000000..3a5a14d6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_808_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_809_logo.png b/tests/input/res/drawable-xhdpi/ch_809_logo.png
new file mode 100644
index 00000000..ae20572e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_809_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_80_logo.png b/tests/input/res/drawable-xhdpi/ch_80_logo.png
new file mode 100644
index 00000000..f5572bc1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_80_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_810_logo.png b/tests/input/res/drawable-xhdpi/ch_810_logo.png
new file mode 100644
index 00000000..361fb2de
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_810_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_811_logo.png b/tests/input/res/drawable-xhdpi/ch_811_logo.png
new file mode 100644
index 00000000..b006af1e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_811_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_812_logo.png b/tests/input/res/drawable-xhdpi/ch_812_logo.png
new file mode 100644
index 00000000..9d30f844
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_812_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_813_logo.png b/tests/input/res/drawable-xhdpi/ch_813_logo.png
new file mode 100644
index 00000000..c1ba8f91
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_813_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_814_logo.png b/tests/input/res/drawable-xhdpi/ch_814_logo.png
new file mode 100644
index 00000000..68fc2305
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_814_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_815_logo.png b/tests/input/res/drawable-xhdpi/ch_815_logo.png
new file mode 100644
index 00000000..bed3a701
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_815_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_816_logo.png b/tests/input/res/drawable-xhdpi/ch_816_logo.png
new file mode 100644
index 00000000..4e67a117
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_816_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_817_logo.png b/tests/input/res/drawable-xhdpi/ch_817_logo.png
new file mode 100644
index 00000000..59b778f0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_817_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_818_logo.png b/tests/input/res/drawable-xhdpi/ch_818_logo.png
new file mode 100644
index 00000000..9ba78efb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_818_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_819_logo.png b/tests/input/res/drawable-xhdpi/ch_819_logo.png
new file mode 100644
index 00000000..df51ee72
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_819_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_81_logo.png b/tests/input/res/drawable-xhdpi/ch_81_logo.png
new file mode 100644
index 00000000..ee3b863a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_81_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_820_logo.png b/tests/input/res/drawable-xhdpi/ch_820_logo.png
new file mode 100644
index 00000000..729d7e22
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_820_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_821_logo.png b/tests/input/res/drawable-xhdpi/ch_821_logo.png
new file mode 100644
index 00000000..4d23dedf
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_821_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_822_logo.png b/tests/input/res/drawable-xhdpi/ch_822_logo.png
new file mode 100644
index 00000000..c46c673a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_822_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_823_logo.png b/tests/input/res/drawable-xhdpi/ch_823_logo.png
new file mode 100644
index 00000000..587c1cfa
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_823_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_824_logo.png b/tests/input/res/drawable-xhdpi/ch_824_logo.png
new file mode 100644
index 00000000..af3a67e4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_824_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_825_logo.png b/tests/input/res/drawable-xhdpi/ch_825_logo.png
new file mode 100644
index 00000000..7d03bd53
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_825_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_826_logo.png b/tests/input/res/drawable-xhdpi/ch_826_logo.png
new file mode 100644
index 00000000..081bf5fe
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_826_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_827_logo.png b/tests/input/res/drawable-xhdpi/ch_827_logo.png
new file mode 100644
index 00000000..5a6a0b03
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_827_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_828_logo.png b/tests/input/res/drawable-xhdpi/ch_828_logo.png
new file mode 100644
index 00000000..7d480133
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_828_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_829_logo.png b/tests/input/res/drawable-xhdpi/ch_829_logo.png
new file mode 100644
index 00000000..8cca81b3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_829_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_82_logo.png b/tests/input/res/drawable-xhdpi/ch_82_logo.png
new file mode 100644
index 00000000..f92064a9
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_82_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_830_logo.png b/tests/input/res/drawable-xhdpi/ch_830_logo.png
new file mode 100644
index 00000000..f15a64b4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_830_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_831_logo.png b/tests/input/res/drawable-xhdpi/ch_831_logo.png
new file mode 100644
index 00000000..e37ae3c4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_831_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_832_logo.png b/tests/input/res/drawable-xhdpi/ch_832_logo.png
new file mode 100644
index 00000000..6083ee11
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_832_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_833_logo.png b/tests/input/res/drawable-xhdpi/ch_833_logo.png
new file mode 100644
index 00000000..70cfab74
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_833_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_834_logo.png b/tests/input/res/drawable-xhdpi/ch_834_logo.png
new file mode 100644
index 00000000..b73153e2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_834_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_835_logo.png b/tests/input/res/drawable-xhdpi/ch_835_logo.png
new file mode 100644
index 00000000..dc4c8faf
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_835_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_836_logo.png b/tests/input/res/drawable-xhdpi/ch_836_logo.png
new file mode 100644
index 00000000..8be46e7c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_836_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_837_logo.png b/tests/input/res/drawable-xhdpi/ch_837_logo.png
new file mode 100644
index 00000000..3916215f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_837_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_838_logo.png b/tests/input/res/drawable-xhdpi/ch_838_logo.png
new file mode 100644
index 00000000..72f06bc2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_838_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_839_logo.png b/tests/input/res/drawable-xhdpi/ch_839_logo.png
new file mode 100644
index 00000000..eeaa5b9a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_839_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_83_logo.png b/tests/input/res/drawable-xhdpi/ch_83_logo.png
new file mode 100644
index 00000000..240d1191
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_83_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_840_logo.png b/tests/input/res/drawable-xhdpi/ch_840_logo.png
new file mode 100644
index 00000000..d5ac3d08
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_840_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_841_logo.png b/tests/input/res/drawable-xhdpi/ch_841_logo.png
new file mode 100644
index 00000000..07aaf457
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_841_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_842_logo.png b/tests/input/res/drawable-xhdpi/ch_842_logo.png
new file mode 100644
index 00000000..e475f029
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_842_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_843_logo.png b/tests/input/res/drawable-xhdpi/ch_843_logo.png
new file mode 100644
index 00000000..b96dc6f3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_843_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_844_logo.png b/tests/input/res/drawable-xhdpi/ch_844_logo.png
new file mode 100644
index 00000000..cac18521
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_844_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_845_logo.png b/tests/input/res/drawable-xhdpi/ch_845_logo.png
new file mode 100644
index 00000000..70f28fe8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_845_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_846_logo.png b/tests/input/res/drawable-xhdpi/ch_846_logo.png
new file mode 100644
index 00000000..6d039538
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_846_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_847_logo.png b/tests/input/res/drawable-xhdpi/ch_847_logo.png
new file mode 100644
index 00000000..55052554
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_847_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_848_logo.png b/tests/input/res/drawable-xhdpi/ch_848_logo.png
new file mode 100644
index 00000000..cd7d3b1d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_848_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_849_logo.png b/tests/input/res/drawable-xhdpi/ch_849_logo.png
new file mode 100644
index 00000000..87df8860
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_849_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_84_logo.png b/tests/input/res/drawable-xhdpi/ch_84_logo.png
new file mode 100644
index 00000000..21ea6fc6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_84_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_850_logo.png b/tests/input/res/drawable-xhdpi/ch_850_logo.png
new file mode 100644
index 00000000..68813ef1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_850_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_851_logo.png b/tests/input/res/drawable-xhdpi/ch_851_logo.png
new file mode 100644
index 00000000..b07cf2d3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_851_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_852_logo.png b/tests/input/res/drawable-xhdpi/ch_852_logo.png
new file mode 100644
index 00000000..61b162ea
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_852_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_853_logo.png b/tests/input/res/drawable-xhdpi/ch_853_logo.png
new file mode 100644
index 00000000..69942aba
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_853_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_854_logo.png b/tests/input/res/drawable-xhdpi/ch_854_logo.png
new file mode 100644
index 00000000..b0799590
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_854_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_855_logo.png b/tests/input/res/drawable-xhdpi/ch_855_logo.png
new file mode 100644
index 00000000..3b7696f6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_855_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_856_logo.png b/tests/input/res/drawable-xhdpi/ch_856_logo.png
new file mode 100644
index 00000000..a7e34292
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_856_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_857_logo.png b/tests/input/res/drawable-xhdpi/ch_857_logo.png
new file mode 100644
index 00000000..25d4fa7d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_857_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_858_logo.png b/tests/input/res/drawable-xhdpi/ch_858_logo.png
new file mode 100644
index 00000000..ed1eef3c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_858_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_859_logo.png b/tests/input/res/drawable-xhdpi/ch_859_logo.png
new file mode 100644
index 00000000..1cb63e24
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_859_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_85_logo.png b/tests/input/res/drawable-xhdpi/ch_85_logo.png
new file mode 100644
index 00000000..a30f2d04
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_85_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_860_logo.png b/tests/input/res/drawable-xhdpi/ch_860_logo.png
new file mode 100644
index 00000000..d029798d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_860_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_861_logo.png b/tests/input/res/drawable-xhdpi/ch_861_logo.png
new file mode 100644
index 00000000..3cb709ec
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_861_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_862_logo.png b/tests/input/res/drawable-xhdpi/ch_862_logo.png
new file mode 100644
index 00000000..bd6c8b80
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_862_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_863_logo.png b/tests/input/res/drawable-xhdpi/ch_863_logo.png
new file mode 100644
index 00000000..4e09cd24
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_863_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_864_logo.png b/tests/input/res/drawable-xhdpi/ch_864_logo.png
new file mode 100644
index 00000000..2682aa31
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_864_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_865_logo.png b/tests/input/res/drawable-xhdpi/ch_865_logo.png
new file mode 100644
index 00000000..44e6f672
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_865_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_866_logo.png b/tests/input/res/drawable-xhdpi/ch_866_logo.png
new file mode 100644
index 00000000..00d100d7
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_866_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_867_logo.png b/tests/input/res/drawable-xhdpi/ch_867_logo.png
new file mode 100644
index 00000000..4ff7f1cb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_867_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_868_logo.png b/tests/input/res/drawable-xhdpi/ch_868_logo.png
new file mode 100644
index 00000000..21b71275
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_868_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_869_logo.png b/tests/input/res/drawable-xhdpi/ch_869_logo.png
new file mode 100644
index 00000000..3b4e1ed1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_869_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_86_logo.png b/tests/input/res/drawable-xhdpi/ch_86_logo.png
new file mode 100644
index 00000000..7946763d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_86_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_870_logo.png b/tests/input/res/drawable-xhdpi/ch_870_logo.png
new file mode 100644
index 00000000..402aaaec
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_870_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_871_logo.png b/tests/input/res/drawable-xhdpi/ch_871_logo.png
new file mode 100644
index 00000000..7f10c50b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_871_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_872_logo.png b/tests/input/res/drawable-xhdpi/ch_872_logo.png
new file mode 100644
index 00000000..78f48b88
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_872_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_873_logo.png b/tests/input/res/drawable-xhdpi/ch_873_logo.png
new file mode 100644
index 00000000..57991ed2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_873_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_874_logo.png b/tests/input/res/drawable-xhdpi/ch_874_logo.png
new file mode 100644
index 00000000..51f28d29
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_874_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_875_logo.png b/tests/input/res/drawable-xhdpi/ch_875_logo.png
new file mode 100644
index 00000000..267e6ef9
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_875_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_876_logo.png b/tests/input/res/drawable-xhdpi/ch_876_logo.png
new file mode 100644
index 00000000..948d90d8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_876_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_877_logo.png b/tests/input/res/drawable-xhdpi/ch_877_logo.png
new file mode 100644
index 00000000..cdf9884b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_877_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_878_logo.png b/tests/input/res/drawable-xhdpi/ch_878_logo.png
new file mode 100644
index 00000000..bdf6a7ee
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_878_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_879_logo.png b/tests/input/res/drawable-xhdpi/ch_879_logo.png
new file mode 100644
index 00000000..24b14eca
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_879_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_87_logo.png b/tests/input/res/drawable-xhdpi/ch_87_logo.png
new file mode 100644
index 00000000..01e471c3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_87_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_880_logo.png b/tests/input/res/drawable-xhdpi/ch_880_logo.png
new file mode 100644
index 00000000..df7f5bb2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_880_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_881_logo.png b/tests/input/res/drawable-xhdpi/ch_881_logo.png
new file mode 100644
index 00000000..00b73120
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_881_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_882_logo.png b/tests/input/res/drawable-xhdpi/ch_882_logo.png
new file mode 100644
index 00000000..3e0b72f3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_882_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_883_logo.png b/tests/input/res/drawable-xhdpi/ch_883_logo.png
new file mode 100644
index 00000000..d1682429
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_883_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_884_logo.png b/tests/input/res/drawable-xhdpi/ch_884_logo.png
new file mode 100644
index 00000000..0370ba77
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_884_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_885_logo.png b/tests/input/res/drawable-xhdpi/ch_885_logo.png
new file mode 100644
index 00000000..2a602c75
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_885_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_886_logo.png b/tests/input/res/drawable-xhdpi/ch_886_logo.png
new file mode 100644
index 00000000..9366a7e3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_886_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_887_logo.png b/tests/input/res/drawable-xhdpi/ch_887_logo.png
new file mode 100644
index 00000000..b820c72a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_887_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_888_logo.png b/tests/input/res/drawable-xhdpi/ch_888_logo.png
new file mode 100644
index 00000000..8db876d5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_888_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_889_logo.png b/tests/input/res/drawable-xhdpi/ch_889_logo.png
new file mode 100644
index 00000000..93a4af97
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_889_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_88_logo.png b/tests/input/res/drawable-xhdpi/ch_88_logo.png
new file mode 100644
index 00000000..55277a75
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_88_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_890_logo.png b/tests/input/res/drawable-xhdpi/ch_890_logo.png
new file mode 100644
index 00000000..c7a83324
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_890_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_891_logo.png b/tests/input/res/drawable-xhdpi/ch_891_logo.png
new file mode 100644
index 00000000..aadf15ab
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_891_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_892_logo.png b/tests/input/res/drawable-xhdpi/ch_892_logo.png
new file mode 100644
index 00000000..79a0fed1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_892_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_893_logo.png b/tests/input/res/drawable-xhdpi/ch_893_logo.png
new file mode 100644
index 00000000..a3a9b50f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_893_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_894_logo.png b/tests/input/res/drawable-xhdpi/ch_894_logo.png
new file mode 100644
index 00000000..a87d9621
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_894_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_895_logo.png b/tests/input/res/drawable-xhdpi/ch_895_logo.png
new file mode 100644
index 00000000..d3a49991
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_895_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_896_logo.png b/tests/input/res/drawable-xhdpi/ch_896_logo.png
new file mode 100644
index 00000000..40a75e8a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_896_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_897_logo.png b/tests/input/res/drawable-xhdpi/ch_897_logo.png
new file mode 100644
index 00000000..be4eeb27
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_897_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_898_logo.png b/tests/input/res/drawable-xhdpi/ch_898_logo.png
new file mode 100644
index 00000000..9a37a1fc
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_898_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_899_logo.png b/tests/input/res/drawable-xhdpi/ch_899_logo.png
new file mode 100644
index 00000000..962af4e7
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_899_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_89_logo.png b/tests/input/res/drawable-xhdpi/ch_89_logo.png
new file mode 100644
index 00000000..6aadc018
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_89_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_8_logo.png b/tests/input/res/drawable-xhdpi/ch_8_logo.png
new file mode 100644
index 00000000..f34a325b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_8_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_900_logo.png b/tests/input/res/drawable-xhdpi/ch_900_logo.png
new file mode 100644
index 00000000..fcb8864e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_900_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_901_logo.png b/tests/input/res/drawable-xhdpi/ch_901_logo.png
new file mode 100644
index 00000000..e789fbfd
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_901_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_902_logo.png b/tests/input/res/drawable-xhdpi/ch_902_logo.png
new file mode 100644
index 00000000..64483003
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_902_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_903_logo.png b/tests/input/res/drawable-xhdpi/ch_903_logo.png
new file mode 100644
index 00000000..c8659821
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_903_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_904_logo.png b/tests/input/res/drawable-xhdpi/ch_904_logo.png
new file mode 100644
index 00000000..e10b556c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_904_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_905_logo.png b/tests/input/res/drawable-xhdpi/ch_905_logo.png
new file mode 100644
index 00000000..cd328c0a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_905_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_906_logo.png b/tests/input/res/drawable-xhdpi/ch_906_logo.png
new file mode 100644
index 00000000..546301f1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_906_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_907_logo.png b/tests/input/res/drawable-xhdpi/ch_907_logo.png
new file mode 100644
index 00000000..c281e3ab
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_907_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_908_logo.png b/tests/input/res/drawable-xhdpi/ch_908_logo.png
new file mode 100644
index 00000000..c4d8ef58
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_908_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_909_logo.png b/tests/input/res/drawable-xhdpi/ch_909_logo.png
new file mode 100644
index 00000000..a365e213
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_909_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_90_logo.png b/tests/input/res/drawable-xhdpi/ch_90_logo.png
new file mode 100644
index 00000000..5f7d97b6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_90_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_910_logo.png b/tests/input/res/drawable-xhdpi/ch_910_logo.png
new file mode 100644
index 00000000..caab3966
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_910_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_911_logo.png b/tests/input/res/drawable-xhdpi/ch_911_logo.png
new file mode 100644
index 00000000..758aca0a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_911_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_912_logo.png b/tests/input/res/drawable-xhdpi/ch_912_logo.png
new file mode 100644
index 00000000..0354e02f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_912_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_913_logo.png b/tests/input/res/drawable-xhdpi/ch_913_logo.png
new file mode 100644
index 00000000..03e8d6df
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_913_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_914_logo.png b/tests/input/res/drawable-xhdpi/ch_914_logo.png
new file mode 100644
index 00000000..2604331d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_914_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_915_logo.png b/tests/input/res/drawable-xhdpi/ch_915_logo.png
new file mode 100644
index 00000000..13e5fa97
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_915_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_916_logo.png b/tests/input/res/drawable-xhdpi/ch_916_logo.png
new file mode 100644
index 00000000..e79b57fa
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_916_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_917_logo.png b/tests/input/res/drawable-xhdpi/ch_917_logo.png
new file mode 100644
index 00000000..a964fae1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_917_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_918_logo.png b/tests/input/res/drawable-xhdpi/ch_918_logo.png
new file mode 100644
index 00000000..6ac64434
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_918_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_919_logo.png b/tests/input/res/drawable-xhdpi/ch_919_logo.png
new file mode 100644
index 00000000..e2e6903e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_919_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_91_logo.png b/tests/input/res/drawable-xhdpi/ch_91_logo.png
new file mode 100644
index 00000000..389baf71
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_91_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_920_logo.png b/tests/input/res/drawable-xhdpi/ch_920_logo.png
new file mode 100644
index 00000000..2e52e5da
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_920_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_921_logo.png b/tests/input/res/drawable-xhdpi/ch_921_logo.png
new file mode 100644
index 00000000..894a745f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_921_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_922_logo.png b/tests/input/res/drawable-xhdpi/ch_922_logo.png
new file mode 100644
index 00000000..fc298ce8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_922_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_923_logo.png b/tests/input/res/drawable-xhdpi/ch_923_logo.png
new file mode 100644
index 00000000..a6da18a3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_923_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_924_logo.png b/tests/input/res/drawable-xhdpi/ch_924_logo.png
new file mode 100644
index 00000000..47f4eb44
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_924_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_925_logo.png b/tests/input/res/drawable-xhdpi/ch_925_logo.png
new file mode 100644
index 00000000..c0eef60f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_925_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_926_logo.png b/tests/input/res/drawable-xhdpi/ch_926_logo.png
new file mode 100644
index 00000000..22e8e23c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_926_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_927_logo.png b/tests/input/res/drawable-xhdpi/ch_927_logo.png
new file mode 100644
index 00000000..c12e0323
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_927_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_928_logo.png b/tests/input/res/drawable-xhdpi/ch_928_logo.png
new file mode 100644
index 00000000..dde2ba6d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_928_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_929_logo.png b/tests/input/res/drawable-xhdpi/ch_929_logo.png
new file mode 100644
index 00000000..45ee2aac
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_929_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_92_logo.png b/tests/input/res/drawable-xhdpi/ch_92_logo.png
new file mode 100644
index 00000000..330e7356
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_92_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_930_logo.png b/tests/input/res/drawable-xhdpi/ch_930_logo.png
new file mode 100644
index 00000000..ff069e4f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_930_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_931_logo.png b/tests/input/res/drawable-xhdpi/ch_931_logo.png
new file mode 100644
index 00000000..6be9e00d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_931_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_932_logo.png b/tests/input/res/drawable-xhdpi/ch_932_logo.png
new file mode 100644
index 00000000..3e88eb1a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_932_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_933_logo.png b/tests/input/res/drawable-xhdpi/ch_933_logo.png
new file mode 100644
index 00000000..2ea636c3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_933_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_934_logo.png b/tests/input/res/drawable-xhdpi/ch_934_logo.png
new file mode 100644
index 00000000..851c63cc
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_934_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_935_logo.png b/tests/input/res/drawable-xhdpi/ch_935_logo.png
new file mode 100644
index 00000000..62633a1e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_935_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_936_logo.png b/tests/input/res/drawable-xhdpi/ch_936_logo.png
new file mode 100644
index 00000000..02999f66
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_936_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_937_logo.png b/tests/input/res/drawable-xhdpi/ch_937_logo.png
new file mode 100644
index 00000000..ba9379d5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_937_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_938_logo.png b/tests/input/res/drawable-xhdpi/ch_938_logo.png
new file mode 100644
index 00000000..e2b26506
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_938_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_939_logo.png b/tests/input/res/drawable-xhdpi/ch_939_logo.png
new file mode 100644
index 00000000..79d16fb7
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_939_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_93_logo.png b/tests/input/res/drawable-xhdpi/ch_93_logo.png
new file mode 100644
index 00000000..761b7ab1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_93_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_940_logo.png b/tests/input/res/drawable-xhdpi/ch_940_logo.png
new file mode 100644
index 00000000..a324cb67
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_940_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_941_logo.png b/tests/input/res/drawable-xhdpi/ch_941_logo.png
new file mode 100644
index 00000000..e071c1cd
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_941_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_942_logo.png b/tests/input/res/drawable-xhdpi/ch_942_logo.png
new file mode 100644
index 00000000..2e59e50a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_942_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_943_logo.png b/tests/input/res/drawable-xhdpi/ch_943_logo.png
new file mode 100644
index 00000000..f5d2323a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_943_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_944_logo.png b/tests/input/res/drawable-xhdpi/ch_944_logo.png
new file mode 100644
index 00000000..823dbba1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_944_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_945_logo.png b/tests/input/res/drawable-xhdpi/ch_945_logo.png
new file mode 100644
index 00000000..0c3cba72
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_945_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_946_logo.png b/tests/input/res/drawable-xhdpi/ch_946_logo.png
new file mode 100644
index 00000000..598f23af
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_946_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_947_logo.png b/tests/input/res/drawable-xhdpi/ch_947_logo.png
new file mode 100644
index 00000000..735649f3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_947_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_948_logo.png b/tests/input/res/drawable-xhdpi/ch_948_logo.png
new file mode 100644
index 00000000..8d032694
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_948_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_949_logo.png b/tests/input/res/drawable-xhdpi/ch_949_logo.png
new file mode 100644
index 00000000..999a2ea3
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_949_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_94_logo.png b/tests/input/res/drawable-xhdpi/ch_94_logo.png
new file mode 100644
index 00000000..c9603dbb
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_94_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_950_logo.png b/tests/input/res/drawable-xhdpi/ch_950_logo.png
new file mode 100644
index 00000000..da6acbff
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_950_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_951_logo.png b/tests/input/res/drawable-xhdpi/ch_951_logo.png
new file mode 100644
index 00000000..8104bf96
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_951_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_952_logo.png b/tests/input/res/drawable-xhdpi/ch_952_logo.png
new file mode 100644
index 00000000..57637c99
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_952_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_953_logo.png b/tests/input/res/drawable-xhdpi/ch_953_logo.png
new file mode 100644
index 00000000..ae1843c0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_953_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_954_logo.png b/tests/input/res/drawable-xhdpi/ch_954_logo.png
new file mode 100644
index 00000000..c14b6c6b
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_954_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_955_logo.png b/tests/input/res/drawable-xhdpi/ch_955_logo.png
new file mode 100644
index 00000000..f43422f8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_955_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_956_logo.png b/tests/input/res/drawable-xhdpi/ch_956_logo.png
new file mode 100644
index 00000000..260962ca
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_956_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_957_logo.png b/tests/input/res/drawable-xhdpi/ch_957_logo.png
new file mode 100644
index 00000000..45a19f55
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_957_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_958_logo.png b/tests/input/res/drawable-xhdpi/ch_958_logo.png
new file mode 100644
index 00000000..6532fd2a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_958_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_959_logo.png b/tests/input/res/drawable-xhdpi/ch_959_logo.png
new file mode 100644
index 00000000..4dddf7d4
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_959_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_95_logo.png b/tests/input/res/drawable-xhdpi/ch_95_logo.png
new file mode 100644
index 00000000..0b1d8483
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_95_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_960_logo.png b/tests/input/res/drawable-xhdpi/ch_960_logo.png
new file mode 100644
index 00000000..27ed3984
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_960_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_961_logo.png b/tests/input/res/drawable-xhdpi/ch_961_logo.png
new file mode 100644
index 00000000..f10900f1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_961_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_962_logo.png b/tests/input/res/drawable-xhdpi/ch_962_logo.png
new file mode 100644
index 00000000..7d66bc64
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_962_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_963_logo.png b/tests/input/res/drawable-xhdpi/ch_963_logo.png
new file mode 100644
index 00000000..ed5923bd
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_963_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_964_logo.png b/tests/input/res/drawable-xhdpi/ch_964_logo.png
new file mode 100644
index 00000000..7907b72f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_964_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_965_logo.png b/tests/input/res/drawable-xhdpi/ch_965_logo.png
new file mode 100644
index 00000000..9b2fa082
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_965_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_966_logo.png b/tests/input/res/drawable-xhdpi/ch_966_logo.png
new file mode 100644
index 00000000..48bc04d1
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_966_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_967_logo.png b/tests/input/res/drawable-xhdpi/ch_967_logo.png
new file mode 100644
index 00000000..d15299cd
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_967_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_968_logo.png b/tests/input/res/drawable-xhdpi/ch_968_logo.png
new file mode 100644
index 00000000..cfe29e4c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_968_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_969_logo.png b/tests/input/res/drawable-xhdpi/ch_969_logo.png
new file mode 100644
index 00000000..1d97435c
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_969_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_96_logo.png b/tests/input/res/drawable-xhdpi/ch_96_logo.png
new file mode 100644
index 00000000..24cf0845
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_96_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_970_logo.png b/tests/input/res/drawable-xhdpi/ch_970_logo.png
new file mode 100644
index 00000000..c077ec06
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_970_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_971_logo.png b/tests/input/res/drawable-xhdpi/ch_971_logo.png
new file mode 100644
index 00000000..c9148c51
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_971_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_972_logo.png b/tests/input/res/drawable-xhdpi/ch_972_logo.png
new file mode 100644
index 00000000..3c9004a5
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_972_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_973_logo.png b/tests/input/res/drawable-xhdpi/ch_973_logo.png
new file mode 100644
index 00000000..c8c114b8
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_973_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_974_logo.png b/tests/input/res/drawable-xhdpi/ch_974_logo.png
new file mode 100644
index 00000000..a336e295
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_974_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_975_logo.png b/tests/input/res/drawable-xhdpi/ch_975_logo.png
new file mode 100644
index 00000000..b9d917c2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_975_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_976_logo.png b/tests/input/res/drawable-xhdpi/ch_976_logo.png
new file mode 100644
index 00000000..02fc087f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_976_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_977_logo.png b/tests/input/res/drawable-xhdpi/ch_977_logo.png
new file mode 100644
index 00000000..377ee44f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_977_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_978_logo.png b/tests/input/res/drawable-xhdpi/ch_978_logo.png
new file mode 100644
index 00000000..09e6fba9
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_978_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_979_logo.png b/tests/input/res/drawable-xhdpi/ch_979_logo.png
new file mode 100644
index 00000000..e0f91625
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_979_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_97_logo.png b/tests/input/res/drawable-xhdpi/ch_97_logo.png
new file mode 100644
index 00000000..04243156
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_97_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_980_logo.png b/tests/input/res/drawable-xhdpi/ch_980_logo.png
new file mode 100644
index 00000000..e74e48d9
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_980_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_981_logo.png b/tests/input/res/drawable-xhdpi/ch_981_logo.png
new file mode 100644
index 00000000..fd8eea25
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_981_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_982_logo.png b/tests/input/res/drawable-xhdpi/ch_982_logo.png
new file mode 100644
index 00000000..53902f70
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_982_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_983_logo.png b/tests/input/res/drawable-xhdpi/ch_983_logo.png
new file mode 100644
index 00000000..0700c680
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_983_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_984_logo.png b/tests/input/res/drawable-xhdpi/ch_984_logo.png
new file mode 100644
index 00000000..b812b238
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_984_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_985_logo.png b/tests/input/res/drawable-xhdpi/ch_985_logo.png
new file mode 100644
index 00000000..0b2b5ead
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_985_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_986_logo.png b/tests/input/res/drawable-xhdpi/ch_986_logo.png
new file mode 100644
index 00000000..22edb80a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_986_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_987_logo.png b/tests/input/res/drawable-xhdpi/ch_987_logo.png
new file mode 100644
index 00000000..53a13ea0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_987_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_988_logo.png b/tests/input/res/drawable-xhdpi/ch_988_logo.png
new file mode 100644
index 00000000..8f33cfd0
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_988_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_989_logo.png b/tests/input/res/drawable-xhdpi/ch_989_logo.png
new file mode 100644
index 00000000..ca89cd04
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_989_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_98_logo.png b/tests/input/res/drawable-xhdpi/ch_98_logo.png
new file mode 100644
index 00000000..c95bb658
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_98_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_990_logo.png b/tests/input/res/drawable-xhdpi/ch_990_logo.png
new file mode 100644
index 00000000..809e64b6
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_990_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_991_logo.png b/tests/input/res/drawable-xhdpi/ch_991_logo.png
new file mode 100644
index 00000000..9774f198
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_991_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_992_logo.png b/tests/input/res/drawable-xhdpi/ch_992_logo.png
new file mode 100644
index 00000000..01381a84
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_992_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_993_logo.png b/tests/input/res/drawable-xhdpi/ch_993_logo.png
new file mode 100644
index 00000000..2f470e98
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_993_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_994_logo.png b/tests/input/res/drawable-xhdpi/ch_994_logo.png
new file mode 100644
index 00000000..6c6cf86f
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_994_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_995_logo.png b/tests/input/res/drawable-xhdpi/ch_995_logo.png
new file mode 100644
index 00000000..0d8e14b2
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_995_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_996_logo.png b/tests/input/res/drawable-xhdpi/ch_996_logo.png
new file mode 100644
index 00000000..e904fe21
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_996_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_997_logo.png b/tests/input/res/drawable-xhdpi/ch_997_logo.png
new file mode 100644
index 00000000..9d608a58
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_997_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_998_logo.png b/tests/input/res/drawable-xhdpi/ch_998_logo.png
new file mode 100644
index 00000000..14386f70
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_998_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_999_logo.png b/tests/input/res/drawable-xhdpi/ch_999_logo.png
new file mode 100644
index 00000000..6cc6cd2a
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_999_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_99_logo.png b/tests/input/res/drawable-xhdpi/ch_99_logo.png
new file mode 100644
index 00000000..b9d94a8e
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_99_logo.png
Binary files differ
diff --git a/tests/input/res/drawable-xhdpi/ch_9_logo.png b/tests/input/res/drawable-xhdpi/ch_9_logo.png
new file mode 100644
index 00000000..8e7c246d
--- /dev/null
+++ b/tests/input/res/drawable-xhdpi/ch_9_logo.png
Binary files differ
diff --git a/tests/input/src/com/android/tv/testinput/TestTvInputService.java b/tests/input/src/com/android/tv/testinput/TestTvInputService.java
index 98ac9438..6f906786 100644
--- a/tests/input/src/com/android/tv/testinput/TestTvInputService.java
+++ b/tests/input/src/com/android/tv/testinput/TestTvInputService.java
@@ -47,7 +47,7 @@ public class TestTvInputService extends TvInputService {
private static final String TAG = "TestTvInputServices";
private static final int REFRESH_DELAY_MS = 1000 / 5;
private static final boolean DEBUG = false;
- private TestInputControl mBackend = TestInputControl.getInstance();
+ private final TestInputControl mBackend = TestInputControl.getInstance();
public static String buildInputId(Context context) {
return TvContract.buildInputId(new ComponentName(context, TestTvInputService.class));
diff --git a/tests/jank/src/com/android/tv/tests/jank/ProgramGuideJankTest.java b/tests/jank/src/com/android/tv/tests/jank/ProgramGuideJankTest.java
index 096fb727..1de5e944 100644
--- a/tests/jank/src/com/android/tv/tests/jank/ProgramGuideJankTest.java
+++ b/tests/jank/src/com/android/tv/tests/jank/ProgramGuideJankTest.java
@@ -28,7 +28,6 @@ import android.test.suitebuilder.annotation.MediumTest;
import android.util.Log;
import com.android.tv.R;
-import com.android.tv.common.TvCommonConstants;
import com.android.tv.testing.uihelper.ByResource;
import com.android.tv.testing.uihelper.Constants;
import com.android.tv.testing.uihelper.LiveChannelsUiDeviceHelper;
@@ -151,9 +150,8 @@ public class ProgramGuideJankTest extends JankTestBase {
public void selectProgramGuideMenuItem() {
mMenuHelper.showMenu();
- int rowTitleResId = TvCommonConstants.IS_MNC_OR_HIGHER ? R.string.menu_title_channels
- : R.string.menu_title_channels_legacy;
- mMenuHelper.assertNavigateToMenuItem(rowTitleResId, R.string.channels_item_program_guide);
+ mMenuHelper.assertNavigateToMenuItem(R.string.menu_title_channels,
+ R.string.channels_item_program_guide);
mDevice.waitForIdle();
}
diff --git a/tests/unit/src/com/android/tv/BaseMainActivityTestCase.java b/tests/unit/src/com/android/tv/BaseMainActivityTestCase.java
index 99d5ea3e..208085d6 100644
--- a/tests/unit/src/com/android/tv/BaseMainActivityTestCase.java
+++ b/tests/unit/src/com/android/tv/BaseMainActivityTestCase.java
@@ -25,6 +25,7 @@ import com.android.tv.testing.ChannelInfo;
import com.android.tv.testing.testinput.ChannelStateData;
import com.android.tv.testing.testinput.TestInputControlConnection;
import com.android.tv.testing.testinput.TestInputControlUtils;
+import com.android.tv.testing.testinput.TvTestInputConstants;
import java.util.List;
@@ -117,6 +118,11 @@ public abstract class BaseMainActivityTestCase
* @param channel the channel to tune to
*/
protected void updateThenTune(ChannelStateData data, ChannelInfo channel) {
+ if (channel.equals(TvTestInputConstants.CH_1_DEFAULT_DONT_MODIFY)) {
+ throw new IllegalArgumentException(
+ "By convention " + TvTestInputConstants.CH_1_DEFAULT_DONT_MODIFY.name
+ + " should not be modified.");
+ }
mConnection.updateChannelState(channel, data);
tuneToChannel(channel);
}
diff --git a/tests/unit/src/com/android/tv/MainActivityTest.java b/tests/unit/src/com/android/tv/MainActivityTest.java
index ae789895..04271a7b 100644
--- a/tests/unit/src/com/android/tv/MainActivityTest.java
+++ b/tests/unit/src/com/android/tv/MainActivityTest.java
@@ -51,6 +51,7 @@ public class MainActivityTest extends BaseMainActivityTestCase {
public void testShowProgramGuide() throws Throwable {
tuneToChannel(TvTestInputConstants.CH_2);
showProgramGuide();
+ getInstrumentation().waitForIdleSync();
assertChannelBannerShown(false);
assertProgramGuide(true);
}
@@ -70,8 +71,8 @@ public class MainActivityTest extends BaseMainActivityTestCase {
assertEquals("Channel Name", displayName, channelNameView.getText());
}
- private View assertProgramGuide(boolean isShown) {
- return assertViewIsShown("Program Guide", R.id.program_guide, isShown);
+ private void assertProgramGuide(boolean isShown) {
+ assertViewIsShown("Program Guide", R.id.program_guide, isShown);
}
private ChannelBannerView assertChannelBannerShown(boolean isShown) {
diff --git a/tests/unit/src/com/android/tv/data/ChannelDataManagerTest.java b/tests/unit/src/com/android/tv/data/ChannelDataManagerTest.java
index 38ccdfb6..b239d0ed 100644
--- a/tests/unit/src/com/android/tv/data/ChannelDataManagerTest.java
+++ b/tests/unit/src/com/android/tv/data/ChannelDataManagerTest.java
@@ -36,6 +36,7 @@ import android.text.TextUtils;
import android.util.Log;
import android.util.SparseArray;
+import com.android.tv.analytics.StubTracker;
import com.android.tv.testing.ChannelInfo;
import com.android.tv.testing.Constants;
import com.android.tv.util.TvInputManagerHelper;
@@ -44,6 +45,7 @@ import org.mockito.Matchers;
import org.mockito.Mockito;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -83,8 +85,8 @@ public class ChannelDataManagerTest extends AndroidTestCase {
mContentResolver.addProvider(TvContract.AUTHORITY, mContentProvider);
mHandlerThread = new HandlerThread(TAG);
mHandlerThread.start();
- mChannelDataManager = new ChannelDataManager(
- getContext(), mockHelper, mContentResolver, mHandlerThread.getLooper());
+ mChannelDataManager = new ChannelDataManager(getContext(), mockHelper, new StubTracker(),
+ mContentResolver, mHandlerThread.getLooper());
mListener = new TestChannelDataManagerListener();
mChannelDataManager.addListener(mListener);
@@ -171,7 +173,7 @@ public class ChannelDataManagerTest extends AndroidTestCase {
public void testBrowsable() throws Exception {
startAndWaitForComplete();
- // Test if all channels are browable
+ // Test if all channels are browsable
List<Channel> channelList = new ArrayList<>(mChannelDataManager.getChannelList());
List<Channel> browsableChannelList = mChannelDataManager.getBrowsableChannelList();
for (Channel browsableChannel : browsableChannelList) {
@@ -276,7 +278,8 @@ public class ChannelDataManagerTest extends AndroidTestCase {
ChannelInfo testChannelInfo = ChannelInfo.create(getContext(), (int) testChannelId);
testChannelId = Constants.UNIT_TEST_CHANNEL_COUNT + 1;
mContentProvider.simulateInsert(testChannelInfo);
- assertTrue(mListener.channeListUpdatedLatch.await(WAIT_TIME_OUT_MS, TimeUnit.MILLISECONDS));
+ assertTrue(
+ mListener.channelListUpdatedLatch.await(WAIT_TIME_OUT_MS, TimeUnit.MILLISECONDS));
assertEquals(Constants.UNIT_TEST_CHANNEL_COUNT + 1, mChannelDataManager.getChannelCount());
// Test channel update
@@ -286,9 +289,10 @@ public class ChannelDataManagerTest extends AndroidTestCase {
mChannelDataManager.addChannelListener(testChannelId, channelListener);
String newName = testChannelInfo.name + "_test";
mContentProvider.simulateUpdate(testChannelId, newName);
- assertTrue(mListener.channeListUpdatedLatch.await(WAIT_TIME_OUT_MS, TimeUnit.MILLISECONDS));
- assertTrue(channelListener.channelChangedLatch.await(
- WAIT_TIME_OUT_MS, TimeUnit.MILLISECONDS));
+ assertTrue(
+ mListener.channelListUpdatedLatch.await(WAIT_TIME_OUT_MS, TimeUnit.MILLISECONDS));
+ assertTrue(
+ channelListener.channelChangedLatch.await(WAIT_TIME_OUT_MS, TimeUnit.MILLISECONDS));
assertEquals(0, channelListener.removedChannels.size());
assertEquals(1, channelListener.updatedChannels.size());
Channel updatedChannel = channelListener.updatedChannels.get(0);
@@ -302,9 +306,10 @@ public class ChannelDataManagerTest extends AndroidTestCase {
mListener.reset();
channelListener.reset();
mContentProvider.simulateDelete(testChannelId);
- assertTrue(mListener.channeListUpdatedLatch.await(WAIT_TIME_OUT_MS, TimeUnit.MILLISECONDS));
- assertTrue(channelListener.channelChangedLatch.await(
- WAIT_TIME_OUT_MS, TimeUnit.MILLISECONDS));
+ assertTrue(
+ mListener.channelListUpdatedLatch.await(WAIT_TIME_OUT_MS, TimeUnit.MILLISECONDS));
+ assertTrue(
+ channelListener.channelChangedLatch.await(WAIT_TIME_OUT_MS, TimeUnit.MILLISECONDS));
assertEquals(1, channelListener.removedChannels.size());
assertEquals(0, channelListener.updatedChannels.size());
Channel removedChannel = channelListener.removedChannels.get(0);
@@ -344,7 +349,7 @@ public class ChannelDataManagerTest extends AndroidTestCase {
// This implements the minimal methods in content resolver
// and detailed assumptions are written in each method.
private class FakeContentProvider extends MockContentProvider {
- private SparseArray<ChannelInfoWrapper> mChannelInfoList = new SparseArray<>();
+ private final SparseArray<ChannelInfoWrapper> mChannelInfoList = new SparseArray<>();
public FakeContentProvider(Context context) {
super(context);
@@ -365,14 +370,8 @@ public class ChannelDataManagerTest extends AndroidTestCase {
if (DEBUG) {
Log.d(TAG, "dump query");
Log.d(TAG, " uri=" + uri);
- if (projection == null || projection.length == 0) {
- Log.d(TAG, " projection=" + projection);
- } else {
- for (int i = 0; i < projection.length; i++) {
- Log.d(TAG, " projection=" + projection[i]);
- }
- }
- Log.d(TAG," selection=" + selection);
+ Log.d(TAG, " projection=" + Arrays.toString(projection));
+ Log.d(TAG, " selection=" + selection);
}
assertChannelUri(uri);
return new FakeCursor(projection);
@@ -493,7 +492,7 @@ public class ChannelDataManagerTest extends AndroidTestCase {
}
private class FakeCursor extends MockCursor {
- private String[] ALL_COLUMNS = {
+ private final String[] ALL_COLUMNS = {
Channels._ID,
Channels.COLUMN_DISPLAY_NAME,
Channels.COLUMN_DISPLAY_NUMBER,
@@ -502,7 +501,7 @@ public class ChannelDataManagerTest extends AndroidTestCase {
Channels.COLUMN_ORIGINAL_NETWORK_ID,
COLUMN_BROWSABLE,
COLUMN_LOCKED};
- private String[] mColumns;
+ private final String[] mColumns;
private int mPosition;
public FakeCursor(String[] columns) {
@@ -594,7 +593,7 @@ public class ChannelDataManagerTest extends AndroidTestCase {
private class TestChannelDataManagerListener implements ChannelDataManager.Listener {
public CountDownLatch loadFinishedLatch = new CountDownLatch(1);
- public CountDownLatch channeListUpdatedLatch = new CountDownLatch(1);
+ public CountDownLatch channelListUpdatedLatch = new CountDownLatch(1);
public boolean channelBrowsableChangedCalled;
@Override
@@ -604,7 +603,7 @@ public class ChannelDataManagerTest extends AndroidTestCase {
@Override
public void onChannelListUpdated() {
- channeListUpdatedLatch.countDown();
+ channelListUpdatedLatch.countDown();
}
@Override
@@ -614,7 +613,7 @@ public class ChannelDataManagerTest extends AndroidTestCase {
public void reset() {
loadFinishedLatch = new CountDownLatch(1);
- channeListUpdatedLatch = new CountDownLatch(1);
+ channelListUpdatedLatch = new CountDownLatch(1);
channelBrowsableChangedCalled = false;
}
}
@@ -622,8 +621,8 @@ public class ChannelDataManagerTest extends AndroidTestCase {
private class TestChannelDataManagerChannelListener
implements ChannelDataManager.ChannelListener {
public CountDownLatch channelChangedLatch = new CountDownLatch(1);
- public List<Channel> removedChannels = new ArrayList<>();
- public List<Channel> updatedChannels = new ArrayList<>();
+ public final List<Channel> removedChannels = new ArrayList<>();
+ public final List<Channel> updatedChannels = new ArrayList<>();
@Override
public void onChannelRemoved(Channel channel) {
diff --git a/tests/unit/src/com/android/tv/data/ChannelNumberTest.java b/tests/unit/src/com/android/tv/data/ChannelNumberTest.java
index 9914f75e..1935b4d9 100644
--- a/tests/unit/src/com/android/tv/data/ChannelNumberTest.java
+++ b/tests/unit/src/com/android/tv/data/ChannelNumberTest.java
@@ -54,15 +54,17 @@ public class ChannelNumberTest extends TestCase {
*/
public void testCompareTo() {
new ComparableTester<ChannelNumber>()
- .addEquivelentGroup(parseChannelNumber("1"), parseChannelNumber("1"))
- .addEquivelentGroup(parseChannelNumber("2"))
- .addEquivelentGroup(parseChannelNumber("2 1"), parseChannelNumber("2.1"),
+ .addEquivalentGroup(parseChannelNumber("1"), parseChannelNumber("1"))
+ .addEquivalentGroup(parseChannelNumber("2"))
+ .addEquivalentGroup(parseChannelNumber("2 1"), parseChannelNumber("2.1"),
parseChannelNumber("2-1"))
- .addEquivelentGroup(parseChannelNumber("2-2"))
- .addEquivelentGroup(parseChannelNumber("2-10"))
- .addEquivelentGroup(parseChannelNumber("3"))
- .addEquivelentGroup(parseChannelNumber("10"))
- .addEquivelentGroup(parseChannelNumber("100"))
+ .addEquivalentGroup(parseChannelNumber("2-2"))
+ .addEquivalentGroup(parseChannelNumber("2-10"))
+ .addEquivalentGroup(parseChannelNumber("3"))
+ .addEquivalentGroup(parseChannelNumber("4"), parseChannelNumber("4 0"),
+ parseChannelNumber("4.0"), parseChannelNumber("4-0"))
+ .addEquivalentGroup(parseChannelNumber("10"))
+ .addEquivalentGroup(parseChannelNumber("100"))
.test();
}
@@ -70,7 +72,7 @@ public class ChannelNumberTest extends TestCase {
* Test method for {@link ChannelNumber#compare(java.lang.String, java.lang.String)}.
*/
public void testCompare() {
- // Only need to test nulls, the reset is tested by testComparteTo
+ // Only need to test nulls, the reset is tested by testCompareTo
assertEquals("compareTo(null,null)", 0, ChannelNumber.compare(null, null));
assertEquals("compareTo(1,1)", 0, ChannelNumber.compare("1", "1"));
assertEquals("compareTo(null,1)<0", true, ChannelNumber.compare(null, "1") < 0);
diff --git a/tests/unit/src/com/android/tv/data/ChannelTest.java b/tests/unit/src/com/android/tv/data/ChannelTest.java
index f32bf02a..c39942d9 100644
--- a/tests/unit/src/com/android/tv/data/ChannelTest.java
+++ b/tests/unit/src/com/android/tv/data/ChannelTest.java
@@ -22,6 +22,7 @@ import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
import com.android.tv.testing.ComparatorTester;
import com.android.tv.util.TvInputManagerHelper;
@@ -36,6 +37,7 @@ import java.util.Comparator;
/**
* Tests for {@link Channel}.
*/
+@SmallTest
public class ChannelTest extends AndroidTestCase {
// Used for testing TV inputs with invalid input package. This could happen when a TV input is
// uninstalled while drawing an app link card.
@@ -50,40 +52,41 @@ public class ChannelTest extends AndroidTestCase {
private static final String LEANBACK_TV_INPUT_PACKAGE_NAME =
"com.android.tv.leanback_tv_input";
private static final String TEST_APP_LINK_TEXT = "test_app_link_text";
+ private static final String PARTNER_INPUT_ID = "partner";
private static final ActivityInfo TEST_ACTIVITY_INFO = new ActivityInfo();
private Context mMockContext;
private Intent mInvalidIntent;
private Intent mValidIntent;
- private Intent mLiveChannelsIntent;
- private Intent mLeanbackTvInputIntent;
+ @Override
public void setUp() throws Exception {
super.setUp();
mInvalidIntent = new Intent(Intent.ACTION_VIEW);
mInvalidIntent.setComponent(new ComponentName(INVALID_TV_INPUT_PACKAGE_NAME, ".test"));
mValidIntent = new Intent(Intent.ACTION_VIEW);
mValidIntent.setComponent(new ComponentName(LEANBACK_TV_INPUT_PACKAGE_NAME, ".test"));
- mLiveChannelsIntent = new Intent(Intent.ACTION_VIEW);
- mLiveChannelsIntent.setComponent(
+ Intent liveChannelsIntent = new Intent(Intent.ACTION_VIEW);
+ liveChannelsIntent.setComponent(
new ComponentName(LIVE_CHANNELS_PACKAGE_NAME, ".MainActivity"));
- mLeanbackTvInputIntent = new Intent(Intent.ACTION_VIEW);
- mLeanbackTvInputIntent.setComponent(
+ Intent leanbackTvInputIntent = new Intent(Intent.ACTION_VIEW);
+ leanbackTvInputIntent.setComponent(
new ComponentName(LEANBACK_TV_INPUT_PACKAGE_NAME, ".test"));
PackageManager mockPackageManager = Mockito.mock(PackageManager.class);
Mockito.when(mockPackageManager.getLeanbackLaunchIntentForPackage(
INVALID_TV_INPUT_PACKAGE_NAME)).thenReturn(null);
Mockito.when(mockPackageManager.getLeanbackLaunchIntentForPackage(
- LIVE_CHANNELS_PACKAGE_NAME)).thenReturn(mLiveChannelsIntent);
+ LIVE_CHANNELS_PACKAGE_NAME)).thenReturn(liveChannelsIntent);
Mockito.when(mockPackageManager.getLeanbackLaunchIntentForPackage(
NONE_LEANBACK_TV_INPUT_PACKAGE_NAME)).thenReturn(null);
Mockito.when(mockPackageManager.getLeanbackLaunchIntentForPackage(
- LEANBACK_TV_INPUT_PACKAGE_NAME)).thenReturn(mLeanbackTvInputIntent);
+ LEANBACK_TV_INPUT_PACKAGE_NAME)).thenReturn(leanbackTvInputIntent);
// Channel.getAppLinkIntent() calls initAppLinkTypeAndIntent() which calls
// Intent.resolveActivityInfo() which calls PackageManager.getActivityInfo().
Mockito.doAnswer(new Answer<ActivityInfo>() {
+ @Override
public ActivityInfo answer(InvocationOnMock invocation) {
// We only check the package name, since the class name can be changed
// when an intent is changed to an uri and created from the uri.
@@ -165,17 +168,19 @@ public class ChannelTest extends AndroidTestCase {
private void assertAppLinkType(int expectedType, String inputPackageName, String appLinkText,
Intent appLinkIntent) {
+ // In Channel, Intent.URI_INTENT_SCHEME is used to parse the URI. So the same flag should be
+ // used when the URI is created.
Channel testChannel = new Channel.Builder()
.setPackageName(inputPackageName)
.setAppLinkText(appLinkText)
- .setAppLinkIntentUri(appLinkIntent == null ? null : appLinkIntent.toUri(0))
+ .setAppLinkIntentUri(appLinkIntent == null ? null : appLinkIntent.toUri(
+ Intent.URI_INTENT_SCHEME))
.build();
assertEquals("Unexpected app-link type for for " + testChannel,
expectedType, testChannel.getAppLinkType(mMockContext));
}
public void testComparator() {
- final String PARTNER_INPUT_ID = "partner";
TvInputManagerHelper manager = Mockito.mock(TvInputManagerHelper.class);
Mockito.when(manager.isPartnerInput(Matchers.anyString())).thenAnswer(
@@ -183,18 +188,23 @@ public class ChannelTest extends AndroidTestCase {
@Override
public Boolean answer(InvocationOnMock invocation) throws Throwable {
String inputId = (String) invocation.getArguments()[0];
- return PARTNER_INPUT_ID.equals(inputId);
+ boolean isPartner = PARTNER_INPUT_ID.equals(inputId);
+ return isPartner;
}
});
Comparator<Channel> comparator = new TestChannelComparator(manager);
ComparatorTester<Channel> comparatorTester =
ComparatorTester.withoutEqualsTest(comparator);
comparatorTester.addComparableGroup(
- new Channel.Builder().setInputId(PARTNER_INPUT_ID).setDisplayNumber("100").build());
+ new Channel.Builder().setInputId(PARTNER_INPUT_ID).build());
+ comparatorTester.addComparableGroup(
+ new Channel.Builder().setInputId("1").build());
comparatorTester.addComparableGroup(
new Channel.Builder().setInputId("1").setDisplayNumber("2").build());
comparatorTester.addComparableGroup(
new Channel.Builder().setInputId("2").setDisplayNumber("1.0").build());
+
+ // display name does not affect comparator
comparatorTester.addComparableGroup(
new Channel.Builder().setInputId("2").setDisplayNumber("1.62")
.setDisplayName("test1").build(),
@@ -204,11 +214,47 @@ public class ChannelTest extends AndroidTestCase {
.setDisplayName("test3").build());
comparatorTester.addComparableGroup(
new Channel.Builder().setInputId("2").setDisplayNumber("2.0").build());
+ // Numeric display number sorting
comparatorTester.addComparableGroup(
new Channel.Builder().setInputId("2").setDisplayNumber("12.2").build());
comparatorTester.test();
}
+ /**
+ * Test Input Label handled by {@link com.android.tv.data.Channel.DefaultComparator}.
+ *
+ * <p>Sort partner inputs first, then sort by input label, then by input id.
+ * See <a href="http://b/23031603">b/23031603</a>.
+ */
+ public void testComparatorLabel() {
+
+ TvInputManagerHelper manager = Mockito.mock(TvInputManagerHelper.class);
+ Mockito.when(manager.isPartnerInput(Matchers.anyString())).thenAnswer(
+ new Answer<Boolean>() {
+ @Override
+ public Boolean answer(InvocationOnMock invocation) throws Throwable {
+ String inputId = (String) invocation.getArguments()[0];
+ return PARTNER_INPUT_ID.equals(inputId);
+ }
+ });
+ Comparator<Channel> comparator = new ChannelComparatorWithDescriptionAsLabel(manager);
+ ComparatorTester<Channel> comparatorTester =
+ ComparatorTester.withoutEqualsTest(comparator);
+
+ comparatorTester.addComparableGroup(
+ new Channel.Builder().setInputId(PARTNER_INPUT_ID).setDescription("A").build());
+
+ // The description is used as a label for this test.
+ comparatorTester.addComparableGroup(
+ new Channel.Builder().setDescription("A").setInputId("1").build());
+ comparatorTester.addComparableGroup(
+ new Channel.Builder().setDescription("A").setInputId("2").build());
+ comparatorTester.addComparableGroup(
+ new Channel.Builder().setDescription("B").setInputId("1").build());
+
+ comparatorTester.test();
+ }
+
private class TestChannelComparator extends Channel.DefaultComparator {
public TestChannelComparator(TvInputManagerHelper manager) {
super(null, manager);
@@ -218,5 +264,16 @@ public class ChannelTest extends AndroidTestCase {
public String getInputLabelForChannel(Channel channel) {
return channel.getInputId();
}
- };
+ }
+
+ private static class ChannelComparatorWithDescriptionAsLabel extends Channel.DefaultComparator {
+ public ChannelComparatorWithDescriptionAsLabel(TvInputManagerHelper manager) {
+ super(null, manager);
+ }
+
+ @Override
+ public String getInputLabelForChannel(Channel channel) {
+ return channel.getDescription();
+ }
+ }
}
diff --git a/tests/unit/src/com/android/tv/data/ProgramDataManagerTest.java b/tests/unit/src/com/android/tv/data/ProgramDataManagerTest.java
index 31ad54f0..60e3e210 100644
--- a/tests/unit/src/com/android/tv/data/ProgramDataManagerTest.java
+++ b/tests/unit/src/com/android/tv/data/ProgramDataManagerTest.java
@@ -37,6 +37,7 @@ import com.android.tv.util.FakeClock;
import com.android.tv.util.Utils;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -257,17 +258,18 @@ public class ProgramDataManagerTest extends AndroidTestCase {
private final int index;
private final long startTimeMs;
private final ProgramInfo programInfo;
+
public ProgramInfoWrapper(int index, long startTimeMs, ProgramInfo programInfo) {
this.index = index;
this.startTimeMs = startTimeMs;
this.programInfo = programInfo;
}
}
-
+
// This implements the minimal methods in content resolver
// and detailed assumptions are written in each method.
private class FakeContentProvider extends MockContentProvider {
- private SparseArray<List<ProgramInfoWrapper>> mProgramInfoList = new SparseArray<>();
+ private final SparseArray<List<ProgramInfoWrapper>> mProgramInfoList = new SparseArray<>();
/**
* Constructor for FakeContentProvider
@@ -304,14 +306,8 @@ public class ProgramDataManagerTest extends AndroidTestCase {
if (DEBUG) {
Log.d(TAG, "dump query");
Log.d(TAG, " uri=" + uri);
- if (projection == null || projection.length == 0) {
- Log.d(TAG, " projection=" + projection);
- } else {
- for (int i = 0; i < projection.length; i++) {
- Log.d(TAG, " projection=" + projection[i]);
- }
- }
- Log.d(TAG," selection=" + selection);
+ Log.d(TAG, " projection=" + Arrays.toString(projection));
+ Log.d(TAG, " selection=" + selection);
}
long startTimeMs = Long.parseLong(uri.getQueryParameter(PARAM_START_TIME));
long endTimeMs = Long.parseLong(uri.getQueryParameter(PARAM_END_TIME));
@@ -368,7 +364,7 @@ public class ProgramDataManagerTest extends AndroidTestCase {
}
private class FakeCursor extends MockCursor {
- private String[] ALL_COLUMNS = {
+ private final String[] ALL_COLUMNS = {
TvContract.Programs.COLUMN_CHANNEL_ID,
TvContract.Programs.COLUMN_TITLE,
TvContract.Programs.COLUMN_SHORT_DESCRIPTION,
@@ -409,9 +405,9 @@ public class ProgramDataManagerTest extends AndroidTestCase {
mChannelId = channelId;
mProgramPosition = -1;
if (DEBUG) {
- Log.d(TAG, "FakeCursor(columns=" + columns + ", channelId=" + channelId
- + ", startTimeMs=" + startTimeMs + ", endTimeMs=" + endTimeMs
- + ") has mCount=" + mCount);
+ Log.d(TAG, "FakeCursor(columns=" + Arrays.toString(columns)
+ + ", channelId=" + channelId + ", startTimeMs=" + startTimeMs
+ + ", endTimeMs=" + endTimeMs + ") has mCount=" + mCount);
}
}
@@ -519,7 +515,7 @@ public class ProgramDataManagerTest extends AndroidTestCase {
private class TestProgramDataManagerOnCurrentProgramUpdatedListener implements
OnCurrentProgramUpdatedListener {
- public CountDownLatch currentProgramUpdatedLatch = new CountDownLatch(1);
+ public final CountDownLatch currentProgramUpdatedLatch = new CountDownLatch(1);
public long updatedChannelId = -1;
public Program updatedProgram = null;
diff --git a/tests/unit/src/com/android/tv/data/ProgramTest.java b/tests/unit/src/com/android/tv/data/ProgramTest.java
index b4d78733..25856e18 100644
--- a/tests/unit/src/com/android/tv/data/ProgramTest.java
+++ b/tests/unit/src/com/android/tv/data/ProgramTest.java
@@ -18,6 +18,8 @@ package com.android.tv.data;
import static android.media.tv.TvContract.Programs.Genres.COMEDY;
import static android.media.tv.TvContract.Programs.Genres.FAMILY_KIDS;
+import android.test.suitebuilder.annotation.SmallTest;
+
import junit.framework.TestCase;
import java.util.Arrays;
@@ -25,6 +27,7 @@ import java.util.Arrays;
/**
* Tests for {@link Program}.
*/
+@SmallTest
public class ProgramTest extends TestCase {
private static final int NOT_FOUND_GENRE = 987;
diff --git a/tests/unit/src/com/android/tv/menu/MenuTest.java b/tests/unit/src/com/android/tv/menu/MenuTest.java
new file mode 100644
index 00000000..324706f0
--- /dev/null
+++ b/tests/unit/src/com/android/tv/menu/MenuTest.java
@@ -0,0 +1,138 @@
+/*
+ * 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.menu;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.tv.menu.Menu.OnMenuVisibilityChangeListener;
+
+import org.mockito.Matchers;
+import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+/**
+ * Tests for {@link Menu}.
+ */
+@SmallTest
+public class MenuTest extends AndroidTestCase {
+ private Menu mMenu;
+ private IMenuView mMenuView;
+ private OnMenuVisibilityChangeListener mVisibilityChangeListener;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ mMenuView = Mockito.mock(IMenuView.class);
+ MenuRowFactory factory = Mockito.mock(MenuRowFactory.class);
+ Mockito.when(factory.createMenuRow(Mockito.any(Menu.class), Mockito.any(Class.class)))
+ .thenReturn(null);
+ mVisibilityChangeListener = Mockito.mock(OnMenuVisibilityChangeListener.class);
+ mMenu = new Menu(getContext(), mMenuView, factory, mVisibilityChangeListener);
+ mMenu.disableAnimationForTest();
+ }
+
+ public void testScheduleHide() {
+ mMenu.show(Menu.REASON_NONE);
+ setMenuVisible(true);
+ assertTrue("Hide is not scheduled", mMenu.isHideScheduled());
+ mMenu.hide(false);
+ setMenuVisible(false);
+ assertFalse("Hide is scheduled", mMenu.isHideScheduled());
+
+ mMenu.setKeepVisible(true);
+ mMenu.show(Menu.REASON_NONE);
+ setMenuVisible(true);
+ assertFalse("Hide is scheduled", mMenu.isHideScheduled());
+ mMenu.setKeepVisible(false);
+ assertTrue("Hide is not scheduled", mMenu.isHideScheduled());
+ mMenu.setKeepVisible(true);
+ assertFalse("Hide is scheduled", mMenu.isHideScheduled());
+ mMenu.hide(false);
+ setMenuVisible(false);
+ assertFalse("Hide is scheduled", mMenu.isHideScheduled());
+ }
+
+ public void testShowHide_ReasonNone() {
+ // Show with REASON_NONE
+ mMenu.show(Menu.REASON_NONE);
+ setMenuVisible(true);
+ // Listener should be called with "true" argument.
+ Mockito.verify(mVisibilityChangeListener, Mockito.atLeastOnce())
+ .onMenuVisibilityChange(Matchers.eq(true));
+ Mockito.verify(mVisibilityChangeListener, Mockito.never())
+ .onMenuVisibilityChange(Matchers.eq(false));
+ // IMenuView.show should be called with the same parameter.
+ Mockito.verify(mMenuView).onShow(Matchers.eq(Menu.REASON_NONE),
+ Matchers.isNull(String.class), Matchers.isNull(Runnable.class));
+ mMenu.hide(true);
+ setMenuVisible(false);
+ // Listener should be called with "false" argument.
+ Mockito.verify(mVisibilityChangeListener, Mockito.atLeastOnce())
+ .onMenuVisibilityChange(Matchers.eq(false));
+ Mockito.verify(mMenuView).onHide();
+ }
+
+ public void testShowHide_ReasonGuide() {
+ // Show with REASON_GUIDE
+ mMenu.show(Menu.REASON_GUIDE);
+ setMenuVisible(true);
+ // Listener should be called with "true" argument.
+ Mockito.verify(mVisibilityChangeListener, Mockito.atLeastOnce())
+ .onMenuVisibilityChange(Matchers.eq(true));
+ Mockito.verify(mVisibilityChangeListener, Mockito.never())
+ .onMenuVisibilityChange(Matchers.eq(false));
+ // IMenuView.show should be called with the same parameter.
+ Mockito.verify(mMenuView).onShow(Matchers.eq(Menu.REASON_GUIDE),
+ Matchers.eq(ChannelsRow.ID), Matchers.isNull(Runnable.class));
+ mMenu.hide(false);
+ setMenuVisible(false);
+ // Listener should be called with "false" argument.
+ Mockito.verify(mVisibilityChangeListener, Mockito.atLeastOnce())
+ .onMenuVisibilityChange(Matchers.eq(false));
+ Mockito.verify(mMenuView).onHide();
+ }
+
+ public void testShowHide_ReasonPlayControlsFastForward() {
+ // Show with REASON_PLAY_CONTROLS_FAST_FORWARD
+ mMenu.show(Menu.REASON_PLAY_CONTROLS_FAST_FORWARD);
+ setMenuVisible(true);
+ // Listener should be called with "true" argument.
+ Mockito.verify(mVisibilityChangeListener, Mockito.atLeastOnce())
+ .onMenuVisibilityChange(Matchers.eq(true));
+ Mockito.verify(mVisibilityChangeListener, Mockito.never())
+ .onMenuVisibilityChange(Matchers.eq(false));
+ // IMenuView.show should be called with the same parameter.
+ Mockito.verify(mMenuView).onShow(Matchers.eq(Menu.REASON_PLAY_CONTROLS_FAST_FORWARD),
+ Matchers.eq(PlayControlsRow.ID), Matchers.isNull(Runnable.class));
+ mMenu.hide(false);
+ setMenuVisible(false);
+ // Listener should be called with "false" argument.
+ Mockito.verify(mVisibilityChangeListener, Mockito.atLeastOnce())
+ .onMenuVisibilityChange(Matchers.eq(false));
+ Mockito.verify(mMenuView).onHide();
+ }
+
+ private void setMenuVisible(final boolean visible) {
+ Mockito.when(mMenuView.isVisible()).thenAnswer(new Answer<Boolean>() {
+ @Override
+ public Boolean answer(InvocationOnMock invocation) throws Throwable {
+ return visible;
+ }
+ });
+ }
+}
diff --git a/tests/unit/src/com/android/tv/menu/TvOptionsRowAdapterTest.java b/tests/unit/src/com/android/tv/menu/TvOptionsRowAdapterTest.java
index 4ffd9fa9..34ed30fd 100644
--- a/tests/unit/src/com/android/tv/menu/TvOptionsRowAdapterTest.java
+++ b/tests/unit/src/com/android/tv/menu/TvOptionsRowAdapterTest.java
@@ -17,7 +17,7 @@ package com.android.tv.menu;
import android.media.tv.TvTrackInfo;
import android.os.SystemClock;
-import android.test.suitebuilder.annotation.SmallTest;
+import android.test.suitebuilder.annotation.MediumTest;
import com.android.tv.BaseMainActivityTestCase;
import com.android.tv.MainActivity;
@@ -32,12 +32,11 @@ import java.util.List;
/**
* Tests for {@link TvOptionsRowAdapter}.
*/
-@SmallTest
+@MediumTest
public class TvOptionsRowAdapterTest extends BaseMainActivityTestCase {
private static final int WAIT_TRACK_SIZE_TIMEOUT_MS = 300;
public static final int TRACK_SIZE_CHECK_INTERVAL_MS = 10;
-
// TODO: Refactor TvOptionsRowAdapter so it does not rely on MainActivity
private TvOptionsRowAdapter mTvOptionsRowAdapter;
@@ -50,60 +49,63 @@ public class TvOptionsRowAdapterTest extends BaseMainActivityTestCase {
super.setUp();
mTvOptionsRowAdapter = new TvOptionsRowAdapter(mActivity,
Collections.<CustomAction>emptyList());
- tuneToChannel(TvTestInputConstants.CH_1);
+ tuneToChannel(TvTestInputConstants.CH_1_DEFAULT_DONT_MODIFY);
+ waitUntilAudioTracksHaveSize(1);
+ mTvOptionsRowAdapter.update();
}
public void testUpdateAudioAction_2tracks() {
- mTvOptionsRowAdapter.update();
ChannelStateData data = new ChannelStateData();
data.mTvTrackInfos.add(Constants.GENERIC_AUDIO_TRACK);
updateThenTune(data, TvTestInputConstants.CH_2);
- waitUntilTracksHaveSize(2);
+ waitUntilAudioTracksHaveSize(2);
- boolean result = mTvOptionsRowAdapter.updateActions();
+ boolean result = mTvOptionsRowAdapter.updateMultiAudioAction();
assertEquals("update Action had change", true, result);
assertEquals("Multi Audio enabled", true,
MenuAction.SELECT_AUDIO_LANGUAGE_ACTION.isEnabled());
}
public void testUpdateAudioAction_1track() {
- mTvOptionsRowAdapter.update();
ChannelStateData data = new ChannelStateData();
data.mTvTrackInfos.clear();
data.mTvTrackInfos.add(Constants.GENERIC_AUDIO_TRACK);
updateThenTune(data, TvTestInputConstants.CH_2);
- waitUntilTracksHaveSize(1);
+ waitUntilAudioTracksHaveSize(1);
- boolean result = mTvOptionsRowAdapter.updateActions();
- assertEquals("update Action had change", true, result);
+ boolean result = mTvOptionsRowAdapter.updateMultiAudioAction();
+ assertEquals("update Action had change", false, result);
assertEquals("Multi Audio enabled", false,
MenuAction.SELECT_AUDIO_LANGUAGE_ACTION.isEnabled());
}
public void testUpdateAudioAction_noTracks() {
- mTvOptionsRowAdapter.update();
ChannelStateData data = new ChannelStateData();
data.mTvTrackInfos.clear();
updateThenTune(data, TvTestInputConstants.CH_2);
- waitUntilTracksHaveSize(0);
+ waitUntilAudioTracksHaveSize(0);
- boolean result = mTvOptionsRowAdapter.updateActions();
+ boolean result = mTvOptionsRowAdapter.updateMultiAudioAction();
assertEquals("update Action had change", false, result);
assertEquals("Multi Audio enabled", false,
MenuAction.SELECT_AUDIO_LANGUAGE_ACTION.isEnabled());
}
- private void waitUntilTracksHaveSize(int expected) {
+ private void waitUntilAudioTracksHaveSize(int expected) {
long start = SystemClock.elapsedRealtime();
+ int size = -1;
while (SystemClock.elapsedRealtime() < start + WAIT_TRACK_SIZE_TIMEOUT_MS) {
getInstrumentation().waitForIdleSync();
List<TvTrackInfo> tracks = mActivity.getTracks(TvTrackInfo.TYPE_AUDIO);
- if (tracks != null && tracks.size() == expected) {
- return;
+ if (tracks != null) {
+ size = tracks.size();
+ if (size == expected) {
+ return;
+ }
}
SystemClock.sleep(TRACK_SIZE_CHECK_INTERVAL_MS);
}
fail("Waited for " + WAIT_TRACK_SIZE_TIMEOUT_MS + " milliseconds for track size to be "
- + expected);
+ + expected + " but was " + size);
}
}
diff --git a/tests/unit/src/com/android/tv/recommendation/ChannelRecordTest.java b/tests/unit/src/com/android/tv/recommendation/ChannelRecordTest.java
index 9b0e2805..44026386 100644
--- a/tests/unit/src/com/android/tv/recommendation/ChannelRecordTest.java
+++ b/tests/unit/src/com/android/tv/recommendation/ChannelRecordTest.java
@@ -17,6 +17,7 @@
package com.android.tv.recommendation;
import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
import java.util.Random;
import java.util.concurrent.TimeUnit;
@@ -24,6 +25,7 @@ import java.util.concurrent.TimeUnit;
/**
* Unit tests for {@link ChannelRecord}.
*/
+@SmallTest
public class ChannelRecordTest extends AndroidTestCase {
private static final int CHANNEL_RECORD_MAX_HISTORY_SIZE = ChannelRecord.MAX_HISTORY_SIZE;
@@ -31,6 +33,7 @@ public class ChannelRecordTest extends AndroidTestCase {
private ChannelRecord mChannelRecord;
private long mLatestWatchEndTimeMs;
+ @Override
public void setUp() throws Exception {
super.setUp();
mLatestWatchEndTimeMs = System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1);
diff --git a/tests/unit/src/com/android/tv/recommendation/EvaluatorTestCase.java b/tests/unit/src/com/android/tv/recommendation/EvaluatorTestCase.java
index ee9fa95f..febeeda1 100644
--- a/tests/unit/src/com/android/tv/recommendation/EvaluatorTestCase.java
+++ b/tests/unit/src/com/android/tv/recommendation/EvaluatorTestCase.java
@@ -17,6 +17,7 @@
package com.android.tv.recommendation;
import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
import com.android.tv.data.Channel;
import com.android.tv.recommendation.RecommendationUtils.ChannelRecordSortedMapHelper;
@@ -36,6 +37,7 @@ public abstract class EvaluatorTestCase<T extends Evaluator> extends AndroidTest
public T mEvaluator;
+ @Override
public void setUp() throws Exception {
super.setUp();
mChannelRecordSortedMap = new ChannelRecordSortedMapHelper(getContext());
diff --git a/tests/unit/src/com/android/tv/recommendation/FavoriteChannelEvaluatorTest.java b/tests/unit/src/com/android/tv/recommendation/FavoriteChannelEvaluatorTest.java
index c33271bc..0617845b 100644
--- a/tests/unit/src/com/android/tv/recommendation/FavoriteChannelEvaluatorTest.java
+++ b/tests/unit/src/com/android/tv/recommendation/FavoriteChannelEvaluatorTest.java
@@ -16,12 +16,15 @@
package com.android.tv.recommendation;
+import android.test.suitebuilder.annotation.SmallTest;
+
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* Unit tests for {@link FavoriteChannelEvaluator}.
*/
+@SmallTest
public class FavoriteChannelEvaluatorTest extends EvaluatorTestCase<FavoriteChannelEvaluator> {
private static final int DEFAULT_NUMBER_OF_CHANNELS = 4;
private static final long DEFAULT_WATCH_START_TIME_MS =
@@ -30,6 +33,7 @@ public class FavoriteChannelEvaluatorTest extends EvaluatorTestCase<FavoriteChan
System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1);
private static final long DEFAULT_MAX_WATCH_DURATION_MS = TimeUnit.HOURS.toMillis(1);
+ @Override
public FavoriteChannelEvaluator createEvaluator() {
return new FavoriteChannelEvaluator();
}
diff --git a/tests/unit/src/com/android/tv/recommendation/RecentChannelEvaluatorTest.java b/tests/unit/src/com/android/tv/recommendation/RecentChannelEvaluatorTest.java
index a888ceea..c67f3bc4 100644
--- a/tests/unit/src/com/android/tv/recommendation/RecentChannelEvaluatorTest.java
+++ b/tests/unit/src/com/android/tv/recommendation/RecentChannelEvaluatorTest.java
@@ -16,6 +16,8 @@
package com.android.tv.recommendation;
+import android.test.suitebuilder.annotation.SmallTest;
+
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -24,6 +26,7 @@ import java.util.concurrent.TimeUnit;
/**
* Unit tests for {@link RecentChannelEvaluator}.
*/
+@SmallTest
public class RecentChannelEvaluatorTest extends EvaluatorTestCase<RecentChannelEvaluator> {
private static final int DEFAULT_NUMBER_OF_CHANNELS = 4;
private static final long DEFAULT_WATCH_START_TIME_MS =
@@ -32,6 +35,7 @@ public class RecentChannelEvaluatorTest extends EvaluatorTestCase<RecentChannelE
System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1);
private static final long DEFAULT_MAX_WATCH_DURATION_MS = TimeUnit.HOURS.toMillis(1);
+ @Override
public RecentChannelEvaluator createEvaluator() {
return new RecentChannelEvaluator();
}
diff --git a/tests/unit/src/com/android/tv/recommendation/RecommendationUtils.java b/tests/unit/src/com/android/tv/recommendation/RecommendationUtils.java
index d275bfbb..8e57a267 100644
--- a/tests/unit/src/com/android/tv/recommendation/RecommendationUtils.java
+++ b/tests/unit/src/com/android/tv/recommendation/RecommendationUtils.java
@@ -86,7 +86,7 @@ public class RecommendationUtils {
}
public static class ChannelRecordSortedMapHelper extends TreeMap<Long, ChannelRecord> {
- private Context mContext;
+ private final Context mContext;
private Recommender mRecommender;
private Random mRandom = createTestRandom();
diff --git a/tests/unit/src/com/android/tv/recommendation/RecommenderTest.java b/tests/unit/src/com/android/tv/recommendation/RecommenderTest.java
index 4f16d168..62c5b4ab 100644
--- a/tests/unit/src/com/android/tv/recommendation/RecommenderTest.java
+++ b/tests/unit/src/com/android/tv/recommendation/RecommenderTest.java
@@ -18,6 +18,7 @@ package com.android.tv.recommendation;
import android.test.AndroidTestCase;
import android.test.MoreAsserts;
+import android.test.suitebuilder.annotation.SmallTest;
import com.android.tv.data.Channel;
import com.android.tv.recommendation.RecommendationUtils.ChannelRecordSortedMapHelper;
@@ -31,6 +32,7 @@ import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
+@SmallTest
public class RecommenderTest extends AndroidTestCase {
private static final int DEFAULT_NUMBER_OF_CHANNELS = 5;
private static final long DEFAULT_WATCH_START_TIME_MS =
@@ -69,6 +71,7 @@ public class RecommenderTest extends AndroidTestCase {
private Channel mChannel_3;
private Channel mChannel_4;
+ @Override
public void setUp() throws Exception {
super.setUp();
@@ -306,7 +309,7 @@ public class RecommenderTest extends AndroidTestCase {
}
private class FakeEvaluator extends Recommender.Evaluator {
- private Map<Long, Double> mChannelScore = new HashMap<>();
+ private final Map<Long, Double> mChannelScore = new HashMap<>();
@Override
public double evaluateChannel(long channelId) {
diff --git a/tests/unit/src/com/android/tv/recommendation/RoutineWatchEvaluatorTest.java b/tests/unit/src/com/android/tv/recommendation/RoutineWatchEvaluatorTest.java
index e3c92859..2511094e 100644
--- a/tests/unit/src/com/android/tv/recommendation/RoutineWatchEvaluatorTest.java
+++ b/tests/unit/src/com/android/tv/recommendation/RoutineWatchEvaluatorTest.java
@@ -17,6 +17,7 @@
package com.android.tv.recommendation;
import android.test.MoreAsserts;
+import android.test.suitebuilder.annotation.SmallTest;
import com.android.tv.data.Program;
import com.android.tv.recommendation.RoutineWatchEvaluator.ProgramTime;
@@ -25,8 +26,10 @@ import java.util.Calendar;
import java.util.List;
import java.util.concurrent.TimeUnit;
+@SmallTest
public class RoutineWatchEvaluatorTest extends EvaluatorTestCase<RoutineWatchEvaluator> {
+ @Override
public RoutineWatchEvaluator createEvaluator() {
return new RoutineWatchEvaluator();
}
@@ -157,7 +160,7 @@ public class RoutineWatchEvaluatorTest extends EvaluatorTestCase<RoutineWatchEva
private void assertOverlappedIntervalScore(int expectedSeconds, boolean overlappedOnSameDay,
ProgramTime t1, ProgramTime t2) {
- double score = (double) expectedSeconds;
+ double score = expectedSeconds;
if (!overlappedOnSameDay) {
score *= RoutineWatchEvaluator.MULTIPLIER_FOR_UNMATCHED_DAY_OF_WEEK;
}
diff --git a/tests/unit/src/com/android/tv/ui/SetupViewTest.java b/tests/unit/src/com/android/tv/ui/SetupViewTest.java
index ce3b79fb..d3579d13 100644
--- a/tests/unit/src/com/android/tv/ui/SetupViewTest.java
+++ b/tests/unit/src/com/android/tv/ui/SetupViewTest.java
@@ -26,14 +26,14 @@ import com.android.tv.util.SetupUtils;
import com.android.tv.util.TestUtils;
import com.android.tv.util.TvInputManagerHelper;
-import java.util.Comparator;
-import java.util.LinkedHashMap;
-
import org.mockito.Matchers;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
+import java.util.Comparator;
+import java.util.LinkedHashMap;
+
/**
* Test for {@link SetupView}
*/
diff --git a/tests/unit/src/com/android/tv/util/ImageCacheTest.java b/tests/unit/src/com/android/tv/util/ImageCacheTest.java
index a73b79fe..396372b2 100644
--- a/tests/unit/src/com/android/tv/util/ImageCacheTest.java
+++ b/tests/unit/src/com/android/tv/util/ImageCacheTest.java
@@ -19,6 +19,7 @@ package com.android.tv.util;
import static com.android.tv.util.BitmapUtils.createScaledBitmapInfo;
import android.graphics.Bitmap;
+import android.test.suitebuilder.annotation.MediumTest;
import com.android.tv.util.BitmapUtils.ScaledBitmapInfo;
@@ -27,8 +28,8 @@ import junit.framework.TestCase;
/**
* Tests for {@link ImageCache}.
*/
+@MediumTest
public class ImageCacheTest extends TestCase {
-
private static final Bitmap ORIG = Bitmap.createBitmap(100, 100, Bitmap.Config.RGB_565);
private static final String KEY = "same";
diff --git a/tests/unit/src/com/android/tv/util/ScaledBitmapInfoTest.java b/tests/unit/src/com/android/tv/util/ScaledBitmapInfoTest.java
index ef707470..4e689780 100644
--- a/tests/unit/src/com/android/tv/util/ScaledBitmapInfoTest.java
+++ b/tests/unit/src/com/android/tv/util/ScaledBitmapInfoTest.java
@@ -2,14 +2,15 @@ package com.android.tv.util;
import android.graphics.Bitmap;
import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
import com.android.tv.util.BitmapUtils.ScaledBitmapInfo;
/**
* Tests for {@link ScaledBitmapInfo}.
*/
+@SmallTest
public class ScaledBitmapInfoTest extends AndroidTestCase {
-
private static final Bitmap B80x100 = Bitmap.createBitmap(80, 100, Bitmap.Config.RGB_565);
private static final Bitmap B960x1440 = Bitmap.createBitmap(960, 1440, Bitmap.Config.RGB_565);
diff --git a/tests/unit/src/com/android/tv/util/TestUtils.java b/tests/unit/src/com/android/tv/util/TestUtils.java
index 872e8c51..db5e93cc 100644
--- a/tests/unit/src/com/android/tv/util/TestUtils.java
+++ b/tests/unit/src/com/android/tv/util/TestUtils.java
@@ -19,8 +19,7 @@ package com.android.tv.util;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.media.tv.TvInputInfo;
-
-import com.android.tv.common.TvCommonConstants;
+import android.os.Build;
import java.lang.reflect.Constructor;
@@ -33,7 +32,7 @@ public class TestUtils {
// Create a mock TvInputInfo by using private constructor
// TODO: Find better way to mock TvInputInfo.
// Note that mockito doesn't support mock/spy on final object.
- if (!TvCommonConstants.IS_MNC_PREVIEW && !TvCommonConstants.IS_MNC_OR_HIGHER) {
+ if (Build.VERSION.SDK_INT < 23) {
return createTvInputInfoForLmp(service, id, parentId, type);
}
return createTvInputInfoForMnc(service, id, parentId, type, isHardwareInput);
diff --git a/tests/unit/src/com/android/tv/util/TvInputManagerHelperTest.java b/tests/unit/src/com/android/tv/util/TvInputManagerHelperTest.java
index 6251d1a3..2f06de59 100644
--- a/tests/unit/src/com/android/tv/util/TvInputManagerHelperTest.java
+++ b/tests/unit/src/com/android/tv/util/TvInputManagerHelperTest.java
@@ -23,12 +23,12 @@ import android.test.suitebuilder.annotation.SmallTest;
import com.android.tv.testing.ComparatorTester;
-import java.util.LinkedHashMap;
-
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
+import java.util.LinkedHashMap;
+
/**
* Test for {@link TvInputManagerHelper}
*/
diff --git a/tests/unit/src/com/android/tv/util/UtilsTest_GetDurationString.java b/tests/unit/src/com/android/tv/util/UtilsTest_GetDurationString.java
index 1cdda744..162ff63d 100644
--- a/tests/unit/src/com/android/tv/util/UtilsTest_GetDurationString.java
+++ b/tests/unit/src/com/android/tv/util/UtilsTest_GetDurationString.java
@@ -17,10 +17,8 @@ package com.android.tv.util;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
-
import android.text.format.DateUtils;
-import java.lang.Exception;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
diff --git a/version.mk b/version.mk
index 8772d4ea..a59ac3c5 100644
--- a/version.mk
+++ b/version.mk
@@ -18,7 +18,7 @@
# Cmmbbbtad
# where
# M - major version (one or more digits)
-# C - code major version (for legacy resons this is M+3)
+# C - code major version (for legacy reasons this is M+3)
# m - minor version (exactly 2)
# bbb - automatically specified build number (exactly 3 digits)
# t - build type (exactly 1 digit). Current valid values are:
@@ -48,9 +48,10 @@
base_version_major := 1
# Change this for each branch
-base_version_minor := 05
+base_version_minor := 06
# The date of the first commit checked in to the current branch
-base_version_since := 2015-05-21
+base_version_since := 2015-07-22
+
# code_version_major will overflow at 22
code_version_major := $(shell echo $$(($(base_version_major)+3)))
@@ -58,8 +59,8 @@ code_version_major := $(shell echo $$(($(base_version_major)+3)))
git_commit_count := $(shell git --git-dir $(LOCAL_PATH)/.git rev-list --since=$(base_version_since) --no-merges --count HEAD)
git_commit_count_usb := $(shell git --git-dir $(LOCAL_PATH)/../UsbTunerTvInput/.git rev-list --since=$(base_version_since) --no-merges --count HEAD)
#code_version_build := $(shell printf "%03d" $$(($(git_commit_count)+$(git_commit_count_usb))))
-# TODO http://b/22930520 version.mk sometimes goes backwards
-code_version_build := 570
+# TODO http://b/22930520 version.mk sometimes goes backwards
+code_version_build=202
#####################################################
#####################################################