2.9.0迁移指南
2.9.0 版本修改了某些 API 的方法签名,彻底删除了一些已过期 API。如果你从低版本升级上来,可能发现某些代码无法正常工作。本文将告诉你,如何从旧版本迁移到 2.9.0。
WhiteSdkConfiguration 改动
2.8.0及其以上版本,在
WhiteSdkConfiguration
类发生了重大改变。
- 初始化时,强制
appIdentifier
参数。 - 删除
zoomMinScale
,zoomMaxScale
属性,限制视野的需求,请调用RoomParams``PlayerConfiguration
的setCameraBound(CameraBound cameraBound)
,进行限制。具体内容可以参考CameraBound
类中的注释。 - 删除
sdkStrategyConfig
属性,该属性,从 2.8.0 开始,已经不被使用,没有配置意义。 debug
属性,更改为log
属性,效果不变。- 图片拦截替换功能配置:
hasUrlInterrupterAPI
,更改为enableInterrupterAPI
字段,相应的setter``getter
更改为setEnableInterrupterAPI``isEnableInterrupterAPI
。 - 新增
disableDeviceInputs
配置,可以在加入房间前,就设置好权限。
使用 cameraBound 实现视角限制业务
2.9.0之前的版本,视角限制,都是通过WhiteSdkConfiguration
的
zoomMaxScale
和zoomMinScale
属性来达到。
从 2.9.0 开始,该属性已被删除,您可以在加入房间和开始回放时,配置 cameraBound
属性,进行替代。
/**
* 视野范围描述类
* @since 2.5.0
*/
public class CameraBound extends WhiteObject {
public Double getCenterX() {
return centerX;
}
/**
* 基础视野中心点,默认 0
*
* @param centerX the center x
*/
public void setCenterX(Double centerX) {
this.centerX = centerX;
}
public Double getCenterY() {
return centerY;
}
/**
* 基础视野中心点,默认 0
*
* @param centerY the center y
*/
public void setCenterY(Double centerY) {
this.centerY = centerY;
}
public Double getWidth() {
return width;
}
/**
* 基础视野宽度,不传则为无穷
*
* 配合 {@link #setMinContentMode(ContentModeConfig)} {@link #setMinContentMode(ContentModeConfig)} 使用,
* 用来描述,最大最小缩放比例。
*
* @param width the width
*/
public void setWidth(Double width) {
this.width = width;
}
public Double getHeight() {
return height;
}
/**
* 基础视野高度,不传则为无穷
*
* 配合 {@link #setMinContentMode(ContentModeConfig)} {@link #setMinContentMode(ContentModeConfig)} 使用,
* 用来描述,最大最小缩放比例。
*
* @param height the height
*/
public void setHeight(Double height) {
this.height = height;
}
public ContentModeConfig getMaxContentMode() {
return maxContentMode;
}
/**
* 最大缩放比例,不传则不会限制最大比例
*
* @param maxContentMode {@link ContentModeConfig}
*/
public void setMaxContentMode(ContentModeConfig maxContentMode) {
this.maxContentMode = maxContentMode;
}
public ContentModeConfig getMinContentMode() {
return minContentMode;
}
/**
* 最小缩放比例,不传则不会限制最小比例
*
* @param minContentMode {@link ContentModeConfig}
*/
public void setMinContentMode(ContentModeConfig minContentMode) {
this.minContentMode = minContentMode;
}
public Double getDamping() {
return damping;
}
/**
*
* 阻力参数
*
* 越出边界时手势的阻力(范围 0.0 ~ 1.0)
* 使用多指触碰改变视角时,如果越出边界。该值越大,感受到的阻力越大。
* 当取 0.0 时,完全感受不到阻力;当取 1.0 时,则无法移出便捷。
* 取中间值,则感受介乎两者之间。
* @param damping the damping
*/
public void setDamping(Double damping) {
this.damping = damping;
}
private Double damping;
private Double centerX;
private Double centerY;
private Double width;
private Double height;
private ContentModeConfig maxContentMode;
private ContentModeConfig minContentMode;
public CameraBound() {
super();
}
/**
* 效果类似 sdkConfig 删除的 zoomMinScale, zoomMaxScale 效果
* @param miniScale
* @param maxScale
*/
public CameraBound(Double miniScale, Double maxScale) {
this();
ContentModeConfig miniConfig = new ContentModeConfig();
miniConfig.setScale(miniScale);
this.minContentMode = miniConfig;
ContentModeConfig maxConfig = new ContentModeConfig();
miniConfig.setScale(maxScale);
this.maxContentMode = maxConfig;
}
}
/**
* 视野缩放比例描述类
* @since 2.5.0
*/
public class ContentModeConfig extends WhiteObject {
public ContentModeConfig() {
scale = 1d;
space = 0d;
mode = ScaleMode.CENTER;
}
public enum ScaleMode {
/** 基于白板 zoomScale 的缩放比例,默认处理 */
@SerializedName("Scale")
CENTER,
/** 与 {@link android.widget.ImageView.ScaleType#CENTER_INSIDE} 相似,按比例缩放,将设置的宽高范围,铺满视野 */
@SerializedName("AspectFit")
CENTER_INSIDE,
/** 与 AspectFit 相似。处理时的宽高,为 基准宽高 * scale */
@SerializedName("AspectFitScale")
CENTER_INSIDE_SCALE,
/** 与 AspectFit 相似。处理时的宽高,为 基准宽高 + space */
@SerializedName("AspectFitSpace")
CENTER_INSIDE_SPACE,
/** 与 {@link android.widget.ImageView.ScaleType#CENTER_CROP} 相似,按比例缩放,视野内容会在设置的宽高范围内 */
@SerializedName("AspectFill")
CENTER_CROP,
/** 与 AspectFill 相似,处理时的宽高,为 基准宽高 + space */
@SerializedName("AspectFillScale")
CENTER_CROP_SPACE,
}
public Double getScale() {
return scale;
}
/**
* 缩放比例,默认 1
*
* 当 缩放模式 {@link #getMode()} 为 {@link ScaleMode#CENTER} {@link ScaleMode#CENTER_INSIDE_SCALE}
* {@link ScaleMode#CENTER_INSIDE_SCALE} 时,该属性有效。
*
* @param scale the scale
*/
public void setScale(Double scale) {
this.scale = scale;
}
public Double getSpace() {
return space;
}
/**
* 相对于基准视野范围额外在两边多出来的空间,默认 0
*
* 当 缩放模式 {@link #getMode()} 为 {@link ScaleMode#CENTER_CROP_SPACE} {@link ScaleMode#CENTER_CROP_SPACE}
* 时,该属性有效。
*
* @param space the space
*/
public void setSpace(Double space) {
this.space = space;
}
public ScaleMode getMode() {
return mode;
}
/**
* 设置缩放模式,默认 {@link ScaleMode#CENTER}
*
* @param mode the mode
*/
public void setMode(ScaleMode mode) {
this.mode = mode;
}
private Double scale;
private Double space;
private ScaleMode mode;
}
CameraBound
功能比zoomMinScale
和zoomMaxScale
更加强大,可以阅读以上源码注释,进行配置,也可以直接使用提供的CameraBound(Double miniScale, Double maxScale)
达到效果。
/**
* 效果类似 sdkConfig 删除的 zoomMinScale, zoomMaxScale 效果
* @param miniScale
* @param maxScale
*/
public CameraBound(Double miniScale, Double maxScale) {
this();
ContentModeConfig miniConfig = new ContentModeConfig();
miniConfig.setScale(miniScale);
this.minContentMode = miniConfig;
ContentModeConfig maxConfig = new ContentModeConfig();
miniConfig.setScale(maxScale);
this.maxContentMode = maxConfig;
}
另外,您还可以通过room
和player
的setCameraBound
方法,中途修改限制。
PlayerConfiguration 改动
audioUrl
更改为了mediaURL
。效果不变,当回放仅为音频时,可以使用该配置。如果想要显示视频时,需要使用 native 端提供的 NativePlayer 协议,具体可以看 demo 实现。
移除 setViewSize 方法
统一使用refreshViewSize
方法。
ImageInformation 新增字段
新增locked
字段,未来将会更新橡皮擦与图片的擦除。现阶段为数据升级。
移除文件
PreFetcher
:2.8.0开始,使用更智能线路选择,已经不再需要该类。Environment
:无关类WhiteBroadView
:更改为WhiteboardView
。