public static abstract class Connection.VideoProvider
extends Object
| java.lang.Object | |
| android.telecom.Connection.VideoProvider | |
提供了一种控制与 Connection相关的视频会话的 Connection 。
实现创建一个自定义子类Connection.VideoProvider和ConnectionService创建一个实例并将其设置在上Connection使用setVideoProvider(VideoProvider) 。 任何支持视频的连接都应该设置为Connection.VideoProvider 。
Connection.VideoProvider两个主要用途:它为电信和InCallService实现提供了一种方法来发出与视频会话相关的请求; 它为ConnectionService向电信和InCallService实现报告与视频会话有关的事件和信息提供了一种手段。
InCallService实现通过 InCallService.VideoCall与 Connection.VideoProvider InCallService.VideoCall 。
常量(Constants) |
|
|---|---|
int |
SESSION_EVENT_CAMERA_FAILURE 所选相机发生相机故障。 |
int |
SESSION_EVENT_CAMERA_READY 当相机再次准备好操作时,在 |
int |
SESSION_EVENT_RX_PAUSE 没有收到视频(没有发布协议暂停)。 |
int |
SESSION_EVENT_RX_RESUME 视频接收已经在 |
int |
SESSION_EVENT_TX_START 视频传输已经开始。 |
int |
SESSION_EVENT_TX_STOP 视频传输已停止。 |
int |
SESSION_MODIFY_REQUEST_FAIL 会话修改请求失败。 |
int |
SESSION_MODIFY_REQUEST_INVALID 会话修改请求由于参数无效而被忽略。 |
int |
SESSION_MODIFY_REQUEST_REJECTED_BY_REMOTE 会话修改请求被远程用户拒绝。 |
int |
SESSION_MODIFY_REQUEST_SUCCESS 会话修改请求成功。 |
int |
SESSION_MODIFY_REQUEST_TIMED_OUT 会话修改请求超时。 |
Public constructors |
|
|---|---|
Connection.VideoProvider() |
|
公共方法(Public methods) |
|
|---|---|
void |
changeCameraCapabilities(VideoProfile.CameraCapabilities cameraCapabilities) 用于在当前相机的功能发生变化时通知监听 |
void |
changePeerDimensions(int width, int height) 用于通知监听 |
void |
changeVideoQuality(int videoQuality) 用于在通话的视频质量发生变化时通知监听 |
void |
handleCallSessionEvent(int event) 用于在 |
abstract void |
onRequestCameraCapabilities() 向 |
abstract void |
onRequestConnectionDataUsage() 向 |
abstract void |
onSendSessionModifyRequest(VideoProfile fromProfile, VideoProfile toProfile) 发出请求以修改当前视频会话的属性。 |
abstract void |
onSendSessionModifyResponse(VideoProfile responseProfile) 提供对更改当前视频会话属性的请求的响应。 |
abstract void |
onSetCamera(String cameraId) 设置用于传出视频的摄像头。 |
abstract void |
onSetDeviceOrientation(int rotation) 以度为单位设置设备方向。 |
abstract void |
onSetDisplaySurface(Surface surface) 设置用于显示从远程设备接收的视频的表面。 |
abstract void |
onSetPauseImage(Uri uri) 提供 |
abstract void |
onSetPreviewSurface(Surface surface) 设置用于显示用户相机当前正在捕捉的内容的表面。 |
abstract void |
onSetZoom(float value) 设置相机缩放比例。 |
void |
receiveSessionModifyRequest(VideoProfile videoProfile) 用于在 |
void |
receiveSessionModifyResponse(int status, VideoProfile requestedProfile, VideoProfile responseProfile) 当 |
void |
setCallDataUsage(long dataUsage) 当与当前 |
继承方法(Inherited methods) |
|
|---|---|
java.lang.Object
|
|
int SESSION_EVENT_CAMERA_FAILURE
所选相机发生相机故障。 InCallService可以使用此作为提示来通知用户相机不可用。
也可以看看:
常量值:5(0x00000005)
int SESSION_EVENT_CAMERA_READY
当相机再次准备好操作时,在SESSION_EVENT_CAMERA_FAILURE之后发行。 InCallService可以使用此作为提示,通知用户相机已重新可用。
也可以看看:
常数值:6(0x00000006)
int SESSION_EVENT_RX_PAUSE
没有收到视频(没有发布协议暂停)。
也可以看看:
常数值:1(0x00000001)
int SESSION_EVENT_RX_RESUME
SESSION_EVENT_RX_PAUSE之后,视频接收已恢复。
也可以看看:
常量值:2(0x00000002)
int SESSION_EVENT_TX_START
视频传输已经开始。 这在协商开始视频传输之后发生,当底层协议实际开始将视频传输到远程方时。
也可以看看:
常量值:3(0x00000003)
int SESSION_EVENT_TX_STOP
视频传输已停止。 这发生在协商停止视频传输后,底层协议实际上已停止将视频传输到远程方。
也可以看看:
常量值:4(0x00000004)
int SESSION_MODIFY_REQUEST_FAIL
会话修改请求失败。
常量值:2(0x00000002)
int SESSION_MODIFY_REQUEST_INVALID
会话修改请求由于参数无效而被忽略。
常量值:3(0x00000003)
int SESSION_MODIFY_REQUEST_REJECTED_BY_REMOTE
会话修改请求被远程用户拒绝。
常量值:5(0x00000005)
int SESSION_MODIFY_REQUEST_SUCCESS
会话修改请求成功。
常数值:1(0x00000001)
int SESSION_MODIFY_REQUEST_TIMED_OUT
会话修改请求超时。
常量值:4(0x00000004)
void changeCameraCapabilities (VideoProfile.CameraCapabilities cameraCapabilities)
当当前相机的功能发生变化时,用于通知监听实现 InCallService 。
Connection.VideoProvider应在 onRequestCameraCapabilities()响应中或通过 onSetCamera(String)更改当前摄像头时调用此 onSetCamera(String) 。
由 InCallService通过 onCameraCapabilitiesChanged(VideoProfile.CameraCapabilities) 。
| 参数(Parameters) | |
|---|---|
cameraCapabilities |
VideoProfile.CameraCapabilities: The new camera capabilities. |
void changePeerDimensions (int width,
int height)
用于在对等方视频的尺寸发生变化时通知监听 InCallService实施。
例如,如果对等设备旋转其设备,更改视频的宽高比,或者用户在后置摄像头和前置摄像头之间切换,则可能会发生这种情况。
由 InCallService通过 onPeerDimensionsChanged(int, int) 。
| 参数(Parameters) | |
|---|---|
width |
int: The updated peer video width. |
height |
int: The updated peer video height. |
void changeVideoQuality (int videoQuality)
当通话的视频质量发生变化时,用于通知监听 InCallService 。
收到 InCallService通过 onVideoQualityChanged(int) 。
| 参数(Parameters) | |
|---|---|
videoQuality |
int: The updated video quality. Valid values: QUALITY_HIGH, QUALITY_MEDIUM, QUALITY_LOW, QUALITY_DEFAULT. |
void handleCallSessionEvent (int event)
用于在 Connection.VideoProvider报告呼叫会话事件时通知监听 InCallService实施。
收到 InCallService通过 onCallSessionEvent(int) 。
| 参数(Parameters) | |
|---|---|
event |
int: 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. |
void onRequestCameraCapabilities ()
向 Connection.VideoProvider发出请求以检索相机功能。
Connection.VideoProvider应通过通过 changeCameraCapabilities(VideoProfile.CameraCapabilities)所选摄像头的功能进行 changeCameraCapabilities(VideoProfile.CameraCapabilities) 。
void onRequestConnectionDataUsage ()
向 Connection.VideoProvider发出请求,以检索当前 Connection的视频组件的当前数据使用情况。
Connection.VideoProvider应通过通过 setCallDataUsage(long)传送当前数据使用情况(以字节为单位)进行 setCallDataUsage(long) 。
void onSendSessionModifyRequest (VideoProfile fromProfile, VideoProfile toProfile)
发出请求以修改当前视频会话的属性。
示例方案包括:请求将纯音频呼叫升级为双向视频呼叫,打开或关闭用户摄像头,并在 InCallService不再是前台应用程序时发送暂停信号。
如果 Connection.VideoProvider确定请求无效,则应调用 receiveSessionModifyResponse(int, VideoProfile, VideoProfile)将无效请求回报给 InCallService 。
如果请求需要对等设备用户的确认,则Connection.VideoProvider必须将请求传送给对等设备并处理用户的响应。 receiveSessionModifyResponse(int, VideoProfile, VideoProfile)用于通知InCallService请求的结果。
通过 sendSessionModifyRequest(VideoProfile)从 InCallService发送。
| 参数(Parameters) | |
|---|---|
fromProfile |
VideoProfile: The video profile prior to the request. |
toProfile |
VideoProfile: The video profile with the requested changes made. |
void onSendSessionModifyResponse (VideoProfile responseProfile)
提供对更改当前视频会话属性的请求的响应。
例如,如果对方请求并从纯音频呼叫升级为双向视频呼叫,则可能会拒绝该请求并将该呼叫保持为纯音频。 在这种情况下, responseProfile的视频状态为STATE_AUDIO_ONLY 。 如果用户决定接受请求,则视频状态将为STATE_BIDIRECTIONAL 。
响应 onSessionModifyRequestReceived(VideoProfile)回调,通过 sendSessionModifyResponse(VideoProfile)从 InCallService发送。
| 参数(Parameters) | |
|---|---|
responseProfile |
VideoProfile: The response video profile. |
void onSetCamera (String cameraId)
设置用于传出视频的摄像头。
Connection.VideoProvider应通过通过 changeCameraCapabilities(VideoProfile.CameraCapabilities)所选摄像机的功能进行 changeCameraCapabilities(VideoProfile.CameraCapabilities) 。
通过 setCamera(String)从 InCallService发送。
| 参数(Parameters) | |
|---|---|
cameraId |
String: The id of the camera (use ids as reported by getCameraIdList()). |
void onSetDeviceOrientation (int rotation)
以度为单位设置设备方向。 假定设备的标准纵向方向是0度。
通过 setDeviceOrientation(int)从 InCallService发送。
| 参数(Parameters) | |
|---|---|
rotation |
int: The device orientation, in degrees. |
void onSetDisplaySurface (Surface surface)
设置用于显示从远程设备接收的视频的表面。
从已发送 InCallService通过 setDisplaySurface(Surface) 。
| 参数(Parameters) | |
|---|---|
surface |
Surface: The Surface. |
void onSetPauseImage (Uri uri)
提供 Connection.VideoProvider与 Uri的图像的,当视频信号被暂停,以便显示给对等设备。
从 InCallService通过 setPauseImage(Uri)发送。
| 参数(Parameters) | |
|---|---|
uri |
Uri: URI of image to display. |
void onSetPreviewSurface (Surface surface)
设置用于显示用户相机当前正在捕捉的内容的表面。 当启用视频传输时,这是发送到远程设备的视频信号。
通过 setPreviewSurface(Surface)从 InCallService发送。
| 参数(Parameters) | |
|---|---|
surface |
Surface: The Surface. |
void onSetZoom (float value)
设置相机缩放比例。
通过 setZoom(float)从 InCallService发送。
| 参数(Parameters) | |
|---|---|
value |
float: The camera zoom ratio. |
void receiveSessionModifyRequest (VideoProfile videoProfile)
用于在 Connection.VideoProvider收到会话修改请求时通知监听 InCallService实现。
由 InCallService通过 onSessionModifyRequestReceived(VideoProfile) ,
| 参数(Parameters) | |
|---|---|
videoProfile |
VideoProfile: The requested video profile. |
void receiveSessionModifyResponse (int status,
VideoProfile requestedProfile,
VideoProfile responseProfile)
用于在 Connection.VideoProvider收到对会话修改请求的响应时通知监听 InCallService实现。
收到 InCallService通过 onSessionModifyResponseReceived(int, VideoProfile, VideoProfile) 。
| 参数(Parameters) | |
|---|---|
status |
int: 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 |
VideoProfile: The original request which was sent to the peer device. |
responseProfile |
VideoProfile: The actual profile changes agreed to by the peer device. |
void setCallDataUsage (long dataUsage)
当与当前 Connection关联的视频的数据使用量发生变化时,用于通知监听 InCallService实施。
这可以通过以下方式响应于预览请求onRequestConnectionDataUsage() ,或者由周期性更新Connection.VideoProvider 。 在定期更新数据使用情况时,应该每传输1 MB数据至多提供一次,并且每10秒不超过一次。
收到 InCallService通过 onCallDataUsageChanged(long) 。
| 参数(Parameters) | |
|---|---|
dataUsage |
long: The updated data usage (in bytes). Reported as the cumulative bytes used since the start of the call. |