/**
* Typescript 声明文件
* @author westsky
* @description Html 5+ 是SSDK的库的声明文件
*
* 注意:
* 1)使用时需要引用ssdk.js文件。
* 2)android:必须使用原生编译,需要引用ssdk.aar库。
* 3) Ios:必须使用原生编译(暂时支持XCODE)。需要引用SSDK.Framework库。
*
*/
///
declare namespace plus.ssdk {
/**
* 初始化
* @param 配置
*/
function init(config?: ApiConfig): void;
/**
* 反初始化,重置
*/
function unInit(): void;
/**
* 获得config信息
*/
function getConfig(): ApiConfig;
/**
* 调试使用的
* @param s
*/
function hello(args?: string): void;
//--------------------------------------------
//兼容:给文件做MD5加密,原生的,比较快。
function md5File(path: string): string;
//--------------------------------------------
/**
* 拍摄图像:支持水印
* @param cameraParam
* @param successCB
* @param errorCB
*/
function captureImage(
cameraParam: CameraParam,
successCB?: plus.camera.CameraSuccessCallback,
errorCB?: plus.camera.CameraErrorCallback
): void;
/**
* 拍摄视频:支持水印
* @param cameraParam
* @param successCB
* @param errorCB
*/
function captureVideo(
cameraParam: CameraParam,
successCB?: plus.camera.CameraSuccessCallback,
errorCB?: plus.camera.CameraErrorCallback
): void;
//-------------------------------------------
/**
* 异步HTTPPOST请求
* @param url
* @param message
* @param successCB
* @param errorCB
* @param options 构造传输参数的可配置项目
*/
function httpPost(
url: string,
message: ProtocolMessage,
successCB?: WebClientSuccessCallback,
errorCB?: WebClientErrorCallback,
options?: WebOptions
): void;
//---------------------------------------
/**
* 构建引用对象计数
* @param clazz
* @param xs 名称空间,可以将对象进行分组。
* @param args
*/
function createRef(
clazz: string,
xs?: string,
args?: any
): T;
/**
* 释放管理计数,释放后,JS对象不能再使用
* @param obj
*/
function releaseRef(obj: T): void;
/**
* 获得对象的引用JS句柄,如果对象为空。
* @param xs
* @param uuid
*/
function getRef(uuid: string): T;
/**
* 列举所有引用计数
* @param xs
*/
function getAllRef(
xs?: string,
resultsCB?: ResultsCallback
): void;
/**
* 清空所有引用计数
* @param xs
*/
function clearAllRef(xs?: string): string;
//--------------------------------------------
interface ApiConfig {
readonly version: string;
readonly description: string;
apiKey: string;
apiSecret: string;
debug: boolean;
}
//-----------------------------------------------------------------------------------------
interface CameraParam {
/**
* 缓存的文件路径
* 图像文件:/path/IMG201811231321.jpg
* 视频文件:/path/VID201811212313.mp4
*/
path?: string;
//文件的格式,暂时不需要设置
format?: string;
/**水印对象,为空标识不适用此水印 */
watermark?: Watermark;
/**相机的分辨率 */
resolution?: Size;
/**是否使用手电筒 */
useLight?: boolean;
/**是否闪光灯 */
useFlash?: boolean;
/**是否支持切换镜头 */
useSwitchCam?: boolean;
/**拍摄视频是否支持静音录制 */
useMuted?: boolean;
/**是否支持暂停录制 */
useSuspendRec?: boolean;
//是否使用GPU
useOpengl?: boolean;
//是否允许重拍:
useRetake?: boolean;
/**默认的打开镜头Id,默认为0,前置镜头 */
cameraId?: number;
/**录制的最长时间 */
maxTime?: number;
/**录制的最短时间 */
minTime?: number;
}
/**
* 水印定义
*/
interface Watermark extends Layout {
//水印的文字,使用"\n"支持换行
text?: string;
//水印的文字大小,默认24
textSize?: number;
//水印文字的布局,默认是left
textAlign?: string;
//水印的文字颜色:默认红色"#FF0000";
textColor?: string;
}
/**
* 布局参数
*/
interface Layout {
/**
* 布局方式:支持绝对布局和相对布局。
* absolute或者relative
*/
position?: string;
//相对布局:尺寸定义的取值为Paddiing;
margin?: string;
//相对布局的对其方式:默认是leftTop;左上角
alignment?: string;
//绝对布局的X,Y坐标
x?: number;
y?: number;
//当前尺寸,W-H
width?: number;
height?: number;
//旋转变换:暂时不支持
angle?: number;
//缩放变换:展示不支持
scale?: number;
//不透明度颜色变换:暂时不支持
opacity?: number;
}
/**
* 布局填充
*/
interface Padding {
all?: number;
left?: number;
top?: number;
right?: number;
bottom?: number;
}
/**
* 尺寸
*/
interface Size {
width: number;
height: number;
}
//-----------------------------------
/**
* WebClient初始化参数
*/
interface WebOptions {
method?: string;
blocksize?: number;
priority?: number;
timeout?: number;
readTimeout?: number;
retryCount?: number;
retryInterval?: number;
}
/**
* 协议的键值对
*/
interface ProtocolHeader {
//----------------------
/**
* 登录令牌,由登录派发,至少17位。
* 注意:不能为空,
*/
token: string;
/**
* SSDK的令牌,由后台统一颁发的固定值
*/
apiKey: string;
/**
* 请求的ACTION
*/
action: string;
/**
* 绑定ID,程序的绑定空间名,例如:com.xxx.。
* 作为客户端的标记。
*/
client: string;
/**
* 传输的等级。字符串: (None,Low,Medium,High,Special)五个等级。
*/
level?: string;
/**
* //字符集,默认UTF-8,可以不配置值
*/
charset?: string;
/**
* 是否使用multi-part进行发送
*/
multipart?: boolean;
}
/**
* 协议报文
*/
interface ProtocolMessage extends ProtocolHeader {
/**
* 自定义的头集合,暂时不支持
*/
headers?: Array;
/**
* 表单参数。可以请求的表单的键值对,支持MULTI-FORM包含文件。
*/
params?: Array;
}
/**
* 协议表单参数
*/
interface ProtocolParam {
name?: string; //协议表单参数的NAME,默认initParam
value?: string; //传输的原始字符串值。
fileName?: string; //传输带文件,可以指定的mimeType,暂时不支持。
fullfileName?: string; //传输文件的文件的完整路径。
}
interface RefObject {
uuid: string; //对象的唯一ID
xs: string; //对象ID的名称空间,用于分组
destroy(); //释放对象资源
}
interface WebClient extends RefObject {
readonly method?: string; //请求的方法,暂时只支持POST
readonly blocksize?: number; //上传的或者下载的分包大小,默认200BYTE
readonly priority?: number; //调用的优先级,暂时不需要
readonly timeout?: number; // 连接的超时时间,默认0,不限制。
readonly readTimeout?: number; //传输流的超时时间,默认0,不限制
readonly retryCount?: number; //传输的重试最大次数
readonly retryInterval?: number; //重试的时间间隔。
/**
* 传输状态的改变监听
* @param stateCB
*/
onStatechanged(stateCB: WebClientStateChangedCallback): void;
/**
* 传输的进度监听
* @param progressCB
*/
onProgressChanged(progressCB: WebClientProgressCallback): void;
/**
* 提交请求
* @param url
* @param message
* @param successCB
* @param errorCB
*/
post(
url: string,
message: ProtocolMessage,
successCB?: WebClientSuccessCallback,
errorCB?: WebClientErrorCallback
);
/**
* 上传文件,暂时不支持,使用POST替代。
* @param url
* @param message
* @param successCB
* @param errorCB
*/
uploadFile(
url: string,
message: ProtocolMessage,
successCB?: WebClientSuccessCallback,
errorCB?: WebClientErrorCallback
);
/**
* 下载文件
* @param url
* @param message
* @param fullFileName
* @param successCB
* @param errorCB
*/
downloadFile(
url: string,
message: ProtocolMessage,
fullFileName: string,
successCB?: WebClientSuccessCallback,
errorCB?: WebClientErrorCallback
);
/**
* 强制终止
*/
abort();
}
}
interface SuccessCallback {
(): void;
}
interface ErrorCallback {
(error?: DOMException | any): void | any; //匿名方法委托
}
interface KeyValuePair {
name: string;
value: string;
}
interface FileSuccessCallback {
(file: string): void;
}
interface ResultsCallback {
(results: Array);
}
interface WebClientSuccessCallback {
(result: string): void;
}
interface WebClientErrorCallback {
(error?: DOMException): void | any; //匿名方法委托
}
interface WebClientStateChangedCallback {
(state: string): void;
}
interface WebClientProgressCallback {
(progress: number): void;
}