1. 初始化
云游戏
  • OPENAPI
    • 接口签名
    • 接口状态码
    • 服务流程
    • 存档回调
    • 初始化
      • 获取token
    • 启动游戏
      • 正常开始游戏
      • 重连会话
      • 接管会话
    • 排队
      • 游戏队列
      • 取消排队
      • 排队期间切换显示等级
    • 游戏中
      • 切换显示等级
      • 客户端主动挂机
      • 手动存档
      • 游戏存档指定用户
      • 设置挂机时长
    • 用户情况
      • 自己的会话列表
      • 自己的排队
      • 房主设置控制权限
    • 会话管理
      • 服务端停止游戏
      • 开始直播
      • 结束直播
    • 存档
      • 存档列表
      • 购买存档
      • 删除存档
      • 存档信息
      • 寄卖存档
    • 服务情况
      • 资源使用情况
      • 排队人数
      • 会话列表
      • 游戏列表
      • 查询会话状态
    • 个人云存储
      • 个人云存储集群
      • 创建个人云存储
      • 删除个人云存储
      • 个人云存储列表
      • 扩容个人云存储
  • 云游戏客户端SDK
    • 流程和事件
    • JSSDK
      • 示例
      • JSSDK版本更新,最新1.3.4
      • SDK初始化
      • 开始游戏
      • 退出游戏
      • 设置视频等级
      • 询手柄列表
      • 添加虚拟手柄
      • 删除虚拟手柄
      • 开启/关闭手柄
      • 发送手柄状态
      • 开关/关闭键盘鼠标
      • 切换鼠标模式
      • 发送键鼠按键
      • 游戏空闲时间限制
      • 获取鼠标模式
      • 暂停鼠标键盘
      • 恢复鼠标键盘
      • 获取操控空闲时间
      • 接管游戏
      • 重连会话
      • 设置挂机时长
      • 主动挂机
      • 房主设置控制权限(停用)
      • 开始简单操控器
      • 退出简单操控器
      • 修改操控设备
      • 重启游戏
      • 开关/关闭手柄震动
      • 获取显示器数量
      • 切换显示器
      • 手动存档
      • 发起拷贝
      • 设置鼠标滚轮速度
      • 启动辅助程序
      • 鼠标拖拽模式
      • 本地音视频设备共享
      • 发送触屏状态
      • 发送透传消息
      • 设置鼠标灵敏度
      • 设置指针设备
      • 虚拟键鼠布局
      • 设置键盘大小写状态
      • 获取服务器局域网IP
      • 开关仅全屏模式下锁定鼠标
      • 发送文本
      • 视频录制与下载
      • 视频截图
    • Android SDK
      • 快速接入
      • 版本变动
      • 初始化
        • 初始化-游戏画面设置
        • 初始化-游戏画面设置(兼容模式)
        • 初始化-是否启用兼容模式显示
      • 建联
        • 建联-开始游戏
        • 建联-接管会话
        • 建联-重连会话
        • 建联-停止游戏
        • 建联-主动挂机
      • 操控
        • 操控-发送手柄指令
        • 操控-发送键盘指令
        • 操控-发送鼠标指令(逐步废弃)
        • 操控-物理按键事件处理(逐步废弃)
        • 操控-MotionEvent处理
        • 操控-发送鼠标指令(新)
        • 操控-获取手柄集
        • 操控-发送触摸指令
      • 设置
        • 设置-码流格式
        • 设置-视频等级
        • 设置-挂机时长
        • 设置-操控权限
        • 设置-软解硬解
        • 设置-房间修改用户控制权限
        • 设置-音量设置
        • 设置-鼠标模式设置
      • 文件管理
        • 文件管理-挂载本地目录
        • 文件管理-卸载挂载目录
        • 文件管理-客户端拷贝文件列表到远端服务器剪切板
        • 文件管理-客户端拷贝文本到远端服务器剪切板
        • 文件管理-客户端下载远端服务器剪切板文件列表
        • 文件管理-语音或者视频上传云端
      • 其他
        • 其它-手动存档
        • 其它-重启游戏(加载存档)
        • 其它-上号助手/启动进程
        • 其它-发送文本接口
        • 其它-端获服务器显示器数量
        • 其它-获取显示器数量
        • 其它-切换远程的显示器
        • 其它-日志开关
        • 其它-获取SDK版本
        • 存档大小通知
        • 其它-按键大小写事件同步
        • 设置-获取服务器局域网IP
        • 其它-修复鼠标
        • 视频录制和截屏
    • Windows SDK
      • 回调函数
      • 宏定义数据
      • 初始化
        • SDK操作指针创建
        • SDK操作指针释放
        • SDK初始化
        • SDK反初始化
      • 建联
        • 启动游戏
        • 接管游戏
        • 重连游戏
        • 挂起游戏
        • 重启游戏
        • 退出游戏
      • 设置
        • 设置视频等级
        • 设置视频编码格式
        • 设置房间控制权限
        • 设置静音
        • 设置鼠标工作模式
        • 设置锁定鼠标
        • 设置手柄振动
        • 设置渲染亮度
        • 设置工作模式
        • 设置键盘操控数据
        • 设置鼠标操控数据
        • 设置触屏操控数据
        • 是否启用鼠标内部操作逻辑
        • 是否启用键盘内部操控逻辑
        • 是否启用手柄内部操控逻辑
        • 设置鼠标样式
        • 是否启用鼠标样式内部操作逻辑
      • 渲染
        • 创建渲染视频窗口
        • 销毁渲染视频窗口
        • 初始化文本渲染
        • 反初始化文本渲染
        • 显示文本
        • 更新文本
        • 更新文本背景颜色
        • 给渲染窗口更新数据
      • 文件管理
        • 注册/卸载服务
        • 挂载盘符
        • 卸载盘符
      • 云桌面
        • 显示器创建/关闭
        • 设置显示某一个显示器
        • 切换显示某一个显示器
        • 同步显示器
        • 设置多显示器创建
        • 设置是否启动I444
        • 设置转发组件
        • 设置服务端编码格式
        • 设置服务端是否同步客户端的分辨力
        • 设置同步本地分辨力
        • 设置是否开启双屏标记
        • 设置主屏幕id
      • 剪切板
        • 初始化剪切板
        • 反初始化剪切板
        • 释放剪切板
        • 更新剪切板权限状态
      • 其他
        • 上号助手/启动进程
        • 手动存储
        • 获取手柄个数
        • 获取版本信息
        • 获取控制状态
    • IOS SDK
      • 快速接入
      • 版本变动
      • 初始化
        • 初始化-加载SDK
        • 初始化-设置bundle
        • 初始化-代理设置
      • 建联
        • 建联-启动游戏
        • 建联-接管游戏
        • 建联-重连游戏
        • 建联-挂起游戏
        • 建联-重启游戏
        • 建联-停止游戏
        • 建联-重启游戏(加载存档)
      • 设置
        • 设置-视频等级
        • 设置-挂机时长
        • 设置-操控权限
        • 设置-静音开关
        • 设置-房间修改用户控制权限
      • 操控
        • 操控-发送手柄指令
        • 操控-发送键盘指令
        • 操控-发送鼠标指令
        • 操控-发送触屏指令
        • 操控-发送消息指令
        • 操控-定时发送鼠标指令
        • 操控-定时发送键盘指令
        • 操控-定时发送手柄指令
      • 其它
        • 其它-发送文本
        • 其它-上号助手/启动进程
        • 其它-获取显示器数量
        • 其它-切换远程显示器
        • 其它-手动存档
      • 附录
        • 附录-事件码
        • 附录-PC键值
  • 快捷请求
  • 问题记录
    • 鼠标问题
    • 视频流问题
    • 按键问题
    • 手柄问题
    • 默认布局按键方案
    • 加速器问题
    • 房间排队问题
    • 游戏中切换存档
    • 手动存档
    • SDK无法重启游戏
    • 只一个手柄可操控
    • 房间方案参考
    • 游戏修改器使用说明
  • 数据模型
    • 默认用户接口参数
    • 默认管理接口参数
  1. 初始化

初始化-游戏画面设置(兼容模式)

简要描述:
初始化游戏显示View兼容模式,用于部分显示异常的设备。
语法
public void initVideoViewLegacy(SurfaceView view)
参数:
参数名必选类型说明
view是SurfaceView游戏显示view
返回值

WhaleCloud 兼容渲染模式接入说明#

1. 适用范围#

本文档面向接入 cloudgamelibrary 的第三方 Android 应用,说明 WhaleCloud 在兼容渲染模式下的正确使用方式。
WhaleCloud 是 cloudgamelibrary 对外提供的云游戏 SDK。SDK 会根据:
后端下发的 render_strategy.render_type
当前设备是否走硬解
设备机型兼容规则
自动决定当前会话使用:
默认渲染模式:JySurfaceView
兼容渲染模式:SurfaceView
外部应用不要自己判断机型或 render_type,统一以 WhaleCloud.getInstance().isLegcyView() 的结果为准。
注意:接口名 isLegcyView() 为 SDK 现有命名,拼写保持历史兼容。

2. 兼容模式的典型场景#

兼容模式主要用于部分机型上 WebRTC 默认渲染链路不稳定,或者后端明确要求走兼容渲染时。
当 isLegcyView() 返回 true 时:
必须使用普通 SurfaceView
必须调用 initVideoViewLegacy(SurfaceView view)
不应再使用 initVideoView(JySurfaceView view)
建议在布局完成、start() 后、onGameBegin() 时同步调用 setGameRect(...)

3. 对外接口#

3.1 sdkLoading(...)#

作用:
初始化 SDK
拉取后端配置
解析本次会话的渲染策略
关键点:
isLegcyView() 依赖 sdkLoading 返回后的配置结果
因此不要在 sdkLoading 成功前决定使用哪个渲染 View

3.2 isLegcyView()#

作用:
返回当前会话是否需要兼容渲染模式
推荐时机:
在 sdkLoading.onSdkSucc() 之后立即调用

3.3 initVideoView(JySurfaceView view)#

默认渲染模式使用。

3.4 initVideoViewLegacy(SurfaceView view)#

兼容渲染模式使用。

3.5 setGameRect(int x, int y, int width, int height)#

作用:
同步游戏实际显示区域
为触摸、鼠标等输入映射提供正确的画面区域
兼容模式下建议在显示区域变化时持续同步

4. 推荐接入时序#

推荐时序如下:
1.
页面布局中同时准备 JySurfaceView 和 SurfaceView
2.
调用 sdkLoading(...)
3.
在 onSdkSucc() 中调用 isLegcyView()
4.
根据结果二选一初始化渲染 View
5.
调用 setDecodeType(...)(如果业务侧需要指定软解/硬解)
6.
调用 start(...)
7.
如果是兼容模式,在以下时机同步 setGameRect(...)
8.
退出页面时调用 stopGame(...)
兼容模式下推荐同步 setGameRect(...) 的时机:
SurfaceView 或其父容器完成布局后
WhaleCloud.start(...) 调用后
JyGameStatusListener.onGameBegin() 中
横竖屏切换、窗口尺寸变化、画面区域变化后

5. 布局示例#

建议在同一页面内同时保留两种渲染 View,运行时只显示其中一个。
<FrameLayout
    android:id="@+id/video_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.zjrx.jyengine.JySurfaceView
        android:id="@+id/video_render"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone" />

    <SurfaceView
        android:id="@+id/video_render_legacy"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone" />

</FrameLayout>

6. 接入示例#

下面示例展示推荐的最小接入方式。
如果页面布局会变化,建议额外监听渲染 View 的 OnLayoutChangeListener:

7. 常见错误#

7.1 在 sdkLoading() 前调用 isLegcyView()#

错误原因:
此时后端下发的 render_type 还没有写入 SDK 配置
后果:
可能误判为默认模式
兼容机型上会绑定错渲染 View
严重时可能表现为建联成功但黑屏

7.2 兼容模式下仍然调用 initVideoView(JySurfaceView)#

错误原因:
当前会话要求使用 SurfaceView
后果:
视频流已连接,但画面无法正常显示

7.3 兼容模式下没有同步 setGameRect(...)#

后果:
触摸、鼠标、相对坐标区域可能不准确
窗口变化后画面区域和输入区域可能不一致

7.4 同时初始化两套渲染 View#

不推荐:
同一次会话只应初始化当前激活的那一套渲染 View

8. 建议的排查顺序#

出现黑屏或兼容模式异常时,建议优先确认以下几点:
1.
sdkLoading.onSdkSucc() 是否成功回调
2.
isLegcyView() 返回值是否符合预期
3.
legacy=true 时是否真的走了 initVideoViewLegacy(SurfaceView)
4.
当前页面上是否只有一个激活渲染 View 可见
5.
SurfaceView 是否已经完成布局并拿到有效宽高
6.
setGameRect(...) 是否在布局完成后被调用
7.
start(...) 是否在渲染 View 初始化之后调用

9. 推荐实践#

将渲染模式选择逻辑统一收口到一个方法中,避免页面内多处判断
不要缓存旧会话的 isLegcyView() 结果,每次新会话都以本次 sdkLoading 结果为准
兼容模式优先使用全屏或确定尺寸的 SurfaceView
如果业务有悬浮层、提示层、遥控器层,确保它们不要错误替代渲染 View 本身
修改于 2026-04-23 02:55:38
上一页
初始化-游戏画面设置
下一页
初始化-是否启用兼容模式显示
Built with