Merge "Add Emergency Uniform Resource Number (URN)"

This commit is contained in:
Amit Mahajan
2019-01-28 18:50:55 +00:00
committed by Gerrit Code Review
4 changed files with 71 additions and 3 deletions

View File

@@ -43352,6 +43352,7 @@ package android.telephony.emergency {
method public java.util.List<java.lang.Integer> getEmergencyNumberSources();
method public java.util.List<java.lang.Integer> getEmergencyServiceCategories();
method public int getEmergencyServiceCategoryBitmask();
method @NonNull public java.util.List<java.lang.String> getEmergencyUrns();
method public String getMnc();
method public String getNumber();
method public boolean isFromSources(int);

View File

@@ -6705,6 +6705,7 @@ package android.telephony.ims {
method public static int getCallTypeFromVideoState(int);
method public int getEmergencyCallRouting();
method public int getEmergencyServiceCategories();
method public java.util.List<java.lang.String> getEmergencyUrns();
method public android.telephony.ims.ImsStreamMediaProfile getMediaProfile();
method public int getRestrictCause();
method public int getServiceType();
@@ -6719,6 +6720,7 @@ package android.telephony.ims {
method public void setCallRestrictCause(int);
method public void setEmergencyCallRouting(int);
method public void setEmergencyServiceCategories(int);
method public void setEmergencyUrns(java.util.List<java.lang.String>);
method public void updateCallExtras(android.telephony.ims.ImsCallProfile);
method public void updateCallType(android.telephony.ims.ImsCallProfile);
method public void updateMediaProfile(android.telephony.ims.ImsCallProfile);

View File

@@ -232,18 +232,21 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
private final String mCountryIso;
private final String mMnc;
private final int mEmergencyServiceCategoryBitmask;
private final List<String> mEmergencyUrns;
private final int mEmergencyNumberSourceBitmask;
private final int mEmergencyCallRouting;
/** @hide */
public EmergencyNumber(@NonNull String number, @NonNull String countryIso, @NonNull String mnc,
@EmergencyServiceCategories int emergencyServiceCategories,
@NonNull List<String> emergencyUrns,
@EmergencyNumberSources int emergencyNumberSources,
@EmergencyCallRouting int emergencyCallRouting) {
this.mNumber = number;
this.mCountryIso = countryIso;
this.mMnc = mnc;
this.mEmergencyServiceCategoryBitmask = emergencyServiceCategories;
this.mEmergencyUrns = emergencyUrns;
this.mEmergencyNumberSourceBitmask = emergencyNumberSources;
this.mEmergencyCallRouting = emergencyCallRouting;
}
@@ -254,6 +257,7 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
mCountryIso = source.readString();
mMnc = source.readString();
mEmergencyServiceCategoryBitmask = source.readInt();
mEmergencyUrns = source.createStringArrayList();
mEmergencyNumberSourceBitmask = source.readInt();
mEmergencyCallRouting = source.readInt();
}
@@ -265,6 +269,7 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
dest.writeString(mCountryIso);
dest.writeString(mMnc);
dest.writeInt(mEmergencyServiceCategoryBitmask);
dest.writeStringList(mEmergencyUrns);
dest.writeInt(mEmergencyNumberSourceBitmask);
dest.writeInt(mEmergencyCallRouting);
}
@@ -344,6 +349,22 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
return categories;
}
/**
* Returns the list of emergency Uniform Resources Names (URN) of the emergency number.
*
* For example, {@code urn:service:sos} is the generic URN for contacting emergency services
* of all type.
*
* Reference: 3gpp 24.503, Section 5.1.6.8.1 - General;
* RFC 5031
*
* @return list of emergency Uniform Resources Names (URN) or an empty list if the emergency
* number does not have a specified emergency Uniform Resource Name.
*/
public @NonNull List<String> getEmergencyUrns() {
return mEmergencyUrns;
}
/**
* Checks if the emergency service category is unspecified for the emergency number
* {@link #EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED}.
@@ -434,6 +455,7 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
return "EmergencyNumber:" + "Number-" + mNumber + "|CountryIso-" + mCountryIso
+ "|Mnc-" + mMnc
+ "|ServiceCategories-" + Integer.toBinaryString(mEmergencyServiceCategoryBitmask)
+ "|Urns-" + mEmergencyUrns
+ "|Sources-" + Integer.toBinaryString(mEmergencyNumberSourceBitmask)
+ "|Routing-" + Integer.toBinaryString(mEmergencyCallRouting);
}
@@ -448,6 +470,7 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
&& mCountryIso.equals(other.mCountryIso)
&& mMnc.equals(other.mMnc)
&& mEmergencyServiceCategoryBitmask == other.mEmergencyServiceCategoryBitmask
&& mEmergencyUrns.equals(other.mEmergencyUrns)
&& mEmergencyNumberSourceBitmask == other.mEmergencyNumberSourceBitmask
&& mEmergencyCallRouting == other.mEmergencyCallRouting;
}
@@ -455,7 +478,7 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
@Override
public int hashCode() {
return Objects.hash(mNumber, mCountryIso, mMnc, mEmergencyServiceCategoryBitmask,
mEmergencyNumberSourceBitmask, mEmergencyCallRouting);
mEmergencyUrns, mEmergencyNumberSourceBitmask, mEmergencyCallRouting);
}
/**
@@ -584,6 +607,9 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
!= second.getEmergencyServiceCategoryBitmask()) {
return false;
}
if (first.getEmergencyUrns().equals(second.getEmergencyUrns())) {
return false;
}
if (first.getEmergencyCallRouting() != second.getEmergencyCallRouting()) {
return false;
}
@@ -605,6 +631,7 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
if (areSameEmergencyNumbers(first, second)) {
return new EmergencyNumber(first.getNumber(), first.getCountryIso(), first.getMnc(),
first.getEmergencyServiceCategoryBitmask(),
first.getEmergencyUrns(),
first.getEmergencyNumberSourceBitmask()
| second.getEmergencyNumberSourceBitmask(),
first.getEmergencyCallRouting());

View File

@@ -33,6 +33,8 @@ import com.android.internal.telephony.PhoneConstants;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.List;
/**
* Parcelable object to handle IMS call profile.
@@ -322,6 +324,15 @@ public final class ImsCallProfile implements Parcelable {
private @EmergencyServiceCategories int mEmergencyServiceCategories =
EmergencyNumber.EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED;
/**
* The emergency Uniform Resource Names (URN), only valid if {@link #getServiceType} returns
* {@link #SERVICE_TYPE_EMERGENCY}.
*
* Reference: 3gpp 24.503, Section 5.1.6.8.1 - General;
* 3gpp 22.101, Section 10 - Emergency Calls.
*/
private List<String> mEmergencyUrns = new ArrayList<>();
/**
* The emergency call routing, only valid if {@link #getServiceType} returns
* {@link #SERVICE_TYPE_EMERGENCY}
@@ -524,6 +535,7 @@ public final class ImsCallProfile implements Parcelable {
+ ", restrictCause=" + mRestrictCause
+ ", mediaProfile=" + mMediaProfile.toString()
+ ", emergencyServiceCategories=" + mEmergencyCallRouting
+ ", emergencyUrns=" + mEmergencyUrns
+ ", emergencyCallRouting=" + mEmergencyCallRouting + " }";
}
@@ -540,6 +552,7 @@ public final class ImsCallProfile implements Parcelable {
out.writeBundle(filteredExtras);
out.writeParcelable(mMediaProfile, 0);
out.writeInt(mEmergencyServiceCategories);
out.writeStringList(mEmergencyUrns);
out.writeInt(mEmergencyCallRouting);
}
@@ -549,6 +562,7 @@ public final class ImsCallProfile implements Parcelable {
mCallExtras = in.readBundle();
mMediaProfile = in.readParcelable(ImsStreamMediaProfile.class.getClassLoader());
mEmergencyServiceCategories = in.readInt();
mEmergencyUrns = in.createStringArrayList();
mEmergencyCallRouting = in.readInt();
}
@@ -760,20 +774,21 @@ public final class ImsCallProfile implements Parcelable {
}
/**
* Set the emergency service categories and emergency call routing. The set value is valid
* Set the emergency number information. The set value is valid
* only if {@link #getServiceType} returns {@link #SERVICE_TYPE_EMERGENCY}
*
* Reference: 3gpp 23.167, Section 6 - Functional description;
* 3gpp 24.503, Section 5.1.6.8.1 - General;
* 3gpp 22.101, Section 10 - Emergency Calls.
*
* @hide
*/
public void setEmergencyCallInfo(EmergencyNumber num) {
setEmergencyServiceCategories(num.getEmergencyServiceCategoryBitmask());
setEmergencyUrns(num.getEmergencyUrns());
setEmergencyCallRouting(num.getEmergencyCallRouting());
}
/**
* Set the emergency service categories. The set value is valid only if
* {@link #getServiceType} returns {@link #SERVICE_TYPE_EMERGENCY}
@@ -799,6 +814,18 @@ public final class ImsCallProfile implements Parcelable {
mEmergencyServiceCategories = emergencyServiceCategories;
}
/**
* Set the emergency Uniform Resource Names (URN), only valid if {@link #getServiceType}
* returns {@link #SERVICE_TYPE_EMERGENCY}.
*
* Reference: 3gpp 24.503, Section 5.1.6.8.1 - General;
* 3gpp 22.101, Section 10 - Emergency Calls.
*/
@VisibleForTesting
public void setEmergencyUrns(List<String> emergencyUrns) {
mEmergencyUrns = emergencyUrns;
}
/**
* Set the emergency call routing, only valid if {@link #getServiceType} returns
* {@link #SERVICE_TYPE_EMERGENCY}
@@ -840,6 +867,17 @@ public final class ImsCallProfile implements Parcelable {
return mEmergencyServiceCategories;
}
/**
* Get the emergency Uniform Resource Names (URN), only valid if {@link #getServiceType}
* returns {@link #SERVICE_TYPE_EMERGENCY}.
*
* Reference: 3gpp 24.503, Section 5.1.6.8.1 - General;
* 3gpp 22.101, Section 10 - Emergency Calls.
*/
public List<String> getEmergencyUrns() {
return mEmergencyUrns;
}
/**
* Get the emergency call routing, only valid if {@link #getServiceType} returns
* {@link #SERVICE_TYPE_EMERGENCY}