}
public final class AvailableNetworkInfo implements android.os.Parcelable {
- ctor public AvailableNetworkInfo(int, int, java.util.List<java.lang.String>);
+ ctor public AvailableNetworkInfo(int, int, @NonNull java.util.List<java.lang.String>, @NonNull java.util.List<java.lang.Integer>);
method public int describeContents();
- method public java.util.List<java.lang.String> getMccMncs();
+ method @NonNull public java.util.List<java.lang.Integer> getBands();
+ method @NonNull public java.util.List<java.lang.String> getMccMncs();
method public int getPriority();
method public int getSubId();
method public void writeToParcel(android.os.Parcel, int);
package android.telephony;
+import android.annotation.NonNull;
import android.os.Parcel;
import android.os.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<String> 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<Integer> mBands;
+
+ /**
* Return subscription Id of the available network.
* This value must be one of the entry retrieved from
* {@link SubscriptionManager#getOpportunisticSubscriptions}
* to revalidate the input.
* @return list of PLMN ids
*/
- public List<String> getMccMncs() {
+ public @NonNull List<String> getMccMncs() {
return (List<String>) 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<Integer> getBands() {
+ return (List<Integer>) mBands.clone();
+ }
+
@Override
public int describeContents() {
return 0;
dest.writeInt(mSubId);
dest.writeInt(mPriority);
dest.writeStringList(mMccMncs);
+ dest.writeList(mBands);
}
private AvailableNetworkInfo(Parcel in) {
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<String> mccMncs) {
+ public AvailableNetworkInfo(int subId, int priority, @NonNull List<String> mccMncs,
+ @NonNull List<Integer> bands) {
mSubId = subId;
mPriority = priority;
mMccMncs = new ArrayList<String>(mccMncs);
+ mBands = new ArrayList<Integer>(bands);
}
@Override
}
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<AvailableNetworkInfo> CREATOR =
@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()));
}
}
-
/**
* 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}.