Loading packages/SystemUI/res/drawable/ic_5g_e_mobiledata.xml 0 → 100644 +31 −0 Original line number Diff line number Diff line <!-- Copyright (C) 2019 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. --> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:viewportWidth="22" android:viewportHeight="17" android:width="22dp" android:height="17dp"> <path android:fillColor="#FFFFFFFF" android:pathData="M1.22,8.49l0.43-4.96h4.33v1.17H2.67L2.44,7.41c0.41-0.29,0.85-0.43,1.33-0.43c0.77,0,1.38,0.3,1.83,0.9 s0.66,1.41,0.66,2.43c0,1.03-0.24,1.84-0.72,2.43s-1.14,0.88-1.98,0.88c-0.75,0-1.36-0.24-1.83-0.73s-0.74-1.16-0.81-2.02h1.13 c0.07,0.57,0.23,1,0.49,1.29c0.26,0.29,0.59,0.43,1.01,0.43c0.47,0,0.84-0.2,1.1-0.61c0.26-0.41,0.4-0.96,0.4-1.65 c0-0.65-0.14-1.18-0.43-1.59S3.96,8.11,3.47,8.11c-0.4,0-0.72,0.1-0.96,0.31L2.19,8.75L1.22,8.49z" /> <path android:fillColor="#FFFFFFFF" android:pathData="M14.14,12.24l-0.22,0.27c-0.63,0.73-1.55,1.1-2.76,1.1c-1.08,0-1.92-0.36-2.53-1.07c-0.61-0.71-0.93-1.72-0.94-3.02V7.56 c0-1.39,0.28-2.44,0.84-3.13c0.56-0.7,1.39-1.04,2.51-1.04c0.95,0,1.69,0.26,2.23,0.79c0.54,0.53,0.83,1.28,0.89,2.26h-1.25 c-0.05-0.62-0.22-1.1-0.52-1.45c-0.29-0.35-0.74-0.52-1.34-0.52c-0.72,0-1.24,0.23-1.57,0.7C9.14,5.63,8.96,6.37,8.95,7.4v2.03 c0,1,0.19,1.77,0.57,2.31c0.38,0.54,0.93,0.8,1.65,0.8c0.67,0,1.19-0.16,1.54-0.49l0.18-0.17V9.59h-1.82V8.52h3.07V12.24z" /> <path android:fillColor="#FFFFFFFF" android:pathData="M20.96,8.88h-3.52v3.53h4.1v1.07h-5.35V3.52h5.28V4.6h-4.03V7.8h3.52V8.88z" /> </vector> packages/SystemUI/res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -390,6 +390,9 @@ <!-- Content description of the data connection type LTE+. [CHAR LIMIT=NONE] --> <string name="data_connection_lte_plus">LTE+</string> <!-- Content description of the data connection type 5Ge. [CHAR LIMIT=NONE] --> <string name="data_connection_5ge" translate="false">5Ge</string> <!-- Content description of the data connection type 5G. [CHAR LIMIT=NONE] --> <string name="data_connection_5g" translate="false">5G</string> Loading packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java +39 −10 Original line number Diff line number Diff line Loading @@ -46,6 +46,8 @@ import com.android.systemui.statusbar.policy.NetworkControllerImpl.SubscriptionD import java.io.PrintWriter; import java.util.BitSet; import java.util.Objects; import java.util.regex.Matcher; import java.util.regex.Pattern; public class MobileSignalController extends SignalController< Loading @@ -72,6 +74,8 @@ public class MobileSignalController extends SignalController< private SignalStrength mSignalStrength; private MobileIconGroup mDefaultIcons; private Config mConfig; // Some specific carriers have 5GE network which is special LTE CA network. private static final int NETWORK_TYPE_LTE_CA_5GE = TelephonyManager.MAX_NETWORK_TYPE + 1; // TODO: Reduce number of vars passed in, if we have the NetworkController, probably don't // need listener lists anymore. Loading Loading @@ -235,6 +239,8 @@ public class MobileSignalController extends SignalController< TelephonyIcons.LTE_PLUS); } } mNetworkToIconLookup.put(NETWORK_TYPE_LTE_CA_5GE, TelephonyIcons.LTE_CA_5G_E); mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_IWLAN, TelephonyIcons.WFC); } Loading Loading @@ -400,6 +406,26 @@ public class MobileSignalController extends SignalController< } } private boolean isCarrierSpecificDataIcon() { if (mConfig.patternOfCarrierSpecificDataIcon == null || mConfig.patternOfCarrierSpecificDataIcon.length() == 0) { return false; } Pattern stringPattern = Pattern.compile(mConfig.patternOfCarrierSpecificDataIcon); String[] operatorNames = new String[]{mServiceState.getOperatorAlphaLongRaw(), mServiceState.getOperatorAlphaShortRaw()}; for (String opName : operatorNames) { if (!TextUtils.isEmpty(opName)) { Matcher matcher = stringPattern.matcher(opName); if (matcher.find()) { return true; } } } return false; } /** * Updates the network's name based on incoming spn and plmn. */ Loading Loading @@ -566,12 +592,8 @@ public class MobileSignalController extends SignalController< + " dataState=" + state.getDataRegState()); } mServiceState = state; if (state != null) { mDataNetType = state.getDataNetworkType(); if (mDataNetType == TelephonyManager.NETWORK_TYPE_LTE && mServiceState != null && mServiceState.isUsingCarrierAggregation()) { mDataNetType = TelephonyManager.NETWORK_TYPE_LTE_CA; } if (mServiceState != null) { updateDataNetType(mServiceState.getDataNetworkType()); } updateTelephony(); } Loading @@ -583,12 +605,19 @@ public class MobileSignalController extends SignalController< + " type=" + networkType); } mDataState = state; updateDataNetType(networkType); updateTelephony(); } private void updateDataNetType(int networkType) { mDataNetType = networkType; if (mDataNetType == TelephonyManager.NETWORK_TYPE_LTE && mServiceState != null && mServiceState.isUsingCarrierAggregation()) { if (mDataNetType == TelephonyManager.NETWORK_TYPE_LTE) { if (isCarrierSpecificDataIcon()) { mDataNetType = NETWORK_TYPE_LTE_CA_5GE; } else if (mServiceState != null && mServiceState.isUsingCarrierAggregation()) { mDataNetType = TelephonyManager.NETWORK_TYPE_LTE_CA; } updateTelephony(); } } @Override Loading packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +3 −0 Original line number Diff line number Diff line Loading @@ -1084,6 +1084,7 @@ public class NetworkControllerImpl extends BroadcastReceiver boolean hspaDataDistinguishable; boolean inflateSignalStrengths = false; boolean alwaysShowDataRatIcon = false; public String patternOfCarrierSpecificDataIcon = ""; /** * Mapping from NR 5G status string to an integer. The NR 5G status string should match Loading Loading @@ -1122,6 +1123,8 @@ public class NetworkControllerImpl extends BroadcastReceiver CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL); config.hideLtePlus = b.getBoolean( CarrierConfigManager.KEY_HIDE_LTE_PLUS_DATA_ICON_BOOL); config.patternOfCarrierSpecificDataIcon = b.getString( CarrierConfigManager.KEY_SHOW_CARRIER_DATA_ICON_PATTERN_STRING); String nr5GIconConfiguration = b.getString(CarrierConfigManager.KEY_5G_ICON_CONFIGURATION_STRING); if (!TextUtils.isEmpty(nr5GIconConfiguration)) { Loading packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java +15 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ class TelephonyIcons { static final int ICON_3G = R.drawable.ic_3g_mobiledata; static final int ICON_4G = R.drawable.ic_4g_mobiledata; static final int ICON_4G_PLUS = R.drawable.ic_4g_plus_mobiledata; static final int ICON_5G_E = R.drawable.ic_5g_e_mobiledata; static final int ICON_1X = R.drawable.ic_1x_mobiledata; static final int ICON_5G = R.drawable.ic_5g_mobiledata; static final int ICON_5G_PLUS = R.drawable.ic_5g_plus_mobiledata; Loading Loading @@ -204,6 +205,19 @@ class TelephonyIcons { TelephonyIcons.ICON_LTE_PLUS, true); static final MobileIconGroup LTE_CA_5G_E = new MobileIconGroup( "5Ge", null, null, AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH, 0, 0, 0, 0, AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0], R.string.data_connection_5ge, TelephonyIcons.ICON_5G_E, true); static final MobileIconGroup NR_5G = new MobileIconGroup( "5G", null, Loading Loading @@ -260,6 +274,7 @@ class TelephonyIcons { ICON_NAME_TO_ICON.put("h+", H_PLUS); ICON_NAME_TO_ICON.put("4g", FOUR_G); ICON_NAME_TO_ICON.put("4g+", FOUR_G_PLUS); ICON_NAME_TO_ICON.put("5ge", LTE_CA_5G_E); ICON_NAME_TO_ICON.put("lte", LTE); ICON_NAME_TO_ICON.put("lte+", LTE_PLUS); ICON_NAME_TO_ICON.put("5g", NR_5G); Loading Loading
packages/SystemUI/res/drawable/ic_5g_e_mobiledata.xml 0 → 100644 +31 −0 Original line number Diff line number Diff line <!-- Copyright (C) 2019 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. --> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:viewportWidth="22" android:viewportHeight="17" android:width="22dp" android:height="17dp"> <path android:fillColor="#FFFFFFFF" android:pathData="M1.22,8.49l0.43-4.96h4.33v1.17H2.67L2.44,7.41c0.41-0.29,0.85-0.43,1.33-0.43c0.77,0,1.38,0.3,1.83,0.9 s0.66,1.41,0.66,2.43c0,1.03-0.24,1.84-0.72,2.43s-1.14,0.88-1.98,0.88c-0.75,0-1.36-0.24-1.83-0.73s-0.74-1.16-0.81-2.02h1.13 c0.07,0.57,0.23,1,0.49,1.29c0.26,0.29,0.59,0.43,1.01,0.43c0.47,0,0.84-0.2,1.1-0.61c0.26-0.41,0.4-0.96,0.4-1.65 c0-0.65-0.14-1.18-0.43-1.59S3.96,8.11,3.47,8.11c-0.4,0-0.72,0.1-0.96,0.31L2.19,8.75L1.22,8.49z" /> <path android:fillColor="#FFFFFFFF" android:pathData="M14.14,12.24l-0.22,0.27c-0.63,0.73-1.55,1.1-2.76,1.1c-1.08,0-1.92-0.36-2.53-1.07c-0.61-0.71-0.93-1.72-0.94-3.02V7.56 c0-1.39,0.28-2.44,0.84-3.13c0.56-0.7,1.39-1.04,2.51-1.04c0.95,0,1.69,0.26,2.23,0.79c0.54,0.53,0.83,1.28,0.89,2.26h-1.25 c-0.05-0.62-0.22-1.1-0.52-1.45c-0.29-0.35-0.74-0.52-1.34-0.52c-0.72,0-1.24,0.23-1.57,0.7C9.14,5.63,8.96,6.37,8.95,7.4v2.03 c0,1,0.19,1.77,0.57,2.31c0.38,0.54,0.93,0.8,1.65,0.8c0.67,0,1.19-0.16,1.54-0.49l0.18-0.17V9.59h-1.82V8.52h3.07V12.24z" /> <path android:fillColor="#FFFFFFFF" android:pathData="M20.96,8.88h-3.52v3.53h4.1v1.07h-5.35V3.52h5.28V4.6h-4.03V7.8h3.52V8.88z" /> </vector>
packages/SystemUI/res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -390,6 +390,9 @@ <!-- Content description of the data connection type LTE+. [CHAR LIMIT=NONE] --> <string name="data_connection_lte_plus">LTE+</string> <!-- Content description of the data connection type 5Ge. [CHAR LIMIT=NONE] --> <string name="data_connection_5ge" translate="false">5Ge</string> <!-- Content description of the data connection type 5G. [CHAR LIMIT=NONE] --> <string name="data_connection_5g" translate="false">5G</string> Loading
packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java +39 −10 Original line number Diff line number Diff line Loading @@ -46,6 +46,8 @@ import com.android.systemui.statusbar.policy.NetworkControllerImpl.SubscriptionD import java.io.PrintWriter; import java.util.BitSet; import java.util.Objects; import java.util.regex.Matcher; import java.util.regex.Pattern; public class MobileSignalController extends SignalController< Loading @@ -72,6 +74,8 @@ public class MobileSignalController extends SignalController< private SignalStrength mSignalStrength; private MobileIconGroup mDefaultIcons; private Config mConfig; // Some specific carriers have 5GE network which is special LTE CA network. private static final int NETWORK_TYPE_LTE_CA_5GE = TelephonyManager.MAX_NETWORK_TYPE + 1; // TODO: Reduce number of vars passed in, if we have the NetworkController, probably don't // need listener lists anymore. Loading Loading @@ -235,6 +239,8 @@ public class MobileSignalController extends SignalController< TelephonyIcons.LTE_PLUS); } } mNetworkToIconLookup.put(NETWORK_TYPE_LTE_CA_5GE, TelephonyIcons.LTE_CA_5G_E); mNetworkToIconLookup.put(TelephonyManager.NETWORK_TYPE_IWLAN, TelephonyIcons.WFC); } Loading Loading @@ -400,6 +406,26 @@ public class MobileSignalController extends SignalController< } } private boolean isCarrierSpecificDataIcon() { if (mConfig.patternOfCarrierSpecificDataIcon == null || mConfig.patternOfCarrierSpecificDataIcon.length() == 0) { return false; } Pattern stringPattern = Pattern.compile(mConfig.patternOfCarrierSpecificDataIcon); String[] operatorNames = new String[]{mServiceState.getOperatorAlphaLongRaw(), mServiceState.getOperatorAlphaShortRaw()}; for (String opName : operatorNames) { if (!TextUtils.isEmpty(opName)) { Matcher matcher = stringPattern.matcher(opName); if (matcher.find()) { return true; } } } return false; } /** * Updates the network's name based on incoming spn and plmn. */ Loading Loading @@ -566,12 +592,8 @@ public class MobileSignalController extends SignalController< + " dataState=" + state.getDataRegState()); } mServiceState = state; if (state != null) { mDataNetType = state.getDataNetworkType(); if (mDataNetType == TelephonyManager.NETWORK_TYPE_LTE && mServiceState != null && mServiceState.isUsingCarrierAggregation()) { mDataNetType = TelephonyManager.NETWORK_TYPE_LTE_CA; } if (mServiceState != null) { updateDataNetType(mServiceState.getDataNetworkType()); } updateTelephony(); } Loading @@ -583,12 +605,19 @@ public class MobileSignalController extends SignalController< + " type=" + networkType); } mDataState = state; updateDataNetType(networkType); updateTelephony(); } private void updateDataNetType(int networkType) { mDataNetType = networkType; if (mDataNetType == TelephonyManager.NETWORK_TYPE_LTE && mServiceState != null && mServiceState.isUsingCarrierAggregation()) { if (mDataNetType == TelephonyManager.NETWORK_TYPE_LTE) { if (isCarrierSpecificDataIcon()) { mDataNetType = NETWORK_TYPE_LTE_CA_5GE; } else if (mServiceState != null && mServiceState.isUsingCarrierAggregation()) { mDataNetType = TelephonyManager.NETWORK_TYPE_LTE_CA; } updateTelephony(); } } @Override Loading
packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +3 −0 Original line number Diff line number Diff line Loading @@ -1084,6 +1084,7 @@ public class NetworkControllerImpl extends BroadcastReceiver boolean hspaDataDistinguishable; boolean inflateSignalStrengths = false; boolean alwaysShowDataRatIcon = false; public String patternOfCarrierSpecificDataIcon = ""; /** * Mapping from NR 5G status string to an integer. The NR 5G status string should match Loading Loading @@ -1122,6 +1123,8 @@ public class NetworkControllerImpl extends BroadcastReceiver CarrierConfigManager.KEY_SHOW_4G_FOR_LTE_DATA_ICON_BOOL); config.hideLtePlus = b.getBoolean( CarrierConfigManager.KEY_HIDE_LTE_PLUS_DATA_ICON_BOOL); config.patternOfCarrierSpecificDataIcon = b.getString( CarrierConfigManager.KEY_SHOW_CARRIER_DATA_ICON_PATTERN_STRING); String nr5GIconConfiguration = b.getString(CarrierConfigManager.KEY_5G_ICON_CONFIGURATION_STRING); if (!TextUtils.isEmpty(nr5GIconConfiguration)) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java +15 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ class TelephonyIcons { static final int ICON_3G = R.drawable.ic_3g_mobiledata; static final int ICON_4G = R.drawable.ic_4g_mobiledata; static final int ICON_4G_PLUS = R.drawable.ic_4g_plus_mobiledata; static final int ICON_5G_E = R.drawable.ic_5g_e_mobiledata; static final int ICON_1X = R.drawable.ic_1x_mobiledata; static final int ICON_5G = R.drawable.ic_5g_mobiledata; static final int ICON_5G_PLUS = R.drawable.ic_5g_plus_mobiledata; Loading Loading @@ -204,6 +205,19 @@ class TelephonyIcons { TelephonyIcons.ICON_LTE_PLUS, true); static final MobileIconGroup LTE_CA_5G_E = new MobileIconGroup( "5Ge", null, null, AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH, 0, 0, 0, 0, AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0], R.string.data_connection_5ge, TelephonyIcons.ICON_5G_E, true); static final MobileIconGroup NR_5G = new MobileIconGroup( "5G", null, Loading Loading @@ -260,6 +274,7 @@ class TelephonyIcons { ICON_NAME_TO_ICON.put("h+", H_PLUS); ICON_NAME_TO_ICON.put("4g", FOUR_G); ICON_NAME_TO_ICON.put("4g+", FOUR_G_PLUS); ICON_NAME_TO_ICON.put("5ge", LTE_CA_5G_E); ICON_NAME_TO_ICON.put("lte", LTE); ICON_NAME_TO_ICON.put("lte+", LTE_PLUS); ICON_NAME_TO_ICON.put("5g", NR_5G); Loading