事件回调

最近更新时间:2025-08-18 12:06:22

我的收藏

会话事件

TcrSession#TcrEvent 事件枚举,通过 TcrSession#Observer#onEvent() 方法回调。

会话生命周期事件

事件代码
事件含义
事件详细描述
STATE_INITED
会话已初始化
详情参见 创建会话
事件数据为 String (client Session)。
STATE_CONNECTED
会话已连接
详情参见 启动会话
无事件数据。
STATE_RECONNECTING
会话正在重连
在网络中断时 SDK 会尝试进行会话重连,App 会收到此事件。App 可以在 UI 上提示用户,例如“网络连接中...”。
无事件数据。
STATE_CLOSED
会话已关闭
创建会话 失败、 启动会话 失败、主动 释放会话、或者其他异常原因导致会话结束的时候,App 会收到此事件。
收到此事件后,会话已关闭,无法再使用。App 可以记录错误日志,上报运营分析等。
事件数据为 Integer 类型,具体值范围和含义参考 TcrCode#SessionStopBaseCode

会话状态事件

事件代码
事件含义
事件详细描述
CLIENT_STATS
性能数据
App 会定时收到此事件;App 可以记录和分析性能数据。
事件数据为 StatsInfo 类型。
CLIENT_IDLE
客户端空闲
当用户长时间(TcrSessionConfig#idleThreshold 配置)未操作鼠标、键盘或屏幕时,App 会收到此事件。App 可以根据自己的业务逻辑进行处理,如主动结束会话、忽略等。
无事件数据。
CLIENT_LOW_FPS
客户端低帧率
当客户端帧率连续10秒保持低水平时(TcrSessionConfig#lowFpsThreshold 配置),App 会收到此事件。App 可以根据自己的业务逻辑进行处理,如提醒用户、忽略等。
无事件数据。

云端状态事件

事件代码
事件含义
事件详细描述
OPEN_URL
打开链接
当在云机上点击了可打开的 URL 链接时,App 会收到此事件。App 可以处理 URL 点击事件,例如打开浏览器。
事件数据为 URL 字符串。
CAMERA_STATUS_CHANGED
摄像头状态改变
当云机上的摄像头状态发生改变时,App 会收到此事件。App 可以处理摄像头状态事件,例如调整 UI 等。
事件数据为 JSON 格式的 String 类型,包含分辨率宽度、高度和摄像头状态,示例数据:
{
"status": "open_back/open_front/close",
"height": 720,
"width": 1280
}
其中 status 取值和含义:
"open_back":打开后置摄像头。
"open_front":打开前置摄像头。
"close":关闭摄像头。
IME_TYPE
输入法类型
在刚连接上云机时,或者云机 切换输入法 时,App 会收到此事件。App 可以切换本地的输入状态或 UI。
事件数据为 JSON 格式的 String 类型,包含云机当前的 IME 状态,示例数据:
{"ime_type":"cloud"/"local"}
其中:
"cloud":云端输入法。
"local":本地输入法。
INPUT_STATUS_CHANGED
输入状态改变
当云机上的输入状态发生改变时,App 会收到此事件。App 可以处理更新本地的输入状态,例如禁用用户输入控件。
事件数据为 JSON 格式的 String 类型,包含状态信息。示例数据:
{status:"disabled/enabled"}
其中:
disabled:禁止用户输入
enabled:允许用户输入
SCREEN_CONFIG_CHANGE
屏幕配置改变
当云机上的屏幕配置发生改变时,App 会收到此事件。App 可以更新本地的页面屏幕配置方向,以和云端一致,例如切换 Activity 的横竖屏。
事件数据为 ScreenConfig 类型,包含屏幕方向、角度等信息。
VIDEO_STREAM_CONFIG_CHANGED
视频流配置改变
当云机串流的视频流配置发生改变时,App 会收到此事件。App 可以按需更新解码器、渲染视图的参数。
事件数据为 VideoStreamConfig 类型,包含视频宽度、高度等信息。
INPUT_STATE_CHANGE
输入框状态改变
当云机上的输入框状态(如焦点)发生改变时,App 会收到此事件。App 可以处理更新本地的输入框状态,例如同步文本内容。
事件数据为 JSON 格式的 String 类型,包含输入框类型、文本内容等信息。示例数据:
{
"field_type": "normal_input|autologin_input|unfocused",
"status": "disabled/enabled",
"input_type": 32,
"text": "xxx",
"start_index": 0
}
其中:
field_type:
normal_input:点击普通窗口的输入框。
autologin_input:【废弃】点击登录窗口的输入框(登录窗口由云端 RunningConfig 配置), 可以配合 ack 的 auto_login 消息进行自动登录。
unfocused:从输入框移出光标。
status(只有端游支持,在自动登录过程中为了避免客户干扰,会忽略所有客户端发过来的控制消息):
disabled:禁止客户端输入。
enabled:允许客户端输入。
input_type:Android 输入框的类型。
text:输入框文字,只在 Android 平台支持。
start_index:表示当前光标在文本中的位置,只在 Android 平台支持。

云手机事件

事件代码
事件含义
事件详细描述
CAI_TRANS_MESSAGE
应用透传消息
当云端应用向客户端发送透传消息时,App 会收到此事件。App 可以根据自己的业务逻辑进行处理。
事件数据为 JsonObject 类型,包含包名和消息内容。示例数据:
{
"package_name": "com.example.myapplication",
"msg": "test msg"
}
CAI_SYSTEM_USAGE
云手机负载信息
每10s云端应用向客户端发送的负载信息。App 可以根据自己的业务逻辑进行处理。
事件数据为 JsonObject 类型,包含 CPU、内存和 GPU 使用率等。示例数据:
{
"cpu_usage": 30.1,
"mem_usage": 7.2,
"gpu_usage": 12.0
}
CAI_CLIPBOARD
剪贴板同步
当云手机剪贴板内容发生变化时,App 会收到此事件。App 可以根据自己的业务逻辑进行处理。
事件数据为 JsonObject 类型,包含剪贴板文本内容。示例数据:
{"text": "abc"}
CAI_NOTIFICATION
收到通知消息
当云手机上有新通知时,App 会收到此事件。App 可以根据自己的业务逻辑进行处理。
事件数据为 JsonObject 类型,包含应用包名、通知标题和正文。示例数据:
{
"package_name": "com.tencent.qq",
"title": "11",
"text": "22"
}
CAI_SYSTEM_STATUS
系统状态更新
每1秒云端应用向客户端发送的系统状态。App 可以根据自己的业务逻辑进行处理。
事件数据为 JsonObject 类型,包含导航栏可见性和媒体音量。示例数据:
{
"nav_visible": false,
"music_volume": 8
}