Merge "Add Emergency Uniform Resource Number (URN)"
am: e01a358b5b
Change-Id: I0c9f4182f8255ba0a6eeac501834ff26837cd357
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user