| java.lang.Object | |
| ↳ | android.telecom.Connection.VideoProvider |
Provides a means of controlling the video session associated with a Connection.
Implementations create a custom subclass of Connection.VideoProvider and the
ConnectionService creates an instance sets it on the Connection using
setVideoProvider(VideoProvider). Any connection which supports video
should set the Connection.VideoProvider.
The Connection.VideoProvider serves two primary purposes: it provides a means for Telecom and
InCallService implementations to issue requests related to the video session;
it provides a means for the ConnectionService to report events and information
related to the video session to Telecom and the InCallService implementations.
InCallService implementations interact with the Connection.VideoProvider via
InCallService.VideoCall.
| Constants | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| int | SESSION_EVENT_CAMERA_FAILURE | A camera failure has occurred for the selected camera. | |||||||||
| int | SESSION_EVENT_CAMERA_READY |
Issued after SESSION_EVENT_CAMERA_FAILURE when the camera is once again ready
for operation.
|
|||||||||
| int | SESSION_EVENT_RX_PAUSE | Video is not being received (no protocol pause was issued). | |||||||||
| int | SESSION_EVENT_RX_RESUME |
Video reception has resumed after a SESSION_EVENT_RX_PAUSE.
|
|||||||||
| int | SESSION_EVENT_TX_START | Video transmission has begun. | |||||||||
| int | SESSION_EVENT_TX_STOP | Video transmission has stopped. | |||||||||
| int | SESSION_MODIFY_REQUEST_FAIL | Session modify request failed. | |||||||||
| int | SESSION_MODIFY_REQUEST_INVALID | Session modify request ignored due to invalid parameters. | |||||||||
| int | SESSION_MODIFY_REQUEST_REJECTED_BY_REMOTE | Session modify request rejected by remote user. | |||||||||
| int | SESSION_MODIFY_REQUEST_SUCCESS | Session modify request was successful. | |||||||||
| int | SESSION_MODIFY_REQUEST_TIMED_OUT | Session modify request timed out. | |||||||||
| Public Constructors | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Public Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
Used to inform listening
InCallService implementations when the capabilities of
the current camera have changed.
| |||||||||||
Used to inform listening
InCallService implementations when the dimensions of the
peer's video have changed.
| |||||||||||
Used to inform listening
InCallService implementations when the video quality
of the call has changed.
| |||||||||||
Used to inform listening
InCallService implementations when the
Connection.VideoProvider reports a call session event.
| |||||||||||
Issues a request to the
Connection.VideoProvider to retrieve the camera capabilities.
| |||||||||||
Issues a request to the
Connection.VideoProvider to retrieve the current data usage for the
video component of the current Connection.
| |||||||||||
Issues a request to modify the properties of the current video session.
| |||||||||||
Provides a response to a request to change the current video session properties.
| |||||||||||
Sets the camera to be used for the outgoing video.
| |||||||||||
Sets the device orientation, in degrees.
| |||||||||||
Sets the surface to be used for displaying the video received from the remote device.
| |||||||||||
Provides the
Connection.VideoProvider with the Uri of an image to be displayed to
the peer device when the video signal is paused.
| |||||||||||
Sets the surface to be used for displaying a preview of what the user's camera is
currently capturing.
| |||||||||||
Sets camera zoom ratio.
| |||||||||||
Used to inform listening
InCallService implementations when the
Connection.VideoProvider receives a session modification request.
| |||||||||||
Used to inform listening
InCallService implementations when the
Connection.VideoProvider receives a response to a session modification request.
| |||||||||||
Used to inform listening
InCallService implementations when the data usage of the
video associated with the current Connection has changed.
| |||||||||||
|
[Expand]
Inherited Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.Object
| |||||||||||
A camera failure has occurred for the selected camera. The InCallService can use
this as a cue to inform the user the camera is not available.
Issued after SESSION_EVENT_CAMERA_FAILURE when the camera is once again ready
for operation. The InCallService can use this as a cue to inform the user that
the camera has become available again.
Video is not being received (no protocol pause was issued).
Video transmission has begun. This occurs after a negotiated start of video transmission when the underlying protocol has actually begun transmitting video to the remote party.
Video transmission has stopped. This occurs after a negotiated stop of video transmission when the underlying protocol has actually stopped transmitting video to the remote party.
Session modify request failed.
Session modify request ignored due to invalid parameters.
Session modify request rejected by remote user.
Session modify request was successful.
Session modify request timed out.
Used to inform listening InCallService implementations when the capabilities of
the current camera have changed.
The Connection.VideoProvider should call this in response to
onRequestCameraCapabilities(), or when the current camera is
changed via onSetCamera(String).
Received by the InCallService via
onCameraCapabilitiesChanged(VideoProfile.CameraCapabilities).
| cameraCapabilities | The new camera capabilities. |
|---|
Used to inform listening InCallService implementations when the dimensions of the
peer's video have changed.
This could occur if, for example, the peer rotates their device, changing the aspect ratio of the video, or if the user switches between the back and front cameras.
Received by the InCallService via
onPeerDimensionsChanged(int, int).
| width | The updated peer video width. |
|---|---|
| height | The updated peer video height. |
Used to inform listening InCallService implementations when the video quality
of the call has changed.
Received by the InCallService via
onVideoQualityChanged(int).
| videoQuality | The updated video quality. Valid values:
QUALITY_HIGH,
QUALITY_MEDIUM,
QUALITY_LOW,
QUALITY_DEFAULT.
|
|---|
Used to inform listening InCallService implementations when the
Connection.VideoProvider reports a call session event.
Received by the InCallService via
onCallSessionEvent(int).
| event | The event. Valid values are: SESSION_EVENT_RX_PAUSE,
SESSION_EVENT_RX_RESUME,
SESSION_EVENT_TX_START,
SESSION_EVENT_TX_STOP,
SESSION_EVENT_CAMERA_FAILURE,
SESSION_EVENT_CAMERA_READY.
|
|---|
Issues a request to the Connection.VideoProvider to retrieve the camera capabilities.
The Connection.VideoProvider should respond by communicating the capabilities of the chosen
camera via
changeCameraCapabilities(VideoProfile.CameraCapabilities).
Sent from the InCallService via
requestCameraCapabilities().
Issues a request to the Connection.VideoProvider to retrieve the current data usage for the
video component of the current Connection.
The Connection.VideoProvider should respond by communicating current data usage, in bytes,
via setCallDataUsage(long).
Sent from the InCallService via
requestCallDataUsage().
Issues a request to modify the properties of the current video session.
Example scenarios include: requesting an audio-only call to be upgraded to a
bi-directional video call, turning on or off the user's camera, sending a pause signal
when the InCallService is no longer the foreground application.
If the Connection.VideoProvider determines a request to be invalid, it should call
receiveSessionModifyResponse(int, VideoProfile, VideoProfile) to report the
invalid request back to the InCallService.
Where a request requires confirmation from the user of the peer device, the
Connection.VideoProvider must communicate the request to the peer device and handle the
user's response. receiveSessionModifyResponse(int, VideoProfile, VideoProfile)
is used to inform the InCallService of the result of the request.
Sent from the InCallService via
sendSessionModifyRequest(VideoProfile).
| fromProfile | The video profile prior to the request. |
|---|---|
| toProfile | The video profile with the requested changes made. |
Provides a response to a request to change the current video session properties.
For example, if the peer requests and upgrade from an audio-only call to a bi-directional
video call, could decline the request and keep the call as audio-only.
In such a scenario, the responseProfile would have a video state of
STATE_AUDIO_ONLY. If the user had decided to accept the request,
the video state would be STATE_BIDIRECTIONAL.
Sent from the InCallService via
sendSessionModifyResponse(VideoProfile) in response to
a onSessionModifyRequestReceived(VideoProfile)
callback.
| responseProfile | The response video profile. |
|---|
Sets the camera to be used for the outgoing video.
The Connection.VideoProvider should respond by communicating the capabilities of the chosen
camera via
changeCameraCapabilities(VideoProfile.CameraCapabilities).
Sent from the InCallService via
setCamera(String).
| cameraId | The id of the camera (use ids as reported by
getCameraIdList()).
|
|---|
Sets the device orientation, in degrees. Assumes that a standard portrait orientation of the device is 0 degrees.
Sent from the InCallService via
setDeviceOrientation(int).
| rotation | The device orientation, in degrees. |
|---|
Sets the surface to be used for displaying the video received from the remote device.
Sent from the InCallService via
setDisplaySurface(Surface).
| surface | The Surface.
|
|---|
Provides the Connection.VideoProvider with the Uri of an image to be displayed to
the peer device when the video signal is paused.
Sent from the InCallService via
setPauseImage(Uri).
| uri | URI of image to display. |
|---|
Sets the surface to be used for displaying a preview of what the user's camera is currently capturing. When video transmission is enabled, this is the video signal which is sent to the remote device.
Sent from the InCallService via
setPreviewSurface(Surface).
| surface | The Surface.
|
|---|
Sets camera zoom ratio.
Sent from the InCallService via setZoom(float).
| value | The camera zoom ratio. |
|---|
Used to inform listening InCallService implementations when the
Connection.VideoProvider receives a session modification request.
Received by the InCallService via
onSessionModifyRequestReceived(VideoProfile),
| videoProfile | The requested video profile. |
|---|
Used to inform listening InCallService implementations when the
Connection.VideoProvider receives a response to a session modification request.
Received by the InCallService via
onSessionModifyResponseReceived(int, VideoProfile, VideoProfile).
| status | Status of the session modify request. Valid values are
SESSION_MODIFY_REQUEST_SUCCESS,
SESSION_MODIFY_REQUEST_FAIL,
SESSION_MODIFY_REQUEST_INVALID,
SESSION_MODIFY_REQUEST_TIMED_OUT,
SESSION_MODIFY_REQUEST_REJECTED_BY_REMOTE |
|---|---|
| requestedProfile | The original request which was sent to the peer device. |
| responseProfile | The actual profile changes agreed to by the peer device. |
Used to inform listening InCallService implementations when the data usage of the
video associated with the current Connection has changed.
This could be in response to a preview request via
onRequestConnectionDataUsage(), or as a periodic update by the
Connection.VideoProvider. Where periodic updates of data usage are provided, they should be
provided at most for every 1 MB of data transferred and no more than once every 10 sec.
Received by the InCallService via
onCallDataUsageChanged(long).
| dataUsage | The updated data usage (in bytes). Reported as the cumulative bytes used since the start of the call. |
|---|