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

# InCallService.VideoCall.Callback

*** ** * ** ***


`
public
static

abstract
class
InCallService.VideoCall.Callback
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


`

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

<br />

*** ** * ** ***

The `https://developer.android.com/reference/android/telecom/InCallService` extends this class to provide a means of receiving callbacks
from the `https://developer.android.com/reference/android/telecom/Connection.VideoProvider`.


When the `https://developer.android.com/reference/android/telecom/InCallService` receives the
`https://developer.android.com/reference/android/telecom/Call.Callback#onVideoCallChanged(android.telecom.Call,%20android.telecom.InCallService.VideoCall)` callback, it should create an
instance its `https://developer.android.com/reference/android/telecom/InCallService.VideoCall.Callback` implementation and set it on the
`https://developer.android.com/reference/android/telecom/InCallService.VideoCall` using `https://developer.android.com/reference/android/telecom/InCallService.VideoCall#registerCallback(android.telecom.InCallService.VideoCall.Callback)`.

## Summary

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

| ### Public methods ||
|---|---|
| ` abstract void` | ` https://developer.android.com/reference/android/telecom/InCallService.VideoCall.Callback#onCallDataUsageChanged(long)(long dataUsage) ` Handles an update to the total data used for the current video session. |
| ` abstract void` | ` https://developer.android.com/reference/android/telecom/InCallService.VideoCall.Callback#onCallSessionEvent(int)(int event) ` Handles events related to the current video session which the `https://developer.android.com/reference/android/telecom/InCallService` may wish to handle. |
| ` abstract void` | ` https://developer.android.com/reference/android/telecom/InCallService.VideoCall.Callback#onCameraCapabilitiesChanged(android.telecom.VideoProfile.CameraCapabilities)(https://developer.android.com/reference/android/telecom/VideoProfile.CameraCapabilities cameraCapabilities) ` Handles a change in the capabilities of the currently selected camera. |
| ` abstract void` | ` https://developer.android.com/reference/android/telecom/InCallService.VideoCall.Callback#onPeerDimensionsChanged(int,%20int)(int width, int height) ` Handles a change to the video dimensions from the peer device. |
| ` abstract void` | ` https://developer.android.com/reference/android/telecom/InCallService.VideoCall.Callback#onSessionModifyRequestReceived(android.telecom.VideoProfile)(https://developer.android.com/reference/android/telecom/VideoProfile videoProfile) ` Called when the `https://developer.android.com/reference/android/telecom/Connection.VideoProvider` receives a session modification request from the peer device. |
| ` abstract void` | ` https://developer.android.com/reference/android/telecom/InCallService.VideoCall.Callback#onSessionModifyResponseReceived(int,%20android.telecom.VideoProfile,%20android.telecom.VideoProfile)(int status, https://developer.android.com/reference/android/telecom/VideoProfile requestedProfile, https://developer.android.com/reference/android/telecom/VideoProfile responseProfile) ` Called when the `https://developer.android.com/reference/android/telecom/Connection.VideoProvider` receives a response to a session modification request previously sent to the peer device. |
| ` abstract void` | ` https://developer.android.com/reference/android/telecom/InCallService.VideoCall.Callback#onVideoQualityChanged(int)(int videoQuality) ` Handles a change to the video quality. |

| ### 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*. | ||

## 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

### onCallDataUsageChanged

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

```
public abstract void onCallDataUsageChanged (long dataUsage)
```

Handles an update to the total data used for the current video session.


Used by the `https://developer.android.com/reference/android/telecom/Connection.VideoProvider` in response to
`https://developer.android.com/reference/android/telecom/InCallService.VideoCall#requestCallDataUsage()`. May also be called periodically by the
`https://developer.android.com/reference/android/telecom/Connection.VideoProvider`.


Callback originates from `https://developer.android.com/reference/android/telecom/Connection.VideoProvider#setCallDataUsage(long)`.

<br />

| Parameters ||
|---|---|
| `dataUsage` | `long`: The updated data usage (in bytes). <br /> |

### onCallSessionEvent

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

```
public abstract void onCallSessionEvent (int event)
```

Handles events related to the current video session which the `https://developer.android.com/reference/android/telecom/InCallService`
may wish to handle. These are separate from requested changes to the session due to
the underlying protocol or connection.


Callback originates from
`https://developer.android.com/reference/android/telecom/Connection.VideoProvider#handleCallSessionEvent(int)`.

<br />

| Parameters ||
|---|---|
| `event` | `int`: The event. Valid values are: `https://developer.android.com/reference/android/telecom/Connection.VideoProvider#SESSION_EVENT_RX_PAUSE`, `https://developer.android.com/reference/android/telecom/Connection.VideoProvider#SESSION_EVENT_RX_RESUME`, `https://developer.android.com/reference/android/telecom/Connection.VideoProvider#SESSION_EVENT_TX_START`, `https://developer.android.com/reference/android/telecom/Connection.VideoProvider#SESSION_EVENT_TX_STOP`, `https://developer.android.com/reference/android/telecom/Connection.VideoProvider#SESSION_EVENT_CAMERA_FAILURE`, `https://developer.android.com/reference/android/telecom/Connection.VideoProvider#SESSION_EVENT_CAMERA_READY`, `https://developer.android.com/reference/android/telecom/Connection.VideoProvider#SESSION_EVENT_CAMERA_PERMISSION_ERROR`. <br /> |

### onCameraCapabilitiesChanged

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

```
public abstract void onCameraCapabilitiesChanged (VideoProfile.CameraCapabilities cameraCapabilities)
```

Handles a change in the capabilities of the currently selected camera.


Used by the `https://developer.android.com/reference/android/telecom/Connection.VideoProvider` in response to
`https://developer.android.com/reference/android/telecom/InCallService.VideoCall#requestCameraCapabilities()`. The `https://developer.android.com/reference/android/telecom/Connection.VideoProvider`
may also report the camera capabilities after a call to
`https://developer.android.com/reference/android/telecom/InCallService.VideoCall#setCamera(java.lang.String)`.


Callback originates from
`https://developer.android.com/reference/android/telecom/Connection.VideoProvider#changeCameraCapabilities(android.telecom.VideoProfile.CameraCapabilities)`.

<br />

| Parameters ||
|---|---|
| `cameraCapabilities` | `VideoProfile.CameraCapabilities`: The changed camera capabilities. <br /> |

### onPeerDimensionsChanged

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

```
public abstract void onPeerDimensionsChanged (int width, 
                int height)
```

Handles a change to the video dimensions from the peer device. This could happen if,
for example, the peer changes orientation of their device, or switches cameras.


Callback originates from
`https://developer.android.com/reference/android/telecom/Connection.VideoProvider#changePeerDimensions(int,%20int)`.

<br />

| Parameters ||
|---|---|
| `width` | `int`: The updated peer video width. <br /> |
| `height` | `int`: The updated peer video height. <br /> |

### onSessionModifyRequestReceived

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

```
public abstract void onSessionModifyRequestReceived (VideoProfile videoProfile)
```

Called when the `https://developer.android.com/reference/android/telecom/Connection.VideoProvider` receives a session modification
request from the peer device.


The `https://developer.android.com/reference/android/telecom/InCallService` may potentially prompt the user to confirm whether they
wish to accept the request, or decide to automatically accept the request. In either
case the `https://developer.android.com/reference/android/telecom/InCallService` should call
`https://developer.android.com/reference/android/telecom/InCallService.VideoCall#sendSessionModifyResponse(android.telecom.VideoProfile)` to indicate the video
profile agreed upon.


Callback originates from
`https://developer.android.com/reference/android/telecom/Connection.VideoProvider#receiveSessionModifyRequest(android.telecom.VideoProfile)`.

<br />

| Parameters ||
|---|---|
| `videoProfile` | `VideoProfile`: The requested video profile. <br /> |

### onSessionModifyResponseReceived

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

```
public abstract void onSessionModifyResponseReceived (int status, 
                VideoProfile requestedProfile, 
                VideoProfile responseProfile)
```

Called when the `https://developer.android.com/reference/android/telecom/Connection.VideoProvider` receives a response to a session
modification request previously sent to the peer device.


The new video state should not be considered active by the `https://developer.android.com/reference/android/telecom/InCallService`
until the `https://developer.android.com/reference/android/telecom/Call` video state changes (the
`https://developer.android.com/reference/android/telecom/Call.Callback#onDetailsChanged(android.telecom.Call,%20android.telecom.Call.Details)` callback is triggered
when the video state changes).


Callback originates from
`https://developer.android.com/reference/android/telecom/Connection.VideoProvider#receiveSessionModifyResponse(int,%20android.telecom.VideoProfile,%20android.telecom.VideoProfile)`.

<br />

| Parameters ||
|---|---|
| `status` | `int`: Status of the session modify request. Valid values are `https://developer.android.com/reference/android/telecom/Connection.VideoProvider#SESSION_MODIFY_REQUEST_SUCCESS`, `https://developer.android.com/reference/android/telecom/Connection.VideoProvider#SESSION_MODIFY_REQUEST_FAIL`, `https://developer.android.com/reference/android/telecom/Connection.VideoProvider#SESSION_MODIFY_REQUEST_INVALID`, `https://developer.android.com/reference/android/telecom/Connection.VideoProvider#SESSION_MODIFY_REQUEST_TIMED_OUT`, `https://developer.android.com/reference/android/telecom/Connection.VideoProvider#SESSION_MODIFY_REQUEST_REJECTED_BY_REMOTE`. <br /> |
| `requestedProfile` | `VideoProfile`: The original request which was sent to the peer device. <br /> |
| `responseProfile` | `VideoProfile`: The actual profile changes made by the peer device. <br /> |

### onVideoQualityChanged

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

```
public abstract void onVideoQualityChanged (int videoQuality)
```

Handles a change to the video quality.


Callback originates from `https://developer.android.com/reference/android/telecom/Connection.VideoProvider#changeVideoQuality(int)`.

<br />

| Parameters ||
|---|---|
| `videoQuality` | `int`: The updated peer video quality. Valid values: `https://developer.android.com/reference/android/telecom/VideoProfile#QUALITY_HIGH`, `https://developer.android.com/reference/android/telecom/VideoProfile#QUALITY_MEDIUM`, `https://developer.android.com/reference/android/telecom/VideoProfile#QUALITY_LOW`, `https://developer.android.com/reference/android/telecom/VideoProfile#QUALITY_DEFAULT`. <br /> |