Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 36b3dbc3 authored by Shuo Qian's avatar Shuo Qian
Browse files

Add call composer Extras for enriched calling

Test: unit test; cts
Bug: 173437870

Change-Id: I2af39eea48737df1bf629caea5b617736635f2aa
parent ed7b77e8
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -11467,6 +11467,7 @@ package android.telephony.ims {
    method public boolean getCallExtraBoolean(String, boolean);
    method public int getCallExtraInt(String);
    method public int getCallExtraInt(String, int);
    method @Nullable public <T extends android.os.Parcelable> T getCallExtraParcelable(@Nullable String);
    method public android.os.Bundle getCallExtras();
    method public int getCallType();
    method public static int getCallTypeFromVideoState(int);
@@ -11489,6 +11490,7 @@ package android.telephony.ims {
    method public void setCallExtra(String, String);
    method public void setCallExtraBoolean(String, boolean);
    method public void setCallExtraInt(String, int);
    method public void setCallExtraParcelable(@NonNull String, @NonNull android.os.Parcelable);
    method public void setCallRestrictCause(int);
    method public void setCallerNumberVerificationStatus(int);
    method public void setEmergencyCallRouting(int);
@@ -11523,6 +11525,7 @@ package android.telephony.ims {
    field public static final String EXTRA_CALL_DISCONNECT_CAUSE = "android.telephony.ims.extra.CALL_DISCONNECT_CAUSE";
    field public static final String EXTRA_CALL_NETWORK_TYPE = "android.telephony.ims.extra.CALL_NETWORK_TYPE";
    field @Deprecated public static final String EXTRA_CALL_RAT_TYPE = "CallRadioTech";
    field public static final String EXTRA_CALL_SUBJECT = "android.telephony.ims.extra.CALL_SUBJECT";
    field public static final String EXTRA_CHILD_NUMBER = "ChildNum";
    field public static final String EXTRA_CNA = "cna";
    field public static final String EXTRA_CNAP = "cnap";
@@ -11532,8 +11535,11 @@ package android.telephony.ims {
    field public static final String EXTRA_EMERGENCY_CALL = "e_call";
    field public static final String EXTRA_FORWARDED_NUMBER = "android.telephony.ims.extra.FORWARDED_NUMBER";
    field public static final String EXTRA_IS_CALL_PULL = "CallPull";
    field public static final String EXTRA_LOCATION = "android.telephony.ims.extra.LOCATION";
    field public static final String EXTRA_OI = "oi";
    field public static final String EXTRA_OIR = "oir";
    field public static final String EXTRA_PICTURE_URL = "android.telephony.ims.extra.PICTURE_URL";
    field public static final String EXTRA_PRIORITY = "android.telephony.ims.extra.PRIORITY";
    field public static final String EXTRA_REMOTE_URI = "remote_uri";
    field public static final String EXTRA_USSD = "ussd";
    field public static final int OIR_DEFAULT = 0; // 0x0
@@ -11541,6 +11547,8 @@ package android.telephony.ims {
    field public static final int OIR_PRESENTATION_PAYPHONE = 4; // 0x4
    field public static final int OIR_PRESENTATION_RESTRICTED = 1; // 0x1
    field public static final int OIR_PRESENTATION_UNKNOWN = 3; // 0x3
    field public static final int PRIORITY_NORMAL = 0; // 0x0
    field public static final int PRIORITY_URGENT = 1; // 0x1
    field public static final int SERVICE_TYPE_EMERGENCY = 2; // 0x2
    field public static final int SERVICE_TYPE_NONE = 0; // 0x0
    field public static final int SERVICE_TYPE_NORMAL = 1; // 0x1
+76 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.telephony.ims;

import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.compat.annotation.UnsupportedAppUsage;
@@ -206,6 +207,42 @@ public final class ImsCallProfile implements Parcelable {
    public static final String EXTRA_RETRY_CALL_FAIL_NETWORKTYPE =
            "android.telephony.ims.extra.RETRY_CALL_FAIL_NETWORKTYPE";

    /**
     * Extra for the call composer call priority, either {@link ImsCallProfile#PRIORITY_NORMAL} or
     * {@link ImsCallProfile#PRIORITY_URGENT}. It can be set via
     * {@link #setCallExtraInt(String, int)}.
     *
     * Reference: RCC.20 Section 2.4.4.2
     */
    public static final String EXTRA_PRIORITY = "android.telephony.ims.extra.PRIORITY";

    // TODO(hallliu) remove the reference to the maximum length and update it later.
    /**
     * Extra for the call composer call subject, a string of maximum length 60 characters.
     * It can be set via {@link #setCallExtra(String, String)}.
     *
     * Reference: RCC.20 Section 2.4.3.2
     */
    public static final String EXTRA_CALL_SUBJECT = "android.telephony.ims.extra.CALL_SUBJECT";

    /**
     * Extra for the call composer call location, an {@Link android.location.Location} parcelable
     * class to represent the geolocation as a latitude and longitude pair. It can be set via
     * {@link #setCallExtraParcelable(String, Parcelable)}.
     *
     * Reference: RCC.20 Section 2.4.3.2
     */
    public static final String EXTRA_LOCATION = "android.telephony.ims.extra.LOCATION";

    /**
     * Extra for the call composer picture URL, a String that indicates the URL on the carrier’s
     * server infrastructure to get the picture. It can be set via
     * {@link #setCallExtra(String, String)}.
     *
     * Reference: RCC.20 Section 2.4.3.2
     */
    public static final String EXTRA_PICTURE_URL = "android.telephony.ims.extra.PICTURE_URL";

    /**
     * Values for EXTRA_OIR / EXTRA_CNAP
     */
@@ -244,6 +281,21 @@ public final class ImsCallProfile implements Parcelable {
     */
    public static final int DIALSTRING_USSD = 2;

    // Values for EXTRA_PRIORITY
    /**
     * Indicates the call composer call priority is normal.
     *
     * Reference: RCC.20 Section 2.4.4.2
     */
    public static final int PRIORITY_NORMAL = 0;

    /**
     * Indicates the call composer call priority is urgent.
     *
     * Reference: RCC.20 Section 2.4.4.2
     */
    public static final int PRIORITY_URGENT = 1;

    /**
     * Call is not restricted on peer side and High Definition media is supported
     */
@@ -588,6 +640,19 @@ public final class ImsCallProfile implements Parcelable {
        return mCallExtras.getInt(name, defaultValue);
    }

    /**
     * Get the call extras (Parcelable), given the extra name.
     * @param name call extra name
     * @return the corresponding call extra Parcelable or null if not applicable
     */
    @Nullable
    public <T extends Parcelable> T getCallExtraParcelable(@Nullable String name) {
        if (mCallExtras != null) {
            return mCallExtras.getParcelable(name);
        }
        return null;
    }

    public void setCallExtra(String name, String value) {
        if (mCallExtras != null) {
            mCallExtras.putString(name, value);
@@ -606,6 +671,17 @@ public final class ImsCallProfile implements Parcelable {
        }
    }

    /**
     * Set the call extra value (Parcelable), given the call extra name.
     * @param name call extra name
     * @param parcelable call extra value
     */
    public void setCallExtraParcelable(@NonNull String name, @NonNull Parcelable parcelable) {
        if (mCallExtras != null) {
            mCallExtras.putParcelable(name, parcelable);
        }
    }

    /**
     * Set the call restrict cause, which provides the reason why a call has been restricted from
     * using High Definition media.