From 03bde886e5cfe06fcbced55b45d2b3d6fc5746ae Mon Sep 17 00:00:00 2001 From: sqian Date: Wed, 9 Jan 2019 19:10:58 -0800 Subject: Add Emergency Uniform Resource Number (URN) Test: Treehugger Bug: 112657134 Change-Id: I87537f7123910e9843207428eb3167a90a15b6df --- api/current.txt | 1 + api/system-current.txt | 2 ++ .../telephony/emergency/EmergencyNumber.java | 29 ++++++++++++++- .../java/android/telephony/ims/ImsCallProfile.java | 42 ++++++++++++++++++++-- 4 files changed, 71 insertions(+), 3 deletions(-) diff --git a/api/current.txt b/api/current.txt index 7e0c33cfb657..501f9c18c1f3 100644 --- a/api/current.txt +++ b/api/current.txt @@ -44853,6 +44853,7 @@ package android.telephony.emergency { method public java.util.List getEmergencyNumberSources(); method public java.util.List getEmergencyServiceCategories(); method public int getEmergencyServiceCategoryBitmask(); + method public java.util.List getEmergencyUrns(); method public java.lang.String getMnc(); method public java.lang.String getNumber(); method public boolean isFromSources(int); diff --git a/api/system-current.txt b/api/system-current.txt index cb1e96a2bc82..c7fc1a67fb9a 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -6846,6 +6846,7 @@ package android.telephony.ims { method public static int getCallTypeFromVideoState(int); method public int getEmergencyCallRouting(); method public int getEmergencyServiceCategories(); + method public java.util.List getEmergencyUrns(); method public android.telephony.ims.ImsStreamMediaProfile getMediaProfile(); method public int getRestrictCause(); method public int getServiceType(); @@ -6860,6 +6861,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); method public void updateCallExtras(android.telephony.ims.ImsCallProfile); method public void updateCallType(android.telephony.ims.ImsCallProfile); method public void updateMediaProfile(android.telephony.ims.ImsCallProfile); diff --git a/telephony/java/android/telephony/emergency/EmergencyNumber.java b/telephony/java/android/telephony/emergency/EmergencyNumber.java index a94b163ffd75..a5f56bbebd75 100644 --- a/telephony/java/android/telephony/emergency/EmergencyNumber.java +++ b/telephony/java/android/telephony/emergency/EmergencyNumber.java @@ -232,18 +232,21 @@ public final class EmergencyNumber implements Parcelable, Comparable 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 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 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 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 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 getEmergencyUrns() { + return mEmergencyUrns; + } + /** * Get the emergency call routing, only valid if {@link #getServiceType} returns * {@link #SERVICE_TYPE_EMERGENCY} -- cgit v1.2.3-59-g8ed1b