diff --git a/packages/apps/Settings/res/values-zh-rCN/strings.xml b/packages/apps/Settings/res/values-zh-rCN/strings.xml index fe72d85229d..541ca1e9070 100644 --- a/packages/apps/Settings/res/values-zh-rCN/strings.xml +++ b/packages/apps/Settings/res/values-zh-rCN/strings.xml @@ -5591,6 +5591,7 @@ <string name="screen_aux_title">"副屏"</string> <string name="screen_switch">"开关"</string> <string name="screen_resolution">"分辨率设置"</string> + <string name="screen_output_mode">"输出格式"</string> <string name="screen_scale">"屏幕缩放"</string> <string name="screen_rotation">"屏幕旋转"</string> <string name="screen_full_vh">"满屏显示"</string> diff --git a/packages/apps/Settings/res/values/strings.xml b/packages/apps/Settings/res/values/strings.xml index 0f8e6987653..12b4adf7367 100644 --- a/packages/apps/Settings/res/values/strings.xml +++ b/packages/apps/Settings/res/values/strings.xml @@ -13707,7 +13707,8 @@ <string name="screen_aux_title">Aux Screen</string> <string name="screen_switch">Turn on/off</string> <string name="screen_resolution">Resolution</string> - <string name="screen_scale">Screen Zoom</string> + <string name="screen_scale">Screen zoom</string> + <string name="screen_output_mode">Output mode</string> <string name="screen_rotation">Screen Rotation</string> <string name="screen_full_vh">screen full display</string> <string name="confirm_dialog_title">Save Confirm</string> diff --git a/packages/apps/Settings/src/com/android/settings/display/DrmDisplaySetting.java b/packages/apps/Settings/src/com/android/settings/display/DrmDisplaySetting.java index 9e91601e828..a5e372d0321 100644 --- a/packages/apps/Settings/src/com/android/settings/display/DrmDisplaySetting.java +++ b/packages/apps/Settings/src/com/android/settings/display/DrmDisplaySetting.java @@ -74,6 +74,24 @@ public class DrmDisplaySetting { manager.setOverScan(display, direction, value); } + public static void setColorMode(int displayid, String format) { + RkDisplayOutputManager manager = new RkDisplayOutputManager(); + int type = manager.getCurrentInterface(displayid); + manager.setColorMode(displayid, type, format); + } + + public static String getColorMode(int displayid) { + RkDisplayOutputManager manager = new RkDisplayOutputManager(); + int type = manager.getCurrentInterface(displayid); + return manager.getCurrentColorMode(displayid, type); + } + + public static String[] getColorModeList(int displayid) { + RkDisplayOutputManager manager = new RkDisplayOutputManager(); + int type = manager.getCurrentInterface(displayid); + return manager.getSupportCorlorList(displayid, type); + } + public static int getDisplayNumber() { RkDisplayOutputManager manager = new RkDisplayOutputManager(); return manager.getDisplayNumber(); diff --git a/packages/apps/Settings/src/com/android/settings/display/HdmiSettings.java b/packages/apps/Settings/src/com/android/settings/display/HdmiSettings.java index 44ea368926c..a3d1d65003c 100755 --- a/packages/apps/Settings/src/com/android/settings/display/HdmiSettings.java +++ b/packages/apps/Settings/src/com/android/settings/display/HdmiSettings.java @@ -49,6 +49,7 @@ public class HdmiSettings extends SettingsPreferenceFragment private static final String TAG = "HdmiSettings"; private static final String KEY_PRE_CATE = "Display"; private static final String KEY_PRE_RESOLUTION = "Resolution"; + private static final String KEY_PRE_COLOR_MODE = "ColorMode"; private static final String KEY_PRE_SCREEN_SCALE = "ScreenScale"; private static final String KEY_AUX_CATEGORY = "aux_category"; private static final String KEY_AUX_SCREEN_VH = "aux_screen_vh"; @@ -347,6 +348,21 @@ public class HdmiSettings extends SettingsPreferenceFragment DisplayInfo displayInfo = new DisplayInfo(); displayInfo.setDisplayNo(display); mDisplayInfoList.put(display, displayInfo); + + //add color preference for HDMI-A + if ("HDMIA".equals(typeName)) { + String curColorMode = DrmDisplaySetting.getColorMode(display); + String[] colorList = DrmDisplaySetting.getColorModeList(display); + Log.v(TAG, "Current mode " + curColorMode + " of " + colorList.length); + ListPreference colorPreference = new ListPreference(mContext); + colorPreference.setEntries(colorList); + colorPreference.setEntryValues(colorList); + colorPreference.setKey(KEY_PRE_COLOR_MODE + display); + colorPreference.setTitle(mContext.getString(R.string.screen_output_mode)); + colorPreference.setValue(curColorMode); + colorPreference.setOnPreferenceChangeListener(this); + category.addPreference(colorPreference); + } } sendUpdateStateMsg(ITEM_CONTROL.REFRESH_DISPLAY_STATUS_INFO, 0); @@ -589,6 +605,14 @@ public class HdmiSettings extends SettingsPreferenceFragment } preference.getParent().setEnabled(false); updateResolution(ITEM_CONTROL.CHANGE_RESOLUTION, index); + } else if (key.startsWith(KEY_PRE_COLOR_MODE)) { + int display = Integer.parseInt(key.replace(KEY_PRE_COLOR_MODE, "")); + ListPreference colorPreference = (ListPreference) preference; + String curColorMode = DrmDisplaySetting.getColorMode(display); + String newColorMode = (String) obj; + if (!newColorMode.equals(curColorMode)) { + DrmDisplaySetting.setColorMode(display, newColorMode); + } } else if (preference == mAuxScreenVH) { mEnableDisplayListener = false; showWaitingDialog(R.string.dialog_wait_screen_connect);