diff options
Diffstat (limited to 'telecomm/java/android/telecom/DisconnectCause.java')
-rw-r--r-- | telecomm/java/android/telecom/DisconnectCause.java | 89 |
1 files changed, 84 insertions, 5 deletions
diff --git a/telecomm/java/android/telecom/DisconnectCause.java b/telecomm/java/android/telecom/DisconnectCause.java index 1472a4ac27bc..ed7b79f62753 100644 --- a/telecomm/java/android/telecom/DisconnectCause.java +++ b/telecomm/java/android/telecom/DisconnectCause.java @@ -16,9 +16,13 @@ package android.telecom; +import android.annotation.Nullable; import android.media.ToneGenerator; import android.os.Parcel; import android.os.Parcelable; +import android.telephony.Annotation; +import android.telephony.PreciseDisconnectCause; +import android.telephony.ims.ImsReasonInfo; import android.text.TextUtils; import java.util.Objects; @@ -112,6 +116,9 @@ public final class DisconnectCause implements Parcelable { private CharSequence mDisconnectDescription; private String mDisconnectReason; private int mToneToPlay; + private int mTelephonyDisconnectCause; + private int mTelephonyPreciseDisconnectCause; + private ImsReasonInfo mImsReasonInfo; /** * Creates a new DisconnectCause. @@ -155,11 +162,36 @@ public final class DisconnectCause implements Parcelable { */ public DisconnectCause(int code, CharSequence label, CharSequence description, String reason, int toneToPlay) { + this(code, label, description, reason, toneToPlay, + android.telephony.DisconnectCause.ERROR_UNSPECIFIED, + PreciseDisconnectCause.ERROR_UNSPECIFIED, + null /* imsReasonInfo */); + } + + /** + * Creates a new DisconnectCause instance. + * @param code The code for the disconnect cause. + * @param label The localized label to show to the user to explain the disconnect. + * @param description The localized description to show to the user to explain the disconnect. + * @param reason The reason for the disconnect. + * @param toneToPlay The tone to play on disconnect, as defined in {@link ToneGenerator}. + * @param telephonyDisconnectCause The Telephony disconnect cause. + * @param telephonyPreciseDisconnectCause The Telephony precise disconnect cause. + * @param imsReasonInfo The relevant {@link ImsReasonInfo}, or {@code null} if not available. + * @hide + */ + public DisconnectCause(int code, CharSequence label, CharSequence description, String reason, + int toneToPlay, @Annotation.DisconnectCauses int telephonyDisconnectCause, + @Annotation.PreciseDisconnectCauses int telephonyPreciseDisconnectCause, + @Nullable ImsReasonInfo imsReasonInfo) { mDisconnectCode = code; mDisconnectLabel = label; mDisconnectDescription = description; mDisconnectReason = reason; mToneToPlay = toneToPlay; + mTelephonyDisconnectCause = telephonyDisconnectCause; + mTelephonyPreciseDisconnectCause = telephonyPreciseDisconnectCause; + mImsReasonInfo = imsReasonInfo; } /** @@ -209,6 +241,33 @@ public final class DisconnectCause implements Parcelable { } /** + * Returns the telephony {@link android.telephony.DisconnectCause} for the call. + * @return The disconnect cause. + * @hide + */ + public @Annotation.DisconnectCauses int getTelephonyDisconnectCause() { + return mTelephonyDisconnectCause; + } + + /** + * Returns the telephony {@link android.telephony.PreciseDisconnectCause} for the call. + * @return The precise disconnect cause. + * @hide + */ + public @Annotation.PreciseDisconnectCauses int getTelephonyPreciseDisconnectCause() { + return mTelephonyPreciseDisconnectCause; + } + + /** + * Returns the telephony {@link ImsReasonInfo} associated with the call disconnection. + * @return The {@link ImsReasonInfo} or {@code null} if not known. + * @hide + */ + public @Nullable ImsReasonInfo getImsReasonInfo() { + return mImsReasonInfo; + } + + /** * Returns the tone to play when disconnected. * * @return the tone as defined in {@link ToneGenerator} to play when disconnected. @@ -217,7 +276,8 @@ public final class DisconnectCause implements Parcelable { return mToneToPlay; } - public static final @android.annotation.NonNull Creator<DisconnectCause> CREATOR = new Creator<DisconnectCause>() { + public static final @android.annotation.NonNull Creator<DisconnectCause> CREATOR + = new Creator<DisconnectCause>() { @Override public DisconnectCause createFromParcel(Parcel source) { int code = source.readInt(); @@ -225,7 +285,11 @@ public final class DisconnectCause implements Parcelable { CharSequence description = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source); String reason = source.readString(); int tone = source.readInt(); - return new DisconnectCause(code, label, description, reason, tone); + int telephonyDisconnectCause = source.readInt(); + int telephonyPreciseDisconnectCause = source.readInt(); + ImsReasonInfo imsReasonInfo = source.readParcelable(null); + return new DisconnectCause(code, label, description, reason, tone, + telephonyDisconnectCause, telephonyPreciseDisconnectCause, imsReasonInfo); } @Override @@ -241,6 +305,9 @@ public final class DisconnectCause implements Parcelable { TextUtils.writeToParcel(mDisconnectDescription, destination, flags); destination.writeString(mDisconnectReason); destination.writeInt(mToneToPlay); + destination.writeInt(mTelephonyDisconnectCause); + destination.writeInt(mTelephonyPreciseDisconnectCause); + destination.writeParcelable(mImsReasonInfo, 0); } @Override @@ -254,7 +321,10 @@ public final class DisconnectCause implements Parcelable { + Objects.hashCode(mDisconnectLabel) + Objects.hashCode(mDisconnectDescription) + Objects.hashCode(mDisconnectReason) - + Objects.hashCode(mToneToPlay); + + Objects.hashCode(mToneToPlay) + + Objects.hashCode(mTelephonyDisconnectCause) + + Objects.hashCode(mTelephonyPreciseDisconnectCause) + + Objects.hashCode(mImsReasonInfo); } @Override @@ -265,7 +335,11 @@ public final class DisconnectCause implements Parcelable { && Objects.equals(mDisconnectLabel, d.getLabel()) && Objects.equals(mDisconnectDescription, d.getDescription()) && Objects.equals(mDisconnectReason, d.getReason()) - && Objects.equals(mToneToPlay, d.getTone()); + && Objects.equals(mToneToPlay, d.getTone()) + && Objects.equals(mTelephonyDisconnectCause, d.getTelephonyDisconnectCause()) + && Objects.equals(mTelephonyPreciseDisconnectCause, + d.getTelephonyPreciseDisconnectCause()) + && Objects.equals(mImsReasonInfo, d.getImsReasonInfo()); } return false; } @@ -325,6 +399,11 @@ public final class DisconnectCause implements Parcelable { + " Label: (" + label + ")" + " Description: (" + description + ")" + " Reason: (" + reason + ")" - + " Tone: (" + mToneToPlay + ") ]"; + + " Tone: (" + mToneToPlay + ") " + + " TelephonyCause: " + mTelephonyDisconnectCause + "/" + + mTelephonyPreciseDisconnectCause + + " ImsReasonInfo: " + + mImsReasonInfo + + "]"; } } |