summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/current.txt37
-rw-r--r--telephony/java/android/telephony/PhoneCapability.java454
-rw-r--r--telephony/java/android/telephony/SimSlotCapability.java130
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java18
-rw-r--r--telephony/java/com/android/internal/telephony/ITelephony.aidl12
5 files changed, 68 insertions, 583 deletions
diff --git a/api/current.txt b/api/current.txt
index 7c80f5e9fb5a..ccdeb1c08074 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -47280,32 +47280,8 @@ package android.telephony {
public final class PhoneCapability implements android.os.Parcelable {
method public int describeContents();
- method @NonNull public java.util.List<java.lang.Integer> getBands(int);
- method @NonNull public java.util.List<java.util.List<java.lang.Long>> getConcurrentFeaturesSupport();
- method @NonNull public java.util.List<java.lang.String> getLogicalModemUuids();
- method public int getMaxActiveDedicatedBearers();
- method public int getMaxActiveInternetData();
- method public int getMaxActivePsVoice();
- method public long getPsDataConnectionLingerTimeMillis();
- method @NonNull public java.util.List<android.telephony.SimSlotCapability> getSimSlotCapabilities();
- method public long getSupportedRats();
- method public int getUeCategory(boolean, int);
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.telephony.PhoneCapability> CREATOR;
- field public static final long MODEM_FEATURE_3GPP2_REG = 1L; // 0x1L
- field public static final long MODEM_FEATURE_3GPP_REG = 2L; // 0x2L
- field public static final long MODEM_FEATURE_CDMA2000_EHRPD_REG = 4L; // 0x4L
- field public static final long MODEM_FEATURE_CSIM = 8192L; // 0x2000L
- field public static final long MODEM_FEATURE_CS_VOICE_SESSION = 512L; // 0x200L
- field public static final long MODEM_FEATURE_DEDICATED_BEARER = 2048L; // 0x800L
- field public static final long MODEM_FEATURE_EUTRAN_REG = 32L; // 0x20L
- field public static final long MODEM_FEATURE_EUTRA_NR_DUAL_CONNECTIVITY_REG = 128L; // 0x80L
- field public static final long MODEM_FEATURE_GERAN_REG = 8L; // 0x8L
- field public static final long MODEM_FEATURE_INTERACTIVE_DATA_SESSION = 1024L; // 0x400L
- field public static final long MODEM_FEATURE_NETWORK_SCAN = 4096L; // 0x1000L
- field public static final long MODEM_FEATURE_NGRAN_REG = 64L; // 0x40L
- field public static final long MODEM_FEATURE_PS_VOICE_REG = 256L; // 0x100L
- field public static final long MODEM_FEATURE_UTRAN_REG = 16L; // 0x10L
}
public class PhoneNumberFormattingTextWatcher implements android.text.TextWatcher {
@@ -47495,18 +47471,6 @@ package android.telephony {
field public static final int INVALID = 2147483647; // 0x7fffffff
}
- public final class SimSlotCapability implements android.os.Parcelable {
- method public int describeContents();
- method public int getPhysicalSlotIndex();
- method public int getSlotType();
- method public void writeToParcel(@NonNull android.os.Parcel, int);
- field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SimSlotCapability> CREATOR;
- field public static final int SLOT_TYPE_EUICC = 3; // 0x3
- field public static final int SLOT_TYPE_IUICC = 2; // 0x2
- field public static final int SLOT_TYPE_SOFT_SIM = 4; // 0x4
- field public static final int SLOT_TYPE_UICC = 1; // 0x1
- }
-
public final class SmsManager {
method public String createAppSpecificSmsToken(android.app.PendingIntent);
method @Nullable public String createAppSpecificSmsTokenWithPackageInfo(@Nullable String, @NonNull android.app.PendingIntent);
@@ -47863,7 +47827,6 @@ package android.telephony {
method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public int getNetworkSelectionMode();
method public String getNetworkSpecifier();
method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getNetworkType();
- method @Nullable @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public android.telephony.PhoneCapability getPhoneCapability();
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();
diff --git a/telephony/java/android/telephony/PhoneCapability.java b/telephony/java/android/telephony/PhoneCapability.java
index a53792802d92..6571858fc4ae 100644
--- a/telephony/java/android/telephony/PhoneCapability.java
+++ b/telephony/java/android/telephony/PhoneCapability.java
@@ -16,20 +16,12 @@
package android.telephony;
-import android.annotation.LongDef;
import android.annotation.NonNull;
-import android.annotation.Nullable;
import android.os.Parcel;
import android.os.Parcelable;
-import android.telephony.AccessNetworkConstants.AccessNetworkType;
-import android.telephony.AccessNetworkConstants.RadioAccessNetworkType;
-import android.telephony.TelephonyManager.NetworkTypeBitMask;
-import com.android.internal.telephony.util.TelephonyUtils;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Objects;
@@ -38,365 +30,69 @@ import java.util.Objects;
* are shared between those modems defined by list of modem IDs.
*/
public final class PhoneCapability implements Parcelable {
- /** Modem feature indicating 3GPP2 capability. */
- public static final long MODEM_FEATURE_3GPP2_REG = 1 << 0;
- /** Modem feature indicating 3GPP capability. */
- public static final long MODEM_FEATURE_3GPP_REG = 1 << 1;
- /** Modem feature indicating CDMA 2000 with EHRPD capability. */
- public static final long MODEM_FEATURE_CDMA2000_EHRPD_REG = 1 << 2;
- /** Modem feature indicating GSM capability. */
- public static final long MODEM_FEATURE_GERAN_REG = 1 << 3;
- /** Modem feature indicating UMTS capability. */
- public static final long MODEM_FEATURE_UTRAN_REG = 1 << 4;
- /** Modem feature indicating LTE capability. */
- public static final long MODEM_FEATURE_EUTRAN_REG = 1 << 5;
- /** Modem feature indicating 5G capability.*/
- public static final long MODEM_FEATURE_NGRAN_REG = 1 << 6;
- /** Modem feature indicating EN-DC capability. */
- public static final long MODEM_FEATURE_EUTRA_NR_DUAL_CONNECTIVITY_REG = 1 << 7;
- /** Modem feature indicating VoLTE capability (IMS registered). */
- public static final long MODEM_FEATURE_PS_VOICE_REG = 1 << 8;
- /** Modem feature indicating CS voice call capability. */
- public static final long MODEM_FEATURE_CS_VOICE_SESSION = 1 << 9;
- /** Modem feature indicating Internet connection capability. */
- public static final long MODEM_FEATURE_INTERACTIVE_DATA_SESSION = 1 << 10;
- /**
- * Modem feature indicating dedicated bearer capability.
- * For services that require a high level QoS (eg. VoLTE), the network can create
- * a dedicated bearer with the required QoS on top of an established default bearer.
- * This will provide a dedicated tunnel for one or more specific traffic types.
- */
- public static final long MODEM_FEATURE_DEDICATED_BEARER = 1 << 11;
- /** Modem feature indicating network scan capability. */
- public static final long MODEM_FEATURE_NETWORK_SCAN = 1 << 12;
- /** Modem feature indicating corresponding SIM has CDMA capability. */
- public static final long MODEM_FEATURE_CSIM = 1 << 13;
-
+ // Hardcoded default DSDS capability.
/** @hide */
- @LongDef(flag = true, prefix = {"MODEM_FEATURE_" }, value = {
- MODEM_FEATURE_3GPP2_REG,
- MODEM_FEATURE_3GPP_REG,
- MODEM_FEATURE_CDMA2000_EHRPD_REG,
- MODEM_FEATURE_GERAN_REG,
- MODEM_FEATURE_UTRAN_REG,
- MODEM_FEATURE_EUTRAN_REG,
- MODEM_FEATURE_NGRAN_REG,
- MODEM_FEATURE_EUTRA_NR_DUAL_CONNECTIVITY_REG,
- MODEM_FEATURE_PS_VOICE_REG,
- MODEM_FEATURE_CS_VOICE_SESSION,
- MODEM_FEATURE_INTERACTIVE_DATA_SESSION,
- MODEM_FEATURE_DEDICATED_BEARER,
- MODEM_FEATURE_NETWORK_SCAN,
- MODEM_FEATURE_CSIM,
- })
- @Retention(RetentionPolicy.SOURCE)
- public @interface ModemFeature {
- }
-
- /**
- * Hardcoded default DSDS capability.
- * @hide
- */
public static final PhoneCapability DEFAULT_DSDS_CAPABILITY;
- /**
- * Hardcoded default Single SIM single standby capability.
- * @hide
- */
+ // Hardcoded default Single SIM single standby capability.
+ /** @hide */
public static final PhoneCapability DEFAULT_SSSS_CAPABILITY;
static {
- List<List<Long>> capabilities = new ArrayList<>();
- List<Long> modem1 = new ArrayList<>();
- List<Long> modem2 = new ArrayList<>();
- modem1.add(MODEM_FEATURE_GERAN_REG | MODEM_FEATURE_UTRAN_REG | MODEM_FEATURE_EUTRAN_REG
- | MODEM_FEATURE_PS_VOICE_REG | MODEM_FEATURE_CS_VOICE_SESSION
- | MODEM_FEATURE_INTERACTIVE_DATA_SESSION | MODEM_FEATURE_DEDICATED_BEARER);
- modem2.add(MODEM_FEATURE_GERAN_REG | MODEM_FEATURE_UTRAN_REG | MODEM_FEATURE_EUTRAN_REG
- | MODEM_FEATURE_PS_VOICE_REG | MODEM_FEATURE_INTERACTIVE_DATA_SESSION
- | MODEM_FEATURE_DEDICATED_BEARER);
- capabilities.add(modem1);
- capabilities.add(modem2);
- List<String> uuids = new ArrayList<>();
- uuids.add("com.xxxx.lm0");
- uuids.add("com.xxxx.lm1");
- long rats = TelephonyManager.NETWORK_TYPE_BITMASK_GSM
- | TelephonyManager.NETWORK_TYPE_BITMASK_GPRS
- | TelephonyManager.NETWORK_TYPE_BITMASK_EDGE
- | TelephonyManager.NETWORK_TYPE_BITMASK_UMTS
- | TelephonyManager.NETWORK_TYPE_BITMASK_LTE;
- DEFAULT_DSDS_CAPABILITY = new PhoneCapability(0, 0, 0, 0, 0, rats, null, null, null, null,
- uuids, null, capabilities);
-
- capabilities = new ArrayList<>();
- capabilities.add(modem1);
- uuids = new ArrayList<>();
- uuids.add("com.xxxx.lm0");
- DEFAULT_SSSS_CAPABILITY = new PhoneCapability(0, 0, 0, 0, 0, rats, null, null, null, null,
- uuids, null, capabilities);
- }
+ ModemInfo modemInfo1 = new ModemInfo(0, 0, true, true);
+ ModemInfo modemInfo2 = new ModemInfo(1, 0, true, true);
- private final int mUtranUeCategoryDl;
- private final int mUtranUeCategoryUl;
- private final int mEutranUeCategoryDl;
- private final int mEutranUeCategoryUl;
- private final long mPsDataConnectionLingerTimeMillis;
- private final @NetworkTypeBitMask long mSupportedRats;
- private final List<Integer> mGeranBands;
- private final List<Integer> mUtranBands;
- private final List<Integer> mEutranBands;
- private final List<Integer> mNgranBands;
- private final List<String> mLogicalModemUuids;
- private final List<SimSlotCapability> mSimSlotCapabilities;
- private final @ModemFeature List<List<Long>> mConcurrentFeaturesSupport;
-
- /**
- * Default constructor to create a PhoneCapability object.
- * @param utranUeCategoryDl 3GPP UE category for UTRAN downlink.
- * @param utranUeCategoryUl 3GPP UE category for UTRAN uplink.
- * @param eutranUeCategoryDl 3GPP UE category for EUTRAN downlink.
- * @param eutranUeCategoryUl 3GPP UE category for EUTRAN uplink.
- * @param psDataConnectionLingerTimeMillis length of the grace period to allow a smooth
- * "handover" between data connections.
- * @param supportedRats all radio access technologies this phone is capable of supporting.
- * @param geranBands list of supported {@link AccessNetworkConstants.GeranBand}.
- * @param utranBands list of supported {@link AccessNetworkConstants.UtranBand}.
- * @param eutranBands list of supported {@link AccessNetworkConstants.EutranBand}.
- * @param ngranBands list of supported {@link AccessNetworkConstants.NgranBands}.
- * @param logicalModemUuids list of logical modem UUIDs, typically of the form
- * "com.xxxx.lmX", where X is the logical modem ID.
- * @param simSlotCapabilities list of {@link SimSlotCapability} for the device
- * @param concurrentFeaturesSupport list of list of concurrently supportable modem feature sets.
- * @hide
- */
- public PhoneCapability(int utranUeCategoryDl, int utranUeCategoryUl, int eutranUeCategoryDl,
- int eutranUeCategoryUl, long psDataConnectionLingerTimeMillis,
- @NetworkTypeBitMask long supportedRats, @Nullable List<Integer> geranBands,
- @Nullable List<Integer> utranBands, @Nullable List<Integer> eutranBands,
- @Nullable List<Integer> ngranBands, @Nullable List<String> logicalModemUuids,
- @Nullable List<SimSlotCapability> simSlotCapabilities,
- @Nullable @ModemFeature List<List<Long>> concurrentFeaturesSupport) {
- this.mUtranUeCategoryDl = utranUeCategoryDl;
- this.mUtranUeCategoryUl = utranUeCategoryUl;
- this.mEutranUeCategoryDl = eutranUeCategoryDl;
- this.mEutranUeCategoryUl = eutranUeCategoryUl;
- this.mPsDataConnectionLingerTimeMillis = psDataConnectionLingerTimeMillis;
- this.mSupportedRats = supportedRats;
- this.mGeranBands = TelephonyUtils.emptyIfNull(geranBands);
- this.mUtranBands = TelephonyUtils.emptyIfNull(utranBands);
- this.mEutranBands = TelephonyUtils.emptyIfNull(eutranBands);
- this.mNgranBands = TelephonyUtils.emptyIfNull(ngranBands);
- this.mLogicalModemUuids = TelephonyUtils.emptyIfNull(logicalModemUuids);
- this.mSimSlotCapabilities = TelephonyUtils.emptyIfNull(simSlotCapabilities);
- this.mConcurrentFeaturesSupport = TelephonyUtils.emptyIfNull(concurrentFeaturesSupport);
- }
+ List<ModemInfo> logicalModemList = new ArrayList<>();
+ logicalModemList.add(modemInfo1);
+ logicalModemList.add(modemInfo2);
+ DEFAULT_DSDS_CAPABILITY = new PhoneCapability(1, 1, 0, logicalModemList, false);
- private PhoneCapability(Parcel in) {
- mUtranUeCategoryDl = in.readInt();
- mUtranUeCategoryUl = in.readInt();
- mEutranUeCategoryDl = in.readInt();
- mEutranUeCategoryUl = in.readInt();
- mPsDataConnectionLingerTimeMillis = in.readLong();
- mSupportedRats = in.readLong();
- mGeranBands = new ArrayList<>();
- in.readList(mGeranBands, Integer.class.getClassLoader());
- mUtranBands = new ArrayList<>();
- in.readList(mUtranBands, Integer.class.getClassLoader());
- mEutranBands = new ArrayList<>();
- in.readList(mEutranBands, Integer.class.getClassLoader());
- mNgranBands = new ArrayList<>();
- in.readList(mNgranBands, Integer.class.getClassLoader());
- mLogicalModemUuids = in.createStringArrayList();
- mSimSlotCapabilities = in.createTypedArrayList(SimSlotCapability.CREATOR);
- int length = in.readInt();
- mConcurrentFeaturesSupport = new ArrayList<>();
- for (int i = 0; i < length; i++) {
- ArrayList<Long> feature = new ArrayList<>();
- in.readList(feature, Long.class.getClassLoader());
- mConcurrentFeaturesSupport.add(feature);
- }
+ logicalModemList = new ArrayList<>();
+ logicalModemList.add(modemInfo1);
+ DEFAULT_SSSS_CAPABILITY = new PhoneCapability(1, 1, 0, logicalModemList, false);
}
- /**
- * 3GPP UE category for a given Radio Access Network and direction.
- *
- * References are:
- * TS 25.306 Table 4.1a EUTRAN downlink
- * TS 25.306 Table 5.1a-2 EUTRAN uplink
- * TS 25.306 Table 5.1a UTRAN downlink
- * TS 25.306 Table 5.1g UTRAN uplink
- *
- * @param uplink true for uplink direction and false for downlink direction.
- * @param accessNetworkType accessNetworkType, defined in {@link AccessNetworkType}.
- * @return the UE category, or -1 if it is not supported.
- */
- public int getUeCategory(boolean uplink, @RadioAccessNetworkType int accessNetworkType) {
- if (uplink) {
- switch (accessNetworkType) {
- case AccessNetworkType.UTRAN: return mUtranUeCategoryUl;
- case AccessNetworkType.EUTRAN: return mEutranUeCategoryUl;
- default: return -1;
- }
- } else {
- switch (accessNetworkType) {
- case AccessNetworkType.UTRAN: return mUtranUeCategoryDl;
- case AccessNetworkType.EUTRAN: return mEutranUeCategoryDl;
- default: return -1;
- }
- }
- }
-
- /**
- * In cellular devices that support a greater number of logical modems than
- * Internet connections, some devices support a grace period to allow a smooth "handover"
- * between those connections. If that feature is supported, then this API will provide
- * the length of that grace period in milliseconds. If it is not supported, the default value
- * for the grace period is 0.
- * @return handover linger time in milliseconds, or 0 if it is not supported.
- */
- public long getPsDataConnectionLingerTimeMillis() {
- return mPsDataConnectionLingerTimeMillis;
- }
-
- /**
- * The radio access technologies this device is capable of supporting.
- * @return a bitfield of all supported network types, defined in {@link TelephonyManager}
- */
- public @NetworkTypeBitMask long getSupportedRats() {
- return mSupportedRats;
- }
-
- /**
- * List of supported cellular bands for the given accessNetworkType.
- * @param accessNetworkType accessNetworkType, defined in {@link AccessNetworkType}.
- * @return a list of bands, or an empty list if the access network type is unsupported.
- */
- public @NonNull List<Integer> getBands(@RadioAccessNetworkType int accessNetworkType) {
- switch (accessNetworkType) {
- case AccessNetworkType.GERAN: return mGeranBands;
- case AccessNetworkType.UTRAN: return mUtranBands;
- case AccessNetworkType.EUTRAN: return mEutranBands;
- case AccessNetworkType.NGRAN: return mNgranBands;
- default: return new ArrayList<>();
- }
- }
-
- /**
- * List of logical modem UUIDs, each typically "com.xxxx.lmX", where X is the logical modem ID.
- * @return a list of modem UUIDs, one for every logical modem the device has.
- */
- public @NonNull List<String> getLogicalModemUuids() {
- return mLogicalModemUuids;
- }
-
- /**
- * List of {@link SimSlotCapability} for the device. The order of SIMs corresponds to the
- * order of modems in {@link #getLogicalModemUuids}.
- * @return a list of SIM slot capabilities, one for every SIM slot the device has.
- */
- public @NonNull List<SimSlotCapability> getSimSlotCapabilities() {
- return mSimSlotCapabilities;
- }
-
- /**
- * A List of Lists of concurrently supportable modem feature sets.
- *
- * Each entry in the top-level list is an independent configuration across all modems
- * that describes the capabilities of the device as a whole.
- *
- * Each entry in the second-level list is a bitfield of ModemFeatures that describes
- * the capabilities for a single modem. In the second-level list, the order of the modems
- * corresponds to order of the UUIDs in {@link #getLogicalModemUuids}.
- *
- * For symmetric capabilities that can only be active on one modem at a time, there will be
- * multiple configurations (equal to the number of modems) that shows it active on each modem.
- * For asymmetric capabilities that are only available on one of the modems, all configurations
- * will have that capability on just that one modem.
- *
- * The example below shows the concurrentFeaturesSupport for a 3-modem device with
- * theoretical capabilities SYMMETRIC (available on all modems, but only one at a time) and
- * ASYMMETRIC (only available on the first modem):
- * {
- * Configuration 1: ASYMMETRIC and SYMMETRIC on modem 1, modem 2 empty, modem 3 empty
- * {(ASYMMETRIC | SYMMETRIC), (), ()},
- *
- * Configuration 2: ASYMMETRIC on modem 1, SYMMETRIC on modem 2, modem 3 empty
- * {(ASYMMETRIC), (SYMMETRIC), ()},
- *
- * Configuration 3: ASYMMETRIC on modem 1, modem 2 empty, SYMMETRIC on modem 3
- * {(ASYMMETRIC), (), (SYMMETRIC)}
- * }
- *
- * @return List of all concurrently supportable modem features.
- */
- public @NonNull @ModemFeature List<List<Long>> getConcurrentFeaturesSupport() {
- return mConcurrentFeaturesSupport;
- }
-
- /**
- * How many modems can simultaneously have PS attached.
- * @return maximum number of active PS voice connections.
- */
- public int getMaxActivePsVoice() {
- return countFeature(MODEM_FEATURE_PS_VOICE_REG);
- }
-
- /**
- * How many modems can simultaneously support active data connections.
- * For DSDS, this will be 1, and for DSDA this will be 2.
- * @return maximum number of active Internet data sessions.
- */
- public int getMaxActiveInternetData() {
- return countFeature(MODEM_FEATURE_INTERACTIVE_DATA_SESSION);
- }
-
- /**
- * How many modems can simultaneously have dedicated bearer capability.
- * @return maximum number of active dedicated bearers.
- */
- public int getMaxActiveDedicatedBearers() {
- return countFeature(MODEM_FEATURE_DEDICATED_BEARER);
- }
-
- /**
- * Whether the CBRS band 48 is supported or not.
- * @return true if any RadioAccessNetwork supports CBRS and false if none do.
- * @hide
- */
- public boolean isCbrsSupported() {
- return mEutranBands.contains(AccessNetworkConstants.EutranBand.BAND_48)
- || mNgranBands.contains(AccessNetworkConstants.NgranBands.BAND_48);
- }
+ /** @hide */
+ public final int maxActiveVoiceCalls;
+ /** @hide */
+ public final int maxActiveData;
+ /** @hide */
+ public final int max5G;
+ /** @hide */
+ public final boolean validationBeforeSwitchSupported;
+ /** @hide */
+ public final List<ModemInfo> logicalModemList;
- private int countFeature(@ModemFeature long feature) {
- int count = 0;
- for (long featureSet : mConcurrentFeaturesSupport.get(0)) {
- if ((featureSet & feature) != 0) {
- count++;
- }
- }
- return count;
+ /** @hide */
+ public PhoneCapability(int maxActiveVoiceCalls, int maxActiveData, int max5G,
+ List<ModemInfo> logicalModemList, boolean validationBeforeSwitchSupported) {
+ this.maxActiveVoiceCalls = maxActiveVoiceCalls;
+ this.maxActiveData = maxActiveData;
+ this.max5G = max5G;
+ // Make sure it's not null.
+ this.logicalModemList = logicalModemList == null ? new ArrayList<>() : logicalModemList;
+ this.validationBeforeSwitchSupported = validationBeforeSwitchSupported;
}
@Override
public String toString() {
- return "utranUeCategoryDl=" + mUtranUeCategoryDl
- + " utranUeCategoryUl=" + mUtranUeCategoryUl
- + " eutranUeCategoryDl=" + mEutranUeCategoryDl
- + " eutranUeCategoryUl=" + mEutranUeCategoryUl
- + " psDataConnectionLingerTimeMillis=" + mPsDataConnectionLingerTimeMillis
- + " supportedRats=" + mSupportedRats + " geranBands=" + mGeranBands
- + " utranBands=" + mUtranBands + " eutranBands=" + mEutranBands
- + " ngranBands=" + mNgranBands + " logicalModemUuids=" + mLogicalModemUuids
- + " simSlotCapabilities=" + mSimSlotCapabilities
- + " concurrentFeaturesSupport=" + mConcurrentFeaturesSupport;
+ return "maxActiveVoiceCalls=" + maxActiveVoiceCalls + " maxActiveData=" + maxActiveData
+ + " max5G=" + max5G + "logicalModemList:"
+ + Arrays.toString(logicalModemList.toArray());
+ }
+
+ private PhoneCapability(Parcel in) {
+ maxActiveVoiceCalls = in.readInt();
+ maxActiveData = in.readInt();
+ max5G = in.readInt();
+ validationBeforeSwitchSupported = in.readBoolean();
+ logicalModemList = new ArrayList<>();
+ in.readList(logicalModemList, ModemInfo.class.getClassLoader());
}
@Override
public int hashCode() {
- return Objects.hash(mUtranUeCategoryDl, mUtranUeCategoryUl, mEutranUeCategoryDl,
- mEutranUeCategoryUl, mPsDataConnectionLingerTimeMillis, mSupportedRats, mGeranBands,
- mUtranBands, mEutranBands, mNgranBands, mLogicalModemUuids, mSimSlotCapabilities,
- mConcurrentFeaturesSupport);
+ return Objects.hash(maxActiveVoiceCalls, maxActiveData, max5G, logicalModemList,
+ validationBeforeSwitchSupported);
}
@Override
@@ -411,19 +107,11 @@ public final class PhoneCapability implements Parcelable {
PhoneCapability s = (PhoneCapability) o;
- return (mUtranUeCategoryDl == s.mUtranUeCategoryDl
- && mUtranUeCategoryUl == s.mUtranUeCategoryUl
- && mEutranUeCategoryDl == s.mEutranUeCategoryDl
- && mEutranUeCategoryUl == s.mEutranUeCategoryUl
- && mPsDataConnectionLingerTimeMillis == s.mPsDataConnectionLingerTimeMillis
- && mSupportedRats == s.mSupportedRats
- && mGeranBands.equals(s.mGeranBands)
- && mUtranBands.equals(s.mUtranBands)
- && mEutranBands.equals(s.mEutranBands)
- && mNgranBands.equals(s.mNgranBands)
- && mLogicalModemUuids.equals(s.mLogicalModemUuids)
- && mSimSlotCapabilities.equals(s.mSimSlotCapabilities)
- && mConcurrentFeaturesSupport.equals(s.mConcurrentFeaturesSupport));
+ return (maxActiveVoiceCalls == s.maxActiveVoiceCalls
+ && maxActiveData == s.maxActiveData
+ && max5G == s.max5G
+ && validationBeforeSwitchSupported == s.validationBeforeSwitchSupported
+ && logicalModemList.equals(s.logicalModemList));
}
/**
@@ -436,33 +124,21 @@ public final class PhoneCapability implements Parcelable {
/**
* {@link Parcelable#writeToParcel}
*/
- public void writeToParcel(@NonNull Parcel dest, int flags) {
- dest.writeInt(mUtranUeCategoryDl);
- dest.writeInt(mUtranUeCategoryUl);
- dest.writeInt(mEutranUeCategoryDl);
- dest.writeInt(mEutranUeCategoryUl);
- dest.writeLong(mPsDataConnectionLingerTimeMillis);
- dest.writeLong(mSupportedRats);
- dest.writeList(mGeranBands);
- dest.writeList(mUtranBands);
- dest.writeList(mEutranBands);
- dest.writeList(mNgranBands);
- dest.writeStringList(mLogicalModemUuids);
- dest.writeTypedList(mSimSlotCapabilities);
- dest.writeInt(mConcurrentFeaturesSupport.size());
- for (List<Long> feature : mConcurrentFeaturesSupport) {
- dest.writeList(feature);
- }
+ public void writeToParcel(@NonNull Parcel dest, @Parcelable.WriteFlags int flags) {
+ dest.writeInt(maxActiveVoiceCalls);
+ dest.writeInt(maxActiveData);
+ dest.writeInt(max5G);
+ dest.writeBoolean(validationBeforeSwitchSupported);
+ dest.writeList(logicalModemList);
}
- public static final @NonNull Parcelable.Creator<PhoneCapability> CREATOR =
- new Parcelable.Creator() {
- public PhoneCapability createFromParcel(Parcel in) {
- return new PhoneCapability(in);
- }
+ public static final @android.annotation.NonNull Parcelable.Creator<PhoneCapability> CREATOR = new Parcelable.Creator() {
+ public PhoneCapability createFromParcel(Parcel in) {
+ return new PhoneCapability(in);
+ }
- public PhoneCapability[] newArray(int size) {
- return new PhoneCapability[size];
- }
- };
+ public PhoneCapability[] newArray(int size) {
+ return new PhoneCapability[size];
+ }
+ };
}
diff --git a/telephony/java/android/telephony/SimSlotCapability.java b/telephony/java/android/telephony/SimSlotCapability.java
deleted file mode 100644
index b4fef46725a4..000000000000
--- a/telephony/java/android/telephony/SimSlotCapability.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * 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.
- */
-
-package android.telephony;
-
-import android.annotation.IntDef;
-import android.annotation.NonNull;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.Objects;
-
-/**
- * Capabilities for a SIM Slot.
- */
-public final class SimSlotCapability implements Parcelable {
- /** Slot type for UICC (removable SIM). */
- public static final int SLOT_TYPE_UICC = 1;
- /** Slot type for iUICC/iSIM (integrated SIM). */
- public static final int SLOT_TYPE_IUICC = 2;
- /** Slot type for eUICC/eSIM (embedded SIM). */
- public static final int SLOT_TYPE_EUICC = 3;
- /** Slot type for soft SIM (no physical SIM). */
- public static final int SLOT_TYPE_SOFT_SIM = 4;
-
- /** @hide */
- @IntDef(prefix = {"SLOT_TYPE_" }, value = {
- SLOT_TYPE_UICC,
- SLOT_TYPE_IUICC,
- SLOT_TYPE_EUICC,
- SLOT_TYPE_SOFT_SIM,
- })
- @Retention(RetentionPolicy.SOURCE)
- public @interface SlotType {
- }
-
- private final int mPhysicalSlotIndex;
- private final int mSlotType;
-
- /** @hide */
- public SimSlotCapability(int physicalSlotId, int slotType) {
- this.mPhysicalSlotIndex = physicalSlotId;
- this.mSlotType = slotType;
- }
-
- private SimSlotCapability(Parcel in) {
- mPhysicalSlotIndex = in.readInt();
- mSlotType = in.readInt();
- }
-
- /**
- * @return physical SIM slot index
- */
- public int getPhysicalSlotIndex() {
- return mPhysicalSlotIndex;
- }
-
- /**
- * @return type of SIM {@link SlotType}
- */
- public @SlotType int getSlotType() {
- return mSlotType;
- }
-
- @Override
- public String toString() {
- return "mPhysicalSlotIndex=" + mPhysicalSlotIndex + " slotType=" + mSlotType;
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(mPhysicalSlotIndex, mSlotType);
- }
-
- @Override
- public boolean equals(Object o) {
- if (o == null || !(o instanceof SimSlotCapability) || hashCode() != o.hashCode()) {
- return false;
- }
-
- if (this == o) {
- return true;
- }
-
- SimSlotCapability s = (SimSlotCapability) o;
-
- return (mPhysicalSlotIndex == s.mPhysicalSlotIndex && mSlotType == s.mSlotType);
- }
-
- /**
- * {@link Parcelable#describeContents}
- */
- public int describeContents() {
- return 0;
- }
-
- /**
- * {@link Parcelable#writeToParcel}
- */
- public void writeToParcel(@NonNull Parcel dest, int flags) {
- dest.writeInt(mPhysicalSlotIndex);
- dest.writeInt(mSlotType);
- }
-
- public static final @NonNull Parcelable.Creator<SimSlotCapability> CREATOR =
- new Parcelable.Creator() {
- public SimSlotCapability createFromParcel(Parcel in) {
- return new SimSlotCapability(in);
- }
-
- public SimSlotCapability[] newArray(int size) {
- return new SimSlotCapability[size];
- }
- };
-}
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 68b6683e5426..a93bedcf9477 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -1877,24 +1877,6 @@ public class TelephonyManager {
//
/**
- * Returns the {@link PhoneCapability} for the device or null if it is not available.
- * <p>
- * Requires Permission: READ_PHONE_STATE or that the calling app has
- * carrier privileges (see {@link #hasCarrierPrivileges}).
- */
- @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
- @Nullable
- public PhoneCapability getPhoneCapability() {
- try {
- ITelephony telephony = getITelephony();
- return telephony == null ? null :
- telephony.getPhoneCapability(getSubId(), getOpPackageName(), getFeatureId());
- } catch (RemoteException ex) {
- return null;
- }
- }
-
- /**
* Returns the software version number for the device, for example,
* the IMEI/SV for GSM phones. Return null if the software version is
* not available.
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index 168c8b64c194..54f3c6a010a0 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -39,7 +39,6 @@ import android.telephony.ICellInfoCallback;
import android.telephony.ModemActivityInfo;
import android.telephony.NeighboringCellInfo;
import android.telephony.NetworkScanRequest;
-import android.telephony.PhoneCapability;
import android.telephony.PhoneNumberRange;
import android.telephony.RadioAccessFamily;
import android.telephony.RadioAccessSpecifier;
@@ -1899,17 +1898,12 @@ interface ITelephony {
/**
* Return the network selection mode on the subscription with id {@code subId}.
*/
- int getNetworkSelectionMode(int subId);
+ int getNetworkSelectionMode(int subId);
- /**
- * Return the PhoneCapability for the device.
- */
- PhoneCapability getPhoneCapability(int subId, String callingPackage, String callingFeatureId);
-
- /**
+ /**
* Return true if the device is in emergency sms mode, false otherwise.
*/
- boolean isInEmergencySmsMode();
+ boolean isInEmergencySmsMode();
/**
* Return the modem radio power state for slot index.