diff --git a/packages/apps/Settings/res/values-zh-rCN/strings.xml b/packages/apps/Settings/res/values-zh-rCN/strings.xml
index 41a24f761f0..a2efe3c251b 100644
--- a/packages/apps/Settings/res/values-zh-rCN/strings.xml
+++ b/packages/apps/Settings/res/values-zh-rCN/strings.xml
@@ -4825,6 +4825,7 @@
"副屏"
"开关"
"分辨率设置"
+ "输出格式"
"屏幕缩放"
"屏幕旋转"
"满屏显示"
diff --git a/packages/apps/Settings/res/values/strings.xml b/packages/apps/Settings/res/values/strings.xml
index e63966c145b..d6c5765d16a 100644
--- a/packages/apps/Settings/res/values/strings.xml
+++ b/packages/apps/Settings/res/values/strings.xml
@@ -12388,7 +12388,8 @@
Aux Screen
Turn on/off
Resolution
- Screen Zoom
+ Screen zoom
+ Output mode
Screen Rotation
screen full display
Save Confirm
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 170d27a8955..614757b3530 100644
--- a/packages/apps/Settings/src/com/android/settings/display/DrmDisplaySetting.java
+++ b/packages/apps/Settings/src/com/android/settings/display/DrmDisplaySetting.java
@@ -84,6 +84,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 0692abf9379..29e7e4eeb70 100644
--- a/packages/apps/Settings/src/com/android/settings/display/HdmiSettings.java
+++ b/packages/apps/Settings/src/com/android/settings/display/HdmiSettings.java
@@ -66,6 +66,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";
@@ -377,6 +378,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);
mAuxCategory = (PreferenceCategory) findPreference(KEY_AUX_CATEGORY);
@@ -641,6 +657,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);