3 接口说明

3.1 手表操作

3.1.1 RCSP操作封装(RcspOperateWrapper)

3.1.1.1 RcspOperateWrapper.constructor

constructor(rcspImpl: RCSPProtocol.RcspImpl):void

初始化RCSP操作封装对象,传入参数:RCSP协议对象(RCSPProtocol.RcspImpl)。

参数:

参数名

类型

必填

说明

rcspImpl

RCSPProtocol. RcspImpl

RCSP协议对象

示例:

 1const rcspImpl = new JL_RCSP.RcspImpl() //初始化RCSP协议对象
 2//Rcsp事件回调
 3const oRcspCallback: JL_RCSP.OnRcspCallback = {
 4  onRcspInit: (device, isInit) => { //Rcsp协议初始化回调
 5  },
 6  onRcspCommand: (device, command) => { //设备主动发送的rcsp命令回调
 7  },
 8  onRcspResponse: (_device, _command) => { //设备回复的rcsp命令回调
 9  },
10  onRcspDataCmd: (_device, _dataCmd) => { //设备主动发送的数据命令回调
11  },
12  onRcspError: (_device, _error, _message) => { //RCSP错误事件回调
13  },
14  onMandatoryUpgrade: (_device) => { //需要强制升级回调
15  },
16  onConnectStateChange: (_device, _status) => { //设备连接状态
17  },
18}
19rcspImpl.addOnRcspCallback(oRcspCallback)
20//数据发送回调
21const onSendDataCallback: JL_RCSP.OnSendDataCallback = {
22  sendDataToDevice: (device, data) => { //向设备发送RCSP数据包
23    throw new Error('Function not implemented.');
24  }
25}
26rcspImpl.setOnSendDataCallback(onSendDataCallback)
27const deviceId = "11:22:33:44:55:66"
28//连接状态传递
29rcspImpl.transmitDeviceState(new JL_RCSP.BtDevice(deviceId), JL_RCSP.ConnectState.CONNECTED)
30const operateWrapper = new JL_RCSPOP.RcspOperateWrapper(rcspImpl)

3.1.1.2 RcspOperateWrapper.getRcspOpImpl

getRcspOpImpl(): RCSPProtocol.RcspImpl

获取RCSP操作封装对象的RCSP协议实现。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

RCSPProtocol. RcspImpl

当前使用的RCSP协议实现

示例:

1const rcspImpl = new JL_RCSP.RcspImpl() //初始化RCSP协议对象
2const operateWrapper = new JL_RCSPOP.RcspOperateWrapper(rcspImpl)
3const rcspImpl = operateWrapper.getRcspOpImpl() //获取RCSP协议对象

3.1.1.3 RcspOperateWrapper.getOperateByClass

getOperateByClass<T extends OperateBase<OperateEventCallbackBase<OperateEventBase>>>(classPrototype: T): T | undefined

通过OP的prototype属性,获取对应RCSP操作OP。例如:OPSystemInfo

参数:

参数名

类型

必填

说明

classPrototype

<T extends OperateBase>.prototype

目标操作OP的prototype属性

返回值:

类型

说明

<T extends OperateBase>

目标操作OP

示例:

1const rcspImpl = new JL_RCSP.RcspImpl() //初始化RCSP协议对象
2const operateWrapper = new JL_RCSPOP.RcspOperateWrapper(rcspImpl)
3//获取系统信息的操作OP
4const opSystemInfo = operateWrapper.getOperateByClass(JL_RCSPOP.OPSystemInfo.OperateSystemInfo.prototype)

3.1.1.4 RcspOperateWrapper.release

release(): void

释放RCSP操作封装对象

3.1.2 系统信息(OperateSystemInfo)

3.1.2.1 系统信息接口(IOperateSystemInfo)

3.1.2.1.1 IOperateSystemInfo.removeAllEventCallback

removeAllEventCallback(): void;

移除全部事件监听回调。

当切换设备时,我们不想监听某个设备的该OP事件回调,可以调用此方法。

参数:

参数名

类型

必填

说明

示例:

1const opSystemInfo = operateWrapper.getOperateByClass(JL_RCSPOP.OPSystemInfo.OperateSystemInfo.prototype)
2opSystemInfo?.removeAllEventCallback()
3.1.2.1.2 IOperateSystemInfo.registerEventCallback

registerEventCallback(callback: OperateEventCallbackSystemInfo): void;

注册回调

当我们想监听设备的该OP事件通知回调,可以用此方法注册回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackSystemInfo

OP事件回调

示例:

1const opSystemInfo = operateWrapper.getOperateByClass(JL_RCSPOP.OPSystemInfo.OperateSystemInfo.prototype)
2const callback: JL_RCSPOP.OPSystemInfo.OperateEventCallbackSystemInfo = {
3  onEvent: (event: JL_RCSPOP.OPSystemInfo.OperateEventSystemInfo): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opSystemInfo?.registerEventCallback(callback)
3.1.2.1.3 IOperateSystemInfo.unregisterEventCallback

unregisterEventCallback(callback: OperateEventCallbackSystemInfo): void;

注销回调

当我们想取消监听设备的该OP事件通知回调,可以用此方法注销回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackSystemInfo

OP事件回调

示例:

1const opSystemInfo = operateWrapper.getOperateByClass(JL_RCSPOP.OPSystemInfo.OperateSystemInfo.prototype)
2const callback: JL_RCSPOP.OPSystemInfo.OperateEventCallbackSystemInfo = {
3  onEvent: (event: JL_RCSPOP.OPSystemInfo.OperateEventSystemInfo): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opSystemInfo?.unregisterEventCallback(callback)
3.1.2.1.4 IOperateSystemInfo.reloadSystemInfo

reloadSystemInfo(): Promise<SystemInfo>;

重新获取系统信息。

重新从设备端获取到最新的系统信息,如:电量,音量,存储设备在线信息,通话状态。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<SystemInfo>

以Promise形式返回结果,返回获取到的系统信息。

示例:

1const opSystemInfo = operateWrapper.getOperateByClass(JL_RCSPOP.OPSystemInfo.OperateSystemInfo.prototype)
2const promise = opSystemInfo?.reloadSystemInfo()
3promise?.then((systemInfo) => {
4  console.log(`reloadSystemInfo success: data->${JSON.stringify(systemInfo)}`);
5}).catch((err: JL_RCSPOP.RCSPOpError) => {
6  console.error(`reloadSystemInfo fail: err->${JSON.stringify(err)}`);
7});
3.1.2.1.5 IOperateSystemInfo.getSystemInfo

getSystemInfo(): Promise<SystemInfo>;

获取系统信息。

获取到系统信息(如:电量,音量,存储设备在线信息,通话状态),默认优先读本地缓存,没有缓存则从设备获取。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<SystemInfo>

以Promise形式返回结果,返回获取到的系统信息。

示例:

1const opSystemInfo = operateWrapper.getOperateByClass(JL_RCSPOP.OPSystemInfo.OperateSystemInfo.prototype)
2const promise = opSystemInfo?.getSystemInfo()
3promise?.then((systemInfo) => {
4  console.log(`getSystemInfo success: data->${JSON.stringify(systemInfo)}`);
5}).catch((err: JL_RCSPOP.RCSPOpError) => {
6  console.error(`getSystemInfo fail: err->${JSON.stringify(err)}`);
7});
3.1.2.1.6 IOperateSystemInfo.getDeviceInfo

getDeviceInfo(): RCSPProtocol.DeviceInfo | undefined

获取设备信息

读取本地缓存的设备信息,undefined时代表未初始化设备。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

RCSPProtocol. DeviceInfo | undefined

返回本地缓存的设备信息。

示例:

1const opSystemInfo = operateWrapper.getOperateByClass(JL_RCSPOP.OPSystemInfo.OperateSystemInfo.prototype)
2const deviceInfo = opSystemInfo?.getDeviceInfo()
3console.log(`getDeviceInfo success: data->${JSON.stringify(deviceInfo)}`);

3.1.2.2 系统信息(SystemInfo)

系统信息

名称

类型

可读

可写

说明

battery

number | undefined

电量

volume

number | undefined

音量

SdCardBeanList

Array<OpFile.SDCardBean> | undefined

设备在线设备信息

errorStatusReport

number | undefined

错误状态,参考JL_RCSP.CmdRespParam.STATUS_xxx

currentMode

number | undefined

当前模式。0x00:蓝牙模式, 0x01:音乐模式,0x02:RTC模式,0x03:LineIn模式,0x04:FM模式,0x05:Light模式,0x06:FMTX模式,0x07:EQ模式,0x16:低功耗模式

callStatus

number | undefined

通话状态,0x00:空闲,0x01:通话中

3.1.2.3 设备信息(DeviceInfo)

设备信息。只支持读,不支持写。

名称

类型

可读

可写

说明

versionName

string | undefined

设备版本名称

versionCode

number | undefined

设备版本信息

protocolVersion

string | undefined

协议版本。

sendMtu

number

协议发送MTU(App接收<-设备发送)。默认值:530,以设备回复为准。

receiveMtu

number

协议接收MTU(App发送->设备接收)。默认值:530,以设备回复为准。

edrAddr

string | undefined

经典蓝牙相关信息-经典蓝牙地址

edrStatus

number

经典蓝牙相关信息-经典蓝牙的连接状态

edrProfile

number

经典蓝牙相关信息-经典蓝牙支持的协议。 BIT(0): SPP。BIT(1): HFP。BIT(2): A2DP。BIT(3): AVRCP。BIT(4): HID。BIT(5): AVDTP。BIT(6): PBAP。BIT(7): 优先使⽤通信⽅式( 0:RCSP优先⽤ble,  1:RCSP优先⽤spp)。

bleAddr

string | undefined

BLE相关信息-BLE地址

platform

number

ai平台相关参数-AI平台类型(0:图灵;1:deepbrain;2:小米)

license

string | undefined

ai平台相关参数-设备唯一标示

volume

number

设备音量-当前值

maxVol

number

设备音量-最大值

quantity

number

设备电量

upgradeMinQuantity

number

升级最低电量

functionMask

number

功能支持掩码

curFunction

number

功能支持掩码-当前模式

btEnable

boolean

功能支持掩码-支持蓝牙模式

devMusicEnable

boolean

功能支持掩码-支持设备音乐模式

rtcEnable

boolean

功能支持掩码-支持RTC模式(闹钟)

lineInEanble

boolean

功能支持掩码-支持LineIn模式

fmEnable

boolean

功能支持掩码-支持FM接收模式

lightEnable

boolean

功能支持掩码-支持灯光模式

fmTXEnable

boolean

功能支持掩码-支持FM发射模式

eqEnable

boolean

功能支持掩码-支持EQ模式

supportOfflineShow

boolean

是否支持usb、sd、linein不在线时显示功能图标

supportUsb

boolean

是否支持usb

supportSd0

boolean

是否支持sd0

supportSd1

boolean

是否支持sd1

hideNetRadio

boolean

是否隐藏网络电台

sdkType

number

sdk类型。0:AI SDK (692X_AI智能⾳箱SDK)。1:ST SDK (692X_标准⾳箱SDK)。2:693x_TWS SDK。3:695xSDK。4:697x_TWS SDK。5:696x_soundbox。6:696x_tws。7:695x_sound_card。8:695x_sound_watch。9:701x_sound_watch。A:manifest_earphone。B:manifest_soundbox。C: Charging Case SDK(彩屏充电仓)

name

string | undefined

名字

pid

number

产品ID

vid

number

厂商ID

uid

number

客户ID

mandatoryUpgradeFlag

number

强制升级。1:需要强制升级,0:不需要强制升级

requestOtaFlag

number

请求升级标志

ubootVersionCode

number

uboot 版本号

ubootVersionName

string | undefined

uboot 版本名称

isSupportDoubleBackup

boolean

是否支持双备份升级(单备份[false],需要断开回连过程;双备份[true],不需要断开回连过程)

isNeedBootLoader

boolean

是否需要下载boot loader

singleBackupOtaWay

number

单备份OTA连接方式(00 – 不使能 01 – BLE 02 – SPP)

expandMode

number

拓展模式 0:不启用 1: 升级资源模式

allowConnectFlag

number

是否允许连接 0 – 允许 1 – 不允许

authKey

string | undefined

用于服务器校验产品信息-认证秘钥

projectCode

string | undefined

用于服务器校验产品信息-项目标识码

customVersionMsg

string | undefined

用于自定义版本信息

bleOnly

boolean

是否仅仅连接ble设备

emitterSupport

boolean

是否支持外设模式

emitterStatus

number

外设状态:0x00:普通模式 0x01:外设模式

isSupportMD5

boolean

是否支持MD5读取

isGameMode

boolean

是否游戏模式

isSupportSearchDevice

boolean

是否支持查找设备

supportVolumeSync

boolean

是否支持音量同步

supportSoundCard

boolean

是否支持声卡功能

supportExternalFlashTransfer

boolean

是否支持外挂Flash传输功能

supportAnc

boolean

是否支持主动降噪功能

banEq

boolean

禁止app调节设备eq

supportReadErrorMsg

boolean

是否支持异常信息读取功能

supportPackageCrc16

boolean

大文件传输是否支持分包crc16校验

getFileByNameWithDev

boolean

以新的文件名方式读取固件文件(支持多设备)

contactsTransferBySmallFile

boolean

联系人传输是否使用小文件方式

watchSettingMask

number

手表设置功能支持状态的掩码

3.1.2.4 系统信息事件(OperateEventSystemInfo)

属性:type

事件类型

类型

说明

“NONE”

string

无事件

“SystemInfoChange”

string

系统信息变化

SystemInfoChange

系统信息变化时,附带信息。仅当 type ==”SystemInfoChange”时,附带。

名称

类型

可读

可写

说明

systemInfo

SystemInfo

系统信息

3.1.2.5 系统信息事件回调(OperateEventCallbackSystemInfo)

onEvent(_event: T): void

事件回调函数

3.1.3 文件相关(OperateFile)

3.1.3.1 文件相关接口(IOperateFile)

3.1.3.1.1 IOperateFile.removeAllEventCallback

removeAllEventCallback(): void;

移除全部事件监听回调。

当切换设备时,我们不想监听某个设备的该OP事件回调,可以调用此方法。

参数:

参数名

类型

必填

说明

示例:

1const opFile = operateWrapper.getOperateByClass(JL_RCSPOP.OPFile.OperateFile.prototype)
2opFile?.removeAllEventCallback()
3.1.3.1.2 IOperateFile.registerEventCallback

registerEventCallback(callback: OperateEventCallbackFile): void;

注册回调

当我们想监听设备的该OP事件通知回调,可以用此方法注册回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackFile

OP事件回调

示例:

1const opFile = operateWrapper.getOperateByClass(JL_RCSPOP.OPFile.OperateFile.prototype)
2const callback: JL_RCSPOP.OPFile.OperateEventCallbackFile = {
3  onEvent: (event: JL_RCSPOP.OPFile.OperateEventFile): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opFile?.registerEventCallback(callback)
3.1.3.1.3 IOperateFile.unregisterEventCallback

unregisterEventCallback(callback: OperateEventCallbackFile): void;

注销回调

当我们想取消监听设备的该OP事件通知回调,可以用此方法注销回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackFile

OP事件回调

示例:

1const opFile = operateWrapper.getOperateByClass(JL_RCSPOP.OPFile.OperateFile.prototype)
2const callback: JL_RCSPOP.OPFile.OperateEventCallbackFile = {
3  onEvent: (event: JL_RCSPOP.OPFile.OperateEventFile): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opFile?.unregisterEventCallback(callback)
3.1.3.1.4 IOperateFile.getSdCardBeansAsync

getSdCardBeansAsync(): Promise<SDCardBean[]>

异步获取存储设备(包含在线和离线设备)

优先访问本地缓存。无缓存时,从设备端获取。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise< SDCardBean []>

以Promise形式返回结果,返回获取到的存储信息列表。

示例:

1const opFile = operateWrapper.getOperateByClass(JL_RCSPOP.OPFile.OperateFile.prototype)
2const promise = opFile?.getSdCardBeansAsync()
3promise?.then((sdCardBeans) => {
4  console.log(`getSdCardBeansAsync success: data->${JSON.stringify(sdCardBeans)}`);
5}).catch((err: JL_RCSPOP.RCSPOpError) => {
6  console.error(`getSdCardBeansAsync fail: err->${JSON.stringify(err)}`);
7});
3.1.3.1.5 IOperateFile.getOnLineSdCardBeansAsync

getOnLineSdCardBeansAsync(): Promise<SDCardBean[]>

异步获取在线存储设备

优先访问本地缓存。无缓存时,从设备端获取。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise< SDCardBean []>

以Promise形式返回结果,返回获取到的在线存储设备的信息列表。

示例:

1const opFile = operateWrapper.getOperateByClass(JL_RCSPOP.OPFile.OperateFile.prototype)
2const promise = opFile?.getOnLineSdCardBeansAsync()
3promise?.then((sdCardBeans) => {
4  console.log(`getOnLineSdCardBeansAsync success: data->${JSON.stringify(sdCardBeans)}`);
5}).catch((err: JL_RCSPOP.RCSPOpError) => {
6  console.error(`getOnLineSdCardBeansAsync fail: err->${JSON.stringify(err)}`);
7});
3.1.3.1.6 IOperateFile.getSdCardBeansSync

getSdCardBeansSync():SDCardBean[] | undefined

同步获取存储设备(包含在线和离线设备)

访问本地缓存。无缓存时,返回undefined。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

SDCardBean [] | undefined

返回本地缓存的存储设备的信息列表。

示例:

1const opFile = operateWrapper.getOperateByClass(JL_RCSPOP.OPFile.OperateFile.prototype)
2const sdCardBeans = opFile?.getSdCardBeansSync()
3console.log(`getSdCardBeansSync success: data->${JSON.stringify(sdCardBeans)}`);
3.1.3.1.7 IOperateFile.getOnLineSdCardBeansSync

getOnLineSdCardBeansSync():SDCardBean[] | undefined

同步获取在线存储设备

访问本地缓存。无缓存时,返回undefined。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

SDCardBean [] | undefined

返回本地缓存的在线存储设备的信息列表。

示例:

1const opFile = operateWrapper.getOperateByClass(JL_RCSPOP.OPFile.OperateFile.prototype)
2const sdCardBeans = opFile?.getOnLineSdCardBeansSync()
3console.log(`getOnLineSdCardBeansSync success: data->${JSON.stringify(sdCardBeans)}`);
3.1.3.1.8 IOperateFile.notifySdCardBeanDirectoryUpdate

notifySdCardBeanDirectoryUpdate(sdCardBean: SDCardBean): void

通知SDK目标存储设备的文件夹发生变化。 该接口暂不使用

参数:

参数名

类型

必填

说明

sdCardBean

SDCardBean

文件发生变化的存储设备

3.1.3.2 文件相关事件(OperateEventFile)

属性:type

事件类型

类型

说明

“NONE”

string

无事件

“onSdCardChange”

string

存储设备状态发生变化

“onSdCardDirectoryChange”

string

存储设备目录发生变化

属性:onSdCardChange

存储设备状态发生变化时,附带信息。仅当 type ==”onSdCardChange”时,附带。

名称

类型

可读

可写

说明

sdCardBeans

Array< SDCardBean >

存储设备状态发生变化的SDCardBean

属性:onSdCardDirectoryChange

存储设备目录发生变化时,附带信息。仅当 type ==”onSdCardDirectoryChange”时,附带。

名称

类型

可读

可写

说明

sdCardBeans

SDCardBean

存储设备目录发生变化的SDCardBean

3.1.3.3 文件相关事件回调(OperateEventCallbackFile)

onEvent(_event: T): void

事件回调函数

3.1.3.4 存储设备(SDCardBean)

存储设备信息,在目录浏览和大文件传输时,需要使用。

属性

名称

类型

可读

可写

说明

index

number

存储设备索引

type

number

存储设备类型

name

string | undefined

名称

devHandler

number

句柄

online

boolean

是否在线

常量

存储设备索引(index)

名称

说明

INDEX_USB

0

USB接口存储设备的索引

INDEX_SD0

1

SD卡类型存储设备SD0的索引

INDEX_SD1

2

SD卡类型存储设备SD1的索引

INDEX_FLASH

3

flash类型存储设备的索引

INDEX_LINE_IN

4

LineIn类型音频传输设备的索引

INDEX_FLASH2

5

flash2类型存储设备的索引

常量

存储设备类型(type)

名称

说明

SD

0

SD卡类型

USB

1

USB接口类型(如U盘,读卡器)

FLASH

2

flash类型

LINEIN

3

LineIn类型(不是存储设备,是音频传输设备)

FLASH_2

4

flash2类型

3.1.4 目录浏览(OperateDirectoryBrowse)

3.1.4.1 目录浏览接口(IOperateDirectoryBrowse)

3.1.4.1.1 IOperateDirectoryBrowse.removeAllEventCallback

removeAllEventCallback(): void;

移除全部事件监听回调。

当切换设备时,我们不想监听某个设备的该OP事件回调,可以调用此方法。

参数:

参数名

类型

必填

说明

示例:

1const opDirectoryBrowse = operateWrapper.getOperateByClass(JL_RCSPOP.OPDirectoryBrowse.OperateDirectoryBrowse.prototype)
2opDirectoryBrowse?.removeAllEventCallback()
3.1.4.1.2 IOperateDirectoryBrowse.registerEventCallback

registerEventCallback(callback: OperateEventCallbackDirectoryBrowse): void;

注册回调

当我们想监听设备的该OP事件通知回调,可以用此方法注册回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackDirectoryBrowse

OP事件回调

示例:

1const opDirectoryBrowse = operateWrapper.getOperateByClass(JL_RCSPOP.OPDirectoryBrowse.OperateDirectoryBrowse.prototype)
2const callback: JL_RCSPOP.OPDirectoryBrowse.OperateEventCallbackDirectoryBrowse = {
3  onEvent: (event: JL_RCSPOP.OPDirectoryBrowse.OperateEventDirectoryBrowse): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opDirectoryBrowse?.registerEventCallback(callback)
3.1.4.1.3 IOperateDirectoryBrowse.unregisterEventCallback

unregisterEventCallback(callback: OperateEventCallbackDirectoryBrowse): void;

注销回调

当我们想取消监听设备的该OP事件通知回调,可以用此方法注销回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackDirectoryBrowse

OP事件回调

示例:

1const opDirectoryBrowse = operateWrapper.getOperateByClass(JL_RCSPOP.OPDirectoryBrowse.OperateDirectoryBrowse.prototype)
2const callback: JL_RCSPOP.OPDirectoryBrowse.OperateEventCallbackDirectoryBrowse = {
3  onEvent: (event: JL_RCSPOP.OPDirectoryBrowse.OperateEventDirectoryBrowse): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opDirectoryBrowse?.unregisterEventCallback(callback)
3.1.4.1.4 IOperateDirectoryBrowse.loadMoreFiles

loadMoreFiles(file: File, readPageSize?: number): Promise<File>

加载该文件夹下更多文件列表。

参数:

参数名

类型

必填

说明

file

File

目标文件夹。必须是文件夹,文件不可浏览

返回值:

类型

说明

Promise< File >

以Promise形式返回结果,返回目录浏览之后的当前文件夹。

示例:

 1const opDirectoryBrowse =
 2  operateWrapper.getOperateByClass(JL_RCSPOP.OPDirectoryBrowse.OperateDirectoryBrowse.prototype)
 3//获取在线存储设备列表
 4const onLineStorageDevs = opDirectoryBrowse?.getOnLineStorageDevs()
 5if (onLineStorageDevs != undefined && onLineStorageDevs.length > 0) {
 6  const targetFile = onLineStorageDevs[0]
 7  if (targetFile.isLoadFinished()) {
 8    //当前文件夹的目录已加载完毕,列出子文件路径
 9    const childPath = targetFile.list()
10    console.log(`loadMoreFiles success: childPath->${JSON.stringify(childPath)}`);
11  } else {
12    //当前文件夹的目录未加载完毕,加载更多文件
13    opDirectoryBrowse?.loadMoreFiles(targetFile).then((folder) => {
14      //列出子文件路径
15      const childPath = folder.list()
16      console.log(`loadMoreFiles success: childPath->${JSON.stringify(childPath)}`);
17    }).catch((err: JL_RCSPOP.RCSPOpError) => {
18      console.error(`loadMoreFiles fail: err->${JSON.stringify(err)}`);
19    })
20  }
21}
3.1.4.1.5 IOperateDirectoryBrowse.getOnLineStorageDevs

getOnLineStorageDevs(): File[]

获取在线存储设备列表

参数:

参数名

类型

必填

说明

返回值:

类型

说明

File []

在线存储设备列表。可用于做浏览参数,目录浏览时的根目录。

示例:

1const opDirectoryBrowse =
2  operateWrapper.getOperateByClass(JL_RCSPOP.OPDirectoryBrowse.OperateDirectoryBrowse.prototype)
3//获取在线存储设备列表
4const onLineStorageDevs = opDirectoryBrowse?.getOnLineStorageDevs()
5console.log(`getOnLineStorageDevs success: onLineStorageDevs->${JSON.stringify(onLineStorageDevs)}`);
3.1.4.1.6 IOperateDirectoryBrowse.getFileByPath

getFileByPath(path: string): File | undefined

根据路径获取文件。从本地缓存的目录浏览获取到文件。例如:Flash/WATCH

参数:

参数名

类型

必填

说明

path

string

返回值:

类型

说明

File []

在线存储设备列表。可用于做浏览参数,目录浏览时的根目录。

示例:

1const opDirectoryBrowse =
2  operateWrapper.getOperateByClass(JL_RCSPOP.OPDirectoryBrowse.OperateDirectoryBrowse.prototype)
3const file = opDirectoryBrowse?.getFileByPath("Flash/WATCH")
4console.log(`getFileByPath success: file is undefined ->${file == undefined}`);
3.1.4.1.7 IOperateDirectoryBrowse.deleteFile

deleteFile(files: File[]): Promise<void>;

删除文件。

删除多个文件时,多个文件必须是同一个文件夹下的文件。

删除设备端文件以及本地目录浏览缓存,不会重新进行目录浏览。

参数:

参数名

类型

必填

说明

files

File []

返回值:

类型

说明

Promise<void>

以Promise形式返回结果,返回删除的结果。

示例:

1  const opDirectoryBrowse =
2  operateWrapper.getOperateByClass(JL_RCSPOP.OPDirectoryBrowse.OperateDirectoryBrowse.prototype)
3const file = opDirectoryBrowse?.getFileByPath("Flash/WATCH")
4opDirectoryBrowse?.deleteFile([file]).then(() => {
5  console.log(`deleteFile success.`);
6}).catch((e: JL_RCSPOP.RCSPOpError) => {
7  console.log(`deleteFile fail: e ->${JSON.stringify(e)}`);
8})
3.1.4.1.8 IOperateDirectoryBrowse.reloadFolder

reloadFolder(folder: File): Promise<File>;

重读文件夹。

传入的File必须是文件夹。

重新对目标文件夹进行目录浏览。等同于清空本地缓存+调用一次loadMoreFiles方法。

参数:

参数名

类型

必填

说明

folder

File

返回值:

类型

说明

Promise<File>

以Promise形式返回结果,返回目录浏览之后的当前文件夹。

示例:

1const opDirectoryBrowse =
2  operateWrapper.getOperateByClass(JL_RCSPOP.OPDirectoryBrowse.OperateDirectoryBrowse.prototype)
3const flashFolder = opDirectoryBrowse?.getFileByPath("Flash")
4opDirectoryBrowse?.reloadFolder(flashFolder).then((folder) => {
5  const childFiles = folder.list()
6  console.log(`reloadFolder success. list - > ${JSON.stringify(childFiles)}`);
7}).catch((e: JL_RCSPOP.RCSPOpError) => {
8  console.log(`reloadFolder fail: e ->${JSON.stringify(e)}`);
9})
3.1.4.1.9 IOperateDirectoryBrowse.cleanCache

cleanCache(file: File): Promise<boolean>;

清理缓存。清除本地缓存(子文件列表)。

推荐仅对文件夹使用。

参数:

参数名

类型

必填

说明

file

File

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果,返回清除结果。

示例:

1const opDirectoryBrowse =
2  operateWrapper.getOperateByClass(JL_RCSPOP.OPDirectoryBrowse.OperateDirectoryBrowse.prototype)
3const flashFolder = opDirectoryBrowse?.getFileByPath("Flash")
4opDirectoryBrowse?.cleanCache(flashFolder).then((success) => {
5  console.log(`cleanCache success. `);
6}).catch((e: JL_RCSPOP.RCSPOpError) => {
7  console.log(`cleanCache fail: e ->${JSON.stringify(e)}`);
8})
3.1.4.1.10 IOperateDirectoryBrowse.getSDCardBean

getSDCardBean(file: File): SDCardBean | undefined;

获取File所在的SDCardBean。

参数:

参数名

类型

必填

说明

file

File

返回值:

类型

说明

SDCardBean | undefined

文件所在的SDCardBean。

示例:

1const opDirectoryBrowse =
2  operateWrapper.getOperateByClass(JL_RCSPOP.OPDirectoryBrowse.OperateDirectoryBrowse.prototype)
3const flashFolder = opDirectoryBrowse?.getFileByPath("Flash")
4const sdCardBean = opDirectoryBrowse?.getSDCardBean(flashFolder)
5console.log(`getSDCardBean success: sdCardBean is undefined ->${sdCardBean == undefined}`);
3.1.4.1.11 不推荐使用的接口

这部分接口可用IOperateDirectoryBrowse.loadMoreFiles()或者File的方法实现。

 1/** 加载该文件夹下更多文件列表-旧版本接口*/
 2loadMore(file: File, readPageSize?: number): Promise<File>
 3
 4/** 该文件进入下一级-旧版本接口*/
 5appendBrowse(file: File, readPageSize?: number, maxDepth?: number): Promise<File>
 6
 7/** 该文件进入下一级-新版本接口*/
 8appendBrowseFiles(file: File, readPageSize?: number, maxDepth?: number): Promise<File>
 9
10/** 该文件返回上一级*/
11backBrowse(file: File): Promise<File>

Note

ReadFileResultCode错误码已在新的接口中已不使用。

3.1.4.2 目录浏览事件(OperateEventDirectoryBrowse)

属性:type

事件类型

类型

说明

“NONE”

string

无事件

“onDirectoryChange”

string

文件夹目录发生变化

属性:onDirectoryChange

文件夹目录发生变化时,附带信息。仅当 type ==”onDirectoryChange”时,附带。

名称

类型

可读

可写

说明

folder

File

目录发生变化的文件夹

3.1.4.3 目录浏览事件回调(OperateEventCallbackDirectoryBrowse)

onEvent(_event: T): void

事件回调函数

3.1.4.4 文件对象(File)

文件信息对象。

仅能由SDK内部创建。

Important

请勿修改path属性和iNodeIndexArr属性,会影响整个文件系统缓存。

属性

名称

类型

可读

可写

说明

path

string

路径格式:dev/xxx/xxx。

iNodeIndexArr

number[]

数据结点的索引数组。SDK内部所使用。该索引与设备无关,是SDK生成的。

方法

名称

参数

返回值

说明

getName

string

文件名

list

string[] | undefined

返回文件夹下的所有子文件的路径数组。只返回已目录浏览缓存的部分。

listFile

File[] | undefined

返回所有子文件的对象数组。只返回已目录浏览缓存的部分。

getParent

string | undefined

返回父文件的路径

getParentFile

string | undefined

返回父文件的对象

getCluster

number | undefined

返回文件簇号。文件在设备端的存储设备下的唯一id

getPathCluster

number | undefined

返回文件簇号组成的路径数组。数组[0]:存储器句柄。SDK内部使用。

getDevIndex

number | undefined

返回文件所在的 存储设备索引。例如:SDCardBean.INDEX_FLASH

isLoadFinished

boolean

当前文件夹下的子文件是否都已加载

isDirectory

boolean

是不是文件夹

isFormatUnicode

boolean

文件编码格式-true:unicode,false:ANSI

delete

boolean

删除该文件的本地缓存(包括子文件的本地缓存)

deleteAllChild

boolean

删除该文件的全部子文件本地缓存。(不包含updateLoadFinished)

updateLoadFinished

isLoadFinished: boolean.是否加载完成

void

更新加载完成状态

exist

boolean

检查文件是否存在。

3.1.5 大文件传输(OperateLargeFileTrans)

1.大文件传输目前仅支持单个任务执行,不支持多个任务同时执行。若需要传输多个文件,请参考公版工程在应用层实现队列式调用大文件传输(传完一个文件后再传下一个文件)。

2.大文件传输任务目前需要和其他耗时任务互斥,不同同一时间执行多个耗时任务。

3.1.5.1 大文件传输接口(IOperateLargeFileTrans)

3.1.5.1.1 IOperateLargeFileTrans.removeAllEventCallback

removeAllEventCallback(): void;

移除全部事件监听回调。

当切换设备时,我们不想监听某个设备的该OP事件回调,可以调用此方法。

参数:

参数名

类型

必填

说明

示例:

1const opLargeFileTransfer = operateWrapper.getOperateByClass(JL_RCSPOP.OPLargerFileTrans.OperateLargeFileTrans.prototype)
2opLargeFileTransfer?.removeAllEventCallback()
3.1.5.1.2 IOperateLargeFileTrans.registerEventCallback

registerEventCallback(callback: OperateEventCallbackLargeFileTrans): void;

注册回调

当我们想监听设备的该OP事件通知回调,可以用此方法注册回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackLargeFileTrans

OP事件回调

示例:

1const opLargeFileTransfer = operateWrapper.getOperateByClass(JL_RCSPOP.OPLargerFileTrans.OperateLargeFileTrans.prototype)
2const callback: JL_RCSPOP.OPLargerFileTrans.OperateEventCallbackLargeFileTrans = {
3  onEvent: (event: JL_RCSPOP.OPLargerFileTrans.OperateEventLargeFileTrans): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opLargeFileTransfer?.registerEventCallback(callback)
3.1.5.1.3 IOperateLargeFileTrans.unregisterEventCallback

unregisterEventCallback(callback: OperateEventCallbackLargeFileTrans): void;

注销回调

当我们想取消监听设备的该OP事件通知回调,可以用此方法注销回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackLargeFileTrans

OP事件回调

示例:

1const opLargeFileTransfer = operateWrapper.getOperateByClass(JL_RCSPOP.OPLargerFileTrans.OperateLargeFileTrans.prototype)
2const callback: JL_RCSPOP.OPLargerFileTrans.OperateEventCallbackLargeFileTrans = {
3  onEvent: (event: JL_RCSPOP.OPLargerFileTrans.OperateEventLargeFileTrans): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opLargeFileTransfer?.unregisterEventCallback(callback)
3.1.5.1.4 IOperateLargeFileTrans.executeLargeTransferTask

executeLargeTransferTask(param: LargeFileTransferParams, callback: LargeFileTransferCallback): boolean;

执行传输任务。通过callback回调传输进度和传输结果。

参数:

参数名

类型

必填

说明

param

LargeFileTransferParams

传输大文件的参数

callback

LargeFileTransferCallback

回调

示例:

 1//文件数据
 2const fileBuffer = new Uint8Array(0);
 3//文件名
 4const fileName = "TEST1.text"
 5//文件修改时间
 6const modifyTime = new Date().getTime()
 7const opFile =
 8  operateWrapper.getOperateByClass(JL_RCSPOP.OPFile.OperateFile.prototype);
 9//获取在线的存储设备
10const onlineSDCardBean = opFile?.getOnLineSdCardBeansSync();
11//获取在线的FLash存储设备(此处举例传输到Flash设备(不包含Flash2)中,)
12let flashSDCardBean: JL_RCSPOP.OPFile.SDCardBean | undefined
13onlineSDCardBean?.forEach(sdCardBean => {
14  if (sdCardBean.index === JL_RCSPOP.OPFile.SDCardBean.INDEX_FLASH) {
15    flashSDCardBean = sdCardBean;
16  }
17});
18if (flashSDCardBean) {
19  const opLargeFileTransfer =
20    operateWrapper.getOperateByClass(JL_RCSPOP.OPLargerFileTrans.OperateLargeFileTrans.prototype);
21  const largeFileTransferParams: JL_RCSPOP.OPLargerFileTrans.LargeFileTransferParams = {
22    fileBuffer: fileBuffer,
23    sdCardBean: flashSDCardBean,
24    fileName: fileName,
25    lastModifyTime: modifyTime
26  }
27  const largeFileTransferCallback: JL_RCSPOP.OPLargerFileTrans.LargeFileTransferCallback = {
28    onBegin: (): void => {
29      console.log(`executeLargeTransferTask onBegin`);
30    },
31    onProgress: (progress) => {
32      //传输进度
33      console.log(`executeLargeTransferTask onProgress: progress->${progress}`);
34    },
35    onFinish: (file) => {
36      //传输成功
37      console.log(`executeLargeTransferTask onFinish: file->${JSON.stringify(file)}`);
38    },
39    onError: (error) => {
40      //传输失败
41      console.log(`executeLargeTransferTask onError: error->${JSON.stringify(error)}`);
42    },
43    onCancel: (code) => {
44      //取消结束 0:app取消,1:dev取消
45      console.log(`executeLargeTransferTask onCancel: reason->${code}`);
46    }
47  }
48  opLargeFileTransfer?.executeLargeTransferTask(largeFileTransferParams, largeFileTransferCallback)
49}
3.1.5.1.5 IOperateLargeFileTrans.executeLargeTransferTask

executeLargeTransferTask(param: LargeFileTransferParams): Promise<boolean>;

执行传输任务。以Promise形式返回传输结果。

参数:

参数名

类型

必填

说明

param

LargeFileTransferParams

传输大文件的参数

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果,返回清除结果。

示例:

 1const fileBuffer = new Uint8Array(0);
 2const fileName = "TEST1.text"
 3const modifyTime = new Date().getTime()
 4const opFile =
 5  operateWrapper.getOperateByClass(JL_RCSPOP.OPFile.OperateFile.prototype);
 6//获取在线的存储设备
 7const onlineSDCardBean = opFile?.getOnLineSdCardBeansSync();
 8//获取在线的FLash存储设备(此处举例传输到Flash设备(不包含Flash2)中,)
 9let flashSDCardBean: JL_RCSPOP.OPFile.SDCardBean | undefined
10onlineSDCardBean?.forEach(sdCardBean => {
11  if (sdCardBean.index === JL_RCSPOP.OPFile.SDCardBean.INDEX_FLASH) {
12    flashSDCardBean = sdCardBean;
13  }
14});
15if (flashSDCardBean) {
16  const opLargeFileTransfer =
17    operateWrapper.getOperateByClass(JL_RCSPOP.OPLargerFileTrans.OperateLargeFileTrans.prototype);
18  const largeFileTransferParams: JL_RCSPOP.OPLargerFileTrans.LargeFileTransferParams = {
19    fileBuffer: fileBuffer,
20    sdCardBean: flashSDCardBean,
21    fileName: fileName,
22    lastModifyTime: modifyTime
23  }
24  opLargeFileTransfer?.executeLargeTransferTask(largeFileTransferParams).then((success) => {
25    if (success) {
26      console.log(`executeLargeTransferTask success`);
27    }
28  }).catch((error: JL_RCSPOP.RCSPOpError) => {
29    console.log(`executeLargeTransferTask onError: error->${JSON.stringify(error)}`);
30  })
31}
3.1.5.1.6 IOperateLargeFileTrans.cancelTransfer

cancelTransfer(): void;

取消当前传输任务。

3.1.5.1.7 IOperateLargeFileTrans.isIdle

isIdle(): boolean;

是否空闲。暂不使用

3.1.5.1.8 IOperateLargeFileTrans.notifyDeviceTransferMultiFileStatus

notifyDeviceTransferMultiFileStatus(status: TransferMultiFileStatus): Promise<boolean>;

通知设备多文件传输状态(开始,结束,取消)(单个文件不用)。

Important

多文件传输结束或者取消,一定要通知设备。否则设备不会退出文件传输界面。

参数:

参数名

类型

必填

说明

status

TransferMultiFileStatus

多文件传输状态

多文件传输状态(TransferMultiFileStatus):

多文件传输状态

名称

说明

STATUS_START

0

多文件传输状态 - 开始

STATUS_STOP

1

多文件传输状态 - 结束

STATUS_CANCEL

2

多文件传输状态 - 取消

3.1.5.1.9 大文件传输参数(LargeFileTransferParams)

属性:

名称

类型

必填

说明

fileBuffer

ArrayBuffer

文件数据

sdCardBean

SDCardBean

指定存储的设备(SD卡,Flash1,Flash2等)

fileName

string

文件名

lastModifyTime

number

文件内容的修改时间

option

大文件传输参数-可选项

额外可选项

Note

如果设备支持断点续传,fileBuffer和fileName和lastModifyTime会影响设备是否进行断点续传。

大文件传输参数-可选项

属性:

名称

类型

必填

说明

isSupportPackageCrc16

boolean

示支不支持传输过程中分包crc校验。默认SDK内根据设备的信息进行配置(deviceInfo.supportPackageCrc16)。如果配置与设备端不一致,会有可能出现传输失败或者传输取消;

fileNameEncodeFormat

boolean

表示文件名的编码格式。可选,默认值是0。参考值:0:没有指定编码方式,1:gbk,2:utf-16e ;

musicFileRefreshDirectoryBrowse

boolean

传输音乐文件时,重新目录浏览存储设备。可选,默认值是false。传输多文件时不推荐使用,会导致传一个文件就刷新一次目录浏览

3.1.5.1.10 大文件传输回调(LargeFileTransferCallback)

方法:

名称

参数

返回值

说明

onError

error: RCSPOpError :(传输失败原因 RCSPOpError)

void

传输失败

onBegin

void

传输开始

onProgress

progress: number :(进度百分比0.0~100.0)

void

传输文件进度

onFinish

fileName: string :(最终的文件名,可能会因为重命名和参数文件名不一致。传输FLASH时,该值与设备端的存在大小写差异,FLASH可能只有大写的文件名。)

void

传输成功

onCancel

code: number :(0:app取消,1:dev取消)

void

传输取消

3.1.5.2 大文件传输事件(OperateEventLargeFileTrans)

暂时没有事件通知

属性:type

事件类型

类型

说明

“NONE”

string

无事件

3.1.5.3 大文件传输事件回调(OperateEventCallbackLargeFileTrans)

onEvent(_event: T): void

事件回调函数

3.1.6 大文件读取(OperateLargeFileGet)

3.1.6.1 大文件读取接口(IOperateLargeFileGet)

3.1.6.1.1 IOperateLargeFileGet.removeAllEventCallback

removeAllEventCallback(): void;

移除全部事件监听回调。

当切换设备时,我们不想监听某个设备的该OP事件回调,可以调用此方法。

参数:

参数名

类型

必填

说明

示例:

1const opLargeFileGet = operateWrapper.getOperateByClass(JL_RCSPOP.OPLargerFileGet.OperateLargeFileGet.prototype)
2opLargeFileGet?.removeAllEventCallback()
3.1.6.1.2 IOperateLargeFileGet.registerEventCallback

registerEventCallback(callback: OperateEventCallbackLargeFileGet): void;

注册回调

当我们想监听设备的该OP事件通知回调,可以用此方法注册回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackLargeFileGet

OP事件回调

示例:

1const opLargeFileGet = operateWrapper.getOperateByClass(JL_RCSPOP.OPLargerFileGet.OperateLargeFileGet.prototype)
2const callback: JL_RCSPOP.OPLargerFileGet.OperateEventCallbackLargeFileGet = {
3  onEvent: (event: JL_RCSPOP.OPLargerFileGet.OperateEventLargeFileGet): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opLargeFileGet?.registerEventCallback(callback)
3.1.6.1.3 IOperateLargeFileGet.unregisterEventCallback

unregisterEventCallback(callback: OperateEventCallbackLargeFileGet): void;

注销回调

当我们想取消监听设备的该OP事件通知回调,可以用此方法注销回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackLargeFileGet

OP事件回调

示例:

1const opLargeFileGet = operateWrapper.getOperateByClass(JL_RCSPOP.OPLargerFileGet.OperateLargeFileGet.prototype)
2const callback: JL_RCSPOP.OPLargerFileGet.OperateEventCallbackLargeFileGet = {
3  onEvent: (event: JL_RCSPOP.OPLargerFileGet.OperateEventLargeFileGet): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opLargeFileGet?.unregisterEventCallback(callback)
3.1.6.1.4 IOperateLargeFileGet.executeLargeGetTaskByFileName

executeLargeGetTaskByFileName(param: LargeFileGetParamsByFileName, callback: LargeFileGetCallback): boolean;

以文件名方式读取设备端的文件。通过callback回调传输进度和传输结果。

Important

该方式已弃用。请使用executeLargeGetTaskByFileNameAndDevHandle代替。为向前兼容旧版本设备,暂保留接口。

参数:

参数名

类型

必填

说明

param

LargeFileGetParamsByFileName

以文件名方式读取文件的参数

callback

LargeFileGetCallback

回调

返回值:

类型

说明

boolean

返回结果,false 执行失败,true:开始执行。

示例:

 1const opLargeFileGet = operateWrapper.getOperateByClass(JL_RCSPOP.OPLargerFileGet.OperateLargeFileGet.prototype)
 2const param: JL_RCSPOP.OPLargerFileGet.LargeFileGetParamsByFileName = {
 3  fileName: "TEST.txt",
 4  offset: 0
 5}
 6const callback: JL_RCSPOP.OPLargerFileGet.LargeFileGetCallback = {
 7  /**
 8   * 传输失败
 9   */
10  onError: (error: JL_RCSPOP.RCSPOpError): void => {
11    console.log(`executeLargeGetTaskByFileName onError: error->${JSON.stringify(error)}`);
12  },
13  /**
14   * 传输开始
15   */
16  onBegin: (): void => {
17    console.log(`executeLargeGetTaskByFileName onBegin`);
18  },
19  /**传输文件进度
20   * @param progress 进度百分比0.0~100.0
21   * @param packetData 分包数据
22   */
23  onProgress: (progress: number, packetData: ArrayBuffer | undefined): void => {
24    console.log(`executeLargeGetTaskByFileName onProgress: progress->${progress} , packectData len ->${packetData?.byteLength}`);
25  },
26  /**传输结束
27   */
28  onFinish: (_fileData: ArrayBuffer): void => {
29    console.log(`executeLargeGetTaskByFileName onFinish: fileData len->${_fileData.byteLength}`);
30  },
31  /**取消结束
32   * @param code 0x00:主动取消,0x01:丢包,0x02:crc错误。0xff-0x03:保留位
33   */
34  onCancel: (code: number): void => {
35    console.log(`executeLargeGetTaskByFileName onCancel: code->${code}`);
36  }
37}
38opLargeFileGet?.executeLargeGetTaskByFileName(param, callback)
3.1.6.1.5 IOperateLargeFileGet.executeLargeGetTaskByFileName

executeLargeGetTaskByFileName(param: LargeFileGetParamsByFileName): Promise<Uint8Array>;

以文件名方式读取设备端的文件。返回Promise形式的传输结果。

Important

该方式已弃用。请使用executeLargeGetTaskByFileNameAndDevHandle代替。为向前兼容旧版本设备,暂保留接口。

参数:

参数名

类型

必填

说明

param

LargeFileGetParamsByFileName

以文件名方式读取文件的参数

返回值:

类型

说明

Promise<Uint8Array>

以Promise形式返回结果,返回文件数据。

示例:

 1const opLargeFileGet = operateWrapper.getOperateByClass(JL_RCSPOP.OPLargerFileGet.OperateLargeFileGet.prototype)
 2const param: JL_RCSPOP.OPLargerFileGet.LargeFileGetParamsByFileName = {
 3  fileName: "TEST.txt",
 4  offset: 0
 5}
 6opLargeFileGet?.executeLargeGetTaskByFileName(param).then((fileData)=>{
 7  console.log(`executeLargeGetTaskByFileName onFinish: fileData len->${fileData.byteLength}`);
 8}).catch((error: JL_RCSPOP.RCSPOpError) => {
 9  console.log(`executeLargeGetTaskByFileName onError: error->${JSON.stringify(error)}`);
10})
3.1.6.1.6 IOperateLargeFileGet.executeLargeGetTaskByFileCluster

executeLargeGetTaskByFileCluster(param: LargeFileGetParamsByFileCluster, callback: LargeFileGetCallback): boolean;

以簇号方式读取设备端的文件。通过callback回调传输进度和传输结果。

参数:

参数名

类型

必填

说明

param

LargeFileGetParamsByFileCluster

以簇号方式读取文件的参数

callback

LargeFileGetCallback

回调

返回值:

类型

说明

boolean

返回结果,false 执行失败,true:开始执行。

示例:

 1const opDirectoryBrowse =
 2  operateWrapper.getOperateByClass(JL_RCSPOP.OPDirectoryBrowse.OperateDirectoryBrowse.prototype)
 3// 目标读取文件
 4const targetFile: JL_RCSPOP.OPDirectoryBrowse.File = file
 5// 获取文件簇号
 6const cluster = targetFile.getCluster()
 7// 获取目标的存储设备信息
 8const sdCardBean = opDirectoryBrowse?.getSDCardBean(targetFile)
 9if (cluster != undefined && sdCardBean) {
10  const opLargeFileGet = operateWrapper.getOperateByClass(JL_RCSPOP.OPLargerFileGet.OperateLargeFileGet.prototype)
11  const param: JL_RCSPOP.OPLargerFileGet.LargeFileGetParamsByFileCluster = {
12    cluster: cluster,
13    sdCardBean: sdCardBean,
14    offset: 0
15  }
16  const callback: JL_RCSPOP.OPLargerFileGet.LargeFileGetCallback = {
17    /**
18     * 传输失败
19     */
20    onError: (error: JL_RCSPOP.RCSPOpError): void => {
21      console.log(`executeLargeGetTaskByFileCluster onError: error->${JSON.stringify(error)}`);
22    },
23    /**
24     * 传输开始
25     */
26    onBegin: (): void => {
27      console.log(`executeLargeGetTaskByFileCluster onBegin`);
28    },
29    /**传输文件进度
30     * @param progress 进度百分比0.0~100.0
31     * @param packetData 分包数据
32     */
33    onProgress: (progress: number, packetData: ArrayBuffer | undefined): void => {
34      console.log(`executeLargeGetTaskByFileCluster onProgress: progress->${progress} , packectData len ->${packetData?.byteLength}`);
35    },
36    /**传输结束
37     */
38    onFinish: (_fileData: ArrayBuffer): void => {
39      console.log(`executeLargeGetTaskByFileCluster onFinish: fileData len->${_fileData.byteLength}`);
40    },
41    /**取消结束
42     * @param code 0x00:主动取消,0x01:丢包,0x02:crc错误。0xff-0x03:保留位
43     */
44    onCancel: (code: number): void => {
45      console.log(`executeLargeGetTaskByFileCluster onCancel: code->${code}`);
46    }
47  }
48  opLargeFileGet?.executeLargeGetTaskByFileCluster(param, callback)
49}
3.1.6.1.7 IOperateLargeFileGet.executeLargeGetTaskByFileCluster

executeLargeGetTaskByFileCluster(param: LargeFileGetParamsByFileCluster): Promise<Uint8Array>;

以簇号方式读取设备端的文件。返回Promise形式的传输结果。

参数:

参数名

类型

必填

说明

param

LargeFileGetParamsByFileCluster

以簇号方式读取文件的参数

返回值:

类型

说明

Promise<Uint8Array>

以Promise形式返回结果,返回文件数据。

示例:

 1const opDirectoryBrowse =
 2  operateWrapper.getOperateByClass(JL_RCSPOP.OPDirectoryBrowse.OperateDirectoryBrowse.prototype)
 3// 目标读取文件
 4const targetFile: JL_RCSPOP.OPDirectoryBrowse.File = file
 5// 获取文件簇号
 6const cluster = targetFile.getCluster()
 7// 获取目标的存储设备信息
 8const sdCardBean = opDirectoryBrowse?.getSDCardBean(targetFile)
 9if (cluster != undefined && sdCardBean) {
10  const opLargeFileGet = operateWrapper.getOperateByClass(JL_RCSPOP.OPLargerFileGet.OperateLargeFileGet.prototype)
11  const param: JL_RCSPOP.OPLargerFileGet.LargeFileGetParamsByFileCluster = {
12    cluster: cluster,
13    sdCardBean: sdCardBean,
14    offset: 0
15  }
16  opLargeFileGet?.executeLargeGetTaskByFileCluster(param).then((fileData) => {
17    console.log(`executeLargeGetTaskByFileCluster onFinish: fileData len->${fileData.byteLength}`);
18  }).catch((error: JL_RCSPOP.RCSPOpError) => {
19    console.log(`executeLargeGetTaskByFileCluster onError: error->${JSON.stringify(error)}`);
20  })
21}
3.1.6.1.8 IOperateLargeFileGet.executeLargeGetTaskByFileNameAndDevHandle

executeLargeGetTaskByFileNameAndDevHandle(param: LargeFileGetParamsByFileNameAndDevHandle, callback: LargeFileGetCallback): boolean;

以文件名方式读取指定存储设备读取设备端的文件。通过callback回调传输进度和传输结果。

参数:

参数名

类型

必填

说明

param

LargeFileGetParamsByFileNameAndDevHandle

以文件名方式读取文件的参数

callback

LargeFileGetCallback

回调

返回值:

类型

说明

boolean

返回结果,false 执行失败,true:开始执行。

示例:

 1const opDirectoryBrowse =
 2  operateWrapper.getOperateByClass(JL_RCSPOP.OPDirectoryBrowse.OperateDirectoryBrowse.prototype)
 3// 目标读取文件
 4const targetFile: JL_RCSPOP.OPDirectoryBrowse.File = file
 5// 获取文件簇号
 6const fileName = targetFile.getName()
 7// 获取目标的存储设备信息
 8const sdCardBean = opDirectoryBrowse?.getSDCardBean(targetFile)
 9if (fileName != undefined && sdCardBean) {
10  const opLargeFileGet = operateWrapper.getOperateByClass(JL_RCSPOP.OPLargerFileGet.OperateLargeFileGet.prototype)
11  const param: JL_RCSPOP.OPLargerFileGet.LargeFileGetParamsByFileNameAndDevHandle = {
12    fileName: fileName,
13    sdCardBean: sdCardBean,
14    offset: 0
15  }
16  const callback: JL_RCSPOP.OPLargerFileGet.LargeFileGetCallback = {
17    /**
18     * 传输失败
19     */
20    onError: (error: JL_RCSPOP.RCSPOpError): void => {
21      console.log(`executeLargeGetTaskByFileNameAndDevHandle onError: error->${JSON.stringify(error)}`);
22    },
23    /**
24     * 传输开始
25     */
26    onBegin: (): void => {
27      console.log(`executeLargeGetTaskByFileNameAndDevHandle onBegin`);
28    },
29    /**传输文件进度
30     * @param progress 进度百分比0.0~100.0
31     * @param packetData 分包数据
32     */
33    onProgress: (progress: number, packetData: ArrayBuffer | undefined): void => {
34      console.log(`executeLargeGetTaskByFileNameAndDevHandle onProgress: progress->${progress} , packectData len ->${packetData?.byteLength}`);
35    },
36    /**传输结束
37     */
38    onFinish: (_fileData: ArrayBuffer): void => {
39      console.log(`executeLargeGetTaskByFileNameAndDevHandle onFinish: fileData len->${_fileData.byteLength}`);
40    },
41    /**取消结束
42     * @param code 0x00:主动取消,0x01:丢包,0x02:crc错误。0xff-0x03:保留位
43     */
44    onCancel: (code: number): void => {
45      console.log(`executeLargeGetTaskByFileNameAndDevHandle onCancel: code->${code}`);
46    }
47  }
48  opLargeFileGet?.executeLargeGetTaskByFileNameAndDevHandle(param, callback)
49}
3.1.6.1.9 IOperateLargeFileGet.executeLargeGetTaskByFileNameAndDevHandle

executeLargeGetTaskByFileNameAndDevHandle(param: LargeFileGetParamsByFileName): Promise<Uint8Array>;

以文件名方式读取指定存储设备读取设备端的文件。返回Promise形式的传输结果。

参数:

参数名

类型

必填

说明

param

LargeFileGetParamsByFileNameAndDevHandle

以文件名方式读取指定存储设备读取文件的参数

返回值:

类型

说明

Promise<Uint8Array>

以Promise形式返回结果,返回文件数据。

示例:

 1const opDirectoryBrowse =
 2  operateWrapper.getOperateByClass(JL_RCSPOP.OPDirectoryBrowse.OperateDirectoryBrowse.prototype)
 3// 目标读取文件
 4const targetFile: JL_RCSPOP.OPDirectoryBrowse.File = file
 5// 获取文件簇号
 6const fileName = targetFile.getName()
 7// 获取目标的存储设备信息
 8const sdCardBean = opDirectoryBrowse?.getSDCardBean(targetFile)
 9if (fileName != undefined && sdCardBean) {
10  const opLargeFileGet = operateWrapper.getOperateByClass(JL_RCSPOP.OPLargerFileGet.OperateLargeFileGet.prototype)
11  const param: JL_RCSPOP.OPLargerFileGet.LargeFileGetParamsByFileNameAndDevHandle = {
12    fileName: fileName,
13    sdCardBean: sdCardBean,
14    offset: 0
15  }
16  opLargeFileGet?.executeLargeGetTaskByFileNameAndDevHandle(param).then((fileData) => {
17    console.log(`executeLargeGetTaskByFileNameAndDevHandle onFinish: fileData len->${fileData.byteLength}`);
18  }).catch((error: JL_RCSPOP.RCSPOpError) => {
19    console.log(`executeLargeGetTaskByFileNameAndDevHandle onError: error->${JSON.stringify(error)}`);
20  })
21}
3.1.6.1.10 以文件名方式读取文件的参数(LargeFileGetParamsByFileName)

属性:

名称

类型

必填

说明

offset

number

读取的偏移地址

fileName

string

文件名

3.1.6.1.11 以簇号方式读取文件的参数(LargeFileGetParamsByFileCluster)

属性:

名称

类型

必填

说明

offset

number

读取的偏移地址

sdCardBean

SDCardBean

指定读取的存储设备(SD卡,Flash1,Flash2等)

cluster

number

文件簇号

3.1.6.1.12 以文件名方式读取指定存储设备的参数(LargeFileGetParamsByFileNameAndDevHandle)

属性:

名称

类型

必填

说明

offset

number

读取的偏移地址

sdCardBean

SDCardBean

指定读取的存储设备(SD卡,Flash1,Flash2等)

fileName

string

文件名

3.1.6.1.13 大文件读取回调(LargeFileGetCallback)

方法:

名称

参数

返回值

说明

onError

error: RCSPOpError :(传输失败原因 RCSPOpError)

void

传输失败

onBegin

void

传输开始

onProgress

progress: number :(进度百分比0.0~100.0)。packetData: ArrayBuffer | undefined(分包数据)

string

传输文件进度

onFinish

_fileData: ArrayBuffer :(文件数据)

string

传输成功

onCancel

code: number :( 0x00:主动取消,0x01:丢包,0x02:crc错误。0xff-0x03:保留位)

string

传输取消

3.1.6.2 大文件读取事件(OperateEventLargeFileGet)

暂时没有事件通知

属性:type

事件类型

类型

说明

“NONE”

string

无事件

3.1.6.3 大文件读取事件回调(OperateEventCallbackLargeFileGet)

onEvent(_event: T): void

事件回调函数

3.1.7 表盘操作(OperateWatchDial)

3.1.7.1 表盘操作接口(IOperateWatchDial)

3.1.7.1.1 IOperateWatchDial.removeAllEventCallback

removeAllEventCallback(): void;

移除全部事件监听回调。

当切换设备时,我们不想监听某个设备的该OP事件回调,可以调用此方法。

参数:

参数名

类型

必填

说明

示例:

1const opWatchDial = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatchDial.OperateWatchDial.prototype)
2opWatchDial?.removeAllEventCallback()
3.1.7.1.2 IOperateWatchDial.registerEventCallback

registerEventCallback(callback: OperateEventCallbackWatchDial): void;

注册回调

当我们想监听设备的该OP事件通知回调,可以用此方法注册回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackWatchDial

OP事件回调

示例:

1const opWatchDial = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatchDial.OperateWatchDial.prototype)
2const callback: JL_RCSPOP.OPWatchDial.OperateEventCallbackWatchDial = {
3  onEvent: (event: JL_RCSPOP.OPWatchDial.OperateEventWatchDial): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opWatchDial?.registerEventCallback(callback)
3.1.7.1.3 IOperateWatchDial.unregisterEventCallback

unregisterEventCallback(callback: OperateEventCallbackWatchDial): void;

注销回调

当我们想取消监听设备的该OP事件通知回调,可以用此方法注销回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackWatchDial

OP事件回调

示例:

1const opWatchDial = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatchDial.OperateWatchDial.prototype)
2const callback: JL_RCSPOP.OPWatchDial.OperateEventCallbackWatchDial = {
3  onEvent: (event: JL_RCSPOP.OPWatchDial.OperateEventWatchDial): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opWatchDial?.unregisterEventCallback(callback)
3.1.7.1.4 IOperateWatchDial.setIgnoreFileList

setIgnoreFileList(ignoreList: Array<string>): void;

设置过滤文件列表(默认是过滤了系统资源文件:JL,FONT,SIDEBAR),过滤之后不会出现在手表Flash资源文件列表中。

设置后,请调用IOperateWatchDial.reloadWatchResourseFileList或者getWatchResourseFileList方法重新获取文件列表。

参数:

参数名

类型

必填

说明

ignoreList

Array<string>

过滤文件列表(默认是过滤了系统资源文件:JL,FONT,SIDEBAR)

示例:

1const opWatchDial = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatchDial.OperateWatchDial.prototype)
2opWatchDial?.setIgnoreFileList(["JL", "FONT", "SIDEBAR"])
3opWatchDial?.getWatchResourseFileList().then((resFiles) => {
4  console.log(`getWatchResourseFileList success: resFiles->${JSON.stringify(resFiles)}`);
5}).catch((error: JL_RCSPOP.RCSPOpError) => {
6  console.log(`getWatchResourseFileList onError: error->${JSON.stringify(error)}`);
7})
3.1.7.1.5 IOperateWatchDial.getWatchResourseFileList

getWatchResourseFileList(): Promise<Array<File>>;

获取手表Flash资源文件列表(默认是过滤了系统资源文件:JL,FONT,SIDEBAR)。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<Array<File>>

以Promise形式返回结果,返回手表Flash资源文件列表。

示例:

1const opWatchDial = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatchDial.OperateWatchDial.prototype)
2opWatchDial?.getWatchResourseFileList().then((resFiles) => {
3  console.log(`getWatchResourseFileList success: resFiles->${JSON.stringify(resFiles)}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`getWatchResourseFileList onError: error->${JSON.stringify(error)}`);
6})
3.1.7.1.6 IOperateWatchDial.reloadWatchResourseFileList

reloadWatchResourseFileList(): Promise<Array<File>>;

重新获取手表Flash资源文件列表(默认是过滤了系统资源文件:JL,FONT,SIDEBAR)。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<Array<File>>

以Promise形式返回结果,返回手表Flash资源文件列表。

示例:

1const opWatchDial = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatchDial.OperateWatchDial.prototype)
2opWatchDial?.reloadWatchResourseFileList().then((resFiles) => {
3  console.log(`reloadWatchResourseFileList success: resFiles->${JSON.stringify(resFiles)}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`reloadWatchResourseFileList onError: error->${JSON.stringify(error)}`);
6})
3.1.7.1.7 IOperateWatchDial.getUsingDial

getUsingDial(): Promise<File>;

获取正在使用的表盘。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<File>

以Promise形式返回结果,返回正在使用的表盘。

示例:

1const opWatchDial = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatchDial.OperateWatchDial.prototype)
2opWatchDial?.getUsingDial().then((usingDial) => {
3  console.log(`getUsingDial success: resFiles->${JSON.stringify(usingDial)}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`getUsingDial onError: error->${JSON.stringify(error)}`);
6})
3.1.7.1.8 IOperateWatchDial.cancelAddWatchResourseFile

cancelAddWatchResourseFile(): void;

取消添加手表Flash资源文件。

参数:

参数名

类型

必填

说明

3.1.7.1.9 IOperateWatchDial.addWatchFlashResourseFile

addWatchFlashResourseFile(param: addWatchResourseFileParams, callback: AddWatchFlashResourseFileCallback): boolean;

添加手表Flash资源文件。通过callback回调传输进度和传输结果。

Note

如果传输的是表盘文件,传输成功之后。请调用 IOperateWatchDial.setUsingDial 设置为当前使用表盘。

如果传输的是自定义表盘背景文件,传输成功之后。请调用 IOperateWatchDial.setDialCustomBackground 设置为 正在使用的表盘 的自定义表盘背景。

参数:

参数名

类型

必填

说明

param

addWatchResourseFileParams

添加手表Flash资源文件的参数

callback

AddWatchFlashResourseFileCallback

回调

返回值:

类型

说明

boolean

返回结果,false 执行失败,true:开始执行。

示例:

 1// 文件数据
 2const fileBuffer = new Uint8Array()
 3//文件名
 4const fileName = "WATCH"
 5// 文件内容的修改时间
 6const lastModifyTime = new Date().getTime()
 7// 传输完成之后是否刷新目录浏览
 8const refreshDirectory = true
 9const opWatchDial = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatchDial.OperateWatchDial.prototype)
10const param: JL_RCSPOP.OPWatchDial.addWatchResourseFileParams = {
11  fileBuffer: fileBuffer,
12  fileName: fileName,
13  lastModifyTime: lastModifyTime,
14  refreshDirectory: refreshDirectory
15}
16const callback: JL_RCSPOP.OPWatchDial.AddWatchFlashResourseFileCallback = {
17  onBegin: (): void => {
18    //传输开始
19    console.log(`addWatchFlashResourseFile onBegin`);
20  },
21  onProgress: (progress) => {
22    //传输进度
23    console.log(`addWatchFlashResourseFile onProgress: progress->${progress}`);
24  },
25  onFinish: (resFile: string | JL_RCSPOP.OPDirectoryBrowse.File | undefined): void => {
26    //传输成功
27    console.log(`addWatchFlashResourseFile onFinish: file->${JSON.stringify(resFile)}`);
28    if (resFile instanceof JL_RCSPOP.OPDirectoryBrowse.File) {
29      // 刷新目录浏览,返回的是File对象
30    } else if (typeof resFile === 'string') {
31      // 不刷新目录浏览,返回的是string
32    } else if (resFile == undefined) {
33      // 刷新目录浏览后,未能找到对应的文件
34    }
35  },
36  onError: (error) => {
37    //传输失败
38    console.log(`addWatchFlashResourseFile onError: error->${JSON.stringify(error)}`);
39  },
40  onCancel: (code) => {
41    //取消结束 0:app取消,1:dev取消
42    console.log(`addWatchFlashResourseFile onCancel: reason->${code}`);
43  }
44}
45opWatchDial?.addWatchFlashResourseFile(param, callback)
3.1.7.1.10 IOperateWatchDial.addWatchFlashResourseFile

addWatchFlashResourseFile(param: addWatchResourseFileParams): Promise<File | string | undefined>

添加手表Flash资源文件。以Promise形式返回传输结果。

Note

如果传输的是表盘文件,传输成功之后。请调用 IOperateWatchDial.setUsingDial 设置为当前使用表盘。

如果传输的是自定义表盘背景文件,传输成功之后。请调用 IOperateWatchDial.setDialCustomBackground 设置为 正在使用的表盘 的自定义表盘背景。

参数:

参数名

类型

必填

说明

param

addWatchResourseFileParams

添加手表Flash资源文件的参数

返回值:

类型

说明

Promise< File | string | undefined>

以Promise形式返回结果,返回添加结果。

示例:

 1// 文件数据
 2const fileBuffer = new Uint8Array()
 3//文件名
 4const fileName = "WATCH"
 5// 文件内容的修改时间
 6const lastModifyTime = new Date().getTime()
 7// 传输完成之后是否刷新目录浏览
 8const refreshDirectory = true
 9const opWatchDial = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatchDial.OperateWatchDial.prototype)
10const param: JL_RCSPOP.OPWatchDial.addWatchResourseFileParams = {
11  fileBuffer: fileBuffer,
12  fileName: fileName,
13  lastModifyTime: lastModifyTime,
14  refreshDirectory: refreshDirectory
15}
16opWatchDial?.addWatchFlashResourseFile(param).then((resFile) => {
17  console.log(`addWatchFlashResourseFile success: resFile->${JSON.stringify(resFile)}`);
18  if (resFile instanceof JL_RCSPOP.OPDirectoryBrowse.File) {
19    // 刷新目录浏览,返回的是File对象
20  } else if (typeof resFile === 'string') {
21    // 不刷新目录浏览,返回的是string
22  } else if (resFile == undefined) {
23    // 刷新目录浏览后,未能找到对应的文件
24  }
25}).catch((error: JL_RCSPOP.RCSPOpError) => {
26  console.log(`addWatchFlashResourseFile onError: error->${JSON.stringify(error)}`);
27})
3.1.7.1.11 IOperateWatchDial.setUsingDial

setUsingDial(dial: File): Promise<boolean>

设置当前表盘。以Promise形式返回设置结果。

Note

设置的目标文件请确保一定是表盘文件。

参数:

参数名

类型

必填

说明

dial

File

目标表盘文件

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果,返回设置结果。

示例:

1const targetDialFile: JL_RCSPOP.OPDirectoryBrowse.File = file
2const opWatchDial = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatchDial.OperateWatchDial.prototype)
3opWatchDial?.setUsingDial(targetDialFile).then((res) => {
4  console.log(`setUsingDial success: res->${res}`);
5}).catch((error: JL_RCSPOP.RCSPOpError) => {
6  console.log(`setUsingDial onError: error->${JSON.stringify(error)}`);
7})
3.1.7.1.12 IOperateWatchDial.getDialVersionInfo

getDialVersionInfo(dial: File): Promise<string>

获取表盘版本信息。以Promise形式返回表盘版本信息。

Note

目标文件请确保一定是表盘文件。 表盘信息例子: W002,16B02B7E-0DD0-4C7D-91D3-380B01022A21 W002 : 版本 16B02B7E-0DD0-4C7D-91D3-380B01022A21 : 服务器对应的UUID

参数:

参数名

类型

必填

说明

dial

File

目标表盘文件

返回值:

类型

说明

Promise<string>

以Promise形式返回结果。

示例:

1const targetDialFile: JL_RCSPOP.OPDirectoryBrowse.File = file
2const opWatchDial = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatchDial.OperateWatchDial.prototype)
3opWatchDial?.getDialVersionInfo(targetDialFile).then((versionStr) => {
4  console.log(`getDialVersionInfo success: res->${versionStr}`);
5}).catch((error: JL_RCSPOP.RCSPOpError) => {
6  console.log(`getDialVersionInfo onError: error->${JSON.stringify(error)}`);
7})
3.1.7.1.13 IOperateWatchDial.getDialCustomBackground

getDialCustomBackground(dial: File): Promise<File | null>

获取表盘背景。以Promise形式返回表盘背景。

Note

目标文件请确保一定是表盘文件。

参数:

参数名

类型

必填

说明

dial

File

目标表盘文件

返回值:

类型

说明

Promise<File>

以Promise形式返回结果,返回自定义背景文件对象。

示例:

1const targetDialFile: JL_RCSPOP.OPDirectoryBrowse.File = file
2const opWatchDial = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatchDial.OperateWatchDial.prototype)
3opWatchDial?.getDialCustomBackground(targetDialFile).then((customBgFile) => {
4  console.log(`getDialCustomBackground success: res->${customBgFile}`);
5}).catch((error: JL_RCSPOP.RCSPOpError) => {
6  console.log(`getDialCustomBackground onError: error->${JSON.stringify(error)}`);
7})
3.1.7.1.14 IOperateWatchDial.getWatchResourseFileInfo

getWatchResourseFileInfo(dial: File): Promise<{ size?: number, crc16?: number }>

获取手表Flash资源文件的信息。以Promise形式返回文件大小和文件crc16。

参数:

参数名

类型

必填

说明

dial

File

目标手表Flash资源文件

返回值:

类型

说明

Promise<{ size?: number, crc16?: number }>

以Promise形式返回结果,返回文件大小和文件crc16。

示例:

1const targetDialFile: JL_RCSPOP.OPDirectoryBrowse.File = file
2const opWatchDial = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatchDial.OperateWatchDial.prototype)
3opWatchDial?.getWatchResourseFileInfo(targetDialFile).then((info) => {
4  console.log(`getWatchResourseFileInfo success: size->${info.size},crc16->${info.crc16}`);
5}).catch((error: JL_RCSPOP.RCSPOpError) => {
6  console.log(`getWatchResourseFileInfo onError: error->${JSON.stringify(error)}`);
7})
3.1.7.1.15 IOperateWatchDial.setDialCustomBackground

setDialCustomBackground(dialBackground: File | undefined): Promise<boolean>

设置 正在使用的表盘 的自定义表盘背景。以Promise形式返回设置结果。

参数:

参数名

类型

必填

说明

dialBackground

File | undefined

自定义表盘背景文件。undefined:设置自定义表盘背景为空,使用默认表盘背景。

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果,返回设置结果。

示例:

1const targetBgFile: JL_RCSPOP.OPDirectoryBrowse.File = file
2const opWatchDial = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatchDial.OperateWatchDial.prototype)
3opWatchDial?.setDialCustomBackground(targetBgFile).then((success) => {
4  console.log(`setDialCustomBackground success->${success}`);
5}).catch((error: JL_RCSPOP.RCSPOpError) => {
6  console.log(`setDialCustomBackground onError: error->${JSON.stringify(error)}`);
7})
3.1.7.1.16 IOperateWatchDial.deleteDial

deleteDial(dial: File): Promise<boolean>

删除表盘。以Promise形式返回删除结果。

Note

删除其他手表Flash资源文件,也可以用该接口进行删除。

参数:

参数名

类型

必填

说明

dial

File

手表Flash资源文件

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果,返回删除结果。

示例:

1const targetDialFile: JL_RCSPOP.OPDirectoryBrowse.File = file
2const opWatchDial = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatchDial.OperateWatchDial.prototype)
3opWatchDial?.deleteDial(targetDialFile).then((success) => {
4  console.log(`deleteDial success->${success}`);
5}).catch((error: JL_RCSPOP.RCSPOpError) => {
6  console.log(`deleteDial onError: error->${JSON.stringify(error)}`);
7})
3.1.7.1.17 IOperateWatchDial.deleteDialCustomBackground

deleteDialCustomBackground(dialBackground: File): Promise<boolean>

删除自定义表盘背景。以Promise形式返回删除结果。

Note

该接口实际与deleteDial相同。

参数:

参数名

类型

必填

说明

dial

File

手表Flash资源文件

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果,返回删除结果。

示例:

1const targetDialFile: JL_RCSPOP.OPDirectoryBrowse.File = file
2const opWatchDial = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatchDial.OperateWatchDial.prototype)
3opWatchDial?.deleteDialCustomBackground(targetDialFile).then((success) => {
4  console.log(`deleteDialCustomBackground success->${success}`);
5}).catch((error: JL_RCSPOP.RCSPOpError) => {
6  console.log(`deleteDialCustomBackground onError: error->${JSON.stringify(error)}`);
7})
3.1.7.1.18 IOperateWatchDial.getFlashFreeSpace

getFlashFreeSpace(): Promise<number>

获取Flash剩余空间(单位bytes)。以Promise形式返回Flash剩余空间。

Note

在某些使用场景下,可能需要提前判断设备端的剩余空间是否足够,进而避免传输文件失败。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<number>

以Promise形式返回结果,返回Flash剩余空间(单位bytes)。

示例:

1const opWatchDial = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatchDial.OperateWatchDial.prototype)
2opWatchDial?.getFlashFreeSpace().then((spaceSize) => {
3  console.log(`getFlashFreeSpace success,spaceSize->${spaceSize}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`getFlashFreeSpace onError: error->${JSON.stringify(error)}`);
6})
3.1.7.1.19 IOperateWatchDial.getDialExpandInfo

getDialExpandInfo(): Promise<RCSPProtocol.InfoDialExpand>

获取表盘拓展参数(如:表盘形状,表盘圆角,表盘背景ARGB)。以Promise形式返回。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<RCSPProtocol. InfoDialExpand>

以Promise形式返回结果,返回表盘拓展参数。

示例:

1const opWatchDial = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatchDial.OperateWatchDial.prototype)
2opWatchDial?.getDialExpandInfo().then((infoDialExpand) => {
3  console.log(`getDialExpandInfo success,infoDialExpand->${infoDialExpand}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`getDialExpandInfo onError: error->${JSON.stringify(error)}`);
6})
3.1.7.1.20 添加手表Flash资源文件参数(addWatchResourseFileParams)

属性:

名称

类型

必填

说明

fileBuffer

ArrayBuffer

文件数据

fileName

string

文件名

lastModifyTime

number

文件内容的修改时间

refreshDirectory

boolean

是否刷新文件夹

Note

refreshDirectory=false 时,添加Flash资源文件后不刷新文件夹,返回的结果是文件路径(例如:Flash/WATCH)。 此时若想得到File对象,需要先对Flash文件夹进行重新目录浏览 IOperateWatchDial.reloadWatchResourseFileList 或者 IOperateDirectoryBrowse.reloadFolder 。 然后通过 IOperateDirectoryBrowse.getFileByPath 根据路径获取文件对象。

3.1.7.1.21 添加手表Flash资源文件回调(AddWatchFlashResourseFileCallback)

方法:

名称

参数

返回值

说明

onError

error: RCSPOpError :(传输失败原因 RCSPOpError)

void

传输失败

onBegin

void

传输开始

onProgress

progress: number :(进度百分比0.0~100.0)

string

传输文件进度

onFinish

file: File | string | undefined :(刷新文件夹时,返回的可能是 File | undefined,undefined代表目录浏览未找到对应文件。不刷新文件夹时,返回的是string)

string

传输成功

onCancel

code: number :(0:app取消,1:dev取消)

string

传输取消

3.1.7.1.22 表盘拓展参数(InfoDialExpand)

属性:

名称

类型

说明

shape

“Circular” | “Rectangle” | “Round Rectangle” | number

表盘形状。Circular:圆形,Rectangle:矩形,Round Rectangle:圆角矩形,number:未定义的形状

radius

number

圆角

backgroundColor

{ alpha: number; red: number; green: number;blue: number;}

背景颜色。alpha:透明度,red:红色,green:绿色,blue:蓝色

3.1.7.2 表盘操作事件(OperateEventWatchDial)

属性:type

事件类型

类型

说明

“NONE”

string

无事件

“UseDialChange”

string

当前表盘变化

“WatchResourseFileListChange”

string

手表Flash资源文件列表变化

属性:UseDialChange

当前表盘变化时,附带信息。仅当 type ==”UseDialChange”时,附带。

名称

类型

可读

可写

说明

dial

File

正在使用的表盘文件

属性:WatchResourseFileListChange

手表Flash资源文件列表变化时,附带信息。仅当 type ==”WatchResourseFileListChange”时,附带。

名称

类型

可读

可写

说明

fileList

Array< File >

变化后的资源文件列表

3.1.7.3 表盘操作事件回调(OperateEventCallbackWatchDial)

onEvent(_event: T): void

事件回调函数

3.1.8 手表信息(OperateWatch)

3.1.8.1 手表信息接口(IOperateWatch)

3.1.8.1.1 IOperateWatch.removeAllEventCallback

removeAllEventCallback(): void;

移除全部事件监听回调。

当切换设备时,我们不想监听某个设备的该OP事件回调,可以调用此方法。

参数:

参数名

类型

必填

说明

示例:

1const opWatch = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatch.OperateWatch.prototype)
2opWatch?.removeAllEventCallback()
3.1.8.1.2 IOperateWatch.registerEventCallback

registerEventCallback(callback: OperateEventCallbackWatch): void;

注册回调

当我们想监听设备的该OP事件通知回调,可以用此方法注册回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackWatch

OP事件回调

示例:

1const opWatch = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatch.OperateWatch.prototype)
2const callback: JL_RCSPOP.OPWatch.OperateEventCallbackWatch = {
3  onEvent: (event: JL_RCSPOP.OPWatch.OperateEventWatch): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opWatch?.registerEventCallback(callback)
3.1.8.1.3 IOperateWatch.unregisterEventCallback

unregisterEventCallback(callback: OperateEventCallbackWatch): void;

注销回调

当我们想取消监听设备的该OP事件通知回调,可以用此方法注销回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackWatch

OP事件回调

示例:

1const opWatch = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatch.OperateWatch.prototype)
2const callback: JL_RCSPOP.OPWatch.OperateEventCallbackWatch = {
3  onEvent: (event: JL_RCSPOP.OPWatch.OperateEventWatch): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opWatch?.unregisterEventCallback(callback)
3.1.8.1.4 IOperateWatch.reloadFlashInfo

reloadFlashInfo(): Promise<RCSPProtocol.ResponseReadExternalFlashInfo>

重新获取flash信息。返回Promise形式的flash信息。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<RCSPProtocol. ResponseReadExternalFlashInfo>

以Promise形式返回结果,返回flash信息。

示例:

1const opWatch = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatch.OperateWatch.prototype)
2opWatch?.reloadFlashInfo().then((flashInfo) => {
3  console.log(`reloadFlashInfo success,flashInfo->${flashInfo}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`reloadFlashInfo onError: error->${JSON.stringify(error)}`);
6})
3.1.8.1.5 IOperateWatch.getFlashInfo

getFlashInfo(): Promise<RCSPProtocol.ResponseReadExternalFlashInfo>

获取flash信息(优先使用本地缓存)。返回Promise形式的flash信息。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<RCSPProtocol. ResponseReadExternalFlashInfo>

以Promise形式返回结果,返回flash信息。

示例:

1const opWatch = operateWrapper.getOperateByClass(JL_RCSPOP.OPWatch.OperateWatch.prototype)
2opWatch?.getFlashInfo().then((flashInfo) => {
3  console.log(`getFlashInfo success,flashInfo->${flashInfo}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`getFlashInfo onError: error->${JSON.stringify(error)}`);
6})

3.1.8.2 手表信息事件(OperateEventWatch)

暂时没有事件通知

属性:type

事件类型

类型

说明

“NONE”

string

无事件

“FlashInfoChange”

string

flash信息变化

属性:FlashInfoChange

flash信息发生变化时,附带信息。仅当 type ==”FlashInfoChange”时,附带。

名称

类型

可读

可写

说明

flashInfo

JL_RCSP. ResponseReadExternalFlashInfo

变化后的flash信息

3.1.8.3 手表信息事件回调(OperateEventCallbackWatch)

onEvent(_event: T): void

事件回调函数

3.1.8.4 Flash信息(JL_RCSP.ResponseReadExternalFlashInfo)

名称

类型

可读

可写

说明

flash

number

flash大小

fatSize

number

fat系统实际大小

system

number

系统类型,0:FATFS,1:RCSP

systemStatus

number

系统当前状态(系统处于异常时,恢复系统),0x00:系统正常,0x01:系统处于写错误

version

number

版本号

block

number

发包窗口大小

cluster

number

簇大小,(以256Bytes为单位的倍数)例子: cluster = 16,实际大小为 256*16=4096

matchVersionLen

number

匹配版本数据长度

matchVersions

string[] | undefined

匹配版本列表

revMTU

number

可发送数据最大值

width

number

屏幕宽度

height

number

屏幕高度

3.1.9 小文件传输(OperateSmallFile)

Note

每一种小文件类型的小文件id都是单独计数的。小文件的列表无法通过目录浏览获取。

3.1.9.1 小文件传输接口(IOperateSmallFile)

3.1.9.1.1 IOperateSmallFile.removeAllEventCallback

removeAllEventCallback(): void;

移除全部事件监听回调。

当切换设备时,我们不想监听某个设备的该OP事件回调,可以调用此方法。

参数:

参数名

类型

必填

说明

示例:

1const opSmallFile = operateWrapper.getOperateByClass(JL_RCSPOP.OPSmallFile.OperateSmallFile.prototype)
2opSmallFile?.removeAllEventCallback()
3.1.9.1.2 IOperateSmallFile.registerEventCallback

registerEventCallback(callback: OperateEventCallbackSmallFile): void;

注册回调

当我们想监听设备的该OP事件通知回调,可以用此方法注册回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackSmallFile

OP事件回调

示例:

1const opSmallFile = operateWrapper.getOperateByClass(JL_RCSPOP.OPSmallFile.OperateSmallFile.prototype)
2const callback: JL_RCSPOP.OPSmallFile.OperateEventCallbackSmallFile = {
3  onEvent: (event: JL_RCSPOP.OPSmallFile.OperateEventSmallFile): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opSmallFile?.registerEventCallback(callback)
3.1.9.1.3 IOperateSmallFile.unregisterEventCallback

unregisterEventCallback(callback: OperateEventCallbackSmallFile): void;

注销回调

当我们想取消监听设备的该OP事件通知回调,可以用此方法注销回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackSmallFile

OP事件回调

示例:

1const opSmallFile = operateWrapper.getOperateByClass(JL_RCSPOP.OPSmallFile.OperateSmallFile.prototype)
2const callback: JL_RCSPOP.OPSmallFile.OperateEventCallbackSmallFile = {
3  onEvent: (event: JL_RCSPOP.OPSmallFile.OperateEventSmallFile): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opSmallFile?.unregisterEventCallback(callback)
3.1.9.1.4 IOperateSmallFile.queryFileList

queryFileList(fileType: SmallFileType,transferCallback: SmallFileQueryCallback): boolean

查询指定文件类型的文件列表。通过callback回调文件列表。

参数:

参数名

类型

必填

说明

fileType

SmallFileType

指定查询的文件类型

callback

SmallFileQueryCallback

回调

返回值:

类型

说明

boolean

返回结果,false 执行失败,true:开始执行。

示例:

 1// 指定小文件类型:联系人
 2const smallFileType = JL_RCSPOP.OPSmallFile.SmallFileType.TYPE_CONTACTS
 3const opSmallFile = operateWrapper.getOperateByClass(JL_RCSPOP.OPSmallFile.OperateSmallFile.prototype)
 4const callback: JL_RCSPOP.OPSmallFile.SmallFileQueryCallback = {
 5  onError: (error: JL_RCSPOP.RCSPOpError): void => {
 6    console.log(`queryFileList onError: error->${JSON.stringify(error)}`);
 7  },
 8  onFinish: (_fileInfos): void => {
 9    console.log(`queryFileList success,_fileInfos->${_fileInfos}`);
10  }
11}
12opSmallFile?.queryFileList(smallFileType, callback)
3.1.9.1.5 IOperateSmallFile.queryFileList

queryFileList(fileType: SmallFileType): Promise<Array<SmallFile>>

查询指定文件类型的文件列表。返回Promise形式的文件列表。

参数:

参数名

类型

必填

说明

fileType

SmallFileType

指定查询的文件类型

返回值:

类型

说明

Promise<Array< SmallFile >>

以Promise形式返回结果,返回文件列表。

示例:

1// 指定小文件类型:联系人
2const smallFileType = JL_RCSPOP.OPSmallFile.SmallFileType.TYPE_CONTACTS
3const opSmallFile = operateWrapper.getOperateByClass(JL_RCSPOP.OPSmallFile.OperateSmallFile.prototype)
4opSmallFile?.queryFileList(smallFileType).then((_fileInfos) => {
5  console.log(`queryFileList success,_fileInfos->${_fileInfos}`);
6}).catch((error: JL_RCSPOP.RCSPOpError) => {
7  console.log(`queryFileList onError: error->${JSON.stringify(error)}`);
8})
3.1.9.1.6 IOperateSmallFile.readFileContent

readFileContent(params: SmallFileReadParams): Promise<{ data: Uint8Array }>

读取文件内容。返回Promise形式的文件内容数据。

参数:

参数名

类型

必填

说明

params

SmallFileReadParams

读取参数-读取的文件类型,id,偏移,长度

返回值:

类型

说明

Promise<{ data: Uint8Array }>

以Promise形式返回结果,返回文件内容数据。

示例:

 1const readParam: JL_RCSPOP.OPSmallFile.SmallFileReadParams = {
 2  // 指定小文件类型:联系人
 3  fileType: JL_RCSPOP.OPSmallFile.SmallFileType.TYPE_CONTACTS,
 4  // 指定小文件id。(应该先查询文件列表,确定文件id存在)
 5  fileId: 0,
 6  // options: {//可选项
 7  //   offset: 0,//读取文件内容偏移地址
 8  //   length: 120//读取文件内容长度
 9  // }
10}
11const opSmallFile = operateWrapper.getOperateByClass(JL_RCSPOP.OPSmallFile.OperateSmallFile.prototype)
12opSmallFile?.readFileContent(readParam).then((res) => {
13  console.log(`readFileContent success,FileContent length->${res.data.length}`);
14}).catch((error: JL_RCSPOP.RCSPOpError) => {
15  console.log(`readFileContent onError: error->${JSON.stringify(error)}`);
16})
3.1.9.1.7 IOperateSmallFile.readFileContent

readFileContent(params: SmallFileReadParams,transferCallback: SmallFileReadCallback): boolean

读取文件内容。通过callback回调文件内容数据。

参数:

参数名

类型

必填

说明

params

SmallFileReadParams

读取参数-读取的文件类型,id,偏移,长度

callback

SmallFileReadCallback

回调

返回值:

类型

说明

boolean

返回结果,false 执行失败,true:开始执行。

示例:

 1const readParam: JL_RCSPOP.OPSmallFile.SmallFileReadParams = {
 2  // 指定小文件类型:联系人
 3  fileType: JL_RCSPOP.OPSmallFile.SmallFileType.TYPE_CONTACTS,
 4  // 指定小文件id。(应该先查询文件列表,确定文件id存在)
 5  fileId: 0,
 6  // options: {//可选项
 7  //   offset: 0,//读取文件内容偏移地址
 8  //   length: 120//读取文件内容长度
 9  // }
10}
11const opSmallFile = operateWrapper.getOperateByClass(JL_RCSPOP.OPSmallFile.OperateSmallFile.prototype)
12const callback: JL_RCSPOP.OPSmallFile.SmallFileReadCallback = {
13  onError: (error: JL_RCSPOP.RCSPOpError): void => {
14    console.log(`readFileContent onError: error->${JSON.stringify(error)}`);
15  },
16  onProgress: (progress: number, subpackageData?: Uint8Array): void => {
17    console.log(`readFileContent onProgress,progress->${progress},subpackageData length->${subpackageData?.length}`);
18  },
19  onFinish: (_data): void => {
20    console.log(`readFileContent success,FileContent length->${_data?.length}`);
21  }
22}
23opSmallFile?.readFileContent(readParam, callback)
3.1.9.1.8 IOperateSmallFile.addFile

addFile(params: SmallFileAddParams): Promise<{ fileId: number | undefined }>

新增文件。返回Promise形式的小文件id。

参数:

参数名

类型

必填

说明

params

SmallFileAddParams

新增小文件参数-读取的文件类型,文件内容,偏移,长度

返回值:

类型

说明

Promise<{ fileId: number | undefined }>

以Promise形式返回结果,返回新增文件的id。

示例:

 1const addParam: JL_RCSPOP.OPSmallFile.SmallFileAddParams = {
 2  // 指定小文件类型:联系人
 3  fileType: JL_RCSPOP.OPSmallFile.SmallFileType.TYPE_CONTACTS,
 4  // 文件内容数据
 5  data: new Uint8Array(),
 6  // options: {//可选项
 7  //   offset: 0,//文件内容偏移地址
 8  //   length: 120//文件内容长度
 9  // }
10}
11const opSmallFile = operateWrapper.getOperateByClass(JL_RCSPOP.OPSmallFile.OperateSmallFile.prototype)
12opSmallFile?.addFile(addParam).then((res) => {
13  console.log(`addFile success,fileId->${res.fileId}`);
14}).catch((error: JL_RCSPOP.RCSPOpError) => {
15  console.log(`addFile onError: error->${JSON.stringify(error)}`);
16})
3.1.9.1.9 IOperateSmallFile.addFile

addFile(params: SmallFileAddParams,transferCallback: SmallFileAddCallback): boolean

新增文件。通过callback回调传输进度和传输成功后的小文件id。

参数:

参数名

类型

必填

说明

params

SmallFileAddParams

新增小文件参数-读取的文件类型,文件内容,偏移,长度

callback

SmallFileAddCallback

回调

返回值:

类型

说明

boolean

返回结果,false 执行失败,true:开始执行。

示例:

 1const addParam: JL_RCSPOP.OPSmallFile.SmallFileAddParams = {
 2  // 指定小文件类型:联系人
 3  fileType: JL_RCSPOP.OPSmallFile.SmallFileType.TYPE_CONTACTS,
 4  // 指定小文件id。(应该先查询文件列表,确定文件id存在)
 5  data: new Uint8Array(),
 6  // options: {//可选项
 7  //   offset: 0,//文件内容偏移地址
 8  //   length: 120//文件内容长度
 9  // }
10}
11const opSmallFile = operateWrapper.getOperateByClass(JL_RCSPOP.OPSmallFile.OperateSmallFile.prototype)
12const callback: JL_RCSPOP.OPSmallFile.SmallFileAddCallback = {
13  onError: (error: JL_RCSPOP.RCSPOpError): void => {
14    console.log(`addFile onError: error->${JSON.stringify(error)}`);
15  },
16  onProgress: (progress: number): void => {
17    console.log(`addFile onProgress,progress->${progress}`);
18  },
19  onFinish: (fileId): void => {
20    console.log(`addFile success,fileId->${fileId}`);
21  }
22}
23opSmallFile?.addFile(addParam, callback)
3.1.9.1.10 IOperateSmallFile.updateFile

updateFile(params: SmallFileUpdateParams): Promise<{ fileId: number | undefined }>

更新文件内容。返回Promise形式的小文件id。

参数:

参数名

类型

必填

说明

params

SmallFileUpdateParams

更新小文件参数-更新的文件类型,小文件id,文件内容,偏移,长度

返回值:

类型

说明

Promise<{ fileId: number | undefined }>

以Promise形式返回结果,返回更新文件的id。

示例:

 1const updateParam: JL_RCSPOP.OPSmallFile.SmallFileUpdateParams = {
 2  // 指定小文件类型:联系人
 3  fileType: JL_RCSPOP.OPSmallFile.SmallFileType.TYPE_CONTACTS,
 4  // 指定小文件id。(应该先查询文件列表,确定文件id存在)
 5  fileId: 0,
 6  // 文件内容数据
 7  data: new Uint8Array(),
 8  // options: {//可选项
 9  //   offset: 0,//文件内容偏移地址
10  //   length: 120//文件内容长度
11  // }
12}
13const opSmallFile = operateWrapper.getOperateByClass(JL_RCSPOP.OPSmallFile.OperateSmallFile.prototype)
14opSmallFile?.updateFile(updateParam).then((res) => {
15  console.log(`updateFile success,fileId->${res.fileId}`);
16}).catch((error: JL_RCSPOP.RCSPOpError) => {
17  console.log(`updateFile onError: error->${JSON.stringify(error)}`);
18})
3.1.9.1.11 IOperateSmallFile.updateFile

updateFile(params: SmallFileUpdateParams, transferCallback: SmallFileUpdateCallback,): boolean

更新文件。通过callback回调传输进度和更新之后的小文件id。

参数:

参数名

类型

必填

说明

params

SmallFileUpdateParams

更新小文件参数-更新的文件类型,小文件id,文件内容,偏移,长度

callback

SmallFileUpdateCallback

回调

返回值:

类型

说明

boolean

返回结果,false 执行失败,true:开始执行。

示例:

 1const updateParam: JL_RCSPOP.OPSmallFile.SmallFileUpdateParams = {
 2  // 指定小文件类型:联系人
 3  fileType: JL_RCSPOP.OPSmallFile.SmallFileType.TYPE_CONTACTS,
 4  // 指定小文件id。(应该先查询文件列表,确定文件id存在)
 5  fileId: 0,
 6  // 文件内容数据
 7  data: new Uint8Array(),
 8  // options: {//可选项
 9  //   offset: 0,//文件内容偏移地址
10  //   length: 120//文件内容长度
11  // }
12}
13const opSmallFile = operateWrapper.getOperateByClass(JL_RCSPOP.OPSmallFile.OperateSmallFile.prototype)
14const callback: JL_RCSPOP.OPSmallFile.SmallFileUpdateCallback = {
15  onError: (error: JL_RCSPOP.RCSPOpError): void => {
16    console.log(`updateFile onError: error->${JSON.stringify(error)}`);
17  },
18  onProgress: (progress: number): void => {
19    console.log(`updateFile onProgress,progress->${progress}`);
20  },
21  onFinish: (fileId): void => {
22    console.log(`updateFile success,fileId->${fileId}`);
23  }
24}
25opSmallFile?.updateFile(updateParam, callback)
3.1.9.1.12 IOperateSmallFile.deleteFile

deleteFile(fileType: SmallFileType, fileId: number): Promise<boolean>

删除文件。返回Promise形式的删除结果。

参数:

参数名

类型

必填

说明

fileType

SmallFileType

删除的文件类型

fileId

number

删除的小文件id

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果,返回删除结果。

示例:

 1const opSmallFile = operateWrapper.getOperateByClass(JL_RCSPOP.OPSmallFile.OperateSmallFile.prototype)
 2// 指定小文件类型:联系人
 3const fileType = JL_RCSPOP.OPSmallFile.SmallFileType.TYPE_CONTACTS
 4// 指定小文件id。(应该先查询文件列表,确定文件id存在)
 5const fileId = 0
 6opSmallFile?.deleteFile(fileType, fileId).then((success) => {
 7  console.log(`deleteFile success->${success}`);
 8}).catch((error: JL_RCSPOP.RCSPOpError) => {
 9  console.log(`deleteFile onError: error->${JSON.stringify(error)}`);
10})
3.1.9.1.13 IOperateSmallFile.isIdle

isIdle(): boolean

是否空闲。该接口暂不使用。

3.1.9.1.14 小文件类型(SmallFileType)

小文件类型枚举。

名称

说明

TYPE_CONTACTS

1

联系人

TYPE_SPORTS_RECORDS

2

运动记录

TYPE_HEART_RATE

3

心率全天数据

TYPE_BLOOD_OXYGE

4

血氧全天数据

TYPE_SLEEP

5

睡眠全天数据

TYPE_MESSAGE

6

消息数据

TYPE_WEATHER

7

天气数据

TYPE_CALL_HISTORY

8

通话记录文件

TYPE_STEP

9

步数全天数据

3.1.9.1.15 小文件信息(SmallFile)

名称

类型

可读

可写

说明

fileType

SmallFileType

小文件类型

fileId

number

小文件id

fileSize

number | undefined

小文件大小

3.1.9.1.16 查询文件列表的回调(SmallFileQueryCallback)

方法:

名称

参数

返回值

说明

onError

error: RCSPOpError :(传输失败原因 RCSPOpError)

void

传输失败

onFinish

_fileInfos: { fileId: number, fileSize: number }[]

void

传输成功,返回文件列表。

3.1.9.1.17 小文件读取文件内容的参数(SmallFileReadParams)

属性:

名称

类型

必填

说明

fileType

SmallFileType

小文件类型

fileId

number

小文件id

options

{offset?: number;length?: number;}

可选项。 offset:number : 表示期望读取文件的位置,可选,默认从0开始读。 length:number : 表示期望读取数据的长度,可选,默认文件长度。

3.1.9.1.18 读取文件内容的回调(SmallFileReadCallback)

方法:

名称

参数

返回值

说明

onError

error: RCSPOpError :(传输失败原因 RCSPOpError)

void

传输失败

onProgress

progress: number :(进度百分比0.0~100.0)。 subpackageData?: Uint8Array :分包数据。

void

读取文件进度

onFinish

_data?: Uint8Array :文件数据

void

传输成功,返回文件数据。

3.1.9.1.19 小文件新增文件的参数(SmallFileAddParams)

属性:

名称

类型

必填

说明

fileType

SmallFileType

小文件类型

data

Uint8Array

文件内容

options

{offset?: number;length?: number;}

可选项。 offset:number : 表示期望新增文件的文件内容偏移地址,可选,默认从0开始插入数据。 length`:number : 表示期望新增文件大小。可选,默认参数data的数据长度。

3.1.9.1.20 新增文件的回调(SmallFileAddCallback)

方法:

名称

参数

返回值

说明

onError

error: RCSPOpError :(传输失败原因 RCSPOpError)

void

传输失败

onProgress

progress: number :(进度百分比0.0~100.0)。

void

添加文件进度

onFinish

_fileId?: number :文件id

void

添加文件成功,返回文件数据。

3.1.9.1.21 小文件更新文件内容的参数(SmallFileUpdateParams)

属性:

名称

类型

必填

说明

fileType

SmallFileType

小文件类型

fileId

number

小文件id

data

Uint8Array

文件内容

options

{offset?: number;length?: number;}

可选项。 offset:number : 表示期望更新文件的文件内容偏移地址,可选,默认从0开始更新数据。 length:number : 表示期望更新文件大小。可选,默认参数data的数据长度。

3.1.9.1.22 更新文件内容的回调(SmallFileUpdateCallback)

方法:

名称

参数

返回值

说明

onError

error: RCSPOpError :(传输失败原因 RCSPOpError)

void

更新失败

onProgress

progress: number :(进度百分比0.0~100.0)。

void

更新文件进度

onFinish

_fileId?: number :文件id

void

更新文件成功,返回文件数据。

3.1.9.2 小文件传输事件(OperateEventSmallFile)

暂时没有事件通知

属性:type

事件类型

类型

说明

“NONE”

string

无事件

3.1.9.3 小文件传输事件回调(OperateEventCallbackSmallFile)

onEvent(_event: T): void

事件回调函数

3.1.10 联系人管理(OperateContacts)

3.1.10.1 联系人管理接口(IOperateContacts)

3.1.10.1.1 IOperateContacts.removeAllEventCallback

removeAllEventCallback(): void;

移除全部事件监听回调。

当切换设备时,我们不想监听某个设备的该OP事件回调,可以调用此方法。

参数:

参数名

类型

必填

说明

示例:

1const opContacts = operateWrapper.getOperateByClass(JL_RCSPOP.OPContacts.OperateContacts.prototype)
2opContacts?.removeAllEventCallback()
3.1.10.1.2 IOperateContacts.registerEventCallback

registerEventCallback(callback: OperateEventCallbackContacts): void;

注册回调

当我们想监听设备的该OP事件通知回调,可以用此方法注册回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackContacts

OP事件回调

示例:

1const opContacts = operateWrapper.getOperateByClass(JL_RCSPOP.OPContacts.OperateContacts.prototype)
2const callback: JL_RCSPOP.OPContacts.OperateEventCallbackContacts = {
3  onEvent: (event: JL_RCSPOP.OPContacts.OperateEventContacts): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opContacts?.registerEventCallback(callback)
3.1.10.1.3 IOperateContacts.unregisterEventCallback

unregisterEventCallback(callback: OperateEventCallbackContacts): void;

注销回调

当我们想取消监听设备的该OP事件通知回调,可以用此方法注销回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackContacts

OP事件回调

示例:

1const opContacts = operateWrapper.getOperateByClass(JL_RCSPOP.OPContacts.OperateContacts.prototype)
2const callback: JL_RCSPOP.OPContacts.OperateEventCallbackContacts = {
3  onEvent: (event: JL_RCSPOP.OPContacts.OperateEventContacts): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opContacts?.unregisterEventCallback(callback)
3.1.10.1.4 IOperateContacts.readContacts

readContacts(isRealTime: boolean): Promise<Array<DeviceContacts>>

读取联系人( 优先读取本地缓存)。返回Promise形式的联系人列表。

参数:

参数名

类型

必填

说明

isRealTime

boolean

是否实时获取。false:优先读取本地缓存,true:实时从设备端获取

返回值:

类型

说明

Promise<Array< DeviceContacts >>

以Promise形式返回结果,返回联系人列表。

示例:

1const opContacts = operateWrapper.getOperateByClass(JL_RCSPOP.OPContacts.OperateContacts.prototype)
2opContacts?.readContacts(true).then((contacts) => {
3  console.log(`readContacts success.contacts->${contacts}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`readContacts onError: error->${JSON.stringify(error)}`);
6})
3.1.10.1.5 IOperateContacts.readContacts

readContacts(isRealTime: boolean, callback: ReadContactsCallback): boolean

读取联系人( 优先读取本地缓存)。通过callback回调联系人列表。

参数:

参数名

类型

必填

说明

isRealTime

boolean

是否实时获取。false:优先读取本地缓存,true:实时从设备端获取

callback

ReadContactsCallback

回调

返回值:

类型

说明

boolean

返回结果,false 执行失败,true:开始执行。

示例:

 1const opContacts = operateWrapper.getOperateByClass(JL_RCSPOP.OPContacts.OperateContacts.prototype)
 2const callback: JL_RCSPOP.OPContacts.ReadContactsCallback = {
 3  onError: (error: JL_RCSPOP.RCSPOpError): void => {
 4    console.log(`readContacts onError: error->${JSON.stringify(error)}`);
 5  },
 6  onFinish: (_deviceContacts: JL_RCSPOP.OPContacts.DeviceContacts[]): void => {
 7    console.log(`readContacts success,_fileInfos->${JSON.stringify(_deviceContacts)}`);
 8  }
 9}
10opContacts?.readContacts(true, callback)
3.1.10.1.6 IOperateContacts.updateContacts

updateContacts(contacts: DeviceContacts[]): Promise<boolean>

更新联系人列表(删除全部,添加新的列表)。返回Promise形式的更新结果。

参数:

参数名

类型

必填

说明

contacts

DeviceContacts []

联系人列表(删除原有列表,添加新的列表)

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果,返回更新结果。

示例:

1const opContacts = operateWrapper.getOperateByClass(JL_RCSPOP.OPContacts.OperateContacts.prototype)
2opContacts?.updateContacts([]).then((success) => {
3  console.log(`updateContacts success->${success}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`updateContacts onError: error->${JSON.stringify(error)}`);
6})
3.1.10.1.7 IOperateContacts.updateContacts

updateContacts(contacts: DeviceContacts[], callback: UpdateContactsCallback): boolean

更新联系人列表(删除全部,添加新的列表))。通过callback回调更新结果。

参数:

参数名

类型

必填

说明

contacts

DeviceContacts []

联系人列表(删除原有列表,添加新的列表)

callback

UpdateContactsCallback

回调

返回值:

类型

说明

boolean

返回结果,false 执行失败,true:开始执行。

示例:

 1const opContacts = operateWrapper.getOperateByClass(JL_RCSPOP.OPContacts.OperateContacts.prototype)
 2const callback: JL_RCSPOP.OPContacts.UpdateContactsCallback = {
 3  onError: (error: JL_RCSPOP.RCSPOpError): void => {
 4    console.log(`updateContacts onError: error->${JSON.stringify(error)}`);
 5  },
 6  onFinish: (success): void => {
 7    console.log(`updateContacts success,_fileInfos->${JSON.stringify(success)}`);
 8  }
 9}
10opContacts?.updateContacts([], callback)
3.1.10.1.8 IOperateContacts.isIdle

isIdle(): boolean

是否空闲。该接口暂不使用。

3.1.10.1.9 设备联系人信息(DeviceContacts)

名称

类型

可读

可写

说明

name

string

联系人名称

mobile

string

联系方式

3.1.10.1.10 读取联系人列表的回调(ReadContactsCallback)

方法:

名称

参数

返回值

说明

onError

error: RCSPOpError (失败原因)

void

读取失败

onFinish

_deviceContacts:DeviceContacts[]

void

读取成功,返回联系人列表( DeviceContacts )。

3.1.10.1.11 更新联系人列表的回调(UpdateContactsCallback)

方法:

名称

参数

返回值

说明

onError

error: RCSPOpError (失败原因)

void

更新失败

onFinish

_success: boolean

void

更新结束,返回更新结果。

3.1.10.2 联系人管理事件(OperateEventContacts)

暂时没有事件通知

属性:type

事件类型

类型

说明

“NONE”

string

无事件

3.1.10.3 联系人管理事件回调(OperateEventCallbackContacts)

onEvent(_event: T): void

事件回调函数

3.1.11 消息推送(OperateMessagePush)

3.1.11.1 消息推送接口(IOperateMessagePush)

3.1.11.1.1 IOperateMessagePush.removeAllEventCallback

removeAllEventCallback(): void;

移除全部事件监听回调。

当切换设备时,我们不想监听某个设备的该OP事件回调,可以调用此方法。

参数:

参数名

类型

必填

说明

示例:

1const opMessagePush = operateWrapper.getOperateByClass(JL_RCSPOP.OPMessagePush.OperateMessagePush.prototype)
2opMessagePush?.removeAllEventCallback()
3.1.11.1.2 IOperateMessagePush.registerEventCallback

registerEventCallback(callback: OperateEventCallbackMessagePush): void;

注册回调

当我们想监听设备的该OP事件通知回调,可以用此方法注册回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackMessagePush

OP事件回调

示例:

1const opMessagePush = operateWrapper.getOperateByClass(JL_RCSPOP.OPMessagePush.OperateMessagePush.prototype)
2const callback: JL_RCSPOP.OPMessagePush.OperateEventCallbackMessagePush = {
3  onEvent: (event: JL_RCSPOP.OPMessagePush.OperateEventMessagePush): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opMessagePush?.registerEventCallback(callback)
3.1.11.1.3 IOperateMessagePush.unregisterEventCallback

unregisterEventCallback(callback: OperateEventCallbackMessagePush): void;

注销回调

当我们想取消监听设备的该OP事件通知回调,可以用此方法注销回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackMessagePush

OP事件回调

示例:

1const opMessagePush = operateWrapper.getOperateByClass(JL_RCSPOP.OPMessagePush.OperateMessagePush.prototype)
2const callback: JL_RCSPOP.OPMessagePush.OperateEventCallbackMessagePush = {
3  onEvent: (event: JL_RCSPOP.OPMessagePush.OperateEventMessagePush): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opMessagePush?.unregisterEventCallback(callback)
3.1.11.1.4 IOperateMessagePush.pushNotificationInfo

pushNotificationInfo(time: number, packageName: string, appFlag: number, title: string | undefined, content: string | undefined): Promise<boolean>

推送通知信息。返回Promise形式的推送结果。

参数:

参数名

类型

必填

说明

time

number

时间戳

packageName

string

包名,最大限制范围:31 Bytes

appFlag

number

应用标识。0: 默认图标,1: 短信图标,2: 微信图标,3: QQ图标,4: 钉钉图标

title

string | undefined

标题,最大限制范围: 36 Bytes

content

string | undefined

内容,最大限制范围: 133 ~ 439 Bytes, 由固件决定

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果,返回推送结果。

示例:

 1const opMessagePush = operateWrapper.getOperateByClass(JL_RCSPOP.OPMessagePush.OperateMessagePush.prototype)
 2const time = new Date().getTime();
 3const packageName = "com.jieli.test";
 4const appFlag = 0;
 5const title = "消息标题"
 6const content = "消息内容"
 7opMessagePush?.pushNotificationInfo(time, packageName, appFlag, title, content).then((success) => {
 8  console.log(`pushNotificationInfo success->${success}`);
 9}).catch((error: JL_RCSPOP.RCSPOpError) => {
10  console.log(`pushNotificationInfo onError: error->${JSON.stringify(error)}`);
11})
3.1.11.1.5 IOperateMessagePush.pushNotificationInfo

pushNotificationInfo(time: number, packageName: string, appFlag: number, title: string | undefined, content: string | undefined, callback: PushNotificationInfoCallback): boolean

推送通知信息。通过callback回调推送结果。

参数:

参数名

类型

必填

说明

time

number

时间戳

packageName

string

包名,最大限制范围:31 Bytes

appFlag

number

应用标识。0: 默认图标,1: 短信图标,2: 微信图标,3: QQ图标,4: 钉钉图标

title

string | undefined

标题,最大限制范围: 36 Bytes

content

string | undefined

内容,最大限制范围: 133 ~ 439 Bytes, 由固件决定

callback

PushNotificationInfoCallback

回调

返回值:

类型

说明

boolean

返回结果,false 执行失败,true:开始执行。

示例:

 1const opMessagePush = operateWrapper.getOperateByClass(JL_RCSPOP.OPMessagePush.OperateMessagePush.prototype)
 2const time = new Date().getTime();
 3const packageName = "com.jieli.test";
 4const appFlag = 0;
 5const title = "消息标题"
 6const content = "消息内容"
 7const callback: JL_RCSPOP.OPMessagePush.PushNotificationInfoCallback = {
 8  onError: (error: JL_RCSPOP.RCSPOpError): void => {
 9    console.log(`pushNotificationInfo onError: error->${JSON.stringify(error)}`);
10  },
11  onFinish: (success): void => {
12    console.log(`pushNotificationInfo success,_fileInfos->${JSON.stringify(success)}`);
13  }
14}
15opMessagePush?.pushNotificationInfo(time, packageName, appFlag, title, content,callback)
3.1.11.1.6 IOperateMessagePush.removePushNotificationInfo

removePushNotificationInfo(time: number, packageName: string): Promise<boolean>

移除通知信息。返回Promise形式的移除结果。

参数:

参数名

类型

必填

说明

time

number

时间戳

packageName

string

包名,最大限制范围:31 Bytes

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果,返回结果。

示例:

1const opMessagePush = operateWrapper.getOperateByClass(JL_RCSPOP.OPMessagePush.OperateMessagePush.prototype)
2const time = new Date().getTime(); //要与推送通知信息的时间一致
3const packageName = "com.jieli.test"; //要与推送通知信息的包名一致
4opMessagePush?.removePushNotificationInfo(time, packageName).then((success) => {
5  console.log(`removePushNotificationInfo success->${success}`);
6}).catch((error: JL_RCSPOP.RCSPOpError) => {
7  console.log(`removePushNotificationInfo onError: error->${JSON.stringify(error)}`);
8})
3.1.11.1.7 IOperateMessagePush.removePushNotificationInfo

removePushNotificationInfo(time: number, packageName: string, callback: RemovePushNotificationInfoCallback): boolean

移除通知信息。通过callback回调移除结果。

参数:

参数名

类型

必填

说明

time

number

时间戳。要与推送通知信息的时间一致

packageName

string

包名,最大限制范围:31 Bytes。要与推送通知信息的包名一致

callback

RemovePushNotificationInfoCallback

回调

返回值:

类型

说明

boolean

返回结果,false 执行失败,true:开始执行。

示例:

 1const opMessagePush = operateWrapper.getOperateByClass(JL_RCSPOP.OPMessagePush.OperateMessagePush.prototype)
 2const time = new Date().getTime(); //要与推送通知信息的时间一致
 3const packageName = "com.jieli.test"; //要与推送通知信息的包名一致
 4const callback: JL_RCSPOP.OPMessagePush.RemovePushNotificationInfoCallback = {
 5  onError: (error: JL_RCSPOP.RCSPOpError): void => {
 6    console.log(`removePushNotificationInfo onError: error->${JSON.stringify(error)}`);
 7  },
 8  onFinish: (success): void => {
 9    console.log(`removePushNotificationInfo success,_fileInfos->${JSON.stringify(success)}`);
10  }
11}
12opMessagePush?.removePushNotificationInfo(time, packageName, callback)
3.1.11.1.8 IOperateMessagePush.pushWeatherInfo

pushWeatherInfo(province: string, city: string, weatherCode: number, temperature: number, humidity: number, directionCoding: number, windPower: number, time: number): Promise<boolean>

推送天气消息。返回Promise形式的推送结果。

参数:

参数名

类型

必填

说明

province

string

省份

city

string

城市

weatherCode

number

天气编码

temperature

number

温度-摄氏度(-100~+100,整数)

humidity

number

湿度(0~+100,整数)

directionCoding

number

方向编码

windPower

number

湿度(3~+20,整数)

time

number

时间戳(ms)

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果,返回结果。

示例:

 1const opMessagePush = operateWrapper.getOperateByClass(JL_RCSPOP.OPMessagePush.OperateMessagePush.prototype)
 2const province = "省份";
 3const city = "城市";
 4const weatherCode = 0; //天气编码,参考天气编码表
 5const temperature = 0; //温度
 6const humidity = 0; //湿度
 7const windDirectionCode = 0; //方向编码,参考方向编码表
 8const windPower = 0; //风力等级
 9const time = new Date().getTime(); //要与推送通知信息的时间一致
10opMessagePush?.pushWeatherInfo(province, city, weatherCode, temperature, humidity, windDirectionCode, windPower,
11  time).then((success) => {
12  console.log(`pushWeatherInfo success->${success}`);
13}).catch((error: JL_RCSPOP.RCSPOpError) => {
14  console.log(`pushWeatherInfo onError: error->${JSON.stringify(error)}`);
15})

天气编码表

码值

说明

码值

说明

码值

说明

0

11

阵雨

22

极端降雨

1

少云

12

雷阵雨

23

雨夹雪/阵雨夹雪/冻雨/雨雪天气

2

晴间多云

13

雷阵雨并伴有冰雹

24

3

多云

14

雨/小雨/毛毛雨/细雨/小雨-中雨

25

阵雪

4

15

中雨/中雨-大雨

26

小雪/小雪-中雪

5

有风/和风/清风/微风

16

大雨/大雨-暴雨

27

中雪/中雪-大雪

6

平静

17

暴雨/暴雨-大暴雨

28

大雪/大雪-暴雪

7

大风/强风/劲风/疾风

18

大暴雨/大暴雨-特大暴雨

29

暴雪

8

飓风/狂暴风

19

特大暴雨

30

浮尘

9

热带风暴/风暴

20

强阵雨

31

扬尘

10

霾/中度霾/重度霾/严重霾

21

强雷阵雨

32

沙尘暴


33

强沙尘暴

34

龙卷风

35

雾/轻雾/浓雾/强浓雾/特强浓雾

36

37

38

未知

方向编码表

code

0

1

2

3

4

5

6

7

8

9

说明

无风向

西

东南

东北

西北

西南

旋转不定

3.1.11.1.9 IOperateMessagePush.isIdle

isIdle(): boolean

是否空闲。该接口暂不使用。

3.1.11.1.10 推送通知信息的回调(PushNotificationInfoCallback)

方法:

名称

参数

返回值

说明

onError

error: RCSPOpError :(传输失败原因 RCSPOpError)

void

传输失败

onFinish

success: boolean

void

传输成功。

3.1.11.1.11 移除通知信息的回调(RemovePushNotificationInfoCallback)

方法:

名称

参数

返回值

说明

onError

error: RCSPOpError :(传输失败原因 RCSPOpError)

void

移除失败

onFinish

success: boolean

void

移除成功。

3.1.11.2 消息推送事件(OperateEventMessagePush)

暂时没有事件通知

属性:type

事件类型

类型

说明

“NONE”

string

无事件

3.1.11.3 消息推送事件回调(OperateEventCallbackMessagePush)

onEvent(_event: T): void

事件回调函数

3.1.12 运动功能(OperateSport)

3.1.12.1 运动功能接口(IOperateSport)

3.1.12.1.1 IOperateSport.removeAllEventCallback

removeAllEventCallback(): void;

移除全部事件监听回调。

当切换设备时,我们不想监听某个设备的该OP事件回调,可以调用此方法。

参数:

参数名

类型

必填

说明

示例:

1const opSport = operateWrapper.getOperateByClass(JL_RCSPOP.OPSport.OperateSport.prototype)
2opSport?.removeAllEventCallback()
3.1.12.1.2 IOperateSport.registerEventCallback

registerEventCallback(callback: OperateEventCallbackSport): void;

注册回调

当我们想监听设备的该OP事件通知回调,可以用此方法注册回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackSport

OP事件回调

示例:

1const opSport = operateWrapper.getOperateByClass(JL_RCSPOP.OPSport.OperateSport.prototype)
2const callback: JL_RCSPOP.OPSport.OperateEventCallbackSport = {
3  onEvent: (event: JL_RCSPOP.OPSport.OperateEventSport): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opSport?.registerEventCallback(callback)
3.1.12.1.3 IOperateSport.unregisterEventCallback

unregisterEventCallback(callback: OperateEventCallbackSport): void;

注销回调

当我们想取消监听设备的该OP事件通知回调,可以用此方法注销回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackSport

OP事件回调

示例:

1const opSport = operateWrapper.getOperateByClass(JL_RCSPOP.OPSport.OperateSport.prototype)
2const callback: JL_RCSPOP.OPSport.OperateEventCallbackSport = {
3  onEvent: (event: JL_RCSPOP.OPSport.OperateEventSport): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opSport?.unregisterEventCallback(callback)
3.1.12.1.4 IOperateSport.getSportsStatus

getSportsStatus(isRealtime: boolean): Promise<{ statusInfo: SportInfo }>

获取运动状态信息(优先获取本地缓存)。返回Promise形式的运动状态信息。

参数:

参数名

类型

必填

说明

isRealtime

boolean

是否实时获取。false:优先读取本地缓存,true:实时从设备端获取

返回值:

类型

说明

Promise<{ statusInfo: SportInfo }>

以Promise形式返回结果,返回运动状态信息。

示例:

1const opSport = operateWrapper.getOperateByClass(JL_RCSPOP.OPSport.OperateSport.prototype)
2opSport?.getSportsStatus(true).then((res) => {
3  console.log(`getSportsStatus success. statusInfo->${res.statusInfo}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`getSportsStatus onError: error->${JSON.stringify(error)}`);
6})
3.1.12.1.5 IOperateSport.startSports

startSports(sportMode: number): Promise<boolean>

开始运动。返回Promise形式的结果。

参数:

参数名

类型

必填

说明

sportMode

number

运动模式。 0x00 :非运动模式, 0x01: 室外跑步, 0x02: 室内跑步

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果。

示例:

1const opSport = operateWrapper.getOperateByClass(JL_RCSPOP.OPSport.OperateSport.prototype)
2const sportMode = 2 //运动模式-室内跑步
3opSport?.startSports(sportMode).then((res) => {
4  console.log(`startSports success->${res}`);
5}).catch((error: JL_RCSPOP.RCSPOpError) => {
6  console.log(`startSports onError: error->${JSON.stringify(error)}`);
7})
3.1.12.1.6 IOperateSport.pauseSports

pauseSports(): Promise<boolean>

暂停运动。返回Promise形式的结果。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果。

示例:

1const opSport = operateWrapper.getOperateByClass(JL_RCSPOP.OPSport.OperateSport.prototype)
2opSport?.pauseSports().then((res) => {
3  console.log(`pauseSports success->${res}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`pauseSports onError: error->${JSON.stringify(error)}`);
6})
3.1.12.1.7 IOperateSport.resumeSports

resumeSports(): Promise<boolean>

继续运动。返回Promise形式的结果。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果。

示例:

1const opSport = operateWrapper.getOperateByClass(JL_RCSPOP.OPSport.OperateSport.prototype)
2opSport?.resumeSports().then((res) => {
3  console.log(`resumeSports success->${res}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`resumeSports onError: error->${JSON.stringify(error)}`);
6})
3.1.12.1.8 IOperateSport.stopSports

stopSports(): Promise<StopSportInfo>

停止运动。返回Promise形式的结束运动信息。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise< StopSportInfo >

以Promise形式返回结果,返回结束运动信息。

示例:

1const opSport = operateWrapper.getOperateByClass(JL_RCSPOP.OPSport.OperateSport.prototype)
2opSport?.stopSports().then((stopSportInfo) => {
3  console.log(`stopSports success,stopSportInfo->${stopSportInfo}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`stopSports onError: error->${JSON.stringify(error)}`);
6})
3.1.12.1.9 IOperateSport.readRealSportsData

readRealSportsData(): Promise<SportRealTimeData>

读取运动实时数据。返回Promise形式的运动实时数据信息。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise< SportRealTimeData >

以Promise形式返回结果,返回运动实时数据信息。

示例:

1const opSport = operateWrapper.getOperateByClass(JL_RCSPOP.OPSport.OperateSport.prototype)
2opSport?.readRealSportsData().then((sportRealTimeData) => {
3  console.log(`readRealSportsData success,sportRealTimeData->${sportRealTimeData}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`readRealSportsData onError: error->${JSON.stringify(error)}`);
6})
3.1.12.1.10 IOperateSport.readSportFileList

readSportFileList(): Promise<OPSmallFile.SmallFile[]>

获取运动记录文件列表。返回Promise形式的运动记录文件列表。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise< OPSmallFile. SmallFile []>

以Promise形式返回结果,返回运动记录文件列表。

示例:

1const opSport = operateWrapper.getOperateByClass(JL_RCSPOP.OPSport.OperateSport.prototype)
2opSport?.readSportFileList().then((fileList) => {
3  console.log(`readSportFileList success,fileList->${fileList}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`readSportFileList onError: error->${JSON.stringify(error)}`);
6})
3.1.12.1.11 IOperateSport.readSportFileHeaderData

readSportFileHeaderData(fileId: number, options?: { offset?: number; length?: number; }): Promise<{ data: Uint8Array }>

读取运动记录文件头内容。返回Promise形式的运动记录文件头内容。

参数:

参数名

类型

必填

说明

fileId

number

文件id。结束运动时, StopSportInfo 有文件id。或者 获取运动记录文件列表 readSportFileList` 的文件列表也有文件id。

options

{ offset?: number; length?: number; }

拓展参数。 offset 读取头内容的偏移地址,默认:0。 length 读取头内容的长度,默认:30。

返回值:

类型

说明

Promise<{ data: Uint8Array }>

以Promise形式返回结果,返回头内容数据。

示例:

1const opSport = operateWrapper.getOperateByClass(JL_RCSPOP.OPSport.OperateSport.prototype)
2const fileId = 0 //文件id。结束运动时, StopSportInfo_ 有文件id。或者 获取运动记录文件列表 ``readSportFileList``` 的文件列表也有文件id。
3opSport?.readSportFileHeaderData(fileId).then((headerData) => {
4  console.log(`readSportFileHeaderData success,byteLength->${headerData.data.byteLength}`);
5}).catch((error: JL_RCSPOP.RCSPOpError) => {
6  console.log(`readSportFileHeaderData onError: error->${JSON.stringify(error)}`);
7})
3.1.12.1.12 IOperateSport.readSportFileData

readSportFileData(fileId: number): Promise<{ data: Uint8Array }>

读取运动记录文件内容。返回Promise形式的运动记录文件内容。

参数:

参数名

类型

必填

说明

fileId

number

文件id。结束运动时, StopSportInfo 有文件id。或者 获取运动记录文件列表 readSportFileList` 的文件列表也有文件id。

返回值:

类型

说明

Promise<{ data: Uint8Array }>

以Promise形式返回结果,返回文件内容数据。

示例:

1const opSport = operateWrapper.getOperateByClass(JL_RCSPOP.OPSport.OperateSport.prototype)
2const fileId = 0 //文件id。结束运动时, StopSportInfo_ 有文件id。或者 获取运动记录文件列表 ``readSportFileList``` 的文件列表也有文件id。
3opSport?.readSportFileData(fileId).then((fileData) => {
4  console.log(`readSportFileData success,byteLength->${fileData.data.byteLength}`);
5}).catch((error: JL_RCSPOP.RCSPOpError) => {
6  console.log(`readSportFileData onError: error->${JSON.stringify(error)}`);
7})
3.1.12.1.13 IOperateSport.deleteSportFile

deleteSportFile(fileId: number): Promise<boolean>

删除运动记录文件。返回Promise形式的删除结果。

参数:

参数名

类型

必填

说明

fileId

number

文件id。结束运动时, StopSportInfo 有文件id。或者 获取运动记录文件列表 readSportFileList` 的文件列表也有文件id。

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果

示例:

1const opSport = operateWrapper.getOperateByClass(JL_RCSPOP.OPSport.OperateSport.prototype)
2const fileId = 0 //文件id。结束运动时, StopSportInfo_ 有文件id。或者 获取运动记录文件列表 ``readSportFileList``` 的文件列表也有文件id。
3opSport?.deleteSportFile(fileId).then((success) => {
4  console.log(`deleteSportFile success->${success}`);
5}).catch((error: JL_RCSPOP.RCSPOpError) => {
6  console.log(`deleteSportFile onError: error->${JSON.stringify(error)}`);
7})
3.1.12.1.14 运动状态信息(SportInfo)

名称

类型

可读

可写

说明

sportMode

SportMode | undefined

运动模式

sportStatus

SportStatus | undefined

运动状态

sportId

number | undefined

运动id

isHasGps

boolean | undefined

是否需要App记录GPS

heartRateMode

HeartRateMode | undefined

心率模式

realTimeDataInterval

number | undefined

实时数据定时间隔(ms)

运动状态

名称

说明

SPORT_STATE_IDLE

0

运动状态-空闲

SPORT_STATE_START

1

运动状态-开始运动

SPORT_STATE_RUNNING

2

运动状态-运动中

SPORT_STATE_PAUSE

3

运动状态-暂停

SPORT_STATE_RESUME

4

运动状态-继续运动

SPORT_STATE_STOP

5

运动状态-结束运动

运动模式

名称

说明

MODE_NONE_SPROT

0

非运动模式

MODE_OUTDOOR_RUN

1

室外跑步模式

MODE_INDOOR_RUN

2

室内跑步模式

心率模式

名称

说明

MODE_MAX_HEART_RATE

0

最大心率模式

MODE_RESERVE_HEART_RATE

1

储备心率模式

3.1.12.1.15 结束运动的信息(StopSportInfo)

名称

类型

可读

可写

说明

endTime

number

结束时间。真实时间戳

recoveryTime

number

恢复时间(min)

sportFileId

number

运动记录文件id(小文件)

sportFileSize

number

运动记录文件大小(小文件)

exerciseStatusDuration

Array<{ heartRateMode: HeartRateMode , exerciseStatus: ExerciseStatus , duration: number }>

运动强度状态占比时长。 heartRateMode -心率模式, exerciseStatus -运动强度, duration -时长(秒)

运动强度

名称

说明

STATUS_MAX_HR_NO_MOVE

0

最大心率模式-非运动

STATUS_MAX_HR_WARM_UP

1

最大心率模式-热身

STATUS_MAX_HR_FAT_BURN

2

最大心率模式-燃脂

STATUS_MAX_HR_AEROBIC_ENDURANCE

3

最大心率模式-有氧耐力

STATUS_MAX_HR_ANAEROBIC_THRESHOLD

4

最大心率模式-无氧耐力

STATUS_MAX_HR_LIMIT

5

最大心率模式-极限

STATUS_RESERVE_HR_NO_MOVE

0

储备心率模式-非运动

STATUS_RESERVE_HR_AEROBIC_BASE

1

储备心率模式-有氧基础

STATUS_RESERVE_HR_AEROBIC_PROGRESSION

2

储备心率模式-有氧进阶

STATUS_RESERVE_HR_LACTATE_THRESHOLD

3

储备心率模式-乳酸阈值

STATUS_RESERVE_HR_ANAEROBIC_BASE

4

储备心率模式-无氧基础

STATUS_RESERVE_HR_ANAEROBIC_PROGRESSION

5

储备心率模式-无氧进阶

3.1.12.1.16 运动实时数据(SportRealTimeData)

名称

类型

可读

可写

说明

type

number

类型

step

number

步数

distance

number

距离(单位:0.01公里)

duration

number

时长(秒)

speed

number

速度(单位:0.01公里每小时)

kcal

number

热量。单位: 千卡

stepFreq

number

步频。单位: 步/分钟

stride

number

步幅。单位: 厘米

heartRateMode

HeartRateMode

心率模式

exerciseStatus

ExerciseStatus

实时运动强度状态

heartRate

number

运动实时心率

3.1.12.2 运动功能事件(OperateEventSport)

属性:type

事件类型

类型

说明

“NONE”

string

无事件

“SportsStatusInfoChange”

string

运动状态变化

“StopSportsInfoChange”

string

结束运动信息变化

“SportRealTimeDataChange”

string

运动实时数据变化

属性:SportsStatusInfoChange

运动状态变化发生变化时,附带信息。仅当 type ==”SportsStatusInfoChange”时,附带。

名称

类型

可读

可写

说明

statusInfo

SportInfo

发生变化后的运动状态

属性:StopSportsInfoChange

结束运动时,通知结束运动信息(结束时间,恢复时间等)。仅当 type ==”StopSportsInfoChange”时,附带。

名称

类型

可读

可写

说明

info

StopSportInfo

结束运动信息

属性:SportRealTimeDataChange

运动实时数据变化时,仅当调用IOperateSport.readRealSportsData()时会触发,正常情况下不会触发。仅当 type ==”SportRealTimeDataChange”时,附带。

名称

类型

可读

可写

说明

data

SportRealTimeData

运动实时数据

3.1.12.3 运动功能事件回调(OperateEventCallbackSport)

onEvent(_event: T): void

事件回调函数

3.1.13 健康数据(OperateHealthData)

3.1.13.1 健康数据接口(IOperateHealthData)

3.1.13.1.1 IOperateHealthData.removeAllEventCallback

removeAllEventCallback(): void;

移除全部事件监听回调。

当切换设备时,我们不想监听某个设备的该OP事件回调,可以调用此方法。

参数:

参数名

类型

必填

说明

示例:

1const opHealthData = operateWrapper.getOperateByClass(JL_RCSPOP.OPHealthData.OperateHealthData.prototype)
2opHealthData?.removeAllEventCallback()
3.1.13.1.2 IOperateHealthData.registerEventCallback

registerEventCallback(callback: OperateEventCallbackHealthData): void;

注册回调

当我们想监听设备的该OP事件通知回调,可以用此方法注册回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackHealthData

OP事件回调

示例:

1const opHealthData = operateWrapper.getOperateByClass(JL_RCSPOP.OPHealthData.OperateHealthData.prototype)
2const callback: JL_RCSPOP.OPHealthData.OperateEventCallbackHealthData = {
3  onEvent: (event: JL_RCSPOP.OPHealthData.OperateEventHealthData): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opHealthData?.registerEventCallback(callback)
3.1.13.1.3 IOperateHealthData.unregisterEventCallback

unregisterEventCallback(callback: OperateEventCallbackHealthData): void;

注销回调

当我们想取消监听设备的该OP事件通知回调,可以用此方法注销回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackHealthData

OP事件回调

示例:

1const opHealthData = operateWrapper.getOperateByClass(JL_RCSPOP.OPHealthData.OperateHealthData.prototype)
2const callback: JL_RCSPOP.OPHealthData.OperateEventCallbackHealthData = {
3  onEvent: (event: JL_RCSPOP.OPHealthData.OperateEventHealthData): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opHealthData?.unregisterEventCallback(callback)
3.1.13.1.4 IOperateHealthData.readRealTimeHealthData

readRealTimeHealthData(mask: RealTimeHealthDataMask): Promise<RealTimeHealthData | undefined>

读取实时健康数据。返回Promise形式的实时健康数据

参数:

参数名

类型

必填

说明

mask

RealTimeHealthDataMask

实时健康数据的掩码

返回值:

类型

说明

Promise< RealTimeHealthData | undefined>

以Promise形式返回结果,返回实时健康数据。

示例:

 1const opHealthData = operateWrapper.getOperateByClass(JL_RCSPOP.OPHealthData.OperateHealthData.prototype)
 2const mask = new JL_RCSPOP.OPHealthData.RealTimeHealthDataMask()
 3//实时健康数据的掩码 - 读取心率-实时心率
 4mask.heartRate = {
 5  realTime: true
 6}
 7opHealthData?.readRealTimeHealthData(mask).then((realTimeHealthData) => {
 8  console.log(`readRealTimeHealthData success,realTimeHealthData->${realTimeHealthData}`);
 9  console.log(`readRealTimeHealthData success,heartRateRealTime->${realTimeHealthData.heartRate?.realTime}`);
10}).catch((error: JL_RCSPOP.RCSPOpError) => {
11  console.log(`readRealTimeHealthData onError: error->${JSON.stringify(error)}`);
12})
3.1.13.1.5 IOperateHealthData.readHealthDataFileList

readHealthDataFileList(fileType: HealthDataFileType): Promise<OPSmallFile.SmallFile[]>

指定健康数据文件类型,获取健康数据文件列表。返回Promise形式的小文件列表

参数:

参数名

类型

必填

说明

fileType

HealthDataFileType

健康数据文件类型。

返回值:

类型

说明

Promise< OPSmallFile. SmallFile []>

以Promise形式返回结果,返回小文件列表。

示例:

1const opHealthData = operateWrapper.getOperateByClass(JL_RCSPOP.OPHealthData.OperateHealthData.prototype)
2//健康数据文件类型 - 心率全天数据
3const fileType = JL_RCSPOP.OPHealthData.HealthDataFileType.TYPE_HEART_RATE;
4opHealthData?.readHealthDataFileList(fileType).then((fileList) => {
5  console.log(`readHealthDataFileList success,fileList->${fileList}`);
6}).catch((error: JL_RCSPOP.RCSPOpError) => {
7  console.log(`readHealthDataFileList onError: error->${JSON.stringify(error)}`);
8})
3.1.13.1.6 IOperateHealthData.readHealthDataFileHeaderData

readHealthDataFileHeaderData(fileType: HealthDataFileType, fileId: number, options?: { offset?: number; length?: number; }): Promise<{ data: Uint8Array }>

读取健康数据文件头内容。返回Promise形式的文件头内容

参数:

参数名

类型

必填

说明

fileType

HealthDataFileType

健康数据文件类型。

fileId

number

小文件id

options

{ offset?: number; length?: number; }

拓展参数。 offset 读取头内容的偏移地址,默认:0。 length 读取头内容的长度,默认:30。

返回值:

类型

说明

Promise<{ data: Uint8Array }>

以Promise形式返回结果,返回文件头数据。

示例:

 1const opHealthData = operateWrapper.getOperateByClass(JL_RCSPOP.OPHealthData.OperateHealthData.prototype)
 2//健康数据文件类型 - 心率全天数据
 3const fileType = JL_RCSPOP.OPHealthData.HealthDataFileType.TYPE_HEART_RATE;
 4//小文件id - 请通过IOperateHealthData.readHealthDataFileList获取小文件id
 5const fileId = 0;
 6opHealthData?.readHealthDataFileHeaderData(fileType, fileId).then((res) => {
 7  console.log(`readHealthDataFileHeaderData success,headerData len->${res.data.byteLength}`);
 8}).catch((error: JL_RCSPOP.RCSPOpError) => {
 9  console.log(`readHealthDataFileHeaderData onError: error->${JSON.stringify(error)}`);
10})
3.1.13.1.7 IOperateHealthData.readHealthDataFileData

readHealthDataFileData(fileType: HealthDataFileType, fileId: number): Promise<{ data: Uint8Array }>

读取健康数据文件内容。返回Promise形式的文件内容

参数:

参数名

类型

必填

说明

fileType

HealthDataFileType

健康数据文件类型。

fileId

number

小文件id

返回值:

类型

说明

Promise<{ data: Uint8Array }>

以Promise形式返回结果,返回文件数据。

示例:

 1const opHealthData = operateWrapper.getOperateByClass(JL_RCSPOP.OPHealthData.OperateHealthData.prototype)
 2//健康数据文件类型 - 心率全天数据
 3const fileType = JL_RCSPOP.OPHealthData.HealthDataFileType.TYPE_HEART_RATE;
 4//小文件id - 请通过IOperateHealthData.readHealthDataFileList获取小文件id
 5const fileId = 0;
 6opHealthData?.readHealthDataFileData(fileType, fileId).then((res) => {
 7  console.log(`readHealthDataFileData success,fileData len->${res.data.byteLength}`);
 8}).catch((error: JL_RCSPOP.RCSPOpError) => {
 9  console.log(`readHealthDataFileData onError: error->${JSON.stringify(error)}`);
10})
3.1.13.1.8 IOperateHealthData.deleteHealthDataFile

deleteHealthDataFile(fileType: HealthDataFileType, fileId: number): Promise<boolean>

删除健康数据文件。返回Promise形式的删除结果

参数:

参数名

类型

必填

说明

fileType

HealthDataFileType

健康数据文件类型。

fileId

number

小文件id

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果。

示例:

 1const opHealthData = operateWrapper.getOperateByClass(JL_RCSPOP.OPHealthData.OperateHealthData.prototype)
 2//健康数据文件类型 - 心率全天数据
 3const fileType = JL_RCSPOP.OPHealthData.HealthDataFileType.TYPE_HEART_RATE;
 4//小文件id - 请通过IOperateHealthData.readHealthDataFileList获取小文件id
 5const fileId = 0;
 6opHealthData?.deleteHealthDataFile(fileType, fileId).then((success) => {
 7  console.log(`deleteHealthDataFile success->${success}`);
 8}).catch((error: JL_RCSPOP.RCSPOpError) => {
 9  console.log(`deleteHealthDataFile onError: error->${JSON.stringify(error)}`);
10})
3.1.13.1.9 实时健康数据的掩码(RealTimeHealthDataMask)

默认false。false:不会获取该属性值,true:会读取该属性值。

示例:

 1export class RealTimeHealthDataMask {
 2    /**心率*/
 3    heartRate?: {
 4        /** 实时心率*/
 5        realTime?: boolean,
 6        /** 静息心率*/
 7        resting?: boolean,
 8        /** 最大心率*/
 9        max?: boolean
10        /** 单次测量心率*/
11        singleMeasurement?: boolean
12    }
13    /**气压*/
14    airPressure?: {
15        /** 实时气压*/
16        realTime?: boolean,
17        /** 最低气压*/
18        low?: boolean,
19        /** 最高气压*/
20        high?: boolean
21    }
22    /**海拔高度*/
23    altitude?: {
24        /** 实时高度*/
25        realTime?: boolean,
26        /** 最低高度*/
27        low?: boolean,
28        /** 最高高度*/
29        high?: boolean
30    }
31    /**实时步数*/
32    step?: {
33        /** 实时步数*/
34        realTime?: boolean,
35        /** 距离*/
36        distance?: boolean,
37        /** 热量*/
38        kcal?: boolean
39    }
40    /**压力检测*/
41    pressure?: {
42        /**压力测试值*/
43        pressureMeasurement?: boolean,
44    }
45    /**血氧饱和度*/
46    spO2?: {
47        /**血氧饱和度*/
48        spO2Value?: boolean,
49        /**最大值*/
50        max?: boolean,
51        /** 最小值*/
52        min?: boolean,
53        /** 单次测量值*/
54        singleMeasurement?: boolean
55    }
56    /**训练负荷*/
57    trainLoad?: {
58        /**训练负荷*/
59        trainLoad?: boolean
60    }
61    /**最大摄氧量*/
62    vo2max?: {
63        /**最大摄氧量*/
64        vo2max?: boolean
65    }
66    /**运动恢复时间*/
67    sportRecoveryTime?: {
68        /**运动恢复时间*/
69        sportRecoveryTime?: boolean
70    }
71}
3.1.13.1.10 实时健康数据(RealTimeHealthData)

默认值:undefined。undefined:不存在,other:存在属性值。

示例:

 1export class RealTimeHealthData {
 2    /**心率 ,有效范围:0~220*/
 3    heartRate?: {
 4        /** 实时心率*/
 5        realTime?: number,
 6        /** 静息心率*/
 7        resting?: number,
 8        /** 最大心率*/
 9        max?: number
10        /** 单次测量心率*/
11        singleMeasurement?: number
12    }
13    /**气压,有效范围:300~1100百帕(hPa)*/
14    airPressure?: {
15        /** 实时气压*/
16        realTime?: number,
17        /** 最低气压*/
18        low?: number,
19        /** 最高气压*/
20        high?: number
21    }
22    /**海拔高度:0~65536米*/
23    altitude?: {
24        /** 实时高度*/
25        realTime?: number,
26        /** 最低高度*/
27        low?: number,
28        /** 最高高度*/
29        high?: number
30    }
31    /**实时步数*/
32    step?: {
33        /** 实时步数,有效范围:0~200000步*/
34        realTime?: number,
35        /** 距离,单位:1公里*/
36        distance?: number,
37        /** 热量,单位:千卡*/
38        kcal?: number
39    }
40    /**压力检测*/
41    pressure?: {
42        /**压力测试值,有效范围:(0~100%)*/
43        pressureMeasurement?: number,
44    }
45    /**血氧饱和度,有效范围(0%~100%)*/
46    spO2?: {
47        /**血氧饱和度*/
48        spO2Value?: number,
49        /**最大值*/
50        max?: number,
51        /** 最小值*/
52        min?: number,
53        /** 单次测量值*/
54        singleMeasurement?: number
55    }
56    /**训练负荷*/
57    trainLoad?: {
58        /**训练负荷*/
59        trainLoad?: number
60    }
61    /**最大摄氧量*/
62    vo2max?: {
63        /**最大摄氧量*/
64        vo2max?: number
65    }
66    /**运动恢复时间*/
67    sportRecoveryTime?: {
68        /**运动恢复时间,单位:15分钟*/
69        sportRecoveryTime?: number
70    }
71}
3.1.13.1.11 实时健康数据的文件类型(HealthDataFileType)

名称

说明

TYPE_HEART_RATE

0

心率全天数据

TYPE_SPO2

1

血氧全天数据

TYPE_SLEEP

2

睡眠全天数据

TYPE_STEP

3

步数全天数据

3.1.13.2 健康数据事件(OperateEventHealthData)

暂时没有事件通知

属性:type

事件类型

类型

说明

“NONE”

string

无事件

“HealthRealTimeDataChange”

string

健康实时数据变化

属性:HealthRealTimeDataChange

健康实时数据发生变化时,附带信息。 仅当调用IOperateHealthData.readRealTimeHealthData时触发。 仅当 type ==”HealthRealTimeDataChange”时,附带。

名称

类型

可读

可写

说明

data

RealTimeHealthData

健康实时数据(心率,气压,海拔高度,实时步数,压力检测,血氧饱和度等)

3.1.13.3 健康数据事件回调(OperateEventCallbackHealthData)

onEvent(_event: T): void

事件回调函数

3.1.14 设备相关(OperateDevice)

3.1.14.1 设备相关接口(IOperateDevice)

3.1.14.1.1 IOperateDevice.removeAllEventCallback

removeAllEventCallback(): void;

移除全部事件监听回调。

当切换设备时,我们不想监听某个设备的该OP事件回调,可以调用此方法。

参数:

参数名

类型

必填

说明

示例:

1const opDevice = operateWrapper.getOperateByClass(JL_RCSPOP.OPDevice.OperateDevice.prototype)
2opDevice?.removeAllEventCallback()
3.1.14.1.2 IOperateDevice.registerEventCallback

registerEventCallback(callback: OperateEventCallbackWatch): void;

注册回调

当我们想监听设备的该OP事件通知回调,可以用此方法注册回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackWatch

OP事件回调

示例:

1const opDevice = operateWrapper.getOperateByClass(JL_RCSPOP.OPDevice.OperateDevice.prototype)
2const callback: JL_RCSPOP.OPDevice.OperateEventCallbackWatch = {
3  onEvent: (event: JL_RCSPOP.OPDevice.OperateEventWatch): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opDevice?.registerEventCallback(callback)
3.1.14.1.3 IOperateDevice.unregisterEventCallback

unregisterEventCallback(callback: OperateEventCallbackWatch): void;

注销回调

当我们想取消监听设备的该OP事件通知回调,可以用此方法注销回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackWatch

OP事件回调

示例:

1const opDevice = operateWrapper.getOperateByClass(JL_RCSPOP.OPDevice.OperateDevice.prototype)
2const callback: JL_RCSPOP.OPDevice.OperateEventCallbackWatch = {
3  onEvent: (event: JL_RCSPOP.OPDevice.OperateEventWatch): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opDevice?.unregisterEventCallback(callback)
3.1.14.1.4 IOperateDevice.getDeviceConfigureInfo

getDeviceConfigureInfo(): Promise<WatchConfigInfo | TWSHeadsetConfigInfo | undefined>

设备配置信息。返回Promise形式的设备配置信息(手表类型设备返回的是手表配置信息,TWS耳机类型设备返回的是TWS耳机配置信息)。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise< WatchConfigInfo | TWSHeadsetConfigInfo | undefined>

以Promise形式返回结果

示例:

 1const opDevice = operateWrapper.getOperateByClass(JL_RCSPOP.OPDevice.OperateDevice.prototype)
 2opDevice?.getDeviceConfigureInfo().then((configureInfo) => {
 3  if (configureInfo instanceof JL_RCSPOP.OPDevice.WatchConfigInfo) {
 4    console.log(`getDeviceConfigureInfo success,WatchConfigInfo->${configureInfo}`);
 5  } else if (configureInfo instanceof JL_RCSPOP.OPDevice.TWSHeadsetConfigInfo) {
 6    console.log(`getDeviceConfigureInfo success,TWSHeadsetConfigInfo->${configureInfo}`);
 7  } else {
 8    console.log(`getDeviceConfigureInfo success,configureInfo is undefined`);
 9  }
10}).catch((error: JL_RCSPOP.RCSPOpError) => {
11  console.log(`getDeviceConfigureInfo onError: error->${JSON.stringify(error)}`);
12})
3.1.14.1.5 手表配置信息(WatchConfigInfo)
  1export class WatchConfigInfo {
  2    /**必要功能*/
  3    mandatoryFun?: {
  4        /**OTA*/
  5        ota?: boolean,
  6        /**资源更新*/
  7        resourseUpdate?: boolean,
  8        /**表盘操作:新增,删除,查询*/
  9        dialOperate?: boolean,
 10        /**表盘切换*/
 11        dialSwitch?: boolean,
 12        /**表盘预览*/
 13        dialPreview?: boolean,
 14        /**保留位数据*/
 15        reverseData?: Uint8Array
 16    }
 17    /**系统设置*/
 18    systemSettings?: {
 19        /**屏幕设置*/
 20        screenSettings?: boolean,
 21        /**震动强度*/
 22        vibrationIntensity?: boolean,
 23        /**勿扰模式*/
 24        interruptions?: boolean,
 25        /**锻炼设置*/
 26        exerciseSettings?: boolean,
 27        /**蓝牙断开提醒*/
 28        btDisconnectTip?: boolean,
 29        /**保留位数据*/
 30        reverseData?: Uint8Array
 31    }
 32    /**功能选项*/
 33    funcOptions?: {
 34        /**常用联系人*/
 35        contacts?: boolean,
 36        /**音乐文件浏览*/
 37        musicFilesBrowse?: boolean,
 38        /**音乐文件删除、传输*/
 39        musicFilesOperate?: boolean,
 40        /**闹钟设置*/
 41        alarmSettings?: boolean,
 42        /**信息同步*/
 43        notificationInfoSync?: boolean,
 44        /**天气同步*/
 45        weatherInfoSync?: boolean,
 46        /**找手机/设备*/
 47        searchDevice?: boolean,
 48        /**AI云服务功能*/
 49        aiCloudServices?: boolean,
 50        /**AI表盘*/
 51        aiDial?: boolean,
 52        /**平台接口信息获取*/
 53        platformInfo?: boolean,
 54        /**是否支持4G模块*/
 55        networkModule?: boolean,
 56        /**表盘拓展参数*/
 57        dialExpandInfo?: boolean,
 58        /**保留位数据*/
 59        reverseData?: Uint8Array
 60    }
 61    /**运动健康*/
 62    sportHealth?: {
 63        /**综合功能*/
 64        comprehensiveFunc?: {
 65            /**健康监控*/
 66            healthMonitoring?: boolean,
 67            /**个人信息*/
 68            personalInfo?: boolean,
 69            /**睡眠检测*/
 70            sleepDetection?: boolean,
 71            /**久坐提醒*/
 72            sedentaryReminder?: boolean,
 73            /**运动心率提醒*/
 74            sportHRReminder?: boolean,
 75            /**压力自动检测*/
 76            pressureAutoDetection?: boolean,
 77            /**跌倒检测*/
 78            fallDetection?: boolean,
 79            /**传感器设置*/
 80            sensorSettings?: boolean,
 81            /**保留位数据*/
 82            reverseData?: Uint8Array
 83        }
 84        /**运动模式*/
 85        sportMode?: {
 86            /**运动记录*/
 87            sportRecord?: boolean,
 88            /**运动统计*/
 89            sportStatistics?: boolean,
 90            /**室外运动*/
 91            outdoorSport?: boolean,
 92            /**室内运动*/
 93            indoorSport?: boolean,
 94            /**保留位数据*/
 95            reverseData?: Uint8Array
 96        }
 97        /**计步功能*/
 98        GSensor?: {
 99            /**开关*/
100            onOff?: boolean,
101            /**运动步数*/
102            sportStep?: boolean,
103            /**保留位数据*/
104            reverseData?: Uint8Array
105        }
106        /**心率功能*/
107        heartRate?: {
108            /**开关*/
109            onOff?: boolean,
110            /**连续测量心率*/
111            continuousMeasurement?: boolean,
112            /**保留位数据*/
113            reverseData?: Uint8Array
114        }
115        /**血氧功能*/
116        bloodOxygen?: {
117            /**开关*/
118            onOff?: boolean,
119            /**保留位数据*/
120            reverseData?: Uint8Array
121        }
122        /**海拔功能*/
123        altitude?: {
124            /**开关*/
125            onOff?: boolean,
126            /**保留位数据*/
127            reverseData?: Uint8Array
128        }
129        /**GPS功能*/
130        gps?: {
131            /**开关*/
132            onOff?: boolean,
133            /**保留位数据*/
134            reverseData?: Uint8Array
135        }
136        reverseData?: RCSPProtocol.LtvBean[]
137    }
138}
3.1.14.1.6 TWS耳机配置信息(TWSHeadsetConfigInfo)
1export class TWSHeadsetConfigInfo {
2    /**是否支持提示音替换功能*/
3    promptSoundReplace?: boolean
4    /**保留位数据*/
5    reverseData?: Uint8Array
6}

3.1.14.2 设备相关事件(OperateEventWatch)

暂时没有事件通知

属性:type

事件类型

类型

说明

“NONE”

string

无事件

“WatchConfigInfoChange”

string

手表配置信息

“TWSHeadsetConfigInfoChange”

string

TWS耳机配置信息

属性:WatchConfigInfoChange

手表配置信息。 仅当调用IOperateDevice.getDeviceConfigureInfo()触发。 仅当 type ==”WatchConfigInfoChange”时,附带。

名称

类型

可读

可写

说明

watchConfigInfo

WatchConfigInfo

手表配置信息

属性:TWSHeadsetConfigInfoChange

TWS耳机配置信息。 仅当调用IOperateDevice.getDeviceConfigureInfo()触发。 仅当 type ==”TWSHeadsetConfigInfoChange”时,附带。

名称

类型

可读

可写

说明

twsHeadsetConfigInfo

TWSHeadsetConfigInfo

TWS耳机配置信息

3.1.14.3 设备相关事件回调(OperateEventCallbackWatch)

onEvent(_event: T): void

事件回调函数

3.1.15 健康设置(OperateHealthSet)

3.1.15.1 健康设置接口(IOperateHealthSet)

3.1.15.1.1 IOperateHealthSet.removeAllEventCallback

removeAllEventCallback(): void;

移除全部事件监听回调。

当切换设备时,我们不想监听某个设备的该OP事件回调,可以调用此方法。

参数:

参数名

类型

必填

说明

示例:

1const opHealthSet = operateWrapper.getOperateByClass(JL_RCSPOP.OPHealthSet.OperateHealthSet.prototype)
2opHealthSet?.removeAllEventCallback()
3.1.15.1.2 IOperateHealthSet.registerEventCallback

registerEventCallback(callback: OperateEventCallbackHealthSet): void;

注册回调

当我们想监听设备的该OP事件通知回调,可以用此方法注册回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackHealthSet

OP事件回调

示例:

1const opHealthSet = operateWrapper.getOperateByClass(JL_RCSPOP.OPHealthSet.OperateHealthSet.prototype)
2const callback: JL_RCSPOP.OPHealthSet.OperateEventCallbackHealthSet = {
3  onEvent: (event: JL_RCSPOP.OPHealthSet.OperateEventHealthSet): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opHealthSet?.registerEventCallback(callback)
3.1.15.1.3 IOperateHealthSet.unregisterEventCallback

unregisterEventCallback(callback: OperateEventCallbackHealthSet): void;

注销回调

当我们想取消监听设备的该OP事件通知回调,可以用此方法注销回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackHealthSet

OP事件回调

示例:

1const opHealthSet = operateWrapper.getOperateByClass(JL_RCSPOP.OPHealthSet.OperateHealthSet.prototype)
2const callback: JL_RCSPOP.OPHealthSet.OperateEventCallbackHealthSet = {
3  onEvent: (event: JL_RCSPOP.OPHealthSet.OperateEventHealthSet): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opHealthSet?.unregisterEventCallback(callback)
3.1.15.1.4 IOperateHealthSet.getHealthSetInfo

getHealthSetInfo(isRealTime: boolean, mask: HealthSetInfoMask): Promise<HealthSetInfo | undefined>

获取健康设置信息(优先获取本地缓存)。返回Promise形式的健康设置信息。

参数:

参数名

类型

必填

说明

isRealtime

boolean

是否实时获取。false:优先读取本地缓存,true:实时从设备端获取

mask

HealthSetInfoMask

健康设置掩码

返回值:

类型

说明

Promise< HealthSetInfo | undefined>

以Promise形式返回结果,返回健康设置信息。

示例:

 1const opHealthSet = operateWrapper.getOperateByClass(JL_RCSPOP.OPHealthSet.OperateHealthSet.prototype)
 2// 是否实时获取 - 实时获取
 3const isRealTime = true;
 4// 健康设置掩码 - 默认掩码:全部设置获取
 5const mask = JL_RCSPOP.OPHealthSet.getDefaultMask()
 6opHealthSet?.getHealthSetInfo(isRealTime, mask).then((healthSetInfo) => {
 7  console.log(`getHealthSetInfo success,healthSetInfo-> ${JSON.stringify(healthSetInfo)}`);
 8}).catch((error: JL_RCSPOP.RCSPOpError) => {
 9  console.log(`getHealthSetInfo onError: error->${JSON.stringify(error)}`);
10})
3.1.15.1.5 IOperateHealthSet.setHealthSetInfo

setHealthSetInfo(healthSetInfo: HealthSetInfo): Promise<boolean>

设置健康设置信息。返回Promise形式的设置结果。

参数:

参数名

类型

必填

说明

healthSetInfo

HealthSetInfo

健康设置信息(只需要更新的部分)

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果,返回设置结果。

示例:

 1const opHealthSet = operateWrapper.getOperateByClass(JL_RCSPOP.OPHealthSet.OperateHealthSet.prototype)
 2// 修改健康设置信息 - 传感器部分 - 打开计步传感器开关 - 打开计步传感器记录开关
 3const healthSetInfo = new JL_RCSPOP.OPHealthSet.HealthSetInfo()
 4//传感器部分
 5healthSetInfo.sensorFunction = {
 6  stepOnOff: true, //打开计步传感器开关
 7  stepRecordOnOff: true//打开计步传感器记录开关
 8}
 9opHealthSet?.setHealthSetInfo(healthSetInfo).then((success) => {
10  console.log(`setHealthSetInfo success-> ${success}`);
11}).catch((error: JL_RCSPOP.RCSPOpError) => {
12  console.log(`setHealthSetInfo onError: error->${JSON.stringify(error)}`);
13})
3.1.15.1.6 健康设置信息(HealthSetInfo)
  1export class HealthSetInfo {
  2    /**传感器功能,传感器关闭:记录开关无效*/
  3    sensorFunction?: {
  4        /**计步传感器开关*/
  5        stepOnOff?: boolean;
  6        /**计步传感器记录开关*/
  7        stepRecordOnOff?: boolean;
  8        /**心率传感器开关*/
  9        heartRateOnOff?: boolean;
 10        /**心率传感器记录开关*/
 11        heartRateRecordOnOff?: boolean;
 12        /**血氧传感器开关*/
 13        bloodOxygenOnOff?: boolean;
 14        /**血氧传感器记录开关*/
 15        bloodOxygenRecordOnOff?: boolean;
 16        /**海拔气压传感器开关*/
 17        altitudeOnOff?: boolean;
 18        /**海拔气压传感器记录开关*/
 19        altitudeRecordOnOff?: boolean;
 20    }
 21    /**久坐提醒*/
 22    sedentaryReminder?: {
 23        /**提醒开关*/
 24        onOff?: boolean;
 25        /**提醒模式
 26        * - "Bright Screen" : 亮屏
 27        * - "Shock" : 震动
 28        * - number : 保留
 29        */
 30        reminderMode?: "Bright Screen" | "Shock" | number
 31        /**午休免打扰:关闭/打开(午休时段为12:00-14:00)*/
 32        noDisturbLunch?: boolean
 33        /**开始时间*/
 34        startTime?: { hour: number, min: number }
 35        /**结束时间*/
 36        endTime?: { hour: number, min: number }
 37    }
 38    /**连续测量心率*/
 39    continuousMeasurement?: {
 40        /**开关*/
 41        onOff?: boolean;
 42        /**模式
 43        * - "Smart" : 智能
 44        * - "Real Time" : 实时
 45        * - number : 保留
 46        */
 47        mode?: "Smart" | "Real Time" | number;
 48        /**心率上下限
 49        * - max :上限
 50        * - min :下限
 51        */
 52        limitRange?: { max: number, min: number }
 53    }
 54    /**运动心率提醒*/
 55    sportHRReminder?: {
 56        /**开关*/
 57        onOff?: boolean;
 58        /**上限心率(0-255)*/
 59        maxLimitRange?: number
 60        /**心率区间划分方式
 61        * - "Max Heart Rate" : 最大心率百分比
 62        * - "Reserve Heart Rate" : 存储心率百分比
 63        * - number: 保留
 64        */
 65        intervalDivisionMethod?: "Max Heart Rate" | "Reserve Heart Rate" | number
 66    }
 67    /**压力自动检测*/
 68    pressureAutoDetection?: {
 69        /**开关*/
 70        onOff?: boolean;
 71        /** 模式
 72        * - "Relax" : 放松
 73        * - "Normal" :正常
 74        * - "Medium" : 中等
 75        * - "Slightly High" : 偏高
 76        * - number: 保留
 77        */
 78        mode?: "Relax" | "Normal" | "Medium" | "Slightly High" | number
 79    }
 80    /**睡眠检测*/
 81    sleepDetection?: {
 82        /** 模式
 83        * - "Off" : 关闭
 84        * - "ALL Day" :全天开启
 85        * - "Custom Time" : 自定义时间段
 86        * - number: 保留
 87        */
 88        mode?: "Off" | "All Day" | "Custom Time" | number
 89        /**自定义时间段*/
 90        customTime?: {
 91            /**开始时间*/
 92            startTime?: { hour: number, min: number }
 93            /**结束时间*/
 94            endTime?: { hour: number, min: number }
 95        }
 96    }
 97    /**跌倒检测*/
 98    fallDetection?: {
 99        /**开关*/
100        onOff?: boolean;
101        /** 模式
102        * - "Bright Screen" :亮屏
103        * - "Shock" : 震动
104        * - "Telephone call" : 电话呼叫
105        * - number: 保留
106      */
107        mode?: "Bright Screen" | "Shock" | "Telephone call" | number
108        /**电话呼叫模式*/
109        telephoneCall?: {
110            /**电话号码*/
111            phoneNumber?: string
112        }
113    }
114    /**抬腕检测*/
115    wristLiftDetection?: {
116        /** 模式
117                * - "Off" : 关闭
118                * - "ALL Day" :全天开启
119                * - "Custom Time" : 自定义时间段
120                * - number: 保留
121              */
122        mode?: "Off" | "All Day" | "Custom Time" | number
123        /**提醒模式
124        * - "Bright Screen" : 亮屏
125        * - "Shock" : 震动
126        * - number : 保留
127        */
128        reminderMode?: "Bright Screen" | "Shock" | number
129        /**自定义时间段*/
130        customTime?: {
131            /**开始时间*/
132            startTime?: { hour: number, min: number }
133            /**结束时间*/
134            endTime?: { hour: number, min: number }
135        }
136    }
137    /**个人信息*/
138    personalInfo?: {
139        /**身高 (cm)*/
140        height?: number
141        /**体重(kg)*/
142        weight?: number
143        /**性别*/
144        gender?: "Male" | "Female"
145        /**年龄*/
146        age?: {
147            year?: number, month?: number, day?: number
148        }
149    }
150    /**蓝牙断开提醒*/
151    btDisconnectTip?: {
152        /**开关*/
153        onOff?: boolean;
154        /**提醒模式
155        * - "Bright Screen" : 亮屏
156        * - "Shock" : 震动
157        * - number : 保留
158        */
159        reminderMode?: "Bright Screen" | "Shock" | number;
160    }
161    /**血氧测量提醒*/
162    bloodOxygenMeasurementTip?: {
163        /**开关*/
164        onOff?: boolean;
165        /**模式
166        * - "Smart" : 智能
167        * - "Real Time" : 实时
168        * - number : 保留
169        */
170        mode?: "Smart" | "Real Time" | number;
171        /**血氧下限数值(0-100)*/
172        minLimitRange?: number
173    }
174    /**紧急联系人*/
175    emergencyContact?: {
176        /**电话号码*/
177        phoneNumber?: string
178    }
179}
3.1.15.1.7 健康设置信息掩码(HealthSetInfoMask)

名称

类型

说明

sensorFunction

boolean | undefined

传感器功能

sedentaryReminder

boolean | undefined

久坐提醒

continuousMeasurement

boolean | undefined

连续测量心率

sportHRReminder

boolean | undefined

运动心率提醒

pressureAutoDetection

boolean | undefined

压力自动检测

sleepDetection

boolean | undefined

睡眠检测

fallDetection

boolean | undefined

跌倒检测

wristLiftDetection

boolean | undefined

抬腕检测

personalInfo

boolean | undefined

个人信息

btDisconnectTip

boolean | undefined

蓝牙断开提醒

bloodOxygenMeasurementTip

boolean | undefined

血氧测量提醒

emergencyContact

boolean | undefined

紧急联系人

3.1.15.2 健康设置事件(OperateEventHealthSet)

暂时没有事件通知

属性:type

事件类型

类型

说明

“NONE”

string

无事件

“UpdatedHealthInfo”

string

发生变化的健康设置(仅有发生变化的部分健康设置)

“HealthSetInfoChange”

string

健康设置发生变化(所有的健康设置)

属性:UpdatedHealthInfo

健康设置发生变化时,附带信息。 当调用IOperateHealthSet.getHealthSetInfo()和IOperateHealthSet.setHealthSetInfo()触发。 仅当 type ==”UpdatedHealthInfo”时,附带。

名称

类型

可读

可写

说明

updatedInfo

HealthSetInfo

发生变化的健康设置(仅有发生变化的部分健康设置)

属性:HealthSetInfoChange

健康设置发生变化时,附带信息。 当调用IOperateHealthSet.getHealthSetInfo()和IOperateHealthSet.setHealthSetInfo()触发。 仅当 type ==”HealthSetInfoChange”时,附带。

名称

类型

可读

可写

说明

info

HealthSetInfo

健康设置发生变化(所有的健康设置)

3.1.15.3 健康设置事件回调(OperateEventCallbackHealthSet)

onEvent(_event: T): void

事件回调函数

3.1.16 资源更新(OperateResourceUpdate)

3.1.16.1 资源更新接口(IOperateResourceUpdate)

3.1.16.1.1 IOperateResourceUpdate.resourceUpdate

resourceUpdate(param: ResourceUpdateParams, callback: ResourceUpdateCallbacks): boolean

资源更新。通过callback回调传输进度和传输结果。

Note

并不是传入的全部资源都会进行更新。SDK内部通过crc16判断文件是否需要进行更新。SDK内部会计算Flash剩余空间是否满足资源更新的大小。

Note

ResourceUpdateParams.isNeedOTA 请根据资源文件列表是否有升级文件进行设置。 isNeedOTA == true 时,传输完资源文件后,设备会保持资源升级状态,停留在传输文件界面,方便后续进行OTA流程。 isNeedOTA == flase 时,传输完资源文件后,设备会结束资源升级,退出传输文件界面。

参数:

参数名

类型

必填

说明

param

ResourceUpdateParams

资源更新参数

callback

ResourceUpdateCallbacks

回调

示例:

 1const opResourceUpdate =
 2  operateWrapper.getOperateByClass(JL_RCSPOP.OPResourceUpdate.OperateResourceUpdate.prototype)
 3// 资源更新参数 - 创建资源更新参数
 4const param = new JL_RCSPOP.OPResourceUpdate.ResourceUpdateParams()
 5// 资源更新参数 - 添加资源更新文件
 6for (let index = 0; index < 10; index++) {
 7  // 此处仅做模拟操作,真实使用场景下,请从资源更新zip读取
 8  param.resourceUpdateLists.push({
 9    //资源更新文件 - 文件名
10    fileName: `watch${index}`,
11    //资源更新文件 - 文件数据
12    fileData: new Uint8Array(),
13    //资源更新文件 - 文件更新时间
14    lastModifyTime: new Date().getTime(),
15  })
16}
17// 资源更新参数 - 根据资源更新zip中是否包含upgrade.ufw 进行设置
18param.isNeedOTA = true
19const callback: JL_RCSPOP.OPResourceUpdate.ResourceUpdateCallbacks = {
20  onError: (error: JL_RCSPOP.RCSPOpError): void => {
21    console.log(`removePushNotificationInfo onError: error->${JSON.stringify(error)}`);
22  },
23  onBegin: (_fileTotal: number): void => {
24    // 开始更新资源。_fileTotal : 需要升级的资源总数。
25    console.log(`resourceUpdate onBegin: fileTotal->${_fileTotal}`);
26  },
27  onProgress: (_progress, _fileInfo): void => {
28    // 当前正在传输的资源文件进度和文件信息。
29    console.log(`resourceUpdate onProgress: progress->${_progress},fileInfo->${_fileInfo}`);
30  },
31  onFinish: (isNeedOTA): void => {
32    // 更新资源结束,请根据 isNeedOTA 进行OTA流程。
33    console.log(`resourceUpdate success,isNeedOTA->${isNeedOTA}`);
34  }
35}
36opResourceUpdate?.resourceUpdate(param, callback)
3.1.16.1.2 IOperateResourceUpdate.resourceUpdate

resourceUpdate(param: ResourceUpdateParams): Promise<boolean>

资源更新。返回Promise形式的结果:是否需要OTA。

Note

并不是传入的全部资源都会进行更新。SDK内部通过crc16判断文件是否需要进行更新。SDK内部会计算Flash剩余空间是否满足资源更新的大小。

Note

ResourceUpdateParams.isNeedOTA 请根据资源文件列表是否有升级文件进行设置。 isNeedOTA == true 时,传输完资源文件后,设备会保持资源升级状态,停留在传输文件界面,方便后续进行OTA流程。 isNeedOTA == flase 时,传输完资源文件后,设备会结束资源升级,退出传输文件界面。

参数:

参数名

类型

必填

说明

param

ResourceUpdateParams

资源更新参数

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果,返回结果:是否需要OTA。。

示例:

 1const opResourceUpdate =
 2  operateWrapper.getOperateByClass(JL_RCSPOP.OPResourceUpdate.OperateResourceUpdate.prototype)
 3// 资源更新参数 - 创建资源更新参数
 4const param = new JL_RCSPOP.OPResourceUpdate.ResourceUpdateParams()
 5// 资源更新参数 - 添加资源更新文件
 6for (let index = 0; index < 10; index++) {
 7  // 此处仅做模拟操作,真实使用场景下,请从资源更新zip读取
 8  param.resourceUpdateLists.push({
 9    //资源更新文件 - 文件名
10    fileName: `watch${index}`,
11    //资源更新文件 - 文件数据
12    fileData: new Uint8Array(),
13    //资源更新文件 - 文件更新时间
14    lastModifyTime: new Date().getTime(),
15  })
16}
17// 资源更新参数 - 根据资源更新zip中是否包含upgrade.ufw 进行设置
18param.isNeedOTA = true
19opResourceUpdate?.resourceUpdate(param).then((isNeedOTA) => {
20  console.log(`resourceUpdate success,isNeedOTA-> ${isNeedOTA}`);
21}).catch((error: JL_RCSPOP.RCSPOpError) => {
22  console.log(`resourceUpdate onError: error->${JSON.stringify(error)}`);
23})
3.1.16.1.3 IOperateResourceUpdate.isIdle

isIdle(): boolean

是否空闲。该接口暂不使用。

3.1.16.1.4 资源更新参数(ResourceUpdateParams)

名称

类型

可读

可写

说明

resourceUpdateLists

Array<{fileName: string,fileData: Uint8Array,lastModifyTime: number,crc16?: number}>

资源更新列表。 fileName :文件名(决定覆盖的资源文件)。 fileData :文件数据。 lastModifyTime :文件更新时间。 crc16 :文件数据crc16(可选),必须确保正确,传入时:SDK内部就跳过crc计算,不传入时:SDK内部会进行crc计算。

isNeedOTA

boolean

是否需要OTA

3.1.16.1.5 资源更新的回调(ResourceUpdateCallbacks)

方法:

名称

参数

返回值

说明

onBegin

_fileTotal: number

void

开始资源更新,返回需更新的升级资源总数。

onProgress

_progress: number, _fileInfo: { index: number, fileName: string }

void

更新资源进度回调。 _progress: 正在传输的资源文件的进度。 _fileInfo: 正在传输的资源文件的信息(index:当前正在更新第几个文件,fileName:当前更新的文件名)。

onFinish

_isNeedOTA: boolean

void

更新资源成功,返回是否需要OTA。

onError

error: RCSPOpError (失败原因 RCSPOpError)

void

更新失败

3.1.17 闹钟管理(OperateAlarm)

3.1.17.1 闹钟管理接口(IOperateAlarm)

3.1.17.1.1 IOperateAlarm.removeAllEventCallback

removeAllEventCallback(): void;

移除全部事件监听回调。

当切换设备时,我们不想监听某个设备的该OP事件回调,可以调用此方法。

参数:

参数名

类型

必填

说明

示例:

1const opAlarm = operateWrapper.getOperateByClass(JL_RCSPOP.OPAlarm.OperateAlarm.prototype)
2opAlarm?.removeAllEventCallback()
3.1.17.1.2 IOperateAlarm.registerEventCallback

registerEventCallback(callback: OperateEventCallbackAlarm): void;

注册回调

当我们想监听设备的该OP事件通知回调,可以用此方法注册回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackAlarm

OP事件回调

示例:

1const opAlarm = operateWrapper.getOperateByClass(JL_RCSPOP.OPAlarm.OperateAlarm.prototype)
2const callback: JL_RCSPOP.OPAlarm.OperateEventCallbackAlarm = {
3  onEvent: (event: JL_RCSPOP.OPAlarm.OperateEventAlarm): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opAlarm?.registerEventCallback(callback)
3.1.17.1.3 IOperateAlarm.unregisterEventCallback

unregisterEventCallback(callback: OperateEventCallbackAlarm): void;

注销回调

当我们想取消监听设备的该OP事件通知回调,可以用此方法注销回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackAlarm

OP事件回调

示例:

1const opAlarm = operateWrapper.getOperateByClass(JL_RCSPOP.OPAlarm.OperateAlarm.prototype)
2const callback: JL_RCSPOP.OPAlarm.OperateEventCallbackAlarm = {
3  onEvent: (event: JL_RCSPOP.OPAlarm.OperateEventAlarm): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opAlarm?.unregisterEventCallback(callback)
3.1.17.1.4 IOperateAlarm.getAlarmBeanList

getAlarmBeanList(option?: { isRealTime: boolean }): Promise<AlarmBean[]>;

闹钟列表(优先缓存)。返回Promise形式的闹钟列表。

参数:

参数名

类型

必填

说明

option

{ isRealTime: boolean } | undefined

可选项。 isRealTime :是否实时获取

返回值:

类型

说明

Promise< AlarmBean []>

以Promise形式返回结果,返回闹钟列表。

示例:

1const opAlarm = operateWrapper.getOperateByClass(JL_RCSPOP.OPAlarm.OperateAlarm.prototype)
2opAlarm?.getAlarmBeanList().then((alarmBeanList) => {
3  console.log(`getAlarmBeanList success,alarmBeanList-> ${JSON.stringify(alarmBeanList)}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`getAlarmBeanList onError: error->${JSON.stringify(error)}`);
6})
3.1.17.1.5 IOperateAlarm.getAlarmDefaultBells

getAlarmDefaultBells(option?: { isRealTime: boolean }): Promise<DefaultAlarmBell[]>;

闹钟默认铃声列表(优先缓存)。返回Promise形式的闹钟默认铃声列表。

参数:

参数名

类型

必填

说明

option

{ isRealTime: boolean } | undefined

可选项。 isRealTime :是否实时获取

返回值:

类型

说明

Promise< DefaultAlarmBell []>

以Promise形式返回结果,返回闹钟默认铃声列表。

示例:

1const opAlarm = operateWrapper.getOperateByClass(JL_RCSPOP.OPAlarm.OperateAlarm.prototype)
2opAlarm?.getAlarmDefaultBells().then((alarmDefaultBellList) => {
3  console.log(`getAlarmDefaultBells success,alarmDefaultBellList-> ${JSON.stringify(alarmDefaultBellList)}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`getAlarmDefaultBells onError: error->${JSON.stringify(error)}`);
6})
3.1.17.1.6 IOperateAlarm.getAlarmVersion

getAlarmVersion(option?: { isRealTime: boolean }): Promise<number>;

闹钟结构版本(优先缓存)。返回Promise形式的闹钟结构版本。

参数:

参数名

类型

必填

说明

option

{ isRealTime: boolean } | undefined

可选项。 isRealTime :是否实时获取

返回值:

类型

说明

Promise<number>

以Promise形式返回结果,返回闹钟结构版本。

示例:

1const opAlarm = operateWrapper.getOperateByClass(JL_RCSPOP.OPAlarm.OperateAlarm.prototype)
2opAlarm?.getAlarmVersion().then((alarmVersion) => {
3  console.log(`getAlarmVersion success,alarmVersion-> ${alarmVersion}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`getAlarmVersion onError: error->${JSON.stringify(error)}`);
6})
3.1.17.1.7 IOperateAlarm.getAlarmExpandFlag

getAlarmExpandFlag(option?: { isRealTime: boolean }): Promise<number>;

闹钟拓展标识(优先缓存)。返回Promise形式的闹钟拓展标识。

参数:

参数名

类型

必填

说明

option

{ isRealTime: boolean } | undefined

可选项。 isRealTime :是否实时获取

返回值:

类型

说明

Promise<number>

以Promise形式返回结果,返回闹钟拓展标识( BIT0:是否支持闹钟铃声参数设置(时长,次数,间隔),BIT1-7:保留)。

示例:

1const opAlarm = operateWrapper.getOperateByClass(JL_RCSPOP.OPAlarm.OperateAlarm.prototype)
2opAlarm?.getAlarmExpandFlag().then((alarmExpandFlag) => {
3  console.log(`getAlarmExpandFlag success,alarmExpandFlag-> ${alarmExpandFlag}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`getAlarmExpandFlag onError: error->${JSON.stringify(error)}`);
6})
3.1.17.1.8 IOperateAlarm.isSupportRTCMode

isSupportRTCMode(): Promise<boolean>;

是否支持RTC模式。返回Promise形式的结果。

Note

音箱设备所用。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果,返回是否支持RTC模式。

示例:

1const opAlarm = operateWrapper.getOperateByClass(JL_RCSPOP.OPAlarm.OperateAlarm.prototype)
2opAlarm?.isSupportRTCMode().then((isSupport) => {
3  console.log(`isSupportRTCMode success,isSupport-> ${isSupport}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`isSupportRTCMode onError: error->${JSON.stringify(error)}`);
6})
3.1.17.1.9 IOperateAlarm.switchRTCMode

switchRTCMode(): Promise<boolean>;

切换到RTC模式。返回Promise形式的切换结果。

Note

音箱设备所用。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果,返回切换到RTC模式是否成功。

示例:

1const opAlarm = operateWrapper.getOperateByClass(JL_RCSPOP.OPAlarm.OperateAlarm.prototype)
2opAlarm?.switchRTCMode().then((success) => {
3  console.log(`switchRTCMode success-> ${success}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`switchRTCMode onError: error->${JSON.stringify(error)}`);
6})
3.1.17.1.10 IOperateAlarm.syncTime

syncTime(date: Date): Promise<boolean>;

同步时间。返回Promise形式的同步结果。

参数:

参数名

类型

必填

说明

date

Date

同步到设备的时间

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果,返回同步结果。

示例:

1const opAlarm = operateWrapper.getOperateByClass(JL_RCSPOP.OPAlarm.OperateAlarm.prototype)
2opAlarm?.syncTime(new Date()).then((success) => {
3  console.log(`syncTime success-> ${success}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`syncTime onError: error->${JSON.stringify(error)}`);
6})
3.1.17.1.11 IOperateAlarm.deleteAlarm

deleteAlarm(alarms: AlarmBean[]): Promise<boolean>;

删除闹钟。返回Promise形式的删除结果。

参数:

参数名

类型

必填

说明

alarms

AlarmBean []

删除的闹钟列表

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果,返回删除结果。

示例:

1const opAlarm = operateWrapper.getOperateByClass(JL_RCSPOP.OPAlarm.OperateAlarm.prototype)
2//删除的闹钟列表
3const deleteArray = new Array<JL_RCSPOP.OPAlarm.AlarmBean>()
4opAlarm?.deleteAlarm(deleteArray).then((success) => {
5  console.log(`deleteAlarm success-> ${success}`);
6}).catch((error: JL_RCSPOP.RCSPOpError) => {
7  console.log(`deleteAlarm onError: error->${JSON.stringify(error)}`);
8})
3.1.17.1.12 IOperateAlarm.createDefaultAlarmBean

createDefaultAlarmBean(): Promise<AlarmBean>;

创建一个默认闹钟(未添加)。返回Promise形式的闹钟信息。

Note

SDK内不处理判断闹钟上限个数。请在应用层判断限制闹钟上限个数(公版推荐闹钟个数:10个)。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise< AlarmBean >

以Promise形式返回结果,返回默认闹钟信息。

示例:

1const opAlarm = operateWrapper.getOperateByClass(JL_RCSPOP.OPAlarm.OperateAlarm.prototype)
2opAlarm?.createDefaultAlarmBean().then((alarmBean) => {
3  console.log(`createDefaultAlarmBean success,alarmBean-> ${JSON.stringify(alarmBean)}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`createDefaultAlarmBean onError: error->${JSON.stringify(error)}`);
6})
3.1.17.1.13 IOperateAlarm.addOrModifyAlarm

addOrModifyAlarm(alarms: AlarmBean[]): Promise<boolean>;

添加或者修改闹钟(替换原有闹钟列表)。返回Promise形式的修改结果。

Note

SDK内不处理判断闹钟上限个数。请在应用层判断限制闹钟上限个数(公版推荐闹钟个数:10个)。

参数:

参数名

类型

必填

说明

alarms

AlarmBean []

新闹钟列表

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果,返回修改结果。

示例:

 1const opAlarm = operateWrapper.getOperateByClass(JL_RCSPOP.OPAlarm.OperateAlarm.prototype)
 2if (opAlarm) {
 3  //创建一个默认闹钟1
 4  const defaultAlarmBean1 = await opAlarm.createDefaultAlarmBean()
 5  //创建一个默认闹钟2
 6  const defaultAlarmBean2 = await opAlarm.createDefaultAlarmBean()
 7  const alarmBeanList = [defaultAlarmBean1, defaultAlarmBean2]
 8  //同步闹钟列表
 9  opAlarm.addOrModifyAlarm(alarmBeanList).then((success) => {
10    console.log(`addOrModifyAlarm success-> ${success}`);
11  }).catch((error: JL_RCSPOP.RCSPOpError) => {
12    console.log(`addOrModifyAlarm onError: error->${JSON.stringify(error)}`);
13  })
14}
3.1.17.1.14 IOperateAlarm.stopAlarmBell

stopAlarmBell(): Promise<boolean>;

停止闹钟铃声。返回Promise形式的执行结果。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise< boolean >

以Promise形式返回结果。

示例:

1const opAlarm = operateWrapper.getOperateByClass(JL_RCSPOP.OPAlarm.OperateAlarm.prototype)
2opAlarm?.stopAlarmBell().then((success) => {
3  console.log(`stopAlarmBell success-> ${success}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`stopAlarmBell onError: error->${JSON.stringify(error)}`);
6})
3.1.17.1.15 IOperateAlarm.getAlarmBellArgs

getAlarmBellArgs(indexArray: number[], option?: { isRealTime: boolean }): Promise<BellArg[] | undefined>;

读取闹钟铃声参数。返回Promise形式的闹钟铃声参数列表。

Note

闹钟索引index 数组可从 IOperateAlarm.getAlarmBeanList 获取。

参数:

参数名

类型

必填

说明

indexArray

number[]

闹钟索引index 数组。根据闹钟索引读取对应闹钟的铃声参数。

option

{ isRealTime: boolean } | undefined

可选项。是否实时获取,默认优先读取本地缓存。

返回值:

类型

说明

Promise< BellArg [] | undefined>

以Promise形式返回结果,返回铃声参数的列表。

示例:

 1const opAlarm = operateWrapper.getOperateByClass(JL_RCSPOP.OPAlarm.OperateAlarm.prototype)
 2//闹钟索引 - 0。正常使用时,请通过IOperateAlarm.getAlarmBeanList获取AlarmBean,后读取AlarmBean.index属性。
 3const alarmIndex = 0;
 4// 读取闹钟铃声参数的闹钟索引数组
 5const readAlarmIndexArray = [alarmIndex];
 6opAlarm?.getAlarmBellArgs(readAlarmIndexArray, { isRealTime: false }).then((bellArgList) => {
 7  console.log(`getAlarmBellArgs success,bellArgList-> ${bellArgList}`);
 8}).catch((error: JL_RCSPOP.RCSPOpError) => {
 9  console.log(`getAlarmBellArgs onError: error->${JSON.stringify(error)}`);
10})
3.1.17.1.16 IOperateAlarm.setAlarmBellArg

setAlarmBellArg(arg: BellArg): Promise<boolean>;

设置指定闹钟铃声参数。返回Promise形式的设置结果。

参数:

参数名

类型

必填

说明

arg

BellArg

铃声参数。

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果。

示例:

 1const opAlarm = operateWrapper.getOperateByClass(JL_RCSPOP.OPAlarm.OperateAlarm.prototype)
 2//闹钟索引 - 0。正常使用时,请通过IOperateAlarm.getAlarmBeanList获取AlarmBean,后读取AlarmBean.index属性。
 3const alarmIndex = 0;
 4// 读取闹钟铃声参数的闹钟索引数组
 5const readAlarmIndexArray = [alarmIndex];
 6//先获取当前的闹钟铃声参数
 7const bellArgs = await opAlarm?.getAlarmBellArgs(readAlarmIndexArray, { isRealTime: false })
 8const bellArg = bellArgs?.[0]
 9if (bellArg) {
10  //闹铃时长 - 10分钟
11  bellArg.alarmTime = 10
12  //闹铃间隔 - 5分钟
13  bellArg.interval = 5
14  //闹铃重复次数 - 3次
15  bellArg.count = 3
16  opAlarm?.setAlarmBellArg(bellArg).then((success) => {
17    console.log(`setAlarmBellArg success-> ${success}`);
18  }).catch((error: JL_RCSPOP.RCSPOpError) => {
19    console.log(`setAlarmBellArg onError: error->${JSON.stringify(error)}`);
20  })
21}
3.1.17.1.17 IOperateAlarm.auditionAlarmBell

auditionAlarmBell(param: AuditionParam): Promise<boolean>;

试听闹钟铃声。返回Promise形式的结果。

参数:

参数名

类型

必填

说明

param

AuditionParam

试听闹钟铃声参数。

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果。

示例:

 1const opAlarm = operateWrapper.getOperateByClass(JL_RCSPOP.OPAlarm.OperateAlarm.prototype)
 2const auditionParam = new JL_RCSPOP.OPAlarm.AuditionParam()
 3// 闹铃类型 - type:0:默认1:文件
 4auditionParam.type = 0
 5// 闹铃所在存储设备(存储设备索引) - 当type=0时,无效。参考 File.getDevIndex()
 6auditionParam.dev = 0
 7// 闹铃文件簇号 -当type=0时,是默认铃声序号。当type=1时,是文件簇号 参考 File.getCluster()
 8auditionParam.cluster = 0
 9opAlarm?.auditionAlarmBell(auditionParam).then((success) => {
10  console.log(`auditionAlarmBell success-> ${success}`);
11}).catch((error: JL_RCSPOP.RCSPOpError) => {
12  console.log(`auditionAlarmBell onError: error->${JSON.stringify(error)}`);
13})
3.1.17.1.18 IOperateAlarm.stopPlayAlarmBell

stopPlayAlarmBell(): Promise<boolean>;

停止试听闹钟铃声。返回Promise形式的结果。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果。

示例:

1const opAlarm = operateWrapper.getOperateByClass(JL_RCSPOP.OPAlarm.OperateAlarm.prototype)
2opAlarm?.stopPlayAlarmBell().then((success) => {
3  console.log(`stopPlayAlarmBell success-> ${success}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`stopPlayAlarmBell onError: error->${JSON.stringify(error)}`);
6})
3.1.17.1.19 闹钟信息(AlarmBean)

名称

类型

可读

可写

说明

index

number | undefined

索引

name

string | undefined

名称

hour

number | undefined

小时

min

number | undefined

分钟

repeatMode

number | undefined

闹钟重复模式

reserved

string | undefined

拓展字段

open

boolean | undefined

是否开启

bellType

number | undefined

铃声类型0: 默认类型 1:设备文件类型

bellCluster

number | undefined

铃声簇号,当bellType=0时,这里是铃声序号 当bellType=1时 这里是文件簇号

bellName

string | undefined

铃声名称,当bellType=1时有效

devIndex

number | undefined

铃声文件所在设备序号(存储设备索引),当bellType=1时有效。 参考 File.getDevIndex()

version

number | undefined

闹钟结构版本。版本0:不支持闹钟铃声相关参数(bellType,devIndex,bellCluster,bellName)。版本1:新增闹钟铃声相关参数(bellType,devIndex,bellCluster,bellName)。

闹钟重复模式

情况一:repeatMode=0,只响⼀次

情况二:repeatMode!=0,根据每个bit位进行解析。

bit0

bit1

bit2

bit3

bit4

bit5

bit6

bit7

每天响铃

星期一响铃

星期二响铃

星期三响铃

星期四响铃

星期五响铃

星期六响铃

星期天响铃

3.1.17.1.20 默认闹钟铃声(DefaultAlarmBell)

名称

类型

可读

可写

说明

name

string | undefined

名称

index

number | undefined

索引

selected

boolean | undefined

是否选择。暂时不用

3.1.17.1.21 铃声参数(BellArg)

名称

类型

可读

可写

说明

len

number

裸数据长度。(SDK内部使用,请勿修改)

index

number

闹钟索引。(SDK内部使用,请勿修改)

isCanSetCount

boolean

是否可设置次数

count

number

次数(次)

isCanSetInterval

boolean

是否可设置间隔

interval

number

间隔(分钟)

isCanSetAlarmTime

boolean

是否可设置时长

alarmTime

number

闹钟时长(分钟)

3.1.17.1.22 试听参数(AuditionParam)

名称

类型

可读

可写

说明

op

number

操作类型,0:停止,1:响铃。(SDK内部使用,请勿修改)

type

number

闹钟铃声类型。type:0:默认铃声,1:文件

dev

number

铃声文件所在的存储设备索引。当type=0时,无效

cluster

number

默认铃声序号或者铃声文件簇号。当type=0时,默认铃声序号。当type=1时,铃声文件簇号。

name

number | undefined

文件名。暂时不用。

3.1.17.2 闹钟管理事件(OperateEventAlarm)

暂时没有事件通知

属性:type

事件类型

类型

说明

“NONE”

string

无事件

“AlarmBeanListChange”

string

闹钟列表 变化

“AlarmDefaultBellListChange”

string

默认闹钟铃声列表 变化

“AlarmVersionChange”

string

闹钟结构版本 变化

“AlarmBeanNotify”

string

闹钟提醒

“AlarmBeanClose”

string

关闭闹钟

“AlarmExpandFlag”

string

闹钟拓展标识,bit0:是否支持闹钟铃声参数设置(时长,次数,间隔)

“AlarmBellArgs”

string

闹钟铃声参数

属性:AlarmBeanListChange

当IOperateAlarm.getAlarmBeanList()触发。 闹钟列表发生变化时,附带信息。仅当 type ==”AlarmBeanListChange”时,附带。

名称

类型

可读

可写

说明

alarmBeanList

Array< AlarmBean >

闹钟列表

属性:AlarmDefaultBellListChange

默认闹钟铃声列表发生变化时,附带信息。 当IOperateAlarm.getAlarmDefaultBells()触发。 仅当 type ==”AlarmDefaultBellListChange”时,附带。

名称

类型

可读

可写

说明

bells

Array< DefaultAlarmBell >

默认闹钟铃声列表

属性:AlarmVersionChange

闹钟结构版本发生变化时,附带信息。 当IOperateAlarm.getAlarmBeanList()触发。 仅当 type ==”AlarmVersionChange”时,附带。

名称

类型

可读

可写

说明

version

number

闹钟结构版本号。版本0,版本1。版本1支持设置铃声参数(devIndex,bellType,bellName,bellCluster)。

属性:AlarmBeanNotify

闹钟提醒(响铃)时,附带信息。 设备端通知闹钟响铃。 仅当 type ==”AlarmBeanNotify”时,附带。

名称

类型

可读

可写

说明

notifyBean

AlarmBean

响铃的闹钟信息

属性:AlarmBeanClose

关闭闹钟时,附带信息。 当设备端关闭闹钟或者App端关闭闹钟时触发。 仅当 type ==”AlarmBeanClose”时,附带。

名称

类型

可读

可写

说明

closeBean

AlarmBean

关闭的闹钟信息

属性:AlarmExpandFlag

闹钟拓展标识发生变化时,附带信息。 当IOperateAlarm.getAlarmBeanList()触发。 仅当 type ==”AlarmExpandFlag”时,附带。

名称

类型

可读

可写

说明

expandFlag

number

闹钟拓展标识,bit0:是否支持闹钟铃声参数设置(时长,次数,间隔)

属性:AlarmBellArgs

闹钟铃声参数发生变化时,附带信息。 当IOperateAlarm.getAlarmBellArgs()和IOperateAlarm.setAlarmBellArg()触发。 仅当 type ==”AlarmBellArgs”时,附带。

名称

类型

可读

可写

说明

bellArgs

Array< BellArg >

铃声参数列表。(缓存的铃声参数列表)

3.1.17.3 闹钟管理事件回调(OperateEventCallbackAlarm)

onEvent(_event: T): void

事件回调函数

3.1.18 设备音乐(OperateDevMusic)

3.1.18.1 设备音乐接口(IOperateDevMusic)

3.1.18.1.1 IOperateDevMusic.removeAllEventCallback

removeAllEventCallback(): void;

移除全部事件监听回调。

当切换设备时,我们不想监听某个设备的该OP事件回调,可以调用此方法。

参数:

参数名

类型

必填

说明

示例:

1const opDevMusic = operateWrapper.getOperateByClass(JL_RCSPOP.OPDevMusic.OperateDevMusic.prototype)
2opDevMusic?.removeAllEventCallback()
3.1.18.1.2 IOperateDevMusic.registerEventCallback

registerEventCallback(callback: OperateEventCallbackDevMusic): void;

注册回调

当我们想监听设备的该OP事件通知回调,可以用此方法注册回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackDevMusic

OP事件回调

示例:

1const opDevMusic = operateWrapper.getOperateByClass(JL_RCSPOP.OPDevMusic.OperateDevMusic.prototype)
2const callback: JL_RCSPOP.OPDevMusic.OperateEventCallbackDevMusic = {
3  onEvent: (event: JL_RCSPOP.OPDevMusic.OperateEventDevMusic): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opDevMusic?.registerEventCallback(callback)
3.1.18.1.3 IOperateDevMusic.unregisterEventCallback

unregisterEventCallback(callback: OperateEventCallbackDevMusic): void;

注销回调

当我们想取消监听设备的该OP事件通知回调,可以用此方法注销回调。

参数:

参数名

类型

必填

说明

callback

OperateEventCallbackDevMusic

OP事件回调

示例:

1const opDevMusic = operateWrapper.getOperateByClass(JL_RCSPOP.OPDevMusic.OperateDevMusic.prototype)
2const callback: JL_RCSPOP.OPDevMusic.OperateEventCallbackDevMusic = {
3  onEvent: (event: JL_RCSPOP.OPDevMusic.OperateEventDevMusic): void => { //OP事件回调
4    throw new Error('Function not implemented.');
5  }
6}
7opDevMusic?.unregisterEventCallback(callback)
3.1.18.1.4 IOperateDevMusic.isSupportDevMusicMode

isSupportDevMusicMode(): Promise<boolean>

是否支持设备音乐模式。返回Promise形式的结果。

Note

音箱设备所用。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果,返回是否支持设备音乐模式。

示例:

1const opDevMusic = operateWrapper.getOperateByClass(JL_RCSPOP.OPDevMusic.OperateDevMusic.prototype)
2opDevMusic?.isSupportDevMusicMode().then((isSupport) => {
3  console.log(`isSupportDevMusicMode success,isSupport-> ${isSupport}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`isSupportDevMusicMode onError: error->${JSON.stringify(error)}`);
6})
3.1.18.1.5 IOperateDevMusic.switchDevMusicMode

switchDevMusicMode(): Promise<boolean>

切换到设备音乐模式。返回Promise形式的结果。

Note

音箱设备所用。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<boolean>

以Promise形式返回结果。

示例:

1const opDevMusic = operateWrapper.getOperateByClass(JL_RCSPOP.OPDevMusic.OperateDevMusic.prototype)
2opDevMusic?.switchDevMusicMode().then((success) => {
3  console.log(`switchDevMusicMode success-> ${success}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`switchDevMusicMode onError: error->${JSON.stringify(error)}`);
6})
3.1.18.1.6 IOperateDevMusic.getDevMusicInfo

getDevMusicInfo(isRealtime: boolean): Promise<DevMusicInfo>

获取音乐信息。返回Promise形式的音乐信息。

参数:

参数名

类型

必填

说明

isRealtime

boolean

是否实时获取

返回值:

类型

说明

Promise< DevMusicInfo >

以Promise形式返回结果。

示例:

1const opDevMusic = operateWrapper.getOperateByClass(JL_RCSPOP.OPDevMusic.OperateDevMusic.prototype)
2opDevMusic?.getDevMusicInfo(true).then((devMusicInfo) => {
3  console.log(`getDevMusicInfo success,devMusicInfo-> ${JSON.stringify(devMusicInfo)}`);
4}).catch((error: JL_RCSPOP.RCSPOpError) => {
5  console.log(`getDevMusicInfo onError: error->${JSON.stringify(error)}`);
6})
3.1.18.1.7 IOperateDevMusic.devMusicPlayFile

devMusicPlayFile(file: OpDirectoryBrowse.File): Promise<boolean>

播放指定文件。返回Promise形式的播放结果。

参数:

参数名

类型

必填

说明

file

File

指定的音乐文件

返回值:

类型

说明

Promise< boolean >

以Promise形式返回结果。

示例:

1const opDevMusic = operateWrapper.getOperateByClass(JL_RCSPOP.OPDevMusic.OperateDevMusic.prototype)
2// 指定的音乐文件。请通过目录浏览获取
3const targetMusicFile = file
4opDevMusic?.devMusicPlayFile(targetMusicFile).then((success) => {
5  console.log(`devMusicPlayFile success-> ${success}`);
6}).catch((error: JL_RCSPOP.RCSPOpError) => {
7  console.log(`devMusicPlayFile onError: error->${JSON.stringify(error)}`);
8})
3.1.18.1.8 IOperateDevMusic.devMusicPlayPause

devMusicPlayPause(): Promise<boolean | undefined>

设备音乐控制-暂停|播放。返回Promise形式的结果。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<boolean | undefined>

以Promise形式返回结果。

示例:

1const opDevMusic = operateWrapper.getOperateByClass(JL_RCSPOP.OPDevMusic.OperateDevMusic.prototype)
2/** 设备音乐控制-暂停|播放*/
3opDevMusic?.devMusicPlayPause().then((success) => {
4  console.log(`devMusicPlayPause success-> ${success}`);
5}).catch((error: JL_RCSPOP.RCSPOpError) => {
6  console.log(`devMusicPlayPause onError: error->${JSON.stringify(error)}`);
7})
3.1.18.1.9 IOperateDevMusic.devMusicPreviousSong

devMusicPreviousSong(): Promise<boolean | undefined>

设备音乐控制-上一曲。返回Promise形式的结果。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<boolean | undefined>

以Promise形式返回结果。

示例:

1const opDevMusic = operateWrapper.getOperateByClass(JL_RCSPOP.OPDevMusic.OperateDevMusic.prototype)
2/** 设备音乐控制-上一曲*/
3opDevMusic?.devMusicPreviousSong().then((success) => {
4  console.log(`devMusicPreviousSong success-> ${success}`);
5}).catch((error: JL_RCSPOP.RCSPOpError) => {
6  console.log(`devMusicPreviousSong onError: error->${JSON.stringify(error)}`);
7})
3.1.18.1.10 IOperateDevMusic.devMusicNextSong

devMusicNextSong(): Promise<boolean | undefined>

设备音乐控制-下一曲。返回Promise形式的结果。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<boolean | undefined>

以Promise形式返回结果。

示例:

1const opDevMusic = operateWrapper.getOperateByClass(JL_RCSPOP.OPDevMusic.OperateDevMusic.prototype)
2/** 设备音乐控制-下一曲*/
3opDevMusic?.devMusicNextSong().then((success) => {
4  console.log(`devMusicNextSong success-> ${success}`);
5}).catch((error: JL_RCSPOP.RCSPOpError) => {
6  console.log(`devMusicNextSong onError: error->${JSON.stringify(error)}`);
7})
3.1.18.1.11 IOperateDevMusic.devMusicSwitchPlayMode

devMusicSwitchPlayMode(): Promise<boolean | undefined>

设备音乐控制-切换播放模式。返回Promise形式的结果。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<boolean | undefined>

以Promise形式返回结果。

示例:

1const opDevMusic = operateWrapper.getOperateByClass(JL_RCSPOP.OPDevMusic.OperateDevMusic.prototype)
2/** 设备音乐控制-切换播放模式*/
3opDevMusic?.devMusicSwitchPlayMode().then((success) => {
4  console.log(`devMusicSwitchPlayMode success-> ${success}`);
5}).catch((error: JL_RCSPOP.RCSPOpError) => {
6  console.log(`devMusicSwitchPlayMode onError: error->${JSON.stringify(error)}`);
7})
3.1.18.1.12 IOperateDevMusic.devMusicSwitchEqMode

devMusicSwitchEqMode(): Promise<boolean | undefined>

设备音乐控制-切换EQ模式。返回Promise形式的结果。

参数:

参数名

类型

必填

说明

返回值:

类型

说明

Promise<boolean | undefined>

以Promise形式返回结果。

示例:

1const opDevMusic = operateWrapper.getOperateByClass(JL_RCSPOP.OPDevMusic.OperateDevMusic.prototype)
2/** 设备音乐控制-切换EQ模式*/
3opDevMusic?.devMusicSwitchEqMode().then((success) => {
4  console.log(`devMusicSwitchEqMode success-> ${success}`);
5}).catch((error: JL_RCSPOP.RCSPOpError) => {
6  console.log(`devMusicSwitchEqMode onError: error->${JSON.stringify(error)}`);
7})
3.1.18.1.13 IOperateDevMusic.devMusicFastBackward

devMusicFastBackward(time: number): Promise<boolean | undefined>

设备音乐控制-快退播放时间。返回Promise形式的结果。

参数:

参数名

类型

必填

说明

time

number

快退的时间。单位:s

返回值:

类型

说明

Promise<boolean | undefined>

以Promise形式返回结果。

示例:

1const opDevMusic = operateWrapper.getOperateByClass(JL_RCSPOP.OPDevMusic.OperateDevMusic.prototype)
2/** 设备音乐控制-快退播放时间 - 10秒*/
3opDevMusic?.devMusicFastBackward(10).then((success) => {
4  console.log(`devMusicFastBackward success-> ${success}`);
5}).catch((error: JL_RCSPOP.RCSPOpError) => {
6  console.log(`devMusicFastBackward onError: error->${JSON.stringify(error)}`);
7})
3.1.18.1.14 IOperateDevMusic.devMusicFastForward

devMusicFastForward(time: number): Promise<boolean | undefined>

设备音乐控制-快进播放时间。返回Promise形式的结果。

参数:

参数名

类型

必填

说明

time

number

快进的时间。单位:s

返回值:

类型

说明

Promise<boolean | undefined>

以Promise形式返回结果。

示例:

1const opDevMusic = operateWrapper.getOperateByClass(JL_RCSPOP.OPDevMusic.OperateDevMusic.prototype)
2/** 设备音乐控制-快进播放时间 - 10秒*/
3opDevMusic?.devMusicFastForward(10).then((success) => {
4  console.log(`devMusicFastForward success-> ${success}`);
5}).catch((error: JL_RCSPOP.RCSPOpError) => {
6  console.log(`devMusicFastForward onError: error->${JSON.stringify(error)}`);
7})
3.1.18.1.15 设备音乐信息(DevMusicInfo)

名称

类型

可读

可写

说明

cluster

number | undefined

文件簇号

fileName

string | undefined

文件名

devIndex

DevIndex | undefined

存储设备索引。与File.getDevIndex()一致

totalTime

number | undefined

总时间(s)

currentTime

number | undefined

当前时间戳(s)

playStatus

DevMusicPlayStatus | undefined

播放状态

playMode

DevMusicPlayMode | undefined

播放模式

存储器索引(DevIndex)

存储器索引(DevIndex)

名称

说明

INDEX_USB

0

USB接口存储设备的索引

INDEX_SD0

1

SD卡类型存储设备SD0的索引

INDEX_SD1

2

SD卡类型存储设备SD1的索引

INDEX_FLASH

3

flash类型存储设备的索引

INDEX_LINE_IN

4

LineIn类型音频传输设备的索引

INDEX_FLASH2

5

flash2类型存储设备的索引

播放状态(DevMusicPlayStatus)

播放状态(DevMusicPlayStatus)

名称

说明

STATUS_PAUSE

0

暂停

STATUS_PLAY

1

播放

播放模式(DevMusicPlayMode)

播放模式(DevMusicPlayMode)

名称

说明

MODE_LOOP_ALL

1

全部循环

MODE_LOOP_DEVICE

2

设备循环

MODE_LOOP_SINGLE

3

单曲循环

MODE_RANDOM

4

随机播放

MODE_LOOP_FOLDER

5

文件夹循环

3.1.18.2 设备音乐事件(OperateEventDevMusic)

属性:type

事件类型

类型

说明

“NONE”

string

无事件

“DevMusicInfoChange”

string

设备音乐信息变化

属性:DevMusicInfo

文件夹目录发生变化时,附带信息。仅当 type ==”DevMusicInfoChange”时,附带。

名称

类型

可读

可写

说明

devMusicInfo

DevMusicInfo

变化后的设备音乐信息

3.1.18.3 设备音乐事件回调(OperateEventCallbackDevMusic)

onEvent(_event: T): void

事件回调函数

3.1.19 RCSP操作错误(RCSPOpError)

名称

类型

可读

可写

说明

errorCode

number

错误码:参考 RCSPOpErrorCode

message

string | undefined

错误信息

step

ErrorStepInfo | undefined

异常-步骤信息 ErrorStepInfo

stack

string

堆栈信息(RCSP操作错误堆栈)

cause

RCSPOpError | undefined

导致错误的间接原因

ErrorStepInfo 错误步骤信息

名称

类型

可读

可写

说明

className

number

类名

stepCode

number

步骤代码

3.2 设备认证相关接口

JL_Auth_xxx-release 实现了设备认证流程。

关于认证需要特别注意以下几点:

  • 在使用RCSP协议进行交互时,若设备端开启认证,App端要在RCSP交互之前进行设备认证,否则设备端是不会回复RCSP协议命令。

  • 不可重复认证,大多数设备(仅有少量手表设备支持重复认证)只能一次连接进行一次认证。

设备认证操作类(Auth)

Auth 设备认证操作类,提供接口如下:

方法名

功能

参数

返回值

startAuth

开始认证

deviceId:string//设备

callback:AuthListener//设备认证监听回调

void

handlerAuth

接收认证回复数据

deviceId:string//设备deviceId

data:ArrayBuffer//回复数据

void

设备认证监听回调(AuthListener)

设备认证实现类 Auth 的监听回调 AuthListener , 当发送认证数据、认证结束时进行回调。

属性

参数

描述

onSendData

deviceId:string//设备

data:ArrayBuffer//认证数据

发送数据

onAuthSuccess

deviceId:string//设备

认证成功

onAuthFailed

deviceId:string//设备

认证失败

3.3 OTA流程相关接口

JL_OTA_xxx-release 实现了OTA流程,包括单备份升级和双备份升级。

3.3.1 基于RCSP命令的OTA管理类(RcspOTAManager)

基于OTA流程( OTAImpl )和RCSP协议( RcspImpl)实现的OTA管理类。内部处理了OTA流程和RCSP命令的解析打包。

方法

参数

返回值

描述

release

void

释放内存

startOTA

config: OtaConfig //升级配置

callback: OnUpgradeCallback //升级回调

void

开始升级

cancelOTA

void

取消升级

isOTA

boolean

是否正在OTA

getCurrentOTADevice

BtDevice | null

获取正在升级的设备(deviceId,name)

updateRcspImpl

rcspImpl: RcspImpl //命令协议对象

void

更新RCSP协议对象(回连成功后)

3.3.2 OTA流程实现(OTAImpl)

OTAImpl 实现了OTA流程。

方法

参数

返回值

描述

constructor

iOTAOp: IOTAOp //OTA流程操作的协议实现接口,

void

初始化构建

release

void

释放缓存

isOTA

boolean

是否正在升级

startOTA

otaConfig: OtaConfig // OTA配置

callback: OnUpgradeCallback //设备升级流程回调

void

开始OTA

cancelOTA

boolean

取消OTA

onDeviceInit

deviceUpgradeInfo: DeviceUpgradeInfo //设备升级相关信息

isInit:boolean//RCSP是否初始化成功

void

设备初始化

onDeviceDisconnect

void

设备断开通知

notifyUpgradeSize

totalSize:number//总大小

currentSize:number//当前升级大小

void

设备通知文件大小

gainFileBlock

offset:number//文件偏移

len:number//文件块长度

void

设备获取升级文件块

DeviceUpgradeInfo :设备升级相关信息。 设备连接成功后,需要将设备的升级相关信息同步给 OTAImpl ,可以通过 OTAImpl.onDeviceInit() 进行同步

属性

类型

描述

isSupportDoubleBackup

boolean

是否支持双备份

isNeedBootLoader

boolean

是否需要下载Loader

isMandatoryUpgrade

boolean

是否需要强制升级

IOTAOp OTA流程操作的协议实现接口, RcspOTAManager 已实现该接口。

方法

参数

返回值

描述

isDeviceConnected

boolean

是否已连接设备

changeCommunicationWay

communicationWay: number//通讯方式,0:BLE,1:SPP,2:USB

isSupportNewRebootWay: boolean//是否支持新回连方式

callback: OnResultCallback<number>//回调。设备回复结果 0:不支持新回连,1:支持新回连

void

切换通讯方式

readUpgradeFileFlag

callback: OnResultCallback<FileOffset>//回调。设备回复结果,头信息的偏移和长度

void

读取文件头信息偏移

inquiryDeviceCanOTA

data: Uint8Array//头信息数据

callback: OnResultCallback<number>//回调。设备回复结果:是否能进行升级

void

查询设备是否可升级

changeReceiveMtu

void

调整RCSP库的设备收数据的MTU(App的缓存),让数据可以成功发出

enterUpdateMode

callback: OnResultCallback<number>//回调。设备回复结果:是否成功进入升级模式

void

进入升级模式

exitUpdateMode

callback: OnResultCallback<number>//回调。设备回复结果:是否成功退出升级模式

void

退出升级模式

queryUpdateResult

callback: OnResultCallback<number>//回调。设备回复结果:设备升级状态

void

读取设备升级状态

rebootDevice

callback: OnResultCallback<number>//回调。设备回复结果:是否成功重启或关闭设备

void

重启或关闭设备

stopNotifyADV

callback: OnResultCallback<number>//回调。设备回复结果:设置TWS设备通知

void

设置TWS设备通知(不用处理)

receiveFileBlock

offset: number//数据块偏移地址

len: number//数据块长度

data: Uint8Array//数据块数据

callback: OnResultCallback<boolean> //回调发送结果。

void

回复发送升级固件数据块

release

void

释放

3.3.3 OTA配置(OtaConfig)

OTAConfig :OTA配置。 在 startOTA() 时, 作为参数对 OTAImpl 进行配置

属性

类型

描述

communicationWay

number

通讯方式(目前只支持BLE)

isSupportNewRebootWay

boolean

是否支持新的回连方式

3.3.4 设备升级流程回调(OnUpgradeCallback)

OnUpgradeCallback :设备升级流程回调。 升级过程中的进度和结果都将从这里回调出去。

方法

参数

返回值

描述

onStartOTA

void

OTA开始

onReadData

offset: number// 数据偏移

size: number//数据大小

Uint8Array

读取升级数据并返回

onNeedReconnect

reConnectMsg: ReconnectInfo //回连信息

void

需要回连的回调

onProgress

type: UpgradeType //升级类型

progress: number//进度

void

进度回调

onStopOTA

void

OTA结束

onCancelOTA

void

OTA取消

onError

error: number//错误码 OtaError

message: string//错误信息

void

OTA失败

3.3.5 回连信息(ReconnectInfo)

ReconnectInfo :回连信息

属性

类型

描述

isSupportNewReconnectADV

boolean

是否支持新回连方式

deviceBleMac

string

BLE_Mac地址

Note

isSupportNewReconnectADV = false时,回连设备可直接通过deviceId比对判断是不是正在升级的设备,然后进行回连操作。 当 isSupportNewReconnectADV = true时,公版程序回连设备是通过比对设备广播包中的携带的OTA标识和MAC地址进行判断是不是正在升级的设备,然后进行回连操作。

Important

当打开设备Auth的时候,回连设备时也要进行认证才可以进行通讯。

3.3.6 设备升级阶段类型(UpgradeType)

UpgradeType : 升级阶段类型, OnUpgradeCallback.onProgress 回调进度时需进行区分 。当类型=0时,说明在ubootloader下载,当类型=1时,说明在固件升级。

Note

单备份有类型=0和类型=1,双备份只有类型等于1

3.4 RCSP协议库相关接口

JL_RCSP_xxx-release RCSP协议库,负责rcsp命令打包命令和解析命令。 RcspImpl 为实现类接口。

3.4.1 Rcsp协议接口(RcspImpl)

RcspImpl Rcsp协议接口

方法

参数

返回值

描述

constructor

void

初始化构建

destroy

void

销毁

getUsingDevice

BtDevice | null

获取当前使用设备

setOnSendDataCallback

callback: OnSendDataCallback | undefined

void

设置RCSP数据发送回调

isDeviceConnected

void

是否已连接设备

getDeviceInfo

device: BtDevice

获取设备信息

addOnRcspCallback

callback: OnRcspCallback

void

添加Rcsp事件回调

removeOnRcspCallback

callback: OnRcspCallback

void

移除Rcsp事件回调

transmitDeviceState

device: BtDevice

status: ConnectState

void

通知设备状态

transmitDeviceData

device: BtDevice

data: Uint8Array

void

通知设备发送的数据

sendDataToDevice

device: BtDevice

data: Uint8Array

void

发送数据给设备(裸蓝牙数据)

sendRCSPCommand

device: BtDevice

command: Command

timeoutMs: number //命令超时

callback: CommandCallback<Command> | null //命令回调

void

发送RCSP命令给设备

syncDeviceInfo

device: BtDevice

param: ParamTargetInfo//设备信息参数

callback: OnResultCallback<ResponseTargetInfo> //结果回调

void

异步获取设备信息

3.4.2 Rcsp事件回调(OnRcspCallback)

OnRcspCallback Rcsp事件回调, 当收到设备主动发送的RCSP命令回复或者RCSP初始化都从此接口回调。

/** Rcsp事件回调*/
export class OnRcspCallback {
  /**
  * Rcsp协议初始化回调
  *
  * @param _device 已连接设备
  * @param _isInit 初始化结果
  */
  public onRcspInit: (_device: RcspBase.BtDevice | null, _isInit: boolean) => void =
    (_device: RcspBase.BtDevice | null, _isInit: boolean) => {

    }

  /**
  * 设备主动发送的rcsp命令回调
  *
  * @param _device  已连接设备
  * @param _command RCSP命令
  */
  public onRcspCommand: (_device: RcspBase.BtDevice | null, _command: RcspBase.Command) => void =
    (_device: RcspBase.BtDevice | null, _command: RcspBase.Command) => {
    }

  /**
  * 设备回复的rcsp命令回调
  *
  * @param _device  已连接设备
  * @param _command RCSP命令
  */
  public onRcspResponse: (_device: RcspBase.BtDevice | null, _command: RcspBase.Command) => void =
    (_device: RcspBase.BtDevice | null, _command: RcspBase.Command) => {
    }

  /**
  * 设备主动发送的数据命令回调
  *
  * @param _device  已连接设备
  * @param _dataCmd 数据命令
  */
  public onRcspDataCmd: (_device: RcspBase.BtDevice | null, _dataCmd: RcspBase.Command) => void =
    (_device: RcspBase.BtDevice | null, _dataCmd: RcspBase.Command) => {
    }

  /**
  * RCSP错误事件回调
  *
  * @param _device  设备对象
  * @param _error   错误码 (参考{@link com.jieli.rcsp.data.constant.RcspError})
  * @param _message 错误描述
  */
  public onRcspError: (_device: RcspBase.BtDevice | null, _error: number, _message: string) => void =
    (_device: RcspBase.BtDevice | null, _error: number, _message: string) => {
    }

  /**
  * 需要强制升级回调
  *
  * @param _device 需要强制升级的设备
  */
  public onMandatoryUpgrade: (_device: RcspBase.BtDevice | null) => void =
    (_device: RcspBase.BtDevice | null) => {
    }

  /**
  * 设备连接状态
  *
  * @param _device 蓝牙设备
  * @param _status 连接状态
  */
  public onConnectStateChange: (_device: RcspBase.BtDevice | null, _status: RcspBase.ConnectState) => void =
    (_device: RcspBase.BtDevice | null, _status: RcspBase.ConnectState) => {
    }
}

3.4.3 RCSP数据发送回调(OnSendDataCallback)

OnSendDataCallback RCSP数据发送回调, RCSP库将协议数据打包后,从此接口回调给上层发数。

Important

使用RCSP协议库时,该接口必须实现。实现该接口时,上层需要根据mtu进行分包发送处理

/** 数据发送回调 */
export interface OnSendDataCallback {
  /**
  * 向设备发送RCSP数据包
  *
  * @param device 操作设备
  * @param data   RCSP数据包
  * @return 结果
  * <p>
  * 说明:
  * 1. 该方法需要用户自行实现
  * 2. 该方法运行在子线程,允许阻塞处理
  * 3. 该方法会回调完整的一包RCSP数据, 用户实现需要根据实际发送MTU进行分包处理
  * </p>
  */
  sendDataToDevice: (device: RcspBase.BtDevice, data: Uint8Array) => boolean;
}

3.4.4 设备信息(DeviceInfo)

DeviceInfo 设备信息。具体使用请查阅相关文档 DeviceInfo

3.4.5 设备(BtDevice)

BtDevice 设备。

属性

类型

说明

deviceId

string

设备deviceId,不等于mac

name

string | undefined

设备名

3.5 错误码

3.5.1 RCSP 错误码(RCSPErrorCode)

名称

说明

ERR_NONE

0(0)

(操作成功)Success

ERR_INVALID_PARAMETER

0x1001(4097)

(无效参数)Input invalid parameter

ERR_CANCEL_OP

0x1002(4098)

(取消操作)Cancel operation.

ERR_OPERATION_TIMEOUT

0x1003(4099)

(操作超时)Operation timeout.

ERR_OTHER

0x1004(4100)

(其他错误)Other error.

ERR_REMOTE_NOT_CONNECT

0x2000(8192)

(远端设备未连接)The remote device is not connected

ERR_DEVICE_NOT_MATCH

0x2001(8193)

(操作设备不一致)The device is not the same as the device in use.

ERR_USE_SYSTEM_API

0x2002(8194)

(调用系统接口失败)Failed to use system reflection function

ERR_AUTH_DEVICE

0x2003(8195)

(设备认证失败)Failed to auth device

ERR_CMD_SEND

0x3000(12288)

(命令发送失败)Command sending failed.Please check the connection

ERR_PARSE_DATA

0x3001(12289)

(解析数据异常)Error parsing RCSP data

ERR_RESPONSE_TIMEOUT

0x3002(12290)

(等待设备回复命令超时)Waiting for a reply packet timed out

ERR_SYSTEM_BUSY

0x3003(12291)

(系统繁忙)System is busy

ERR_RESPONSE_BAD_STATUS

0x3004(12292)

(设备返回错误状态)Device response a bad status

ERR_RESPONSE_BAD_RESULT

0x3005(12293)

(设备返回错误结果)Device response a bad result

ERR_STORAGE_OFFLINE

0x4000(16384)

(存储设备下线)Storage offline.

ERR_FILE_BROWSING

0x4001(16385)

(文件浏览中)File browsing

ERR_DATA_LOAD_COMPLETE

0x4002(16386)

(数据加载完成)File data is loaded.

ERR_MISSING_FILE_DATA

0x4003(16387)

(丢失文件数据)Missing file data

ERR_DIR_TOO_DEEP

0x4004(16388)

(文件夹层级过深)Directory hierarchy is too deep.

ERR_IO_EXCEPTION

0x4005(16389)

(读写异常)IO exception.

ERR_FILE_NOT_IN_STORAGE

0x4006(16390)

(文件与存储器不一致)File does not match storage.

3.5.2 RCSP操作错误码(RCSPOpErrorCode)

RCSPOpErrorCode 中包含 RCSPErrorCode 错误码。下表只列举两者不同部分。

名称

说明

ERR_IN_PROGRESS

0x1100(4352)

(操作进行中)in progress.

ERR_FUNC_NOT_SUPPORT

0x1101(4353)

(功能不支持)Feature not supported

ERR_CRC_CHECK

0x3100(12544)

(CRC校验失败)CRC is error

ERR_DEVICE_IN_CALLING

0x3101(12545)

(设备处于通话状态)The device is in calling.

ERR_OP_NOT_ALLOW

0x3102(12546)

(操作不被允许)The operation is not allowed

ERR_FAT_DISK

0x4101(16641)

(系统IO读写异常)A hard error occurred in the low level disk I/O layer

ERR_FAT_INIT

0x4102(16642)

(断言失败)Assertion failed.

ERR_FAT_NOT_READY

0x4103(16643)

(驱动未工作)The physical drive cannot work.

ERR_FAT_NO_FILE

0x4104(16644)

(未找到文件)Could not find the file.

ERR_FAT_NO_PATH

0x4105(16645)

(未找到路径)Could not find the path.

ERR_FAT_INVALID_NAME

0x4106(16646)

(路径名称无效)The path name format is invalid.

ERR_FAT_DENIED

0x4107(16647)

(拒绝访问)Access denied due to prohibited access or directory full.

ERR_FAT_EXIST

0x4108(16648)

(禁止访问)Access denied due to prohibited access.

ERR_FAT_INVALID_OBJECT

0x4109(16649)

(文件/目录无效)The file/directory object is invalid.

ERR_FAT_WRITE_PROTECTED

0x410A(16650)

(写保护)The physical drive is write protected.

ERR_FAT_INVALID_DRIVE

0x410B(16651)

(盘号无效)The logical drive number is invalid.

ERR_FAT_NOT_ENABLED

0x410C(16652)

(该卷没有工作区域)The volume has no work area.

ERR_FAT_NO_FILESYSTEM

0x410D(16653)

(缺失系统配置)There is no valid FAT volume.

ERR_FAT_MKFS_ABORTED

0x410E(16654)

(创建目录被中止)The f_mkfs() aborted due to any problem.

ERR_FAT_TIMEOUT

0x410F(16655)

(访问超时)Could not get a grant to access the volume within defined period.

ERR_FAT_LOCKED

0x4110(16656)

(操作被阻塞)The operation is rejected according to the file sharing policy.

ERR_FAT_NOT_ENOUGH_CORE

0x4111(16657)

(分配空间失败)LFN working buffer could not be allocated.

ERR_FAT_TOO_MANY_OPEN_FILES

0x4112(16658)

(打开文件超过限制)Number of open files > FF_FS_LOCK.

ERR_FAT_INVALID_PARAMETER

0x4113(16659)

(输入参数无效)Given parameter is invalid.

ERR_FAT_TOO_BIG

0x4114(16660)

(文件过大,剩余空间不足以添加)Image size to big, do not to support big size image.

ERR_FAT_JNI_INIT

0x4116(16662)

(手表系统未初始化)Watch system has not been initialized.

ERR_FAT_WRITE

0x4117(16663)

(写数据失败)Write data failed.

ERR_FAT_READ

0x4118(16664)

(读数据失败)Read data failed.

ERR_FAT_SYNC

0x4119(16665)

(同步数据失败)Sync data error.

ERR_FAT_BEGIN

0x411B(16667)

(流程开始出错)Process start error.

ERR_FAT_END

0x411C(16668)

(流程结束出错)Process end error.

ERR_VERSION_NOT_MATCH

0x4200(16896)

文件信息不匹配)File information does not match.

(ERR_SPACE_TO_UPDATE

0x4201(16897)

(剩余空间不足以更新)Insufficient space to update multiple files.

ERR_RENAME_FILE

0x4202(16898)

(重命名失败)Failed to rename the file.

ERR_DATA_OVER_LIMIT

0x4203(16899)

(数据长度越界)The data sent exceeds the limit.

ERR_NETWORK_OTA_UNKNOWN

0x5000(20480)

(未定义的升级错误码)Undefined upgrade error code.

ERR_NETWORK_OTA_FAILED

0x5001(20481)

(网络模块升级失败)Network module upgrade failed.

ERR_NETWORK_OTA_TIMEOUT

0x5002(20482)

(网络模块升级超时)Network module upgrade timeout.

ERR_NETWORK_OTA_WAITING_COMMAND_TIMEOUT

0x5003(20483)

(等待升级命令超时)Network module timeout waiting for upgrade command.

3.5.3 OTA错误码(OtaError)

OtaError 中包含 RCSPErrorCode 错误码。下表只列举两者不同部分。

名称

说明

ERR_OTA_DEVICE_LOW_VOLTAGE

0x6001(24577)

(设备电量低)Equipment low voltage

ERR_OTA_FIRMWARE_INFO_ERROR

0x6002(24578)

(升级固件信息错误)Upgrade firmware information error

ERR_OTA_FIRMWARE_VERSION_NO_CHANGE

0x6003(24579)

(升级文件的固件版本一致)The firmware version of the upgrade file is consistent

ERR_OTA_TWS_NOT_CONNECT

0x6004(24580)

(TWS未连接)TWS not connected

ERR_OTA_HEADSET_NOT_IN_CHARGING_BIN

0x6005(24581)

(耳机未在充电仓)The earphones are not in the charging compartment

ERR_OTA_DATA_CHECK_ERROR

0x6006(24582)

(升级数据校验出错)Upgrade data verification error

ERR_OTA_FAIL

0x6007(24583)

(升级失败)Upgrade failed

ERR_OTA_ENCRYPTED_KEY_NOT_MATCH

0x6008(24584)

(加密key不匹配)Encryption key mismatch

ERR_OTA_UPGRADE_FILE_ERROR

0x6009(24585)

(升级文件出错)Upgrade file error

ERR_OTA_UPGRADE_TYPE_ERROR

0x600A(24586)

(升级类型出错)Upgrade type error

ERR_OTA_LENGTH_OVER

0x600B(24587)

(升级过程中出现长度错误)Length error occurred during the upgrade process

ERR_OTA_FLASH_IO_EXCEPTION

0x600C(24588)

(出现flash读写错误)Flash read/write error occurred

ERR_OTA_CMD_TIMEOUT

0x600D(24589)

(升级过程中指令超时)Command timeout during upgrade process

ERR_OTA_IN_PROGRESS

0x600E(24590)

(正在OTA)OTA in progress

ERR_OTA_COMMAND_TIMEOUT

0x600F(24591)

(等待升级命令超时)Waiting for ota command timeout

ERR_OTA_RECONNECT_DEVICE_TIMEOUT

0x6010(24592)

(回连设备超时)Reconnect device timeout

ERR_OTA_USE_CANCEL

0x6011(24593)

(用户取消升级)User cancels upgrade

ERR_OTA_SAME_FILE

0x6012(24594)

(升级文件相同)Upgrade files are the same