From 32f799da523512000987433c214bc36d84146b60 Mon Sep 17 00:00:00 2001 From: Malcolm Chen Date: Tue, 8 Oct 2019 18:11:22 -0700 Subject: [PATCH] Rename and publicize getMaxPhoneCount; and deprecate getPhoneCount. To have better names reflecting what getPhoneCount / getMaxPhoneCount actually represent, we replace them with getActiveModemCount and getSupportedModemCount. As getPhoneCount is public API, we mark it as @Deprecated. Bug: 141388730 Test: build Change-Id: If086c50ae803b384691f709057bceeac2fc1d9d5 --- api/current.txt | 8 ++- .../keyguard/CarrierTextController.java | 2 +- .../keyguard/CarrierTextControllerTest.java | 2 +- .../com/android/server/TelephonyRegistry.java | 2 +- .../telephony/SubscriptionManager.java | 4 +- .../android/telephony/TelephonyManager.java | 61 +++++++++++++------ 6 files changed, 55 insertions(+), 24 deletions(-) diff --git a/api/current.txt b/api/current.txt index 8733aab02b004..a208e2d0a4ef6 100644 --- a/api/current.txt +++ b/api/current.txt @@ -45084,6 +45084,7 @@ package android.telephony { method @Nullable public android.telephony.TelephonyManager createForPhoneAccountHandle(android.telecom.PhoneAccountHandle); method public android.telephony.TelephonyManager createForSubscriptionId(int); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean doesSwitchMultiSimConfigTriggerReboot(); + method public int getActiveModemCount(); method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public java.util.List getAllCellInfo(); method public int getCallState(); method public int getCardIdForDefaultEuicc(); @@ -45116,7 +45117,7 @@ package android.telephony { method public String getNetworkOperatorName(); method public String getNetworkSpecifier(); method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getNetworkType(); - method public int getPhoneCount(); + method @Deprecated public int getPhoneCount(); method public int getPhoneType(); method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PHONE_STATE}) public int getPreferredOpportunisticDataSubscription(); method @RequiresPermission(allOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.ACCESS_COARSE_LOCATION}) public android.telephony.ServiceState getServiceState(); @@ -45132,6 +45133,7 @@ package android.telephony { method public int getSimState(); method public int getSimState(int); method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getSubscriberId(); + method public int getSupportedModemCount(); method @Nullable public String getTypeAllocationCode(); method @Nullable public String getTypeAllocationCode(int); method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") @NonNull public java.util.List getUiccCardsInfo(); @@ -45235,6 +45237,10 @@ package android.telephony { field public static final String EXTRA_SUBSCRIPTION_ID = "android.telephony.extra.SUBSCRIPTION_ID"; field public static final String EXTRA_VOICEMAIL_NUMBER = "android.telephony.extra.VOICEMAIL_NUMBER"; field public static final String METADATA_HIDE_VOICEMAIL_SETTINGS_MENU = "android.telephony.HIDE_VOICEMAIL_SETTINGS_MENU"; + field public static final int MODEM_COUNT_DUAL_MODEM = 2; // 0x2 + field public static final int MODEM_COUNT_NO_MODEM = 0; // 0x0 + field public static final int MODEM_COUNT_SINGLE_MODEM = 1; // 0x1 + field public static final int MODEM_COUNT_TRI_MODEM = 3; // 0x3 field public static final int MULTISIM_ALLOWED = 0; // 0x0 field public static final int MULTISIM_NOT_SUPPORTED_BY_CARRIER = 2; // 0x2 field public static final int MULTISIM_NOT_SUPPORTED_BY_HARDWARE = 1; // 0x1 diff --git a/packages/SystemUI/src/com/android/keyguard/CarrierTextController.java b/packages/SystemUI/src/com/android/keyguard/CarrierTextController.java index ef9538dbef38e..46b4c6b7d44c0 100644 --- a/packages/SystemUI/src/com/android/keyguard/CarrierTextController.java +++ b/packages/SystemUI/src/com/android/keyguard/CarrierTextController.java @@ -170,7 +170,7 @@ public class CarrierTextController { mSeparator = separator; mWakefulnessLifecycle = Dependency.get(WakefulnessLifecycle.class); mSimSlotsNumber = ((TelephonyManager) context.getSystemService( - Context.TELEPHONY_SERVICE)).getMaxPhoneCount(); + Context.TELEPHONY_SERVICE)).getSupportedModemCount(); mSimErrorState = new boolean[mSimSlotsNumber]; mMainHandler = Dependency.get(Dependency.MAIN_HANDLER); } diff --git a/packages/SystemUI/tests/src/com/android/keyguard/CarrierTextControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/CarrierTextControllerTest.java index 38537fdb00b10..1dd48634615bf 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/CarrierTextControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/CarrierTextControllerTest.java @@ -144,7 +144,7 @@ public class CarrierTextControllerTest extends SysuiTestCase { mCarrierTextCallbackInfo = new CarrierTextController.CarrierTextCallbackInfo("", new CharSequence[]{}, false, new int[]{}); - when(mTelephonyManager.getMaxPhoneCount()).thenReturn(3); + when(mTelephonyManager.getSupportedModemCount()).thenReturn(3); mCarrierTextController = new CarrierTextController(mContext, SEPARATOR, true, true); // This should not start listening on any of the real dependencies but will test that diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java index 0f8a3b54acc55..447ed59a775ef 100644 --- a/services/core/java/com/android/server/TelephonyRegistry.java +++ b/services/core/java/com/android/server/TelephonyRegistry.java @@ -385,7 +385,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { mContext = context; mBatteryStats = BatteryStatsService.getService(); - int numPhones = TelephonyManager.getDefault().getMaxPhoneCount(); + int numPhones = TelephonyManager.getDefault().getSupportedModemCount(); if (DBG) log("TelephonyRegistry: ctor numPhones=" + numPhones); mNumPhones = numPhones; mCallState = new int[numPhones]; diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java index 1b876575a7427..e288f25315af2 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -2101,13 +2101,13 @@ public class SubscriptionManager { /** @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) public static boolean isValidSlotIndex(int slotIndex) { - return slotIndex >= 0 && slotIndex < TelephonyManager.getDefault().getMaxPhoneCount(); + return slotIndex >= 0 && slotIndex < TelephonyManager.getDefault().getSupportedModemCount(); } /** @hide */ @UnsupportedAppUsage public static boolean isValidPhoneId(int phoneId) { - return phoneId >= 0 && phoneId < TelephonyManager.getDefault().getMaxPhoneCount(); + return phoneId >= 0 && phoneId < TelephonyManager.getDefault().getSupportedModemCount(); } /** @hide */ diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 66571e39394e5..667a9ceec2c44 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -65,7 +65,6 @@ import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; import android.telephony.Annotation.ApnType; import android.telephony.Annotation.CallState; -import android.telephony.Annotation.DataState; import android.telephony.Annotation.NetworkType; import android.telephony.Annotation.RadioPowerState; import android.telephony.Annotation.SimActivationState; @@ -282,6 +281,21 @@ public class TelephonyManager { UNKNOWN }; + /** @hide */ + @IntDef(prefix = {"MODEM_COUNT_"}, + value = { + MODEM_COUNT_NO_MODEM, + MODEM_COUNT_SINGLE_MODEM, + MODEM_COUNT_DUAL_MODEM, + MODEM_COUNT_TRI_MODEM + }) + public @interface ModemCount {} + + public static final int MODEM_COUNT_NO_MODEM = 0; + public static final int MODEM_COUNT_SINGLE_MODEM = 1; + public static final int MODEM_COUNT_DUAL_MODEM = 2; + public static final int MODEM_COUNT_TRI_MODEM = 3; + /** @hide */ @UnsupportedAppUsage public TelephonyManager(Context context) { @@ -359,12 +373,26 @@ public class TelephonyManager { /** * Returns the number of phones available. * Returns 0 if none of voice, sms, data is not supported - * Returns 1 for Single standby mode (Single SIM functionality) - * Returns 2 for Dual standby mode.(Dual SIM functionality) - * Returns 3 for Tri standby mode.(Tri SIM functionality) + * Returns 1 for Single standby mode (Single SIM functionality). + * Returns 2 for Dual standby mode (Dual SIM functionality). + * Returns 3 for Tri standby mode (Tri SIM functionality). + * @deprecated Use {@link #getActiveModemCount} instead. */ + @Deprecated public int getPhoneCount() { - int phoneCount = 1; + return getActiveModemCount(); + } + + /** + * Returns the number of logical modems currently configured to be activated. + * + * Returns 0 if none of voice, sms, data is not supported + * Returns 1 for Single standby mode (Single SIM functionality). + * Returns 2 for Dual standby mode (Dual SIM functionality). + * Returns 3 for Tri standby mode (Tri SIM functionality). + */ + public @ModemCount int getActiveModemCount() { + int modemCount = 1; switch (getMultiSimConfiguration()) { case UNKNOWN: ConnectivityManager cm = mContext == null ? null : (ConnectivityManager) mContext @@ -372,33 +400,30 @@ public class TelephonyManager { // check for voice and data support, 0 if not supported if (!isVoiceCapable() && !isSmsCapable() && cm != null && !cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)) { - phoneCount = 0; + modemCount = MODEM_COUNT_NO_MODEM; } else { - phoneCount = 1; + modemCount = MODEM_COUNT_SINGLE_MODEM; } break; case DSDS: case DSDA: - phoneCount = PhoneConstants.MAX_PHONE_COUNT_DUAL_SIM; + modemCount = MODEM_COUNT_DUAL_MODEM; break; case TSTS: - phoneCount = PhoneConstants.MAX_PHONE_COUNT_TRI_SIM; + modemCount = MODEM_COUNT_TRI_MODEM; break; } - return phoneCount; + return modemCount; } /** - * - * Return how many phone / logical modem can be active simultaneously, in terms of device + * Return how many logical modem can be potentially active simultaneously, in terms of hardware * capability. - * For example, for a dual-SIM capable device, it always returns 2, even if only one logical - * modem / SIM is active (aka in single SIM mode). - * - * TODO: b/139642279 publicize and rename. - * @hide + * It might return different value from {@link #getActiveModemCount}. For example, for a + * dual-SIM capable device operating in single SIM mode (only one logical modem is turned on), + * {@link #getActiveModemCount} returns 1 while this API returns 2. */ - public int getMaxPhoneCount() { + public @ModemCount int getSupportedModemCount() { // TODO: b/139642279 when turning on this feature, remove dependency of // PROPERTY_REBOOT_REQUIRED_ON_MODEM_CHANGE and always return result based on // PROPERTY_MAX_ACTIVE_MODEMS.