Netless

Netless

  • 通用文档
  • 常见问题
  • JavaScript
  • Android
  • iOS
  • Server
  • GitHub
  • 🇬🇧 English

›常用功能

产品概述

  • 使用须知
  • 开源项目
  • 版本历史

快速开始

  • 概述
  • 集成
  • 初始化SDK
  • 创建房间/获取房间信息
  • 加入房间

常用功能

  • 文档转换,动态PPT
  • 状态订阅,获取
  • 教具使用
  • 视角操作
  • 白板操作
  • 自定义事件
  • 页面(场景)管理
  • 只读订阅
  • 回放
  • RTC 混音

升级指南

  • 2.9.0迁移指南

页面(场景)管理

新增概念

场景 (scene)

为了增强白板的页面管理功能,我们引入一个新概念:场景。 场景,就是我们一直在使用的白板的一个页面。

一个场景,主要包含 场景名,PPT(背景图) 两部分。

场景路径 (scenePath) = 场景目录 + 场景名

当管理多个场景时,我们想要获取到特定的场景,此时就需要 场景路径 。每一个场景路径 指向一个特定的场景。

类比 PC 文件和文件夹的概念。
场景->文件
场景目录->文件夹路径 场景路径->文件绝对地址

类比课件管理概念。
场景-> PPT 文档的某一页名称 场景目录-> 某个 PPT 文档的位置 场景路径-> PPT 文档的某一页的绝对位置

如下是一组合法的场景路径。

/init
/Eng/ppt1
/Eng/ppt2
/Eng/ppt3
/Phy/ppt1
/Phy/ppt2
/Phy/ppt3

场景路径以 / 符分割层级,且一定以 / 开始。最右边的层级就是场景的名字。

也可以用以下表示文件结构的形式,来表示这一组场景。

|____init(场景)
|____Eng(场景目录)
| |____ppt1(场景)
| |____ppt3(场景)
| |____ppt2(场景)
|____Phy(场景目录)
| |____ppt1(场景)
| |____ppt3(场景)
| |____ppt2(场景)

场景目录

在同一一个场景目录下可以有多个多个场景;

  • /Phy
  • /Eng

则 /Phy 这个 场景目录 下有以下三个场景。

  • /Phy/ppt1
  • /Phy/ppt2
  • /Phy/ppt3

场景路径指的向唯一性: 类似文件的概念每一个场景路径,指向一个唯一的一个场景。 使用移动,复制,插入场景 API 时,如果传入的路径已经存在一个特定的场景,该场景会被新的场景所覆盖。

场景目录与场景路径不能相同: 当白板房间存在一个场景路径为/Eng/ppt1的场景时,则不可能存在/接受一个名为/Eng的场景。因为场景路径由场景目录与场景名组成。 如果发生该情况,则会插入失败。


API

本文档涉及的 API,都是白板 Room (iOS:WhiteRoom) 的方法。也可以在sdk 对应文件中进行查看。

获取当前场景信息

//Room.Java
/** 获取当前场景状态 */
public void getSceneState(final Promise<SceneState> promise)
/** 获取当前场景目录,所有场景信息 */
public void getScenes(final Promise<Scene[]> promise) 

通过以上 API,获取当前场景信息内容,具体内容结构,可以在各 SDK 中查看结构。

获取当前房间,所有场景

2.7.3 新增 API

获取房间,当前所有场景信息,返回为字典格式,key 为场景目录地址,value 为该目录下,所有的页面(场景)列表。

//Displayer.java
/**
    * 获取当前房间内所有的白板页面信息
    * @param promise 返回 一个 map,key 为场景目录地址,value 为该目录下,所有 Scene 数组。
    */
public void getEntireScene(final Promise<Map<String, Scene[]>> promise)

查询特定路径对应的内容

2.6.4 新增 API

//Displayer.java
/**
    * 查询路径对应的内容,还是页面(场景),或者是页面(场景)目录,或者不存在任何内容。
    * @param path 进行查询的路径
    * @param promise 回调结果,具体内容,可以查看 {@link WhiteScenePathType}
    */
public void getScenePathType(String path, final Promise<WhiteScenePathType> promise)

设置当前场景

当前场景代表白板房间内,所有人看到的页面。

创建一个白板房间时,会有一个名为 init 的默认场景。他的场景目录则是 /,他的场景路径 则是 /init。

如果要修改当前场景,移动到另外一个场景,则只需要调用以下 API,传入场景路径即可。

//Room.Java
public void setScenePath(String path)

//example code
room.setScenePath:"/Phy/ppt1";

当切换 API 没有反应,或者回调中报错,有可能是以下情况:

  1. 路径不合法。请阅读之前的章节,确保输入了场景路径符合规范(以 /开头)。
  2. 路径对应的场景不存在。
  3. 路径对应的是场景目录。注意场景目录和场景是不一样的。

插入新场景

//Room.java
/**
 插入,或许新建多个页面

 @param dir scene 页面组名称,相当于目录
 @param scenes WhiteScence 实例;在生成 WhiteScence 时,可以同时配置 ppt
 @param index 选择在页面组,插入的位置。index 即为新 scence 的 index 位置。如果想要放在最末尾,可以传入 Integer.MAX_VALUE。
 */
public void putScenes(String dir, Scene[] scenes, int index)

插入场景 API,接受三个参数:

  • dir: 场景目录,场景想要插入的对应目录位置。
  • scenes: 为需要新建的场景列表。
  • index: 可选且从 0 开始,表示 scenes 中第一个场景加入的位置;场景举例:当前场景目录中已经有 20 页 PPT 文档,想在第 3 页后加入一个空白页则 index 设置为 3。

传入的场景目录 (dir) 不能是已存在场景的 场景路径。(你不能向文件中插入文件)

当新插入的场景,场景路径(dir + 场景名)与旧场景的场景路径相同时,新场景会覆盖旧场景。(新文件会覆盖旧文件)

重名、移动场景

类似于 Linux,macOS 的 mv 命令。

//Room.Java
/**
 移动/重命名页面

 @param source 想要移动的页面的场景路径
 @param target 目标路径。如果是场景目录,则将 source 移入;否则,移动的同时重命名。
 */
public void moveScene(String source, String target)

删除场景

// Room.java
/**
 @param dirOrPath 场景路径,或者是场景目录。如果传入的是场景路径,则移除场景路径。如果传入的是场景目录,则移除场景目录下的所有场景。
 */
public void removeScenes(String dirOrPath)

可以给该参数传入 "/",来清空白板房间内所有场景。

白板房间会至少存在一个场景。 因此,当你删光白板房间里的最后一个场景时,会立即自动生成一个名为 init,场景路径为"/init"的空白场景。

截图功能

/**
 截取用户切换时,看到的场景内容,不是场景内全部内容。
 FIXME:图片支持:只有当图片服务器支持跨域,才可以显示在截图中

 @param scenePath 想要截取场景的场景路径,例如 /init;输入不存在场景路径,会返回空白图片
 @param completionHandler 回调函数,image 可能为空
 */
public void getScenePreviewImage(String scenePath, final Promise<Bitmap>promise) {}
public void getSceneSnapshotImage(String scenePath, final Promise<Bitmap>promise) {}

相关类

首先,我们需要知道场景类: SceneState 和 PptPage 类。

请注意:SDK中的类,都是配置数据,用于向白板传递数据用,并不持有任何白板实例

PptPage 类

PptPage 类,是 ppt 相关的配置信息。在创建 WhiteScene 类时传入,再通过插入场景 API时,生成带背景图片的白板页面。

public PptPage(String src, Double width, Double height)

图片中心为白板页面的中心点。

Scene 类

public Scene(String name, PptPage ppt)

WhiteScene 管理了一个白板页面,其中包含了 name,并且接管了原来的 ppt 内容。 白板页面只有在创建时,才接受 ppt 参数。

SceneState 类

public class SceneState {

    //当前场景目录下,所有的页面
    public Scene[] getScenes() {
        return scenes;
    }

    //当前场景路径
    public String getScenePath() {
        return scenePath;
    }

    //当前场景在 Path 中的索引
    public int getIndex() {
        return index;
    }
}

该类描述了当前场景目录的状态。

Last updated on 4/12/2020 by leavesster
← 自定义事件只读订阅 →
  • 新增概念
    • 场景 (scene)
    • 场景路径 (scenePath) = 场景目录 + 场景名
    • 场景目录
  • API
    • 获取当前场景信息
    • 获取当前房间,所有场景
    • 查询特定路径对应的内容
    • 设置当前场景
    • 插入新场景
    • 重名、移动场景
    • 删除场景
  • 截图功能
  • 相关类
    • PptPage 类
    • Scene 类
    • SceneState 类
Netless
接入即互动
产品
管理控制台官网网站Demo 体验Github
公司
加入我们服务条款隐私协议
联系方式
support@netless.link社区
Copyright © 2020 Netless