课件接入

  • Android

更新时间不可用

适用于 Whiteboard Android SDK 2.16.134。

多窗口以 App 表示课件。先完成加入白板房间并开启多窗口;需要协同创建/操作课件时,当前端应有可写权限。保留 addApp 返回的 appId,后续用于聚焦、关闭和页面控制。

选择课件类型

kind用途数据来源
Slide动态 PPT、动画与逐步播放动态转码 taskId/url,或支持的转码 scenes
Presentation静态 PPT / PDF 图片页静态转码 scenes
DocsViewer文档场景展示scenes 与 scenePath;沿用原文档展示流程
MediaPlayer音视频文件可播放的媒体 src
Plyr基于 app-plyr 的第三方媒体课件自定义 App 注册后传入 provider/src
EmbeddedPageH5 页面课件自定义 App 注册后传入网页 src
表格内容超出当前宽度,可横向滚动查看更多列。

图片页 scenes 中需保留转码返回的 ppt.src、width、height;scenePath 使用唯一目录,避免多个窗口复用同一绑定路径。taskId 是转码任务 ID,不能用房间 UUID 替代。

接入内置课件

Native SDK 的 Bridge 已注册内置课件;无需业务重复注册 Slide。

Java
// config 在创建 WhiteSdk 前配置。
config.setUseMultiViews(true);
// 以下在 joinRoom 成功后调用,保存回调返回的 appId。
room.addApp(WindowAppParam.createSlideApp(taskId, url, "动态课件"), null);
room.addApp(WindowAppParam.createPresentationApp("/presentation/lesson-1", scenes, "静态课件"), null);
room.addApp(WindowAppParam.createDocsViewerApp("/docs/lesson-1", scenes, "文档"), null);
room.addApp(WindowAppParam.createMediaPlayerApp(mediaUrl, "媒体"), null);

示例简写为 null 回调;业务需确认 ID 时传入 Promise<String>,在 then 保存 appId、catchEx 处理异常。

配置动态 PPT

Java
WhiteSdkConfiguration.SlideAppOptions slideOptions = new WhiteSdkConfiguration.SlideAppOptions();
slideOptions.setEnableScale(true);
slideOptions.setSyncEventQueuePolicy(SlideSyncEventQueuePolicy.LatestPendingRender);
config.setSlideAppOptions(slideOptions); // 创建 SDK 前设置。

Slide 的 enableScale 默认 false,开启后才使用页面缩放。navigationButtonMode 默认 page,可设 step 控制底部按钮按动画步骤前后移动。syncEventQueuePolicy 默认 fifo;latest-pending-render 在 interactive 模式合并积压的待渲染页,不会把所有事件都丢弃为最新一条。

动态配置注册参数

根据业务配置决定参数后,在创建 WhiteSdk 前写入 WhiteSdkConfiguration。Slide 和 Presentation 已由 Native SDK 集成,直接设置本平台公开配置即可。

课件公开配置入口配置时机
Slide 动态 PPTconfig.setSlideAppOptions(slideOptions),参数为 WhiteSdkConfiguration.SlideAppOptions创建 SDK 前;配置项见上文“配置动态 PPT”
Presentation 静态 PPT / PDFconfig.setPresentationAppOptions(presentationOptions),参数为 PresentationAppOptions创建 SDK 前,随后入房并添加或恢复课件
表格内容超出当前宽度,可横向滚动查看更多列。
Java
import com.herewhite.sdk.domain.PresentationAppOptions;

// 与上文 Slide 参数一起,在创建 WhiteSdk 前设置。
PresentationAppOptions presentationOptions = new PresentationAppOptions()
    .setMaxCameraScale(4.0)
    .setUseScrollbar(true)
    .setUseClipView(true);
config.setPresentationAppOptions(presentationOptions);

可根据业务策略为上述 setter 传入不同值。创建 SDK 后修改原配置对象,不会自动更新已初始化的课件;需在下一次创建 SDK 时传入新的配置。

Presentation 常用参数

参数作用
maxCameraScale最大缩放倍率相对页面适配大小计算,例如 4 表示最多放大到适配大小的 4 倍
useScrollbar是否显示拖动滚动条
useClipView是否裁剪课件显示区域,只显示页面内容
表格内容超出当前宽度,可横向滚动查看更多列。

这些参数在本端生效,各参与端应按业务要求配置。每个课件的 scenePath、scenes 和 title 仍在 addApp 的 options 中传入;每个窗口的 originSize 在 attributes 中设置,详见统一笔记。

自定义课件与 H5

将课件 Web 插件编译为适用于 WebView 的脚本(例如 IIFE),随 App 分发或提供兼容的远程脚本。使用公开 Native 注册接口:

Java
// jsString 是打包后的脚本文本;变量名必须与该脚本实际导出一致。
WindowRegisterAppParams registration = new WindowRegisterAppParams(
    jsString, "Plyr", "NetlessAppPlyr.default", new HashMap<String, Object>());
whiteSdk.registerApp(registration, new Promise<Boolean>() {
    @Override public void then(Boolean registered) {
        if (!Boolean.TRUE.equals(registered)) return;
        // 注册完成后进入房间;入房成功后再 addApp。
    }
    @Override public void catchEx(SDKError error) { Log.e("Whiteboard", "注册失败", error); }
});
// 已入房且注册成功:
Map<String, Object> attrs = new HashMap<>();
attrs.put("provider", "youtube");
attrs.put("src", "https://www.youtube.com/embed/VIDEO_ID");
room.addApp(new WindowAppParam("Plyr", new WindowAppParam.Options("视频课件"), attrs), null);

EmbeddedPage 按同一方式注册其实际导出,kind 为 EmbeddedPage,attributes.src 为 H5 URL;不能沿用 Plyr 的变量名。也可用 WindowRegisterAppParams(url, kind, appOptions) 加载符合 App loader 约定的远程包,不能直接填写任意 ESM 模块地址。

Fastboard Android 的 自定义 App 和 Plyr 示例 提供资源打包参考;Fastboard 使用 FastRegisterAppParams 与 fastRoom.registerApp,在 join 前注册。

插件数据和协议参考 app-plyr 与 app-embedded-page。

注册是本端能力,课件 attributes 是需要协同的初始数据。同房间所有参与端都需要注册兼容的同一 kind,不能只在创建端注册。注册成功后再创建窗口;已有窗口由房间状态恢复时,也需要本端已具备对应 App。

H5 课件受 iframe 嵌入、CSP、跨域、登录态及移动 WebView 媒体策略约束。Plyr 的 provider/src 需遵循插件文档,不能把任意播放页 URL 当作可直接播放的媒体文件。要把 H5 内部操作同步给远端,还需要课件自己的协同实现。

继续配置

  • 统一页面控制:主白板、Slide、Presentation、DocsViewer 的翻页、倍率、查询和监听。
  • 统一笔记:分别设置 MainView、Slide、Presentation 的 originSize。
  • 课件按需加载:最大化模式的按焦点初始化和本端缓存。
  • 本地日志:排查课件初始化、资源和运行时问题。