Loading Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,7 @@ android_library { "net-utils-framework-common", "settings-contextual-card-protos-lite", "settings-log-bridge-protos-lite", "settings-telephony-protos-lite", "contextualcards", "settings-logtags", "statslog-settings", Loading protos/Android.bp +9 −0 Original line number Diff line number Diff line Loading @@ -24,3 +24,12 @@ java_library_static { }, srcs: ["settings_log_bridge.proto"], } java_library_static { name: "settings-telephony-protos-lite", host_supported: true, proto: { type: "lite", }, srcs: ["network_mode_choices.proto"], } protos/network_mode_choices.proto 0 → 100644 +112 −0 Original line number Diff line number Diff line syntax = "proto2"; package com.android.settings.intelligence; option java_multiple_files = false; option java_package = "com.android.settings.network.telephony"; option java_outer_classname = "NetworkModeChoicesProto"; // EnabledNetworks is a list which tries to categorized the entries of popup menu // based on carrier network types available to the end user. // Next tag: 13 enum EnabledNetworks { // No EnabledNetworks specified. ENABLED_NETWORKS_UNSPECIFIED = 0; // For the case where either unsupported or unable to categorized properly. ENABLED_NETWORKS_UNKNOWN = 1; // For the case where CDMA is supported and LTE is not prioritized over // CDMA. ENABLED_NETWORKS_CDMA_CHOICES = 2; // For the case where CDMA is supported and LTE is not available. ENABLED_NETWORKS_CDMA_NO_LTE_CHOICES = 3; // For the case where CDMA is supported and LTE is available. ENABLED_NETWORKS_CDMA_ONLY_LTE_CHOICES = 4; // For the case where TDSCDMA is primary network type. ENABLED_NETWORKS_TDSCDMA_CHOICES = 5; // For the case where GSM and LTE options are removed from the menu. ENABLED_NETWORKS_EXCEPT_GSM_LTE_CHOICES = 6; // For the case where GSM and 4G options are removed from the menu. ENABLED_NETWORKS_EXCEPT_GSM_4G_CHOICES = 7; // For the case where GSM is removed from the menu, and both 4G/LTE are not an // option. ENABLED_NETWORKS_EXCEPT_GSM_CHOICES = 8; // For the case where LTE is disabled. ENABLED_NETWORKS_EXCEPT_LTE_CHOICES = 9; // For the case where GSM related carrier with 4G/LTE supported. ENABLED_NETWORKS_4G_CHOICES = 10; // For the case where GSM related carrier without 4G/LTE supported. ENABLED_NETWORKS_CHOICES = 11; // For the case where world mode is enabled. PREFERRED_NETWORK_MODE_CHOICES_WORLD_MODE = 12; } // A request for popup menu. // Next tag: 4 message UiOptions { // Mapping to popup menu categories. required EnabledNetworks type = 1; // Resource which provides a list of network type values for this popup menu. required int32 choices = 2; // Presentation format of a continuous popop menu entries. // Each format may contains any numbers of popop menu entries. // Next tag: 12 enum PresentFormat { // No PresentFormat specified. PRESENT_FORMAT_UNSPECIFIED = 0; // Append a CDMA 1x network option into popup menu. add1xEntry = 1; // Append a 2G network option into popup menu. add2gEntry = 2; // Append a 3G network option into popup menu. add3gEntry = 3; // Append a global mode option into popup menu. addGlobalEntry = 4; // Append a CDMA/LTE global mode option into popup menu. addWorldModeCdmaEntry = 5; // Append a GSM/LTE global mode option into popup menu. addWorldModeGsmEntry = 6; // Append a 4G network option into popup menu. add4gEntry = 7; // Append a LTE network option into popup menu. addLteEntry = 8; // Append a 5G network option into popup menu. add5gEntry = 9; // Append both 5G and 4G network options into popup menu. add5gAnd4gEntry = 10; // Append both 5G and LTE network options into popup menu. add5gAndLteEntry = 11; } // Format of popup menu entries. // The length of this entry need to be less than the network type values // referenced from "choices" field. repeated PresentFormat format = 3; } src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +110 −141 Original line number Diff line number Diff line Loading @@ -39,11 +39,14 @@ import com.android.settings.R; import com.android.settings.network.AllowedNetworkTypesListener; import com.android.settings.network.CarrierConfigCache; import com.android.settings.network.SubscriptionsChangeListener; import com.android.settings.network.telephony.NetworkModeChoicesProto.EnabledNetworks; import com.android.settings.network.telephony.NetworkModeChoicesProto.UiOptions; import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.IntStream; import java.util.stream.Stream; /** Loading Loading @@ -187,21 +190,6 @@ public class EnabledNetworkModePreferenceController extends } } enum EnabledNetworks { ENABLED_NETWORKS_UNKNOWN, ENABLED_NETWORKS_CDMA_CHOICES, ENABLED_NETWORKS_CDMA_NO_LTE_CHOICES, ENABLED_NETWORKS_CDMA_ONLY_LTE_CHOICES, ENABLED_NETWORKS_TDSCDMA_CHOICES, ENABLED_NETWORKS_EXCEPT_GSM_LTE_CHOICES, ENABLED_NETWORKS_EXCEPT_GSM_4G_CHOICES, ENABLED_NETWORKS_EXCEPT_GSM_CHOICES, ENABLED_NETWORKS_EXCEPT_LTE_CHOICES, ENABLED_NETWORKS_4G_CHOICES, ENABLED_NETWORKS_CHOICES, PREFERRED_NETWORK_MODE_CHOICES_WORLD_MODE } private final class PreferenceEntriesBuilder { private CarrierConfigCache mCarrierConfigCache; private Context mContext; Loading Loading @@ -256,163 +244,144 @@ public class EnabledNetworkModePreferenceController extends final boolean display2gOptions = carrierConfig .getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL); clearAllEntries(); String[] entryValues; int[] entryValuesInt; switch (getEnabledNetworkType()) { UiOptions.Builder uiOptions = UiOptions.newBuilder(); uiOptions.setType(getEnabledNetworkType()); switch (uiOptions.getType()) { case ENABLED_NETWORKS_CDMA_CHOICES: entryValues = getResourcesForSubId().getStringArray( R.array.enabled_networks_cdma_values); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 4) { throw new IllegalArgumentException( "ENABLED_NETWORKS_CDMA_CHOICES index error."); } add5gEntry(addNrToLteNetworkType(entryValuesInt[0])); addLteEntry(entryValuesInt[0]); add3gEntry(entryValuesInt[1]); if (display2gOptions) { add1xEntry(entryValuesInt[2]); } addGlobalEntry(entryValuesInt[3]); uiOptions = uiOptions .setChoices(R.array.enabled_networks_cdma_values) .addFormat(UiOptions.PresentFormat.add5gAndLteEntry) .addFormat(UiOptions.PresentFormat.add3gEntry) .addFormat(UiOptions.PresentFormat.add1xEntry) .addFormat(UiOptions.PresentFormat.addGlobalEntry); break; case ENABLED_NETWORKS_CDMA_NO_LTE_CHOICES: entryValues = getResourcesForSubId().getStringArray( R.array.enabled_networks_cdma_no_lte_values); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 2) { throw new IllegalArgumentException( "ENABLED_NETWORKS_CDMA_NO_LTE_CHOICES index error."); } add3gEntry(entryValuesInt[0]); if (display2gOptions) { add1xEntry(entryValuesInt[1]); } uiOptions = uiOptions .setChoices(R.array.enabled_networks_cdma_no_lte_values) .addFormat(UiOptions.PresentFormat.add3gEntry) .addFormat(UiOptions.PresentFormat.add1xEntry); break; case ENABLED_NETWORKS_CDMA_ONLY_LTE_CHOICES: entryValues = getResourcesForSubId().getStringArray( R.array.enabled_networks_cdma_only_lte_values); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 2) { throw new IllegalArgumentException( "ENABLED_NETWORKS_CDMA_ONLY_LTE_CHOICES index error."); } addLteEntry(entryValuesInt[0]); addGlobalEntry(entryValuesInt[1]); uiOptions = uiOptions .setChoices(R.array.enabled_networks_cdma_only_lte_values) .addFormat(UiOptions.PresentFormat.addLteEntry) .addFormat(UiOptions.PresentFormat.addGlobalEntry); break; case ENABLED_NETWORKS_TDSCDMA_CHOICES: entryValues = getResourcesForSubId().getStringArray( R.array.enabled_networks_tdscdma_values); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 3) { throw new IllegalArgumentException( "ENABLED_NETWORKS_TDSCDMA_CHOICES index error."); } add5gEntry(addNrToLteNetworkType(entryValuesInt[0])); addLteEntry(entryValuesInt[0]); add3gEntry(entryValuesInt[1]); if (display2gOptions) { add2gEntry(entryValuesInt[2]); } uiOptions = uiOptions .setChoices(R.array.enabled_networks_tdscdma_values) .addFormat(UiOptions.PresentFormat.add5gAndLteEntry) .addFormat(UiOptions.PresentFormat.add3gEntry) .addFormat(UiOptions.PresentFormat.add2gEntry); break; case ENABLED_NETWORKS_EXCEPT_GSM_LTE_CHOICES: entryValues = getResourcesForSubId().getStringArray( R.array.enabled_networks_except_gsm_lte_values); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 1) { throw new IllegalArgumentException( "ENABLED_NETWORKS_EXCEPT_GSM_LTE_CHOICES index error."); } add3gEntry(entryValuesInt[0]); uiOptions = uiOptions .setChoices(R.array.enabled_networks_except_gsm_lte_values) .addFormat(UiOptions.PresentFormat.add3gEntry); break; case ENABLED_NETWORKS_EXCEPT_GSM_4G_CHOICES: entryValues = getResourcesForSubId().getStringArray( R.array.enabled_networks_except_gsm_values); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 2) { throw new IllegalArgumentException( "ENABLED_NETWORKS_EXCEPT_GSM_4G_CHOICES index error."); } add5gEntry(addNrToLteNetworkType(entryValuesInt[0])); add4gEntry(entryValuesInt[0]); add3gEntry(entryValuesInt[1]); uiOptions = uiOptions .setChoices(R.array.enabled_networks_except_gsm_values) .addFormat(UiOptions.PresentFormat.add5gAnd4gEntry) .addFormat(UiOptions.PresentFormat.add3gEntry); break; case ENABLED_NETWORKS_EXCEPT_GSM_CHOICES: entryValues = getResourcesForSubId().getStringArray( R.array.enabled_networks_except_gsm_values); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 2) { throw new IllegalArgumentException( "ENABLED_NETWORKS_EXCEPT_GSM_CHOICES index error."); } add5gEntry(addNrToLteNetworkType(entryValuesInt[0])); addLteEntry(entryValuesInt[0]); add3gEntry(entryValuesInt[1]); uiOptions = uiOptions .setChoices(R.array.enabled_networks_except_gsm_values) .addFormat(UiOptions.PresentFormat.add5gAndLteEntry) .addFormat(UiOptions.PresentFormat.add3gEntry); break; case ENABLED_NETWORKS_EXCEPT_LTE_CHOICES: entryValues = getResourcesForSubId().getStringArray( R.array.enabled_networks_except_lte_values); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 2) { throw new IllegalArgumentException( "ENABLED_NETWORKS_EXCEPT_LTE_CHOICES index error."); } add3gEntry(entryValuesInt[0]); if (carrierConfig.getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL)) { add2gEntry(entryValuesInt[1]); } uiOptions = uiOptions .setChoices(R.array.enabled_networks_except_lte_values) .addFormat(UiOptions.PresentFormat.add3gEntry) .addFormat(UiOptions.PresentFormat.add2gEntry); break; case ENABLED_NETWORKS_4G_CHOICES: entryValues = getResourcesForSubId().getStringArray( R.array.enabled_networks_values); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 3) { uiOptions = uiOptions .setChoices(R.array.enabled_networks_values) .addFormat(UiOptions.PresentFormat.add5gAnd4gEntry) .addFormat(UiOptions.PresentFormat.add3gEntry) .addFormat(UiOptions.PresentFormat.add2gEntry); break; case ENABLED_NETWORKS_CHOICES: uiOptions = uiOptions .setChoices(R.array.enabled_networks_values) .addFormat(UiOptions.PresentFormat.add5gAndLteEntry) .addFormat(UiOptions.PresentFormat.add3gEntry) .addFormat(UiOptions.PresentFormat.add2gEntry); break; case PREFERRED_NETWORK_MODE_CHOICES_WORLD_MODE: uiOptions = uiOptions .setChoices(R.array.preferred_network_mode_values_world_mode) .addFormat(UiOptions.PresentFormat.addGlobalEntry) .addFormat(UiOptions.PresentFormat.addWorldModeCdmaEntry) .addFormat(UiOptions.PresentFormat.addWorldModeGsmEntry); break; default: throw new IllegalArgumentException("Not supported enabled network types."); } String[] entryValues = getResourcesForSubId().getStringArray(uiOptions.getChoices()); final int[] entryValuesInt = Stream.of(entryValues) .mapToInt(Integer::parseInt).toArray(); final List<UiOptions.PresentFormat> formatList = uiOptions.getFormatList(); if (entryValuesInt.length < formatList.size()) { throw new IllegalArgumentException( "ENABLED_NETWORKS_4G_CHOICES index error."); uiOptions.getType().name() + " index error."); } add5gEntry(addNrToLteNetworkType( entryValuesInt[0])); add4gEntry(entryValuesInt[0]); add3gEntry(entryValuesInt[1]); // Compose options based on given values and formats. IntStream.range(0, formatList.size()).forEach(entryIndex -> { switch (formatList.get(entryIndex)) { case add1xEntry: if (display2gOptions) { add2gEntry(entryValuesInt[2]); add1xEntry(entryValuesInt[entryIndex]); } break; case ENABLED_NETWORKS_CHOICES: entryValues = getResourcesForSubId().getStringArray( R.array.enabled_networks_values); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 3) { throw new IllegalArgumentException("ENABLED_NETWORKS_CHOICES index error."); } add5gEntry(addNrToLteNetworkType(entryValuesInt[0])); addLteEntry(entryValuesInt[0]); add3gEntry(entryValuesInt[1]); case add2gEntry: if (display2gOptions) { add2gEntry(entryValuesInt[2]); add2gEntry(entryValuesInt[entryIndex]); } break; case PREFERRED_NETWORK_MODE_CHOICES_WORLD_MODE: entryValues = getResourcesForSubId().getStringArray( R.array.preferred_network_mode_values_world_mode); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 3) { throw new IllegalArgumentException( "PREFERRED_NETWORK_MODE_CHOICES_WORLD_MODE index error."); } addGlobalEntry(entryValuesInt[0]); case add3gEntry: add3gEntry(entryValuesInt[entryIndex]); break; case addGlobalEntry: addGlobalEntry(entryValuesInt[entryIndex]); break; case addWorldModeCdmaEntry: addCustomEntry( getResourcesForSubId().getString( R.string.network_world_mode_cdma_lte), entryValuesInt[1]); entryValuesInt[entryIndex]); break; case addWorldModeGsmEntry: addCustomEntry( getResourcesForSubId().getString( R.string.network_world_mode_gsm_lte), entryValuesInt[2]); entryValuesInt[entryIndex]); break; case add4gEntry: add4gEntry(entryValuesInt[entryIndex]); break; case addLteEntry: addLteEntry(entryValuesInt[entryIndex]); break; case add5gEntry: add5gEntry(addNrToLteNetworkType(entryValuesInt[entryIndex])); break; case add5gAnd4gEntry: add5gEntry(addNrToLteNetworkType(entryValuesInt[entryIndex])); add4gEntry(entryValuesInt[entryIndex]); break; case add5gAndLteEntry: add5gEntry(addNrToLteNetworkType(entryValuesInt[entryIndex])); addLteEntry(entryValuesInt[entryIndex]); break; default: throw new IllegalArgumentException("Not supported enabled network types."); throw new IllegalArgumentException("Not supported ui options format."); } }); } private int getPreferredNetworkMode() { Loading tests/robotests/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ android_app { "jsr305", "settings-contextual-card-protos-lite", "settings-log-bridge-protos-lite", "settings-telephony-protos-lite", "contextualcards", "settings-logtags", "zxing-core-1.7", Loading Loading
Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,7 @@ android_library { "net-utils-framework-common", "settings-contextual-card-protos-lite", "settings-log-bridge-protos-lite", "settings-telephony-protos-lite", "contextualcards", "settings-logtags", "statslog-settings", Loading
protos/Android.bp +9 −0 Original line number Diff line number Diff line Loading @@ -24,3 +24,12 @@ java_library_static { }, srcs: ["settings_log_bridge.proto"], } java_library_static { name: "settings-telephony-protos-lite", host_supported: true, proto: { type: "lite", }, srcs: ["network_mode_choices.proto"], }
protos/network_mode_choices.proto 0 → 100644 +112 −0 Original line number Diff line number Diff line syntax = "proto2"; package com.android.settings.intelligence; option java_multiple_files = false; option java_package = "com.android.settings.network.telephony"; option java_outer_classname = "NetworkModeChoicesProto"; // EnabledNetworks is a list which tries to categorized the entries of popup menu // based on carrier network types available to the end user. // Next tag: 13 enum EnabledNetworks { // No EnabledNetworks specified. ENABLED_NETWORKS_UNSPECIFIED = 0; // For the case where either unsupported or unable to categorized properly. ENABLED_NETWORKS_UNKNOWN = 1; // For the case where CDMA is supported and LTE is not prioritized over // CDMA. ENABLED_NETWORKS_CDMA_CHOICES = 2; // For the case where CDMA is supported and LTE is not available. ENABLED_NETWORKS_CDMA_NO_LTE_CHOICES = 3; // For the case where CDMA is supported and LTE is available. ENABLED_NETWORKS_CDMA_ONLY_LTE_CHOICES = 4; // For the case where TDSCDMA is primary network type. ENABLED_NETWORKS_TDSCDMA_CHOICES = 5; // For the case where GSM and LTE options are removed from the menu. ENABLED_NETWORKS_EXCEPT_GSM_LTE_CHOICES = 6; // For the case where GSM and 4G options are removed from the menu. ENABLED_NETWORKS_EXCEPT_GSM_4G_CHOICES = 7; // For the case where GSM is removed from the menu, and both 4G/LTE are not an // option. ENABLED_NETWORKS_EXCEPT_GSM_CHOICES = 8; // For the case where LTE is disabled. ENABLED_NETWORKS_EXCEPT_LTE_CHOICES = 9; // For the case where GSM related carrier with 4G/LTE supported. ENABLED_NETWORKS_4G_CHOICES = 10; // For the case where GSM related carrier without 4G/LTE supported. ENABLED_NETWORKS_CHOICES = 11; // For the case where world mode is enabled. PREFERRED_NETWORK_MODE_CHOICES_WORLD_MODE = 12; } // A request for popup menu. // Next tag: 4 message UiOptions { // Mapping to popup menu categories. required EnabledNetworks type = 1; // Resource which provides a list of network type values for this popup menu. required int32 choices = 2; // Presentation format of a continuous popop menu entries. // Each format may contains any numbers of popop menu entries. // Next tag: 12 enum PresentFormat { // No PresentFormat specified. PRESENT_FORMAT_UNSPECIFIED = 0; // Append a CDMA 1x network option into popup menu. add1xEntry = 1; // Append a 2G network option into popup menu. add2gEntry = 2; // Append a 3G network option into popup menu. add3gEntry = 3; // Append a global mode option into popup menu. addGlobalEntry = 4; // Append a CDMA/LTE global mode option into popup menu. addWorldModeCdmaEntry = 5; // Append a GSM/LTE global mode option into popup menu. addWorldModeGsmEntry = 6; // Append a 4G network option into popup menu. add4gEntry = 7; // Append a LTE network option into popup menu. addLteEntry = 8; // Append a 5G network option into popup menu. add5gEntry = 9; // Append both 5G and 4G network options into popup menu. add5gAnd4gEntry = 10; // Append both 5G and LTE network options into popup menu. add5gAndLteEntry = 11; } // Format of popup menu entries. // The length of this entry need to be less than the network type values // referenced from "choices" field. repeated PresentFormat format = 3; }
src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +110 −141 Original line number Diff line number Diff line Loading @@ -39,11 +39,14 @@ import com.android.settings.R; import com.android.settings.network.AllowedNetworkTypesListener; import com.android.settings.network.CarrierConfigCache; import com.android.settings.network.SubscriptionsChangeListener; import com.android.settings.network.telephony.NetworkModeChoicesProto.EnabledNetworks; import com.android.settings.network.telephony.NetworkModeChoicesProto.UiOptions; import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.IntStream; import java.util.stream.Stream; /** Loading Loading @@ -187,21 +190,6 @@ public class EnabledNetworkModePreferenceController extends } } enum EnabledNetworks { ENABLED_NETWORKS_UNKNOWN, ENABLED_NETWORKS_CDMA_CHOICES, ENABLED_NETWORKS_CDMA_NO_LTE_CHOICES, ENABLED_NETWORKS_CDMA_ONLY_LTE_CHOICES, ENABLED_NETWORKS_TDSCDMA_CHOICES, ENABLED_NETWORKS_EXCEPT_GSM_LTE_CHOICES, ENABLED_NETWORKS_EXCEPT_GSM_4G_CHOICES, ENABLED_NETWORKS_EXCEPT_GSM_CHOICES, ENABLED_NETWORKS_EXCEPT_LTE_CHOICES, ENABLED_NETWORKS_4G_CHOICES, ENABLED_NETWORKS_CHOICES, PREFERRED_NETWORK_MODE_CHOICES_WORLD_MODE } private final class PreferenceEntriesBuilder { private CarrierConfigCache mCarrierConfigCache; private Context mContext; Loading Loading @@ -256,163 +244,144 @@ public class EnabledNetworkModePreferenceController extends final boolean display2gOptions = carrierConfig .getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL); clearAllEntries(); String[] entryValues; int[] entryValuesInt; switch (getEnabledNetworkType()) { UiOptions.Builder uiOptions = UiOptions.newBuilder(); uiOptions.setType(getEnabledNetworkType()); switch (uiOptions.getType()) { case ENABLED_NETWORKS_CDMA_CHOICES: entryValues = getResourcesForSubId().getStringArray( R.array.enabled_networks_cdma_values); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 4) { throw new IllegalArgumentException( "ENABLED_NETWORKS_CDMA_CHOICES index error."); } add5gEntry(addNrToLteNetworkType(entryValuesInt[0])); addLteEntry(entryValuesInt[0]); add3gEntry(entryValuesInt[1]); if (display2gOptions) { add1xEntry(entryValuesInt[2]); } addGlobalEntry(entryValuesInt[3]); uiOptions = uiOptions .setChoices(R.array.enabled_networks_cdma_values) .addFormat(UiOptions.PresentFormat.add5gAndLteEntry) .addFormat(UiOptions.PresentFormat.add3gEntry) .addFormat(UiOptions.PresentFormat.add1xEntry) .addFormat(UiOptions.PresentFormat.addGlobalEntry); break; case ENABLED_NETWORKS_CDMA_NO_LTE_CHOICES: entryValues = getResourcesForSubId().getStringArray( R.array.enabled_networks_cdma_no_lte_values); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 2) { throw new IllegalArgumentException( "ENABLED_NETWORKS_CDMA_NO_LTE_CHOICES index error."); } add3gEntry(entryValuesInt[0]); if (display2gOptions) { add1xEntry(entryValuesInt[1]); } uiOptions = uiOptions .setChoices(R.array.enabled_networks_cdma_no_lte_values) .addFormat(UiOptions.PresentFormat.add3gEntry) .addFormat(UiOptions.PresentFormat.add1xEntry); break; case ENABLED_NETWORKS_CDMA_ONLY_LTE_CHOICES: entryValues = getResourcesForSubId().getStringArray( R.array.enabled_networks_cdma_only_lte_values); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 2) { throw new IllegalArgumentException( "ENABLED_NETWORKS_CDMA_ONLY_LTE_CHOICES index error."); } addLteEntry(entryValuesInt[0]); addGlobalEntry(entryValuesInt[1]); uiOptions = uiOptions .setChoices(R.array.enabled_networks_cdma_only_lte_values) .addFormat(UiOptions.PresentFormat.addLteEntry) .addFormat(UiOptions.PresentFormat.addGlobalEntry); break; case ENABLED_NETWORKS_TDSCDMA_CHOICES: entryValues = getResourcesForSubId().getStringArray( R.array.enabled_networks_tdscdma_values); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 3) { throw new IllegalArgumentException( "ENABLED_NETWORKS_TDSCDMA_CHOICES index error."); } add5gEntry(addNrToLteNetworkType(entryValuesInt[0])); addLteEntry(entryValuesInt[0]); add3gEntry(entryValuesInt[1]); if (display2gOptions) { add2gEntry(entryValuesInt[2]); } uiOptions = uiOptions .setChoices(R.array.enabled_networks_tdscdma_values) .addFormat(UiOptions.PresentFormat.add5gAndLteEntry) .addFormat(UiOptions.PresentFormat.add3gEntry) .addFormat(UiOptions.PresentFormat.add2gEntry); break; case ENABLED_NETWORKS_EXCEPT_GSM_LTE_CHOICES: entryValues = getResourcesForSubId().getStringArray( R.array.enabled_networks_except_gsm_lte_values); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 1) { throw new IllegalArgumentException( "ENABLED_NETWORKS_EXCEPT_GSM_LTE_CHOICES index error."); } add3gEntry(entryValuesInt[0]); uiOptions = uiOptions .setChoices(R.array.enabled_networks_except_gsm_lte_values) .addFormat(UiOptions.PresentFormat.add3gEntry); break; case ENABLED_NETWORKS_EXCEPT_GSM_4G_CHOICES: entryValues = getResourcesForSubId().getStringArray( R.array.enabled_networks_except_gsm_values); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 2) { throw new IllegalArgumentException( "ENABLED_NETWORKS_EXCEPT_GSM_4G_CHOICES index error."); } add5gEntry(addNrToLteNetworkType(entryValuesInt[0])); add4gEntry(entryValuesInt[0]); add3gEntry(entryValuesInt[1]); uiOptions = uiOptions .setChoices(R.array.enabled_networks_except_gsm_values) .addFormat(UiOptions.PresentFormat.add5gAnd4gEntry) .addFormat(UiOptions.PresentFormat.add3gEntry); break; case ENABLED_NETWORKS_EXCEPT_GSM_CHOICES: entryValues = getResourcesForSubId().getStringArray( R.array.enabled_networks_except_gsm_values); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 2) { throw new IllegalArgumentException( "ENABLED_NETWORKS_EXCEPT_GSM_CHOICES index error."); } add5gEntry(addNrToLteNetworkType(entryValuesInt[0])); addLteEntry(entryValuesInt[0]); add3gEntry(entryValuesInt[1]); uiOptions = uiOptions .setChoices(R.array.enabled_networks_except_gsm_values) .addFormat(UiOptions.PresentFormat.add5gAndLteEntry) .addFormat(UiOptions.PresentFormat.add3gEntry); break; case ENABLED_NETWORKS_EXCEPT_LTE_CHOICES: entryValues = getResourcesForSubId().getStringArray( R.array.enabled_networks_except_lte_values); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 2) { throw new IllegalArgumentException( "ENABLED_NETWORKS_EXCEPT_LTE_CHOICES index error."); } add3gEntry(entryValuesInt[0]); if (carrierConfig.getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL)) { add2gEntry(entryValuesInt[1]); } uiOptions = uiOptions .setChoices(R.array.enabled_networks_except_lte_values) .addFormat(UiOptions.PresentFormat.add3gEntry) .addFormat(UiOptions.PresentFormat.add2gEntry); break; case ENABLED_NETWORKS_4G_CHOICES: entryValues = getResourcesForSubId().getStringArray( R.array.enabled_networks_values); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 3) { uiOptions = uiOptions .setChoices(R.array.enabled_networks_values) .addFormat(UiOptions.PresentFormat.add5gAnd4gEntry) .addFormat(UiOptions.PresentFormat.add3gEntry) .addFormat(UiOptions.PresentFormat.add2gEntry); break; case ENABLED_NETWORKS_CHOICES: uiOptions = uiOptions .setChoices(R.array.enabled_networks_values) .addFormat(UiOptions.PresentFormat.add5gAndLteEntry) .addFormat(UiOptions.PresentFormat.add3gEntry) .addFormat(UiOptions.PresentFormat.add2gEntry); break; case PREFERRED_NETWORK_MODE_CHOICES_WORLD_MODE: uiOptions = uiOptions .setChoices(R.array.preferred_network_mode_values_world_mode) .addFormat(UiOptions.PresentFormat.addGlobalEntry) .addFormat(UiOptions.PresentFormat.addWorldModeCdmaEntry) .addFormat(UiOptions.PresentFormat.addWorldModeGsmEntry); break; default: throw new IllegalArgumentException("Not supported enabled network types."); } String[] entryValues = getResourcesForSubId().getStringArray(uiOptions.getChoices()); final int[] entryValuesInt = Stream.of(entryValues) .mapToInt(Integer::parseInt).toArray(); final List<UiOptions.PresentFormat> formatList = uiOptions.getFormatList(); if (entryValuesInt.length < formatList.size()) { throw new IllegalArgumentException( "ENABLED_NETWORKS_4G_CHOICES index error."); uiOptions.getType().name() + " index error."); } add5gEntry(addNrToLteNetworkType( entryValuesInt[0])); add4gEntry(entryValuesInt[0]); add3gEntry(entryValuesInt[1]); // Compose options based on given values and formats. IntStream.range(0, formatList.size()).forEach(entryIndex -> { switch (formatList.get(entryIndex)) { case add1xEntry: if (display2gOptions) { add2gEntry(entryValuesInt[2]); add1xEntry(entryValuesInt[entryIndex]); } break; case ENABLED_NETWORKS_CHOICES: entryValues = getResourcesForSubId().getStringArray( R.array.enabled_networks_values); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 3) { throw new IllegalArgumentException("ENABLED_NETWORKS_CHOICES index error."); } add5gEntry(addNrToLteNetworkType(entryValuesInt[0])); addLteEntry(entryValuesInt[0]); add3gEntry(entryValuesInt[1]); case add2gEntry: if (display2gOptions) { add2gEntry(entryValuesInt[2]); add2gEntry(entryValuesInt[entryIndex]); } break; case PREFERRED_NETWORK_MODE_CHOICES_WORLD_MODE: entryValues = getResourcesForSubId().getStringArray( R.array.preferred_network_mode_values_world_mode); entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray(); if (entryValuesInt.length < 3) { throw new IllegalArgumentException( "PREFERRED_NETWORK_MODE_CHOICES_WORLD_MODE index error."); } addGlobalEntry(entryValuesInt[0]); case add3gEntry: add3gEntry(entryValuesInt[entryIndex]); break; case addGlobalEntry: addGlobalEntry(entryValuesInt[entryIndex]); break; case addWorldModeCdmaEntry: addCustomEntry( getResourcesForSubId().getString( R.string.network_world_mode_cdma_lte), entryValuesInt[1]); entryValuesInt[entryIndex]); break; case addWorldModeGsmEntry: addCustomEntry( getResourcesForSubId().getString( R.string.network_world_mode_gsm_lte), entryValuesInt[2]); entryValuesInt[entryIndex]); break; case add4gEntry: add4gEntry(entryValuesInt[entryIndex]); break; case addLteEntry: addLteEntry(entryValuesInt[entryIndex]); break; case add5gEntry: add5gEntry(addNrToLteNetworkType(entryValuesInt[entryIndex])); break; case add5gAnd4gEntry: add5gEntry(addNrToLteNetworkType(entryValuesInt[entryIndex])); add4gEntry(entryValuesInt[entryIndex]); break; case add5gAndLteEntry: add5gEntry(addNrToLteNetworkType(entryValuesInt[entryIndex])); addLteEntry(entryValuesInt[entryIndex]); break; default: throw new IllegalArgumentException("Not supported enabled network types."); throw new IllegalArgumentException("Not supported ui options format."); } }); } private int getPreferredNetworkMode() { Loading
tests/robotests/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ android_app { "jsr305", "settings-contextual-card-protos-lite", "settings-log-bridge-protos-lite", "settings-telephony-protos-lite", "contextualcards", "settings-logtags", "zxing-core-1.7", Loading