Fix VoLTE toggle names for all carriers.

Change default from "Enhanced 4G LTE Mode" to "VoLTE".
Add 4g calling and its sub summary.
Show carreirs VoLTE toggle names by carrier config.

Bug: 129112234
Bug: 129153582
Test: Use commands to override carrier config to observe the
UI as expected.

Change-Id: I1d418873a661b3c20c5a6d0a056dcb2573742c65
This commit is contained in:
tonyzhu
2019-03-22 16:40:36 +08:00
parent 3a00f3bf81
commit ef9c44461f
4 changed files with 68 additions and 15 deletions

View File

@@ -1378,6 +1378,26 @@
<item>@string/wifi_calling_mode_cellular_preferred_summary</item>
</string-array>
<!-- Carrier variant of Enhaced 4G LTE Mode title. [CHAR LIMIT=NONE] -->
<string-array name="enhanced_4g_lte_mode_title_variant">
<!-- 0: Default -->
<item>@string/enhanced_4g_lte_mode_title</item>
<!-- 1: Verizon -->
<item>@string/enhanced_4g_lte_mode_title_advanced_calling</item>
<!-- 2: All carriers who want 4G -->
<item>@string/enhanced_4g_lte_mode_title_4g_calling</item>
</string-array>
<!-- Carrier variant of Enhaced 4G LTE Mode summary. [CHAR LIMIT=NONE] -->
<string-array name="enhanced_4g_lte_mode_sumary_variant">
<!-- 0: Default -->
<item>@string/enhanced_4g_lte_mode_summary</item>
<!-- 1: Verizon -->
<item>@string/enhanced_4g_lte_mode_summary</item>
<!-- 2: All carriers who want 4G -->
<item>@string/enhanced_4g_lte_mode_summary_4g_calling</item>
</string-array>
<!-- Bluetooth icon foreground colors -->
<integer-array name="bt_icon_fg_colors">
<item>@color/bt_color_icon_1</item>

View File

@@ -6890,9 +6890,15 @@
<!-- Access point names title. [CHAR LIMIT=50] -->
<string name="access_point_names">Access point names</string>
<!-- Enhaced 4G LTE Mode title. [CHAR LIMIT=50] -->
<string name="enhanced_4g_lte_mode_title">Enhanced 4G LTE Mode</string>
<string name="enhanced_4g_lte_mode_title">VoLTE</string>
<!-- Enhaced 4G LTE Mode title for carriers who want to show Advanced Calling. [CHAR LIMIT=50] -->
<string name="enhanced_4g_lte_mode_title_advanced_calling">Advanced Calling</string>
<!-- Enhaced 4G LTE Mode title for carriers who want to show 4G Calling. [CHAR LIMIT=50] -->
<string name="enhanced_4g_lte_mode_title_4g_calling">4G Calling</string>
<!-- Enhaced 4G LTE Mode summary. [CHAR LIMIT=100] -->
<string name="enhanced_4g_lte_mode_summary">Use LTE data to enhance voice and communications (Recommended)</string>
<string name="enhanced_4g_lte_mode_summary">Use LTE services to improve voice and other communications (recommended)</string>
<!-- Enhaced 4G LTE Mode summary for 4g calling. [CHAR LIMIT=100] -->
<string name="enhanced_4g_lte_mode_summary_4g_calling">Use 4G services to improve voice and other communications (recommended)</string>
<!-- Preferred network type title. [CHAR LIMIT=50] -->
<string name="preferred_network_type_title">Preferred network type</string>
<!-- Preferred network type summary. [CHAR LIMIT=100] -->
@@ -10481,8 +10487,6 @@
<!-- Message informs the user that has no SIM card in personalized Settings [CHAR LIMIT=30] -->
<string name="no_sim_card">No SIM card</string>
<!-- Carrier variant of Enhaced 4G LTE Mode title. [CHAR LIMIT=50] -->
<string name="enhanced_4g_lte_mode_title_variant">Advanced Calling</string>
<!-- The following strings are summaries for preferred network modes in Mobile network settings,
and have a character limit of 100 -->
<!-- WCDMA preferred [CHAR LIMIT=NONE] -->

View File

@@ -17,6 +17,7 @@
package com.android.settings.network.telephony;
import android.content.Context;
import android.content.res.Resources;
import android.os.Looper;
import android.os.PersistableBundle;
import android.telephony.CarrierConfigManager;
@@ -52,12 +53,18 @@ public class Enhanced4gLtePreferenceController extends TelephonyTogglePreference
ImsManager mImsManager;
private PhoneCallStateListener mPhoneStateListener;
private final List<On4gLteUpdateListener> m4gLteListeners;
private final CharSequence[] mVariantTitles;
private final CharSequence[] mVariantSumaries;
public Enhanced4gLtePreferenceController(Context context, String key) {
super(context, key);
mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class);
m4gLteListeners = new ArrayList<>();
mPhoneStateListener = new PhoneCallStateListener(Looper.getMainLooper());
mVariantTitles = context.getResources()
.getTextArray(R.array.enhanced_4g_lte_mode_title_variant);
mVariantSumaries = context.getResources()
.getTextArray(R.array.enhanced_4g_lte_mode_sumary_variant);
}
@Override
@@ -94,12 +101,20 @@ public class Enhanced4gLtePreferenceController extends TelephonyTogglePreference
public void updateState(Preference preference) {
super.updateState(preference);
final SwitchPreference switchPreference = (SwitchPreference) preference;
final boolean useVariant4glteTitle = mCarrierConfig.getInt(
CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT) != 0;
int enhanced4glteModeTitleId = useVariant4glteTitle ?
R.string.enhanced_4g_lte_mode_title_variant :
R.string.enhanced_4g_lte_mode_title;
switchPreference.setTitle(enhanced4glteModeTitleId);
final int variant4glteTitleIndex = mCarrierConfig.getInt(
CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT);
// Default index 0 indicates the default title/sumary string
CharSequence enhanced4glteModeTitle = mVariantTitles[0];
CharSequence enhanced4glteModeSummary = mVariantSumaries[0];
if (variant4glteTitleIndex >= 0 && variant4glteTitleIndex < mVariantTitles.length) {
enhanced4glteModeTitle = mVariantTitles[variant4glteTitleIndex];
}
if (variant4glteTitleIndex >= 0 && variant4glteTitleIndex < mVariantSumaries.length) {
enhanced4glteModeSummary = mVariantSumaries[variant4glteTitleIndex];
}
switchPreference.setTitle(enhanced4glteModeTitle);
switchPreference.setSummary(enhanced4glteModeSummary);
switchPreference.setEnabled(is4gLtePrefEnabled());
switchPreference.setChecked(mImsManager.isEnhanced4gLteModeSettingEnabledByUser()
&& mImsManager.isNonTtyOrTtyOnVolteEnabled());

View File

@@ -102,13 +102,27 @@ public class Enhanced4gLtePreferenceControllerTest {
}
@Test
public void updateState_variant4gLte_useVariantTitle() {
mCarrierConfig.putInt(CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT, 1);
public void updateState_variant4gLte_useVariantTitleAndSummary() {
mCarrierConfig.putInt(CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT, 0);
mController.updateState(mPreference);
assertThat(mPreference.getTitle()).isEqualTo(
mContext.getString(R.string.enhanced_4g_lte_mode_title_variant));
mContext.getString(R.string.enhanced_4g_lte_mode_title));
assertThat(mPreference.getSummary()).isEqualTo(
mContext.getString(R.string.enhanced_4g_lte_mode_summary));
mCarrierConfig.putInt(CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT, 1);
mController.updateState(mPreference);
assertThat(mPreference.getTitle()).isEqualTo(
mContext.getString(R.string.enhanced_4g_lte_mode_title_advanced_calling));
assertThat(mPreference.getSummary()).isEqualTo(
mContext.getString(R.string.enhanced_4g_lte_mode_summary));
mCarrierConfig.putInt(CarrierConfigManager.KEY_ENHANCED_4G_LTE_TITLE_VARIANT_INT, 2);
mController.updateState(mPreference);
assertThat(mPreference.getTitle()).isEqualTo(
mContext.getString(R.string.enhanced_4g_lte_mode_title_4g_calling));
assertThat(mPreference.getSummary()).isEqualTo(
mContext.getString(R.string.enhanced_4g_lte_mode_summary_4g_calling));
}
@Test