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 |
是 |
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 |
是 |
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 |
是 |
否 |
系统信息 |
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 |
是 |
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 |
是 |
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 |
是 |
文件发生变化的存储设备 |
3.1.3.2 文件相关事件(OperateEventFile)
属性:type
事件类型
值 |
类型 |
说明 |
|---|---|---|
“NONE” |
string |
无事件 |
“onSdCardChange” |
string |
存储设备状态发生变化 |
“onSdCardDirectoryChange” |
string |
存储设备目录发生变化 |
属性:onSdCardChange
存储设备状态发生变化时,附带信息。仅当 type ==”onSdCardChange”时,附带。
名称 |
类型 |
可读 |
可写 |
说明 |
|---|---|---|---|---|
sdCardBeans |
Array< SDCardBean > |
是 |
否 |
存储设备状态发生变化的SDCardBean |
属性:onSdCardDirectoryChange
存储设备目录发生变化时,附带信息。仅当 type ==”onSdCardDirectoryChange”时,附带。
名称 |
类型 |
可读 |
可写 |
说明 |
|---|---|---|---|---|
sdCardBeans |
是 |
否 |
存储设备目录发生变化的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_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类型存储设备的索引 |
常量
名称 |
值 |
说明 |
|---|---|---|
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 |
是 |
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 |
是 |
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 |
是 |
目标文件夹。必须是文件夹,文件不可浏览 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
无 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
无 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
无 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
否 |
目录发生变化的文件夹 |
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 |
是 |
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 |
是 |
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 |
是 |
传输大文件的参数 |
|
callback |
是 |
回调 |
示例:
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 |
是 |
传输大文件的参数 |
返回值:
类型 |
说明 |
|---|---|
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):
名称 |
值 |
说明 |
|---|---|---|
STATUS_START |
0 |
多文件传输状态 - 开始 |
STATUS_STOP |
1 |
多文件传输状态 - 结束 |
STATUS_CANCEL |
2 |
多文件传输状态 - 取消 |
3.1.5.1.9 大文件传输参数(LargeFileTransferParams)
属性:
名称 |
类型 |
必填 |
说明 |
|---|---|---|---|
fileBuffer |
ArrayBuffer |
是 |
文件数据 |
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 |
|
void |
传输失败 |
onBegin |
无 |
void |
传输开始 |
onProgress |
|
void |
传输文件进度 |
onFinish |
|
void |
传输成功 |
onCancel |
|
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 |
是 |
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 |
是 |
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 |
是 |
以文件名方式读取文件的参数 |
|
callback |
是 |
回调 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
以文件名方式读取文件的参数 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
以簇号方式读取文件的参数 |
|
callback |
是 |
回调 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
以簇号方式读取文件的参数 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
以文件名方式读取文件的参数 |
|
callback |
是 |
回调 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
以文件名方式读取指定存储设备读取文件的参数 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
指定读取的存储设备(SD卡,Flash1,Flash2等) |
|
cluster |
number |
是 |
3.1.6.1.12 以文件名方式读取指定存储设备的参数(LargeFileGetParamsByFileNameAndDevHandle)
属性:
名称 |
类型 |
必填 |
说明 |
|---|---|---|---|
offset |
number |
是 |
读取的偏移地址 |
sdCardBean |
是 |
指定读取的存储设备(SD卡,Flash1,Flash2等) |
|
fileName |
string |
是 |
文件名 |
3.1.6.1.13 大文件读取回调(LargeFileGetCallback)
方法:
名称 |
参数 |
返回值 |
说明 |
|---|---|---|---|
onError |
|
void |
传输失败 |
onBegin |
无 |
void |
传输开始 |
onProgress |
|
string |
传输文件进度 |
onFinish |
|
string |
传输成功 |
onCancel |
|
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 |
是 |
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 |
是 |
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 |
是 |
添加手表Flash资源文件的参数 |
|
callback |
是 |
回调 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
添加手表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 |
是 |
目标表盘文件 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
目标表盘文件 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
目标表盘文件 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
目标手表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 |
是 |
手表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 |
是 |
手表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 |
|
void |
传输失败 |
onBegin |
无 |
void |
传输开始 |
onProgress |
|
string |
传输文件进度 |
onFinish |
|
string |
传输成功 |
onCancel |
|
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 |
是 |
否 |
正在使用的表盘文件 |
属性: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 |
是 |
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 |
是 |
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 |
是 |
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 |
是 |
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 |
是 |
指定查询的文件类型 |
|
callback |
是 |
回调 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
指定查询的文件类型 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
读取参数-读取的文件类型,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 |
是 |
读取参数-读取的文件类型,id,偏移,长度 |
|
callback |
是 |
回调 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
新增小文件参数-读取的文件类型,文件内容,偏移,长度 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
新增小文件参数-读取的文件类型,文件内容,偏移,长度 |
|
callback |
是 |
回调 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
更新小文件参数-更新的文件类型,小文件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 |
是 |
更新小文件参数-更新的文件类型,小文件id,文件内容,偏移,长度 |
|
callback |
是 |
回调 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
删除的文件类型 |
|
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 |
是 |
是 |
小文件类型 |
|
fileId |
number |
是 |
是 |
小文件id |
fileSize |
number | undefined |
是 |
是 |
小文件大小 |
3.1.9.1.16 查询文件列表的回调(SmallFileQueryCallback)
方法:
名称 |
参数 |
返回值 |
说明 |
|---|---|---|---|
onError |
|
void |
传输失败 |
onFinish |
|
void |
传输成功,返回文件列表。 |
3.1.9.1.17 小文件读取文件内容的参数(SmallFileReadParams)
属性:
名称 |
类型 |
必填 |
说明 |
|---|---|---|---|
fileType |
是 |
小文件类型 |
|
fileId |
number |
是 |
小文件id |
options |
{offset?: number;length?: number;} |
否 |
可选项。 |
3.1.9.1.18 读取文件内容的回调(SmallFileReadCallback)
方法:
名称 |
参数 |
返回值 |
说明 |
|---|---|---|---|
onError |
|
void |
传输失败 |
onProgress |
|
void |
读取文件进度 |
onFinish |
|
void |
传输成功,返回文件数据。 |
3.1.9.1.19 小文件新增文件的参数(SmallFileAddParams)
属性:
名称 |
类型 |
必填 |
说明 |
|---|---|---|---|
fileType |
是 |
小文件类型 |
|
data |
Uint8Array |
是 |
文件内容 |
options |
{offset?: number;length?: number;} |
否 |
可选项。 |
3.1.9.1.20 新增文件的回调(SmallFileAddCallback)
方法:
名称 |
参数 |
返回值 |
说明 |
|---|---|---|---|
onError |
|
void |
传输失败 |
onProgress |
|
void |
添加文件进度 |
onFinish |
|
void |
添加文件成功,返回文件数据。 |
3.1.9.1.21 小文件更新文件内容的参数(SmallFileUpdateParams)
属性:
名称 |
类型 |
必填 |
说明 |
|---|---|---|---|
fileType |
是 |
小文件类型 |
|
fileId |
number |
是 |
小文件id |
data |
Uint8Array |
是 |
文件内容 |
options |
{offset?: number;length?: number;} |
否 |
可选项。 |
3.1.9.1.22 更新文件内容的回调(SmallFileUpdateCallback)
方法:
名称 |
参数 |
返回值 |
说明 |
|---|---|---|---|
onError |
|
void |
更新失败 |
onProgress |
|
void |
更新文件进度 |
onFinish |
|
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 |
是 |
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 |
是 |
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 |
是 |
回调 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
联系人列表(删除原有列表,添加新的列表) |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
联系人列表(删除原有列表,添加新的列表) |
|
callback |
是 |
回调 |
返回值:
类型 |
说明 |
|---|---|
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 |
|
void |
读取失败 |
onFinish |
|
void |
读取成功,返回联系人列表( DeviceContacts )。 |
3.1.10.1.11 更新联系人列表的回调(UpdateContactsCallback)
方法:
名称 |
参数 |
返回值 |
说明 |
|---|---|---|---|
onError |
|
void |
更新失败 |
onFinish |
|
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 |
是 |
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 |
是 |
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 |
是 |
回调 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
回调 |
返回值:
类型 |
说明 |
|---|---|
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 |
|
void |
传输失败 |
onFinish |
|
void |
传输成功。 |
3.1.11.1.11 移除通知信息的回调(RemovePushNotificationInfoCallback)
方法:
名称 |
参数 |
返回值 |
说明 |
|---|---|---|---|
onError |
|
void |
移除失败 |
onFinish |
|
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 |
是 |
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 |
是 |
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。或者 获取运动记录文件列表 |
options |
{ offset?: number; length?: number; } |
否 |
拓展参数。 |
返回值:
类型 |
说明 |
|---|---|
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。或者 获取运动记录文件列表 |
返回值:
类型 |
说明 |
|---|---|
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。或者 获取运动记录文件列表 |
返回值:
类型 |
说明 |
|---|---|
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 }> |
是 |
是 |
运动强度状态占比时长。 |
运动强度
名称 |
值 |
说明 |
|---|---|---|
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 |
是 |
是 |
心率模式 |
|
exerciseStatus |
是 |
是 |
实时运动强度状态 |
|
heartRate |
number |
是 |
是 |
运动实时心率 |
3.1.12.2 运动功能事件(OperateEventSport)
属性:type
事件类型
值 |
类型 |
说明 |
|---|---|---|
“NONE” |
string |
无事件 |
“SportsStatusInfoChange” |
string |
运动状态变化 |
“StopSportsInfoChange” |
string |
结束运动信息变化 |
“SportRealTimeDataChange” |
string |
运动实时数据变化 |
属性:SportsStatusInfoChange
运动状态变化发生变化时,附带信息。仅当 type ==”SportsStatusInfoChange”时,附带。
名称 |
类型 |
可读 |
可写 |
说明 |
|---|---|---|---|---|
statusInfo |
是 |
否 |
发生变化后的运动状态 |
属性:StopSportsInfoChange
结束运动时,通知结束运动信息(结束时间,恢复时间等)。仅当 type ==”StopSportsInfoChange”时,附带。
名称 |
类型 |
可读 |
可写 |
说明 |
|---|---|---|---|---|
info |
是 |
否 |
结束运动信息 |
属性:SportRealTimeDataChange
运动实时数据变化时,仅当调用IOperateSport.readRealSportsData()时会触发,正常情况下不会触发。仅当 type ==”SportRealTimeDataChange”时,附带。
名称 |
类型 |
可读 |
可写 |
说明 |
|---|---|---|---|---|
data |
是 |
否 |
运动实时数据 |
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 |
是 |
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 |
是 |
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 |
是 |
实时健康数据的掩码 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
健康数据文件类型。 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
健康数据文件类型。 |
|
fileId |
number |
是 |
小文件id |
options |
{ offset?: number; length?: number; } |
否 |
拓展参数。 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
健康数据文件类型。 |
|
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 |
是 |
健康数据文件类型。 |
|
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 |
是 |
否 |
健康实时数据(心率,气压,海拔高度,实时步数,压力检测,血氧饱和度等) |
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 |
是 |
否 |
手表配置信息 |
属性:TWSHeadsetConfigInfoChange
TWS耳机配置信息。 仅当调用IOperateDevice.getDeviceConfigureInfo()触发。 仅当 type ==”TWSHeadsetConfigInfoChange”时,附带。
名称 |
类型 |
可读 |
可写 |
说明 |
|---|---|---|---|---|
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 |
是 |
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 |
是 |
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 |
是 |
健康设置掩码 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
健康设置信息(只需要更新的部分) |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
否 |
发生变化的健康设置(仅有发生变化的部分健康设置) |
属性:HealthSetInfoChange
健康设置发生变化时,附带信息。 当调用IOperateHealthSet.getHealthSetInfo()和IOperateHealthSet.setHealthSetInfo()触发。 仅当 type ==”HealthSetInfoChange”时,附带。
名称 |
类型 |
可读 |
可写 |
说明 |
|---|---|---|---|---|
info |
是 |
否 |
健康设置发生变化(所有的健康设置) |
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 |
是 |
资源更新参数 |
|
callback |
是 |
回调 |
示例:
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 |
是 |
资源更新参数 |
返回值:
类型 |
说明 |
|---|---|
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}> |
是 |
是 |
资源更新列表。 |
isNeedOTA |
boolean |
是 |
是 |
是否需要OTA |
3.1.16.1.5 资源更新的回调(ResourceUpdateCallbacks)
方法:
名称 |
参数 |
返回值 |
说明 |
|---|---|---|---|
onBegin |
|
void |
开始资源更新,返回需更新的升级资源总数。 |
onProgress |
|
void |
更新资源进度回调。 |
onFinish |
|
void |
更新资源成功,返回是否需要OTA。 |
onError |
|
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 |
是 |
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 |
是 |
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 |
是 |
可选项。 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
可选项。 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
可选项。 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
可选项。 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
铃声参数。 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
试听闹钟铃声参数。 |
返回值:
类型 |
说明 |
|---|---|
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 |
是 |
否 |
响铃的闹钟信息 |
属性:AlarmBeanClose
关闭闹钟时,附带信息。 当设备端关闭闹钟或者App端关闭闹钟时触发。 仅当 type ==”AlarmBeanClose”时,附带。
名称 |
类型 |
可读 |
可写 |
说明 |
|---|---|---|---|---|
closeBean |
是 |
否 |
关闭的闹钟信息 |
属性: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 |
是 |
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 |
是 |
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 |
是 |
指定的音乐文件 |
返回值:
类型 |
说明 |
|---|---|
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)
名称 |
值 |
说明 |
|---|---|---|
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)
名称 |
值 |
说明 |
|---|---|---|
STATUS_PAUSE |
0 |
暂停 |
STATUS_PLAY |
1 |
播放 |
播放模式(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 |
是 |
否 |
变化后的设备音乐信息 |
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 |
|
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 |
|
添加Rcsp事件回调 |
removeOnRcspCallback |
callback: OnRcspCallback |
|
移除Rcsp事件回调 |
transmitDeviceState |
device: BtDevice status: ConnectState |
|
通知设备状态 |
transmitDeviceData |
device: BtDevice data: Uint8Array |
|
通知设备发送的数据 |
sendDataToDevice |
device: BtDevice data: Uint8Array |
|
发送数据给设备(裸蓝牙数据) |
sendRCSPCommand |
device: BtDevice command: Command timeoutMs: number //命令超时 callback: CommandCallback<Command> | null //命令回调 |
|
发送RCSP命令给设备 |
syncDeviceInfo |
device: BtDevice param: ParamTargetInfo//设备信息参数 callback: OnResultCallback<ResponseTargetInfo> //结果回调 |
|
异步获取设备信息 |
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 |