From 5fe3a6cbfc50a8faf9cf051f1f09a7eb1ef6b7ee Mon Sep 17 00:00:00 2001 From: Jinsuk Kim Date: Wed, 29 Oct 2014 07:02:06 +0900 Subject: [PATCH] CEC: Use language code "chi" for Traditional Chinese Android by default returns "zho" for all sorts of Chinese variants. Use "chi" for traditional one used in Taiwan/Hong Kong/Macau as required in CEC standard. Bug: 18149804 Change-Id: I86ac7e2f0f1121641c52032a0d98a6405554457c --- .../android/server/hdmi/HdmiControlService.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index e741fc4f8dc13..aeb21dbfa1361 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -90,6 +90,8 @@ import java.util.Locale; */ public final class HdmiControlService extends SystemService { private static final String TAG = "HdmiControlService"; + private final Locale HONG_KONG = new Locale("zh", "HK"); + private final Locale MACAU = new Locale("zh", "MO"); static final String PERMISSION = "android.permission.HDMI_CEC"; @@ -146,13 +148,25 @@ public final class HdmiControlService extends SystemService { } break; case Intent.ACTION_CONFIGURATION_CHANGED: - String language = Locale.getDefault().getISO3Language(); + String language = getMenuLanguage(); if (!mLanguage.equals(language)) { onLanguageChanged(language); } break; } } + + private String getMenuLanguage() { + Locale locale = Locale.getDefault(); + if (locale.equals(Locale.TAIWAN) || locale.equals(HONG_KONG) || locale.equals(MACAU)) { + // Android always returns "zho" for all Chinese variants. + // Use "bibliographic" code defined in CEC639-2 for traditional + // Chinese used in Taiwan/Hong Kong/Macau. + return "chi"; + } else { + return locale.getISO3Language(); + } + } } // A thread to handle synchronous IO of CEC and MHL control service.