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 |
|
---|---|
From class 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. |