diff options
| author | 2018-09-24 16:23:02 -0700 | |
|---|---|---|
| committer | 2018-09-24 16:23:02 -0700 | |
| commit | 2c52f8f90dc73fbbf5b0ecdddfd6389943bd3251 (patch) | |
| tree | dc9d9522e5b4a43d6ea14301d8b4dceca9832768 | |
| parent | bc75159db62cb6b7937d6321ff2ff754c8948881 (diff) | |
| parent | 6d400c735239e6a6cde2190f0c0ef17fce5d14fb (diff) | |
Merge "Add support for network identified emergency calls." am: 108349f8d6
am: 6d400c7352
Change-Id: Ieee230cf4a506f3489700c1f499392f1b4659ed2
| -rwxr-xr-x | api/current.txt | 1 | ||||
| -rw-r--r-- | api/system-current.txt | 2 | ||||
| -rw-r--r-- | telecomm/java/android/telecom/Call.java | 12 | ||||
| -rw-r--r-- | telecomm/java/android/telecom/Connection.java | 11 | ||||
| -rw-r--r-- | telecomm/java/android/telecom/TelecomManager.java | 21 | ||||
| -rw-r--r-- | telecomm/java/com/android/internal/telecom/ITelecomService.aidl | 5 | ||||
| -rw-r--r-- | telephony/java/android/telephony/ims/ImsCallProfile.java | 4 |
7 files changed, 54 insertions, 2 deletions
diff --git a/api/current.txt b/api/current.txt index a25461009e6d..aeb1b73db1f7 100755 --- a/api/current.txt +++ b/api/current.txt @@ -41035,6 +41035,7 @@ package android.telecom { field public static final int PROPERTY_HAS_CDMA_VOICE_PRIVACY = 128; // 0x80 field public static final int PROPERTY_HIGH_DEF_AUDIO = 16; // 0x10 field public static final int PROPERTY_IS_EXTERNAL_CALL = 64; // 0x40 + field public static final int PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL = 2048; // 0x800 field public static final int PROPERTY_RTT = 1024; // 0x400 field public static final int PROPERTY_SELF_MANAGED = 256; // 0x100 field public static final int PROPERTY_WIFI = 8; // 0x8 diff --git a/api/system-current.txt b/api/system-current.txt index e3f52a0f2d21..d4ad8fd45243 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -5048,6 +5048,7 @@ package android.telecom { method public deprecated android.content.ComponentName getDefaultPhoneApp(); method public java.util.List<android.telecom.PhoneAccountHandle> getPhoneAccountsForPackage(); method public java.util.List<android.telecom.PhoneAccountHandle> getPhoneAccountsSupportingScheme(java.lang.String); + method public boolean isInEmergencyCall(); method public boolean isRinging(); method public boolean isTtySupported(); field public static final java.lang.String EXTRA_CALL_BACK_INTENT = "android.telecom.extra.CALL_BACK_INTENT"; @@ -5630,6 +5631,7 @@ package android.telephony.ims { field public static final java.lang.String EXTRA_CODEC = "Codec"; field public static final java.lang.String EXTRA_DIALSTRING = "dialstring"; field public static final java.lang.String EXTRA_DISPLAY_TEXT = "DisplayText"; + field public static final java.lang.String EXTRA_E_CALL = "e_call"; field public static final java.lang.String EXTRA_IS_CALL_PULL = "CallPull"; field public static final java.lang.String EXTRA_OI = "oi"; field public static final java.lang.String EXTRA_OIR = "oir"; diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java index 096cf37d4c65..26bd4a106ca6 100644 --- a/telecomm/java/android/telecom/Call.java +++ b/telecomm/java/android/telecom/Call.java @@ -434,8 +434,15 @@ public final class Call { */ public static final int PROPERTY_RTT = 0x00000400; + /** + * Indicates that the call has been identified as the network as an emergency call. This + * property may be set for both incoming and outgoing calls which the network identifies as + * emergency calls. + */ + public static final int PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL = 0x00000800; + //****************************************************************************************** - // Next PROPERTY value: 0x00000800 + // Next PROPERTY value: 0x00001000 //****************************************************************************************** private final String mTelecomCallId; @@ -601,6 +608,9 @@ public final class Call { if(hasProperty(properties, PROPERTY_ASSISTED_DIALING_USED)) { builder.append(" PROPERTY_ASSISTED_DIALING_USED"); } + if (hasProperty(properties, PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL)) { + builder.append(" PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL"); + } builder.append("]"); return builder.toString(); } diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java index 120d17219fc0..d49469233752 100644 --- a/telecomm/java/android/telecom/Connection.java +++ b/telecomm/java/android/telecom/Connection.java @@ -414,6 +414,13 @@ public abstract class Connection extends Conferenceable { */ public static final int PROPERTY_ASSISTED_DIALING_USED = 1 << 9; + /** + * Set by the framework to indicate that the network has identified a Connection as an emergency + * call. + * @hide + */ + public static final int PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL = 1 << 10; + //********************************************************************************************** // Next PROPERTY value: 1<<10 //********************************************************************************************** @@ -803,6 +810,10 @@ public abstract class Connection extends Conferenceable { builder.append(isLong ? " PROPERTY_IS_RTT" : " rtt"); } + if (can(properties, PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL)) { + builder.append(isLong ? " PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL" : " ecall"); + } + builder.append("]"); return builder.toString(); } diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java index b747dce37351..8c37a21afa50 100644 --- a/telecomm/java/android/telecom/TelecomManager.java +++ b/telecomm/java/android/telecom/TelecomManager.java @@ -1884,6 +1884,27 @@ public class TelecomManager { } } + /** + * Determines if there is an ongoing emergency call. This can be either an outgoing emergency + * call, as identified by the dialed number, or because a call was identified by the network + * as an emergency call. + * @return {@code true} if there is an ongoing emergency call, {@code false} otherwise. + * @hide + */ + @SystemApi + @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) + public boolean isInEmergencyCall() { + try { + if (isServiceConnected()) { + return getTelecomService().isInEmergencyCall(); + } + } catch (RemoteException e) { + Log.e(TAG, "RemoteException isInEmergencyCall: " + e); + return false; + } + return false; + } + private ITelecomService getTelecomService() { if (mTelecomServiceOverride != null) { return mTelecomServiceOverride; diff --git a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl index b4e7d56bc642..38247bc80e5c 100644 --- a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl +++ b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl @@ -279,4 +279,9 @@ interface ITelecomService { * @see TelecomServiceImpl#acceptHandover */ void acceptHandover(in Uri srcAddr, int videoState, in PhoneAccountHandle destAcct); + + /** + * @see TelecomServiceImpl#isInEmergencyCall + */ + boolean isInEmergencyCall(); } diff --git a/telephony/java/android/telephony/ims/ImsCallProfile.java b/telephony/java/android/telephony/ims/ImsCallProfile.java index df7bd3e6b504..5d6a8c158eed 100644 --- a/telephony/java/android/telephony/ims/ImsCallProfile.java +++ b/telephony/java/android/telephony/ims/ImsCallProfile.java @@ -118,7 +118,9 @@ public final class ImsCallProfile implements Parcelable { */ public static final String EXTRA_CONFERENCE = "conference"; /** - * @hide + * Boolean extra property set on an {@link ImsCallProfile} to indicate that this call is an + * emergency call. The {@link ImsService} sets this on a call to indicate that the network has + * identified the call as an emergency call. */ public static final String EXTRA_E_CALL = "e_call"; /** |