diff options
author | Jake Hamby <jhamby@google.com> | 2012-12-06 23:22:44 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-12-06 23:22:44 -0800 |
commit | f87f1f6e6697d4d505a8b463098ad3b2a0f2e0a5 (patch) | |
tree | 0f7661f287ad7141553c19cfebb58b76087e3a3a | |
parent | e762482866b0f9a16af641e50aa1daa364abf795 (diff) | |
parent | 5fe4be69141ab67b32f99d86cad9817653764417 (diff) | |
download | frameworks_base-f87f1f6e6697d4d505a8b463098ad3b2a0f2e0a5.zip frameworks_base-f87f1f6e6697d4d505a8b463098ad3b2a0f2e0a5.tar.gz frameworks_base-f87f1f6e6697d4d505a8b463098ad3b2a0f2e0a5.tar.bz2 |
am 5fe4be69: am 6fb126b5: am 91bb0771: Merge "Enable Turkish language encoding for Turkish SIM cards." into jb-mr1.1-dev
* commit '5fe4be69141ab67b32f99d86cad9817653764417':
Enable Turkish language encoding for Turkish SIM cards.
-rwxr-xr-x | core/res/res/values-mcc286/config.xml | 64 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/GsmAlphabet.java | 39 |
2 files changed, 92 insertions, 11 deletions
diff --git a/core/res/res/values-mcc286/config.xml b/core/res/res/values-mcc286/config.xml new file mode 100755 index 0000000..d99d051 --- /dev/null +++ b/core/res/res/values-mcc286/config.xml @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2012, 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized + for different hardware and product builds. DO NOT TRANSLATE. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- National Language Identifier codes for the following two config items. + (from 3GPP TS 23.038 V9.1.1 Table 6.2.1.2.4.1): + 0 - reserved + 1 - Turkish + 2 - Spanish (single shift table only) + 3 - Portuguese + 4 - Bengali + 5 - Gujarati + 6 - Hindi + 7 - Kannada + 8 - Malayalam + 9 - Oriya + 10 - Punjabi + 11 - Tamil + 12 - Telugu + 13 - Urdu + 14+ - reserved --> + + <!-- National language single shift tables to enable for SMS encoding. + Decoding is always enabled. 3GPP TS 23.038 states that this feature + should not be enabled until a formal request is issued by the relevant + national regulatory body. Array elements are codes from the table above. + Example 1: devices sold in Turkey must include table 1 to conform with + By-Law Number 27230. (http://www.btk.gov.tr/eng/pdf/2009/BY-LAW_SMS.pdf) + Example 2: devices sold in India should include tables 4 through 13 + to enable use of the new Release 9 tables for Indic languages. --> + <integer-array name="config_sms_enabled_single_shift_tables"><item>1</item></integer-array> + + <!-- National language locking shift tables to enable for SMS encoding. + Decoding is always enabled. 3GPP TS 23.038 states that this feature + should not be enabled until a formal request is issued by the relevant + national regulatory body. Array elements are codes from the table above. + Example 1: devices sold in Turkey must include table 1 after the + Turkish Telecommunication Authority requires locking shift encoding + to be enabled (est. July 2012). (http://www.btk.gov.tr/eng/pdf/2009/BY-LAW_SMS.pdf) + See also: http://www.mobitech.com.tr/tr/ersanozturkblog_en/index.php?entry=entry090223-160014 + Example 2: devices sold in India should include tables 4 through 13 + to enable use of the new Release 9 tables for Indic languages. --> + <!-- <integer-array name="config_sms_enabled_locking_shift_tables"></integer-array> --> + +</resources> diff --git a/telephony/java/com/android/internal/telephony/GsmAlphabet.java b/telephony/java/com/android/internal/telephony/GsmAlphabet.java index 19047c8..4cba70d 100644 --- a/telephony/java/com/android/internal/telephony/GsmAlphabet.java +++ b/telephony/java/com/android/internal/telephony/GsmAlphabet.java @@ -803,6 +803,10 @@ public class GsmAlphabet { */ public static TextEncodingDetails countGsmSeptets(CharSequence s, boolean use7bitOnly) { + // Load enabled language tables from config.xml, including any MCC overlays + if (!sDisableCountryEncodingCheck) { + enableCountrySpecificEncodings(); + } // fast path for common case where no national language shift tables are enabled if (sEnabledSingleShiftTables.length + sEnabledLockingShiftTables.length == 0) { TextEncodingDetails ted = new TextEncodingDetails(); @@ -989,6 +993,7 @@ public class GsmAlphabet { */ static synchronized void setEnabledSingleShiftTables(int[] tables) { sEnabledSingleShiftTables = tables; + sDisableCountryEncodingCheck = true; if (tables.length > 0) { sHighestEnabledSingleShiftCode = tables[tables.length - 1]; @@ -1006,6 +1011,7 @@ public class GsmAlphabet { */ static synchronized void setEnabledLockingShiftTables(int[] tables) { sEnabledLockingShiftTables = tables; + sDisableCountryEncodingCheck = true; } /** @@ -1030,6 +1036,24 @@ public class GsmAlphabet { return sEnabledLockingShiftTables; } + /** + * Enable country-specific language tables from MCC-specific overlays. + * @context the context to use to get the TelephonyManager + */ + private static void enableCountrySpecificEncodings() { + Resources r = Resources.getSystem(); + // See comments in frameworks/base/core/res/res/values/config.xml for allowed values + sEnabledSingleShiftTables = r.getIntArray(R.array.config_sms_enabled_single_shift_tables); + sEnabledLockingShiftTables = r.getIntArray(R.array.config_sms_enabled_locking_shift_tables); + + if (sEnabledSingleShiftTables.length > 0) { + sHighestEnabledSingleShiftCode = + sEnabledSingleShiftTables[sEnabledSingleShiftTables.length-1]; + } else { + sHighestEnabledSingleShiftCode = 0; + } + } + /** Reverse mapping from Unicode characters to indexes into language tables. */ private static final SparseIntArray[] sCharsToGsmTables; @@ -1045,6 +1069,9 @@ public class GsmAlphabet { /** Highest language code to include in array of single shift counters. */ private static int sHighestEnabledSingleShiftCode; + /** Flag to bypass check for country-specific overlays (for test cases only). */ + private static boolean sDisableCountryEncodingCheck = false; + /** * Septet counter for a specific locking shift table and all of * the single shift tables that it can be paired with. @@ -1408,10 +1435,7 @@ public class GsmAlphabet { }; static { - Resources r = Resources.getSystem(); - // See comments in frameworks/base/core/res/res/values/config.xml for allowed values - sEnabledSingleShiftTables = r.getIntArray(R.array.config_sms_enabled_single_shift_tables); - sEnabledLockingShiftTables = r.getIntArray(R.array.config_sms_enabled_locking_shift_tables); + enableCountrySpecificEncodings(); int numTables = sLanguageTables.length; int numShiftTables = sLanguageShiftTables.length; if (numTables != numShiftTables) { @@ -1419,13 +1443,6 @@ public class GsmAlphabet { " != shift tables array length " + numShiftTables); } - if (sEnabledSingleShiftTables.length > 0) { - sHighestEnabledSingleShiftCode = - sEnabledSingleShiftTables[sEnabledSingleShiftTables.length-1]; - } else { - sHighestEnabledSingleShiftCode = 0; - } - sCharsToGsmTables = new SparseIntArray[numTables]; for (int i = 0; i < numTables; i++) { String table = sLanguageTables[i]; |