diff --git a/packages/SystemUI/res/values/arrays_tv.xml b/packages/SystemUI/res/values/arrays_tv.xml new file mode 100644 index 0000000000000..08b1ab14ad083 --- /dev/null +++ b/packages/SystemUI/res/values/arrays_tv.xml @@ -0,0 +1,31 @@ + + + + + + com.android.tv.settings + com.google.android.leanbacklauncher/.settings.HomeScreenSettingsActivity + com.google.android.apps.mediashell/.settings.CastSettingsActivity + com.google.android.katniss.setting/.SpeechSettingsActivity + com.google.android.katniss.setting/.SearchSettingsActivity + com.google.android.gsf.notouch/.UsageDiagnosticsSettingActivity + + diff --git a/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java b/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java index 376a0b6bdcbcf..df01aab94a1ec 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java +++ b/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java @@ -68,34 +68,10 @@ public class PipManager implements BasePipManager { private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private static final boolean DEBUG_FORCE_ONBOARDING = SystemProperties.getBoolean("debug.tv.pip_force_onboarding", false); + private static final String SETTINGS_PACKAGE_AND_CLASS_DELIMITER = "/"; private static PipManager sPipManager; - - /** - * List of package and class name which are considered as Settings, - * so PIP location should be adjusted to the left of the side panel. - */ - private static final List> sSettingsPackageAndClassNamePairList; - static { - sSettingsPackageAndClassNamePairList = new ArrayList<>(); - sSettingsPackageAndClassNamePairList.add(new Pair( - "com.android.tv.settings", null)); - sSettingsPackageAndClassNamePairList.add(new Pair( - "com.google.android.leanbacklauncher", - "com.google.android.leanbacklauncher.settings.HomeScreenSettingsActivity")); - sSettingsPackageAndClassNamePairList.add(new Pair( - "com.google.android.apps.mediashell", - "com.google.android.apps.mediashell.settings.CastSettingsActivity")); - sSettingsPackageAndClassNamePairList.add(new Pair( - "com.google.android.katniss", - "com.google.android.katniss.setting.SpeechSettingsActivity")); - sSettingsPackageAndClassNamePairList.add(new Pair( - "com.google.android.katniss", - "com.google.android.katniss.setting.SearchSettingsActivity")); - sSettingsPackageAndClassNamePairList.add(new Pair( - "com.google.android.gsf.notouch", - "com.google.android.gsf.notouch.UsageDiagnosticsSettingActivity")); - } + private static List> sSettingsPackageAndClassNamePairList; /** * State when there's no PIP. @@ -252,6 +228,31 @@ public class PipManager implements BasePipManager { mOnboardingShown = Prefs.getBoolean( mContext, TV_PICTURE_IN_PICTURE_ONBOARDING_SHOWN, false); + if (sSettingsPackageAndClassNamePairList == null) { + String[] settings = mContext.getResources().getStringArray( + R.array.tv_pip_settings_class_name); + sSettingsPackageAndClassNamePairList = new ArrayList<>(); + if (settings != null) { + for (int i = 0; i < settings.length; i++) { + Pair entry = null; + String[] packageAndClassName = + settings[i].split(SETTINGS_PACKAGE_AND_CLASS_DELIMITER); + switch (packageAndClassName.length) { + case 1: + entry = Pair.create(packageAndClassName[0], null); + break; + case 2: + entry = Pair.create( + packageAndClassName[0], + packageAndClassName[0] + packageAndClassName[1]); + } + if (entry != null) { + sSettingsPackageAndClassNamePairList.add(entry); + } + } + } + } + loadConfigurationsAndApply(); mPipRecentsOverlayManager = new PipRecentsOverlayManager(context); mMediaSessionManager =