Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Constants](https://developer.android.com/reference/android/telecom/Call.Callback#constants) \| [Ctors](https://developer.android.com/reference/android/telecom/Call.Callback#pubctors) \| [Methods](https://developer.android.com/reference/android/telecom/Call.Callback#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/telecom/Call.Callback#inhmethods)

# Call.Callback

*** ** * ** ***

` public static abstract class Call.Callback `   
` extends https://developer.android.com/reference/java/lang/Object ` ` `

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.telecom.Call.Callback |

<br />

*** ** * ** ***

Defines callbacks which inform the `https://developer.android.com/reference/android/telecom/InCallService` of changes to a `https://developer.android.com/reference/android/telecom/Call`. These callbacks can originate from the Telecom framework, or a `https://developer.android.com/reference/android/telecom/ConnectionService` implementation.

You can handle these callbacks by extending the `https://developer.android.com/reference/android/telecom/Call.Callback` class and overriding the callbacks that your `https://developer.android.com/reference/android/telecom/InCallService` is interested in. The callback methods include the `https://developer.android.com/reference/android/telecom/Call` for which the callback applies, allowing reuse of a single instance of your `https://developer.android.com/reference/android/telecom/Call.Callback` implementation, if desired.

Use `https://developer.android.com/reference/android/telecom/Call#registerCallback(android.telecom.Call.Callback)` to register your callback(s). Ensure `https://developer.android.com/reference/android/telecom/Call#unregisterCallback(android.telecom.Call.Callback)` is called when you no longer require callbacks (typically in `https://developer.android.com/reference/android/telecom/InCallService#onCallRemoved(android.telecom.Call)`). Note: Callbacks which occur before you call `https://developer.android.com/reference/android/telecom/Call#registerCallback(android.telecom.Call.Callback)` will not reach your implementation of `https://developer.android.com/reference/android/telecom/Call.Callback`, so it is important to register your callback as soon as your `https://developer.android.com/reference/android/telecom/InCallService` is notified of a new call via `https://developer.android.com/reference/android/telecom/InCallService#onCallAdded(android.telecom.Call)`.

## Summary

| ### Constants ||
|---|---|
| `int` | `https://developer.android.com/reference/android/telecom/Call.Callback#HANDOVER_FAILURE_DEST_APP_REJECTED` Handover failure reason returned via `https://developer.android.com/reference/android/telecom/Call.Callback#onHandoverFailed(android.telecom.Call,%20int)` when the app to handover the call to rejects the handover request. |
| `int` | `https://developer.android.com/reference/android/telecom/Call.Callback#HANDOVER_FAILURE_NOT_SUPPORTED` Handover failure reason returned via `https://developer.android.com/reference/android/telecom/Call.Callback#onHandoverFailed(android.telecom.Call,%20int)` when a handover is initiated but the source or destination app does not support handover. |
| `int` | `https://developer.android.com/reference/android/telecom/Call.Callback#HANDOVER_FAILURE_ONGOING_EMERGENCY_CALL` Handover failure reason returned via `https://developer.android.com/reference/android/telecom/Call.Callback#onHandoverFailed(android.telecom.Call,%20int)` when there is ongoing emergency call. |
| `int` | `https://developer.android.com/reference/android/telecom/Call.Callback#HANDOVER_FAILURE_UNKNOWN` Handover failure reason returned via `https://developer.android.com/reference/android/telecom/Call.Callback#onHandoverFailed(android.telecom.Call,%20int)` when a handover fails for an unknown reason. |
| `int` | `https://developer.android.com/reference/android/telecom/Call.Callback#HANDOVER_FAILURE_USER_REJECTED` Handover failure reason returned via `https://developer.android.com/reference/android/telecom/Call.Callback#onHandoverFailed(android.telecom.Call,%20int)` when the remote user rejects the handover request. |

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/telecom/Call.Callback#Callback()() ` |

| ### Public methods ||
|---|---|
| ` void` | ` https://developer.android.com/reference/android/telecom/Call.Callback#onCallDestroyed(android.telecom.Call)(https://developer.android.com/reference/android/telecom/Call call) ` Invoked when the `Call` is destroyed. |
| ` void` | ` https://developer.android.com/reference/android/telecom/Call.Callback#onCannedTextResponsesLoaded(android.telecom.Call,%20java.util.List<java.lang.String>)(https://developer.android.com/reference/android/telecom/Call call, https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/java/lang/String> cannedTextResponses) ` Invoked when the text messages that can be used as responses to the incoming `Call` are loaded from the relevant database. |
| ` void` | ` https://developer.android.com/reference/android/telecom/Call.Callback#onChildrenChanged(android.telecom.Call,%20java.util.List<android.telecom.Call>)(https://developer.android.com/reference/android/telecom/Call call, https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/telecom/Call> children) ` Invoked when the children of this `Call` have changed. |
| ` void` | ` https://developer.android.com/reference/android/telecom/Call.Callback#onConferenceableCallsChanged(android.telecom.Call,%20java.util.List<android.telecom.Call>)(https://developer.android.com/reference/android/telecom/Call call, https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/android/telecom/Call> conferenceableCalls) ` Invoked upon changes to the set of `Call`s with which this `Call` can be conferenced. |
| ` void` | ` https://developer.android.com/reference/android/telecom/Call.Callback#onConnectionEvent(android.telecom.Call,%20java.lang.String,%20android.os.Bundle)(https://developer.android.com/reference/android/telecom/Call call, https://developer.android.com/reference/java/lang/String event, https://developer.android.com/reference/android/os/Bundle extras) ` Invoked when a `https://developer.android.com/reference/android/telecom/Call` receives an event from its associated `https://developer.android.com/reference/android/telecom/Connection` or `https://developer.android.com/reference/android/telecom/Conference`. |
| ` void` | ` https://developer.android.com/reference/android/telecom/Call.Callback#onDetailsChanged(android.telecom.Call,%20android.telecom.Call.Details)(https://developer.android.com/reference/android/telecom/Call call, https://developer.android.com/reference/android/telecom/Call.Details details) ` Invoked when the details of this `Call` have changed. |
| ` void` | ` https://developer.android.com/reference/android/telecom/Call.Callback#onHandoverComplete(android.telecom.Call)(https://developer.android.com/reference/android/telecom/Call call) ` Invoked when Call handover from one `https://developer.android.com/reference/android/telecom/PhoneAccount` to other `https://developer.android.com/reference/android/telecom/PhoneAccount` has completed successfully. |
| ` void` | ` https://developer.android.com/reference/android/telecom/Call.Callback#onHandoverFailed(android.telecom.Call,%20int)(https://developer.android.com/reference/android/telecom/Call call, int failureReason) ` Invoked when Call handover from one `https://developer.android.com/reference/android/telecom/PhoneAccount` to other `https://developer.android.com/reference/android/telecom/PhoneAccount` has failed. |
| ` void` | ` https://developer.android.com/reference/android/telecom/Call.Callback#onParentChanged(android.telecom.Call,%20android.telecom.Call)(https://developer.android.com/reference/android/telecom/Call call, https://developer.android.com/reference/android/telecom/Call parent) ` Invoked when the parent of this `Call` has changed. |
| ` void` | ` https://developer.android.com/reference/android/telecom/Call.Callback#onPostDialWait(android.telecom.Call,%20java.lang.String)(https://developer.android.com/reference/android/telecom/Call call, https://developer.android.com/reference/java/lang/String remainingPostDialSequence) ` Invoked when the post-dial sequence in the outgoing `Call` has reached a pause character. |
| ` void` | ` https://developer.android.com/reference/android/telecom/Call.Callback#onRttInitiationFailure(android.telecom.Call,%20int)(https://developer.android.com/reference/android/telecom/Call call, int reason) ` Invoked when the RTT session failed to initiate for some reason, including rejection by the remote party. |
| ` void` | ` https://developer.android.com/reference/android/telecom/Call.Callback#onRttModeChanged(android.telecom.Call,%20int)(https://developer.android.com/reference/android/telecom/Call call, int mode) ` Invoked when the RTT mode changes for this call. |
| ` void` | ` https://developer.android.com/reference/android/telecom/Call.Callback#onRttRequest(android.telecom.Call,%20int)(https://developer.android.com/reference/android/telecom/Call call, int id) ` Invoked when the remote end of the connection has requested that an RTT communication channel be opened. |
| ` void` | ` https://developer.android.com/reference/android/telecom/Call.Callback#onRttStatusChanged(android.telecom.Call,%20boolean,%20android.telecom.Call.RttCall)(https://developer.android.com/reference/android/telecom/Call call, boolean enabled, https://developer.android.com/reference/android/telecom/Call.RttCall rttCall) ` Invoked when the call's RTT status changes, either from off to on or from on to off. |
| ` void` | ` https://developer.android.com/reference/android/telecom/Call.Callback#onStateChanged(android.telecom.Call,%20int)(https://developer.android.com/reference/android/telecom/Call call, int state) ` Invoked when the state of this `Call` has changed. |
| ` void` | ` https://developer.android.com/reference/android/telecom/Call.Callback#onVideoCallChanged(android.telecom.Call,%20android.telecom.InCallService.VideoCall)(https://developer.android.com/reference/android/telecom/Call call, https://developer.android.com/reference/android/telecom/InCallService.VideoCall videoCall) ` Invoked when the `Call.VideoCall` of the `Call` has changed. |

### Inherited methods

From class ` https://developer.android.com/reference/java/lang/Object ` ` https://developer.android.com/reference/java/lang/Object` ` https://developer.android.com/reference/java/lang/Object#clone()() `

Creates and returns a copy of this object.
` boolean` ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) `

Indicates whether some other object is "equal to" this one.
` void` ` https://developer.android.com/reference/java/lang/Object#finalize()() `

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.
` final https://developer.android.com/reference/java/lang/Class<?>` ` https://developer.android.com/reference/java/lang/Object#getClass()() `

Returns the runtime class of this `Object`.
` int` ` https://developer.android.com/reference/java/lang/Object#hashCode()() `

Returns a hash code value for the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#notify()() `

Wakes up a single thread that is waiting on this object's monitor.
` final void` ` https://developer.android.com/reference/java/lang/Object#notifyAll()() `

Wakes up all threads that are waiting on this object's monitor.
` https://developer.android.com/reference/java/lang/String` ` https://developer.android.com/reference/java/lang/Object#toString()() `

Returns a string representation of the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait()() `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*.

## Constants

### HANDOVER_FAILURE_DEST_APP_REJECTED

Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int HANDOVER_FAILURE_DEST_APP_REJECTED
```

Handover failure reason returned via `https://developer.android.com/reference/android/telecom/Call.Callback#onHandoverFailed(android.telecom.Call,%20int)` when the app to handover the call to rejects the handover request.

Will be returned when `https://developer.android.com/reference/android/telecom/Call#handoverTo(android.telecom.PhoneAccountHandle,%20int,%20android.os.Bundle)` is called and the destination `https://developer.android.com/reference/android/telecom/PhoneAccountHandle`'s `https://developer.android.com/reference/android/telecom/ConnectionService` returns a `null` `https://developer.android.com/reference/android/telecom/Connection` from `https://developer.android.com/reference/android/telecom/ConnectionService#onCreateOutgoingHandoverConnection(android.telecom.PhoneAccountHandle,%20android.telecom.ConnectionRequest)`.

For more information on call handovers, see `https://developer.android.com/reference/android/telecom/Call#handoverTo(android.telecom.PhoneAccountHandle,%20int,%20android.os.Bundle)`.

<br />

Constant Value: 1 (0x00000001)

### HANDOVER_FAILURE_NOT_SUPPORTED

Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int HANDOVER_FAILURE_NOT_SUPPORTED
```

Handover failure reason returned via `https://developer.android.com/reference/android/telecom/Call.Callback#onHandoverFailed(android.telecom.Call,%20int)` when a handover is initiated but the source or destination app does not support handover.

Will be returned when a handover is requested via `https://developer.android.com/reference/android/telecom/Call#handoverTo(android.telecom.PhoneAccountHandle,%20int,%20android.os.Bundle)` and the destination `https://developer.android.com/reference/android/telecom/PhoneAccountHandle` does not declare `https://developer.android.com/reference/android/telecom/PhoneAccount#EXTRA_SUPPORTS_HANDOVER_TO`. May also be returned when a handover is requested at the `https://developer.android.com/reference/android/telecom/PhoneAccountHandle` for the current call (i.e. the source call's `https://developer.android.com/reference/android/telecom/Call.Details#getAccountHandle()`) does not declare `https://developer.android.com/reference/android/telecom/PhoneAccount#EXTRA_SUPPORTS_HANDOVER_FROM`.

For more information on call handovers, see `https://developer.android.com/reference/android/telecom/Call#handoverTo(android.telecom.PhoneAccountHandle,%20int,%20android.os.Bundle)`.

<br />

Constant Value: 2 (0x00000002)

### HANDOVER_FAILURE_ONGOING_EMERGENCY_CALL

Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int HANDOVER_FAILURE_ONGOING_EMERGENCY_CALL
```

Handover failure reason returned via `https://developer.android.com/reference/android/telecom/Call.Callback#onHandoverFailed(android.telecom.Call,%20int)` when there is ongoing emergency call.

This error code is returned when `https://developer.android.com/reference/android/telecom/Call#handoverTo(android.telecom.PhoneAccountHandle,%20int,%20android.os.Bundle)` is called on an emergency call, or if any other call is an emergency call.

Handovers are not permitted while there are ongoing emergency calls.

For more information on call handovers, see `https://developer.android.com/reference/android/telecom/Call#handoverTo(android.telecom.PhoneAccountHandle,%20int,%20android.os.Bundle)`.

<br />

Constant Value: 4 (0x00000004)

### HANDOVER_FAILURE_UNKNOWN

Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int HANDOVER_FAILURE_UNKNOWN
```

Handover failure reason returned via `https://developer.android.com/reference/android/telecom/Call.Callback#onHandoverFailed(android.telecom.Call,%20int)` when a handover fails for an unknown reason.

For more information on call handovers, see `https://developer.android.com/reference/android/telecom/Call#handoverTo(android.telecom.PhoneAccountHandle,%20int,%20android.os.Bundle)`.

<br />

Constant Value: 5 (0x00000005)

### HANDOVER_FAILURE_USER_REJECTED

Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static final int HANDOVER_FAILURE_USER_REJECTED
```

Handover failure reason returned via `https://developer.android.com/reference/android/telecom/Call.Callback#onHandoverFailed(android.telecom.Call,%20int)` when the remote user rejects the handover request.

For more information on call handovers, see `https://developer.android.com/reference/android/telecom/Call#handoverTo(android.telecom.PhoneAccountHandle,%20int,%20android.os.Bundle)`.

<br />

Constant Value: 3 (0x00000003)

## Public constructors

### Callback

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Callback ()
```

<br />

<br />

## Public methods

### onCallDestroyed

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onCallDestroyed (Call call)
```

Invoked when the `Call` is destroyed. Clients should refrain from cleaning up their UI for the `Call` in response to state transitions. Specifically, clients should not assume that a `https://developer.android.com/reference/android/telecom/Call.Callback#onStateChanged(android.telecom.Call,%20int)` with a state of `https://developer.android.com/reference/android/telecom/Call#STATE_DISCONNECTED` is the final notification the `Call` will send. Rather, clients should wait for this method to be invoked.

<br />

| Parameters ||
|---|---|
| `call` | `Call`: The `Call` being destroyed. <br /> |

### onCannedTextResponsesLoaded

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onCannedTextResponsesLoaded (Call call, 
                List<String> cannedTextResponses)
```

Invoked when the text messages that can be used as responses to the incoming `Call` are loaded from the relevant database. See `https://developer.android.com/reference/android/telecom/Call#getCannedTextResponses()`.

<br />

| Parameters ||
|---|---|
| `call` | `Call`: The `Call` invoking this method. <br /> |
| `cannedTextResponses` | `List`: The text messages useable as responses. <br /> |

### onChildrenChanged

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onChildrenChanged (Call call, 
                List<Call> children)
```

Invoked when the children of this `Call` have changed. See `https://developer.android.com/reference/android/telecom/Call#getChildren()`.

<br />

| Parameters ||
|---|---|
| `call` | `Call`: The `Call` invoking this method. <br /> |
| `children` | `List`: The new children of the `Call`. <br /> |

### onConferenceableCallsChanged

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onConferenceableCallsChanged (Call call, 
                List<Call> conferenceableCalls)
```

Invoked upon changes to the set of `Call`s with which this `Call` can be conferenced.

<br />

| Parameters ||
|---|---|
| `call` | `Call`: The `Call` being updated. <br /> |
| `conferenceableCalls` | `List`: The `Call`s with which this `Call` can be conferenced. <br /> |

### onConnectionEvent

Added in [API level 25](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onConnectionEvent (Call call, 
                String event, 
                Bundle extras)
```

Invoked when a `https://developer.android.com/reference/android/telecom/Call` receives an event from its associated `https://developer.android.com/reference/android/telecom/Connection` or `https://developer.android.com/reference/android/telecom/Conference`.

Where possible, the Call should make an attempt to handle `https://developer.android.com/reference/android/telecom/Connection` events which are part of the `android.telecom.*` namespace. The Call should ignore any events it does not wish to handle. Unexpected events should be handled gracefully, as it is possible that a `https://developer.android.com/reference/android/telecom/ConnectionService` has defined its own Connection events which a Call is not aware of.

See `https://developer.android.com/reference/android/telecom/Connection#sendConnectionEvent(java.lang.String,%20android.os.Bundle)`, `https://developer.android.com/reference/android/telecom/Conference#sendConferenceEvent(java.lang.String,%20android.os.Bundle)`.

<br />

| Parameters ||
|---|---|
| `call` | `Call`: The `Call` receiving the event. <br /> |
| `event` | `String`: The event. <br /> |
| `extras` | `Bundle`: Extras associated with the connection event. <br /> |

### onDetailsChanged

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onDetailsChanged (Call call, 
                Call.Details details)
```

Invoked when the details of this `Call` have changed. See `https://developer.android.com/reference/android/telecom/Call#getDetails()`.

<br />

| Parameters ||
|---|---|
| `call` | `Call`: The `Call` invoking this method. <br /> |
| `details` | `Call.Details`: A `Details` object describing the `Call`. <br /> |

### onHandoverComplete

Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onHandoverComplete (Call call)
```

Invoked when Call handover from one `https://developer.android.com/reference/android/telecom/PhoneAccount` to other `https://developer.android.com/reference/android/telecom/PhoneAccount` has completed successfully.

For a full discussion of the handover process and the APIs involved, see `https://developer.android.com/reference/android/telecom/Call#handoverTo(android.telecom.PhoneAccountHandle,%20int,%20android.os.Bundle)`.

<br />

| Parameters ||
|---|---|
| `call` | `Call`: The call which had initiated handover. <br /> |

### onHandoverFailed

Added in [API level 28](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onHandoverFailed (Call call, 
                int failureReason)
```

Invoked when Call handover from one `https://developer.android.com/reference/android/telecom/PhoneAccount` to other `https://developer.android.com/reference/android/telecom/PhoneAccount` has failed.

For a full discussion of the handover process and the APIs involved, see `https://developer.android.com/reference/android/telecom/Call#handoverTo(android.telecom.PhoneAccountHandle,%20int,%20android.os.Bundle)`.

<br />

| Parameters ||
|---|---|
| `call` | `Call`: The call which had initiated handover. <br /> |
| `failureReason` | `int`: Error reason for failure. Value is one of the following: - `https://developer.android.com/reference/android/telecom/Call.Callback#HANDOVER_FAILURE_DEST_APP_REJECTED` - `https://developer.android.com/reference/android/telecom/Call.Callback#HANDOVER_FAILURE_NOT_SUPPORTED` - `https://developer.android.com/reference/android/telecom/Call.Callback#HANDOVER_FAILURE_USER_REJECTED` - `https://developer.android.com/reference/android/telecom/Call.Callback#HANDOVER_FAILURE_ONGOING_EMERGENCY_CALL` - `https://developer.android.com/reference/android/telecom/Call.Callback#HANDOVER_FAILURE_UNKNOWN` |

### onParentChanged

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onParentChanged (Call call, 
                Call parent)
```

Invoked when the parent of this `Call` has changed. See `https://developer.android.com/reference/android/telecom/Call#getParent()`.

<br />

| Parameters ||
|---|---|
| `call` | `Call`: The `Call` invoking this method. <br /> |
| `parent` | `Call`: The new parent of the `Call`. <br /> |

### onPostDialWait

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onPostDialWait (Call call, 
                String remainingPostDialSequence)
```

Invoked when the post-dial sequence in the outgoing `Call` has reached a pause character. This causes the post-dial signals to stop pending user confirmation. An implementation should present this choice to the user and invoke `https://developer.android.com/reference/android/telecom/Call#postDialContinue(boolean)` when the user makes the choice.

<br />

| Parameters ||
|---|---|
| `call` | `Call`: The `Call` invoking this method. <br /> |
| `remainingPostDialSequence` | `String`: The post-dial characters that remain to be sent. <br /> |

### onRttInitiationFailure

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onRttInitiationFailure (Call call, 
                int reason)
```

Invoked when the RTT session failed to initiate for some reason, including rejection by the remote party.

This callback will ONLY be invoked to report a failure related to a user initiated session modification request (i.e. `https://developer.android.com/reference/android/telecom/Call#sendRttRequest()`).

If a call is initiated with `https://developer.android.com/reference/android/telecom/TelecomManager#EXTRA_START_CALL_WITH_RTT` specified, the availability of RTT can be determined by checking `https://developer.android.com/reference/android/telecom/Call.Details#PROPERTY_RTT` once the call enters state `https://developer.android.com/reference/android/telecom/Call#STATE_ACTIVE`.

<br />

| Parameters ||
|---|---|
| `call` | `Call`: The call which the RTT initiation failure occurred on. <br /> |
| `reason` | `int`: One of the status codes defined in `https://developer.android.com/reference/android/telecom/Connection.RttModifyStatus`, with the exception of `https://developer.android.com/reference/android/telecom/Connection.RttModifyStatus#SESSION_MODIFY_REQUEST_SUCCESS`. Value is one of the following: - `https://developer.android.com/reference/android/telecom/Connection.RttModifyStatus#SESSION_MODIFY_REQUEST_SUCCESS` - `https://developer.android.com/reference/android/telecom/Connection.RttModifyStatus#SESSION_MODIFY_REQUEST_FAIL` - `https://developer.android.com/reference/android/telecom/Connection.RttModifyStatus#SESSION_MODIFY_REQUEST_INVALID` - `https://developer.android.com/reference/android/telecom/Connection.RttModifyStatus#SESSION_MODIFY_REQUEST_TIMED_OUT` - `https://developer.android.com/reference/android/telecom/Connection.RttModifyStatus#SESSION_MODIFY_REQUEST_REJECTED_BY_REMOTE` |

### onRttModeChanged

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onRttModeChanged (Call call, 
                int mode)
```

Invoked when the RTT mode changes for this call.

<br />

| Parameters ||
|---|---|
| `call` | `Call`: The call whose RTT mode has changed. <br /> |
| `mode` | `int`: the new RTT mode, one of `https://developer.android.com/reference/android/telecom/Call.RttCall#RTT_MODE_FULL`, `https://developer.android.com/reference/android/telecom/Call.RttCall#RTT_MODE_HCO`, or `https://developer.android.com/reference/android/telecom/Call.RttCall#RTT_MODE_VCO` <br /> |

### onRttRequest

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onRttRequest (Call call, 
                int id)
```

Invoked when the remote end of the connection has requested that an RTT communication channel be opened. A response to this should be sent via `https://developer.android.com/reference/android/telecom/Call#respondToRttRequest(int,%20boolean)` with the same ID that this method is invoked with.

<br />

| Parameters ||
|---|---|
| `call` | `Call`: The call which the RTT request was placed on <br /> |
| `id` | `int`: The ID of the request. <br /> |

### onRttStatusChanged

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onRttStatusChanged (Call call, 
                boolean enabled, 
                Call.RttCall rttCall)
```

Invoked when the call's RTT status changes, either from off to on or from on to off.

<br />

| Parameters ||
|---|---|
| `call` | `Call`: The call whose RTT status has changed. <br /> |
| `enabled` | `boolean`: whether RTT is now enabled or disabled <br /> |
| `rttCall` | `Call.RttCall`: the `https://developer.android.com/reference/android/telecom/Call.RttCall` object to use for reading and writing if RTT is now on, null otherwise. <br /> |

### onStateChanged

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onStateChanged (Call call, 
                int state)
```

Invoked when the state of this `Call` has changed. See `https://developer.android.com/reference/android/telecom/Call#getState()`.

<br />

| Parameters ||
|---|---|
| `call` | `Call`: The `Call` invoking this method. <br /> |
| `state` | `int`: The new state of the `Call`. Value is one of the following: - `https://developer.android.com/reference/android/telecom/Call#STATE_NEW` - `https://developer.android.com/reference/android/telecom/Call#STATE_DIALING` - `https://developer.android.com/reference/android/telecom/Call#STATE_RINGING` - `https://developer.android.com/reference/android/telecom/Call#STATE_HOLDING` - `https://developer.android.com/reference/android/telecom/Call#STATE_ACTIVE` - `https://developer.android.com/reference/android/telecom/Call#STATE_DISCONNECTED` - `https://developer.android.com/reference/android/telecom/Call#STATE_SELECT_PHONE_ACCOUNT` - `https://developer.android.com/reference/android/telecom/Call#STATE_CONNECTING` - `https://developer.android.com/reference/android/telecom/Call#STATE_DISCONNECTING` - `https://developer.android.com/reference/android/telecom/Call#STATE_PULLING_CALL` - `https://developer.android.com/reference/android/telecom/Call#STATE_AUDIO_PROCESSING` - `https://developer.android.com/reference/android/telecom/Call#STATE_SIMULATED_RINGING` |

### onVideoCallChanged

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void onVideoCallChanged (Call call, 
                InCallService.VideoCall videoCall)
```

Invoked when the `Call.VideoCall` of the `Call` has changed.

<br />

| Parameters ||
|---|---|
| `call` | `Call`: The `Call` invoking this method. <br /> |
| `videoCall` | `InCallService.VideoCall`: The `Call.VideoCall` associated with the `Call`. <br /> |