diff --git a/api/current.txt b/api/current.txt index 482a221ee80d3..5746403fd5419 100755 --- a/api/current.txt +++ b/api/current.txt @@ -42099,9 +42099,10 @@ package android.telephony { } public final class AvailableNetworkInfo implements android.os.Parcelable { - ctor public AvailableNetworkInfo(int, int, java.util.List); + ctor public AvailableNetworkInfo(int, int, @NonNull java.util.List, @NonNull java.util.List); method public int describeContents(); - method public java.util.List getMccMncs(); + method @NonNull public java.util.List getBands(); + method @NonNull public java.util.List getMccMncs(); method public int getPriority(); method public int getSubId(); method public void writeToParcel(android.os.Parcel, int); diff --git a/telephony/java/android/telephony/AvailableNetworkInfo.java b/telephony/java/android/telephony/AvailableNetworkInfo.java index b407b2a03bc47..8286e1e1712bc 100644 --- a/telephony/java/android/telephony/AvailableNetworkInfo.java +++ b/telephony/java/android/telephony/AvailableNetworkInfo.java @@ -16,6 +16,7 @@ package android.telephony; +import android.annotation.NonNull; import android.os.Parcel; import android.os.Parcelable; @@ -62,10 +63,21 @@ public final class AvailableNetworkInfo implements Parcelable { /** * Describes the List of PLMN ids (MCC-MNC) associated with mSubId. * If this entry is left empty, then the platform software will not scan the network - * to revalidate the input. + * to revalidate the input else platform will scan and verify specified PLMNs are available. */ private ArrayList mMccMncs; + /** + * Returns the frequency bands associated with the {@link #getMccMncs() MCC/MNCs}. + * Opportunistic network service will use these bands to scan. + * + * When no specific bands are specified (empty array or null) CBRS band (B48) will be + * used for network scan. + * + * See {@link AccessNetworkConstants} for details. + */ + private ArrayList mBands; + /** * Return subscription Id of the available network. * This value must be one of the entry retrieved from @@ -91,10 +103,20 @@ public final class AvailableNetworkInfo implements Parcelable { * to revalidate the input. * @return list of PLMN ids */ - public List getMccMncs() { + public @NonNull List getMccMncs() { return (List) mMccMncs.clone(); } + /** + * Returns the frequency bands that need to be scanned by opportunistic network service + * + * The returned value is defined in either of {@link AccessNetworkConstants.GeranBand}, + * {@link AccessNetworkConstants.UtranBand} and {@link AccessNetworkConstants.EutranBand} + */ + public @NonNull List getBands() { + return (List) mBands.clone(); + } + @Override public int describeContents() { return 0; @@ -105,6 +127,7 @@ public final class AvailableNetworkInfo implements Parcelable { dest.writeInt(mSubId); dest.writeInt(mPriority); dest.writeStringList(mMccMncs); + dest.writeList(mBands); } private AvailableNetworkInfo(Parcel in) { @@ -112,12 +135,16 @@ public final class AvailableNetworkInfo implements Parcelable { mPriority = in.readInt(); mMccMncs = new ArrayList<>(); in.readStringList(mMccMncs); + mBands = new ArrayList<>(); + in.readList(mBands, Integer.class.getClassLoader()); } - public AvailableNetworkInfo(int subId, int priority, List mccMncs) { + public AvailableNetworkInfo(int subId, int priority, @NonNull List mccMncs, + @NonNull List bands) { mSubId = subId; mPriority = priority; mMccMncs = new ArrayList(mccMncs); + mBands = new ArrayList(bands); } @Override @@ -135,14 +162,15 @@ public final class AvailableNetworkInfo implements Parcelable { } return (mSubId == ani.mSubId - && mPriority == ani.mPriority - && (((mMccMncs != null) - && mMccMncs.equals(ani.mMccMncs)))); + && mPriority == ani.mPriority + && (((mMccMncs != null) + && mMccMncs.equals(ani.mMccMncs))) + && mBands.equals(ani.mBands)); } @Override public int hashCode() { - return Objects.hash(mSubId, mPriority, mMccMncs); + return Objects.hash(mSubId, mPriority, mMccMncs, mBands); } public static final Parcelable.Creator CREATOR = @@ -161,9 +189,9 @@ public final class AvailableNetworkInfo implements Parcelable { @Override public String toString() { return ("AvailableNetworkInfo:" - + " mSubId: " + mSubId - + " mPriority: " + mPriority - + " mMccMncs: " + Arrays.toString(mMccMncs.toArray())); + + " mSubId: " + mSubId + + " mPriority: " + mPriority + + " mMccMncs: " + Arrays.toString(mMccMncs.toArray()) + + " mBands: " + Arrays.toString(mBands.toArray())); } } - diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 27720495bfc8a..22614a2be1924 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -10243,11 +10243,11 @@ public class TelephonyManager { /** * Update availability of a list of networks in the current location. * - * This api should be called by opportunistic network selection app to inform - * OpportunisticNetwork Service about the availability of a network at the current location. - * This information will be used by OpportunisticNetwork service to decide to attach to the - * network opportunistically. - * If an empty list is passed, it is assumed that no network is available. + * This api should be called to inform OpportunisticNetwork Service about the availability + * of a network at the current location. This information will be used by OpportunisticNetwork + * service to decide to attach to the network opportunistically. If an empty list is passed, + * it is assumed that no network is available and will result in disabling the modem stack + * to save power. * Requires that the calling app has carrier privileges on both primary and * secondary subscriptions (see {@link #hasCarrierPrivileges}), or has permission * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}.