17f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee/* 27f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * Copyright (C) 2014 The Android Open Source Project 37f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * 47f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * Licensed under the Apache License, Version 2.0 (the "License"); 57f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * you may not use this file except in compliance with the License. 67f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * You may obtain a copy of the License at 77f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * 87f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * http://www.apache.org/licenses/LICENSE-2.0 97f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * 107f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * Unless required by applicable law or agreed to in writing, software 117f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * distributed under the License is distributed on an "AS IS" BASIS, 127f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * See the License for the specific language governing permissions and 147f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * limitations under the License. 157f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee */ 167f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 177f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Leepackage android.telecom; 187f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 190e094d926c306c3667bcdf6f23c52cc7181f25f3Evan Charltonimport android.annotation.SystemApi; 207f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Leeimport android.os.Parcel; 217f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Leeimport android.os.Parcelable; 227f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Leeimport android.media.ToneGenerator; 237f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Leeimport android.text.TextUtils; 247f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 257f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Leeimport java.util.Objects; 267f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 277f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee/** 287f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * Describes the cause of a disconnected call. This always includes a code describing the generic 29d9e614fd56677bc39481fce115731d55ab72171aSantos Cordon * cause of the disconnect. Optionally, it may include a label and/or description to display to the 30d9e614fd56677bc39481fce115731d55ab72171aSantos Cordon * user. It is the responsibility of the {@link ConnectionService} to provide localized versions of 31d9e614fd56677bc39481fce115731d55ab72171aSantos Cordon * the label and description. It also may contain a reason for the disconnect, which is intended for 32d9e614fd56677bc39481fce115731d55ab72171aSantos Cordon * logging and not for display to the user. 330e094d926c306c3667bcdf6f23c52cc7181f25f3Evan Charlton * @hide 347f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee */ 350e094d926c306c3667bcdf6f23c52cc7181f25f3Evan Charlton@SystemApi 367f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Leepublic final class DisconnectCause implements Parcelable { 377f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 387f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee /** Disconnected because of an unknown or unspecified reason. */ 397f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public static final int UNKNOWN = 0; 407f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee /** Disconnected because there was an error, such as a problem with the network. */ 417f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public static final int ERROR = 1; 427f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee /** Disconnected because of a local user-initiated action, such as hanging up. */ 437f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public static final int LOCAL = 2; 447f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee /** 457f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * Disconnected because of a remote user-initiated action, such as the other party hanging up 467f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * up. 477f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee */ 487f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public static final int REMOTE = 3; 497f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee /** Disconnected because it has been canceled. */ 507f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public static final int CANCELED = 4; 517f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee /** Disconnected because there was no response to an incoming call. */ 527f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public static final int MISSED = 5; 537f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee /** Disconnected because the user rejected an incoming call. */ 547f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public static final int REJECTED = 6; 557f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee /** Disconnected because the other party was busy. */ 567f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public static final int BUSY = 7; 577f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee /** 587f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * Disconnected because of a restriction on placing the call, such as dialing in airplane 597f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * mode. 607f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee */ 617f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public static final int RESTRICTED = 8; 627f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee /** Disconnected for reason not described by other disconnect codes. */ 637f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public static final int OTHER = 9; 647a69c9277ffde11d862f1bf4fcb92e21a3f98c28Sailesh Nepal /** 657a69c9277ffde11d862f1bf4fcb92e21a3f98c28Sailesh Nepal * Disconnected because the connection manager did not support the call. The call will be tried 667a69c9277ffde11d862f1bf4fcb92e21a3f98c28Sailesh Nepal * again without a connection manager. See {@link PhoneAccount#CAPABILITY_CONNECTION_MANAGER}. 677a69c9277ffde11d862f1bf4fcb92e21a3f98c28Sailesh Nepal */ 687a69c9277ffde11d862f1bf4fcb92e21a3f98c28Sailesh Nepal public static final int CONNECTION_MANAGER_NOT_SUPPORTED = 10; 697f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 707f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee private int mDisconnectCode; 717f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee private CharSequence mDisconnectLabel; 727f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee private CharSequence mDisconnectDescription; 737f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee private String mDisconnectReason; 747f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee private int mToneToPlay; 757f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 767f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee /** 777f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * Creates a new DisconnectCause. 787f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * 797f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * @param code The code for the disconnect cause. 807f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee */ 817f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public DisconnectCause(int code) { 827f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee this(code, null, null, null, ToneGenerator.TONE_UNKNOWN); 837f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee } 847f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 857f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee /** 867f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * Creates a new DisconnectCause. 877f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * 887f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * @param code The code for the disconnect cause. 897f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * @param reason The reason for the disconnect. 907f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee */ 917f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public DisconnectCause(int code, String reason) { 927f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee this(code, null, null, reason, ToneGenerator.TONE_UNKNOWN); 937f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee } 947f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 957f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee /** 967f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * Creates a new DisconnectCause. 97d9e614fd56677bc39481fce115731d55ab72171aSantos Cordon * 98f4cf77c5dc0348d3f7561f48a5a751cb823cd271Nancy Chen * @param label The localized label to show to the user to explain the disconnect. 99f4cf77c5dc0348d3f7561f48a5a751cb823cd271Nancy Chen * @param code The code for the disconnect cause. 100f4cf77c5dc0348d3f7561f48a5a751cb823cd271Nancy Chen * @param description The localized description to show to the user to explain the disconnect. 101f4cf77c5dc0348d3f7561f48a5a751cb823cd271Nancy Chen * @param reason The reason for the disconnect. 102f4cf77c5dc0348d3f7561f48a5a751cb823cd271Nancy Chen */ 103f4cf77c5dc0348d3f7561f48a5a751cb823cd271Nancy Chen public DisconnectCause(int code, CharSequence label, CharSequence description, String reason) { 104f4cf77c5dc0348d3f7561f48a5a751cb823cd271Nancy Chen this(code, label, description, reason, ToneGenerator.TONE_UNKNOWN); 105f4cf77c5dc0348d3f7561f48a5a751cb823cd271Nancy Chen } 106f4cf77c5dc0348d3f7561f48a5a751cb823cd271Nancy Chen 107f4cf77c5dc0348d3f7561f48a5a751cb823cd271Nancy Chen /** 108f4cf77c5dc0348d3f7561f48a5a751cb823cd271Nancy Chen * Creates a new DisconnectCause. 1097f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * 1107f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * @param code The code for the disconnect cause. 1117f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * @param label The localized label to show to the user to explain the disconnect. 1127f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * @param description The localized description to show to the user to explain the disconnect. 1137f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * @param reason The reason for the disconnect. 1147f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * @param toneToPlay The tone to play on disconnect, as defined in {@link ToneGenerator}. 1157f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee */ 1167f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public DisconnectCause(int code, CharSequence label, CharSequence description, String reason, 1177f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee int toneToPlay) { 1187f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee mDisconnectCode = code; 1197f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee mDisconnectLabel = label; 1207f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee mDisconnectDescription = description; 1217f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee mDisconnectReason = reason; 1227f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee mToneToPlay = toneToPlay; 1237f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee } 1247f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 1257f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee /** 1267f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * Returns the code for the reason for this disconnect. 1277f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * 1287f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * @return The disconnect code. 1297f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee */ 1307f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public int getCode() { 1317f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee return mDisconnectCode; 1327f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee } 1337f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 1347f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee /** 1357f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * Returns a short label which explains the reason for the disconnect cause and is for display 1367f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * in the user interface. The {@link ConnectionService } is responsible for providing and 1377f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * localizing this label. If there is no string provided, returns null. 1387f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * 1397f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * @return The disconnect label. 1407f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee */ 1417f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public CharSequence getLabel() { 1427f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee return mDisconnectLabel; 1437f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee } 1447f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 1457f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee /** 1467f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * Returns a description which explains the reason for the disconnect cause and is for display 1477f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * in the user interface. The {@link ConnectionService } is responsible for providing and 1487f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * localizing this message. If there is no string provided, returns null. 1497f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * 1507f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * @return The disconnect description. 1517f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee */ 1527f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public CharSequence getDescription() { 1537f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee return mDisconnectDescription; 1547f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee } 1557f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 1567f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee /** 1577f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * Returns an explanation of the reason for the disconnect. This is not intended for display to 1587f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * the user and is used mainly for logging. 1597f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * 1607f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * @return The disconnect reason. 1617f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee */ 1627f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public String getReason() { 1637f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee return mDisconnectReason; 1647f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee } 1657f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 1667f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee /** 1677f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * Returns the tone to play when disconnected. 1687f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * 1697f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee * @return the tone as defined in {@link ToneGenerator} to play when disconnected. 1707f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee */ 1717f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public int getTone() { 1727f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee return mToneToPlay; 1737f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee } 1747f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 1757f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public static final Creator<DisconnectCause> CREATOR = new Creator<DisconnectCause>() { 1767f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee @Override 1777f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public DisconnectCause createFromParcel(Parcel source) { 1787f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee int code = source.readInt(); 1797f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee CharSequence label = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source); 1807f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee CharSequence description = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source); 1817f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee String reason = source.readString(); 1827f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee int tone = source.readInt(); 1837f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee return new DisconnectCause(code, label, description, reason, tone); 1847f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee } 1857f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 1867f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee @Override 1877f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public DisconnectCause[] newArray(int size) { 1887f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee return new DisconnectCause[size]; 1897f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee } 1907f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee }; 1917f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 1927f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee @Override 1937f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public void writeToParcel(Parcel destination, int flags) { 1947f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee destination.writeInt(mDisconnectCode); 1957f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee TextUtils.writeToParcel(mDisconnectLabel, destination, flags); 1967f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee TextUtils.writeToParcel(mDisconnectDescription, destination, flags); 1977f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee destination.writeString(mDisconnectReason); 1987f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee destination.writeInt(mToneToPlay); 1997f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee } 2007f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 2017f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee @Override 2027f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public int describeContents() { 2037f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee return 0; 2047f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee } 2057f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 2067f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee @Override 2077f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public int hashCode() { 2087f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee return Objects.hashCode(mDisconnectCode) 2097f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee + Objects.hashCode(mDisconnectLabel) 2107f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee + Objects.hashCode(mDisconnectDescription) 2117f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee + Objects.hashCode(mDisconnectReason) 2127f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee + Objects.hashCode(mToneToPlay); 2137f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee } 2147f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 2157f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee @Override 2167f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public boolean equals(Object o) { 2177f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee if (o instanceof DisconnectCause) { 2187f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee DisconnectCause d = (DisconnectCause) o; 2197f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee return Objects.equals(mDisconnectCode, d.getCode()) 2207f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee && Objects.equals(mDisconnectLabel, d.getLabel()) 2217f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee && Objects.equals(mDisconnectDescription, d.getDescription()) 2227f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee && Objects.equals(mDisconnectReason, d.getReason()) 2237f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee && Objects.equals(mToneToPlay, d.getTone()); 2247f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee } 2257f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee return false; 2267f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee } 2277f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee 2287f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee @Override 2297f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee public String toString() { 2307f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee String code = ""; 2317a69c9277ffde11d862f1bf4fcb92e21a3f98c28Sailesh Nepal switch (mDisconnectCode) { 2327a69c9277ffde11d862f1bf4fcb92e21a3f98c28Sailesh Nepal case UNKNOWN: 2337a69c9277ffde11d862f1bf4fcb92e21a3f98c28Sailesh Nepal code = "UNKNOWN"; 2347a69c9277ffde11d862f1bf4fcb92e21a3f98c28Sailesh Nepal break; 2357f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee case ERROR: 2367f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee code = "ERROR"; 2377f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee break; 2387f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee case LOCAL: 2397f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee code = "LOCAL"; 2407f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee break; 2417f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee case REMOTE: 2427f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee code = "REMOTE"; 2437f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee break; 2447a69c9277ffde11d862f1bf4fcb92e21a3f98c28Sailesh Nepal case CANCELED: 2457a69c9277ffde11d862f1bf4fcb92e21a3f98c28Sailesh Nepal code = "CANCELED"; 2467a69c9277ffde11d862f1bf4fcb92e21a3f98c28Sailesh Nepal break; 2477f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee case MISSED: 2487f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee code = "MISSED"; 2497f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee break; 2507f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee case REJECTED: 2517f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee code = "REJECTED"; 2527f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee break; 2537f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee case BUSY: 2547f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee code = "BUSY"; 2557f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee break; 2567f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee case RESTRICTED: 2577f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee code = "RESTRICTED"; 2587f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee break; 2597f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee case OTHER: 2607f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee code = "OTHER"; 2617f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee break; 2627a69c9277ffde11d862f1bf4fcb92e21a3f98c28Sailesh Nepal case CONNECTION_MANAGER_NOT_SUPPORTED: 2637a69c9277ffde11d862f1bf4fcb92e21a3f98c28Sailesh Nepal code = "CONNECTION_MANAGER_NOT_SUPPORTED"; 2647a69c9277ffde11d862f1bf4fcb92e21a3f98c28Sailesh Nepal break; 2657f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee default: 2667a69c9277ffde11d862f1bf4fcb92e21a3f98c28Sailesh Nepal code = "invalid code: " + mDisconnectCode; 2677a69c9277ffde11d862f1bf4fcb92e21a3f98c28Sailesh Nepal break; 2687f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee } 2697f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee String label = mDisconnectLabel == null ? "" : mDisconnectLabel.toString(); 2707f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee String description = mDisconnectDescription == null 2717f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee ? "" : mDisconnectDescription.toString(); 2727f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee String reason = mDisconnectReason == null ? "" : mDisconnectReason; 2737f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee return "DisconnectCause [ Code: (" + code + ")" 2747f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee + " Label: (" + label + ")" 2757f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee + " Description: (" + description + ")" 2767f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee + " Reason: (" + reason + ")" 2777f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee + " Tone: (" + mToneToPlay + ") ]"; 2787f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee } 2797f3d41fd124dd7c4a8b72c1d48df08a8ee7209ecAndrew Lee} 280