会话事件
TcrSession#TcrEvent 事件枚举,通过 TcrSession#Observer#onEvent() 方法回调。
会话生命周期事件
事件代码 | 事件含义 | 事件详细描述 |
STATE_INITED | 会话已初始化 | 事件数据为 String (client Session)。 |
STATE_CONNECTED | 会话已连接 | 无事件数据。 |
STATE_RECONNECTING | 会话正在重连 | 在网络中断时 SDK 会尝试进行会话重连,App 会收到此事件。App 可以在 UI 上提示用户,例如“网络连接中...”。 无事件数据。 |
STATE_CLOSED | 会话已关闭 | 收到此事件后,会话已关闭,无法再使用。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 | 输入法类型 | 事件数据为 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 } |