3. 表盘操作
表盘功能管理,包括:遍历文件列表,添加表盘,删除表盘,获取表盘,获取当前表盘信息,切换表盘,设置自定义表盘背景等等
3.1. 遍历文件列表
获取表盘相关文件列表
示例代码
//WatchManager是WatchOpImpl的子类,须在1.3配置好sdk
WatchManager watchManager = WatchManager.getInstance();
watchManager.listWatchList(new OnWatchOpCallback<ArrayList<FatFile>>() {
@Override
public void onSuccess(ArrayList<FatFile> result) {
//成功回调
//result 是结果,(watch或WATCH)前缀的是表盘文件,(bgp_w或BGP_W)前缀的是自定义背景文件
//可以过滤获取所有Watch文件
}
@Override
public void onFailed(BaseError error) {
//失败回调
}
});
Note
3.1.1. FatFile
public class FatFile implements Parcelable {
//文件大小
private long size;
//文件名
private String name;
//是否文件夹 (若false,则是文件)
private boolean isDir;
//修改时间 [格式: YYYY/MM/DD hh:mm:ss]
private String modifyTime;
//绝对路径
private String path;
//是否文件
private boolean file;
//是否unicode编码
private boolean unicode;
//簇号
private int cluster;
//文件序号
private short fileNum;
//设备驱动索引
private byte devIndex;
}
3.2. 插入表盘
插入新的表盘文件
示例代码
//WatchManager是WatchOpImpl的子类,须在1.3配置好sdk
WatchManager watchManager = WatchManager.getInstance();
//filePath是表盘文件路径,必须存在
//isNoNeedCheck:是否跳过文件校验
// - false: 表盘文件需要文件校验
// - true : 自定义背景文件不需要文件校验,但需要转换工具进行算法转换
//OnFatFileProgressListener:进度监听器
watchManager.createWatchFile(filePath, false, new OnFatFileProgressListener() {
@Override
public void onStart(String filePath) {
//回调开始
}
@Override
public void onProgress(float progress) {
//回调进度
}
@Override
public void onStop(int result) {
//回调结束
//result : 0 --- 成功 非0是错误码,参考WatchError
}
});
Warning
表盘文件是前缀
WATCH_的文件表盘自定义背景文件是前缀
BGP_W的文件
Important
文件路径必须存在
自定义表盘背景必须通过转换工具进行转换, 参考 图像转换
3.3. 删除表盘
删除已存在的表盘文件
示例代码
//WatchManager是WatchOpImpl的子类,须在1.3配置好sdk
WatchManager watchManager = WatchManager.getInstance();
//watchPath: 设备存在的表盘文件路径
//OnFatFileProgressListener:进度监听器
watchManager.deleteWatchFile(watchPath, new OnFatFileProgressListener() {
@Override
public void onStart(String filePath) {
//回调开始
}
@Override
public void onProgress(float progress) {
//回调进度
}
@Override
public void onStop(int result) {
//回调结束
//result : 0 --- 成功 非0是错误码,参考WatchError
}
});
Important
表盘文件路径必须存在于设备
错误码参考 3.13 错误码定义
3.4. 获取当前表盘信息
获取当前使用的表盘信息
示例代码
//WatchManager是WatchOpImpl的子类,须在1.3配置好sdk
WatchManager watchManager = WatchManager.getInstance();
watchManager.getCurrentWatchInfo(new OnWatchOpCallback<FatFile>() {
@Override
public void onSuccess(FatFile result) {
//成功回调 - FatFile是表盘信息
}
@Override
public void onFailed(BaseError error) {
//失败回调
}
});
Note
3.5. 获取表盘额外信息
获取表盘文件的额外信息, 比如版本, 服务器对应的UUID等
示例代码
//WatchManager是WatchOpImpl的子类,须在1.3配置好sdk
WatchManager watchManager = WatchManager.getInstance();
//watchPath:设备表盘文件的路径
watchManager.getWatchMessage(watchPath, new OnWatchOpCallback<String>() {
@Override
public void onSuccess(String result) {
//成功回调,result是表盘额外信息
//格式:[version],[uuid],
}
@Override
public void onFailed(BaseError error) {
//失败回调
}
});
3.6. 设置当前使用表盘
设置当前使用表盘。通过此功能切换表盘
示例代码
//WatchManager是WatchOpImpl的子类,须在1.3配置好sdk
WatchManager watchManager = WatchManager.getInstance();
// watchPath:必须存在于设备的表盘文件路径
watchManager.setCurrentWatchInfo(watchPath, new OnWatchOpCallback<FatFile>() {
@Override
public void onSuccess(FatFile result) {
//成功回调 - FatFile是表盘信息
}
@Override
public void onFailed(BaseError error) {
//失败回调
}
});
Note
3.7. 获取表盘对应的自定义背景信息
获取指定表盘对应的自定义背景信息
示例代码
//WatchManager是WatchOpImpl的子类,须在1.3配置好sdk
WatchManager watchManager = WatchManager.getInstance();
//watchPath:设备表盘文件的路径
watchManager.getCustomWatchBgInfo(watchPath, new OnWatchOpCallback<String>() {
@Override
public void onSuccess(String result) {
//成功回调,result是背景文件的路径
//如果result是“null”,则是空路径,不存在自定义背景
//如果result不是“null”,则是背景文件的路径
}
@Override
public void onFailed(BaseError error) {
//失败回调
}
});
Important
若结果是
null,意味着不存在自定义背景若结果不是
null, 则是背景文件的路径
3.8. 使能表盘自定义背景
为当前使用的表盘使能指定的自定义背景
示例代码
//WatchManager是WatchOpImpl的子类,须在1.3配置好sdk
WatchManager watchManager = WatchManager.getInstance();
//watchBgPath: 表盘背景路径
//若watchBgPath为“/null”,则视为当前表盘清除自定义背景的绑定
//若watchBgPath不为“/null”,则为当前表盘绑定自定义背景
watchManager.enableCustomWatchBg(watchBgPath, new OnWatchOpCallback<FatFile>() {
@Override
public void onSuccess(FatFile result) {
//成功回调 - FatFile是自定义背景文件信息
}
@Override
public void onFailed(BaseError error) {
//失败回调
}
});
Important
若表盘背景路径为
/null,则视为当前表盘清除自定义背景的绑定若表盘背景路径不为
/null,则为当前表盘绑定自定义背景
3.9. 资源更新
更新设备资源文件
示例代码
//WatchManager是WatchOpImpl的子类,须在1.3配置好sdk
WatchManager watchManager = WatchManager.getInstance();
//resourcePath: 资源路径 (zip压缩包)
//OnUpdateResourceCallback: 更新资源进度监听器
watchManager.updateWatchResource(resourcePath, new OnUpdateResourceCallback() {
@Override
public void onStart(String filePath, int total) {
//回调开始
//filePath -- 资源文件路径
//total -- 更新文件总数
}
@Override
public void onProgress(int index, String filePath, float progress) {
//回调进度
//index -- 序号 (从0开始)
//filePath -- 资源文件路径
//progress -- 更新进度
}
@Override
public void onStop(String otaFilePath) {
//回调更新结束
//otaFilePath: 固件升级文件路径
//若固件升级文件不为null,则意味着需要进行OTA升级
}
@Override
public void onError(int code, String message) {
//回调错误事件
//code -- 错误码 (参考WatchError)
//message -- 错误信息
}
});
Important
确保压缩包文件正常且完整
若返回OTA文件路径,则需要执行OTA固件功能。参考 杰理OTA外接库开发文档(Android)
3.9.1. 流程图
3.10. 系统恢复
系统出现异常时,用于恢复系统
示例代码
//WatchManager是WatchOpImpl的子类,须在1.3配置好sdk
final WatchManager watchManager = WatchManager.getInstance();
//注册手表事件回调
watchManager.registerOnWatchCallback(new OnWatchCallback() {
//系统异常回调
@Override
public void onWatchSystemException(BluetoothDevice device, int sysStatus) {
if(sysStatus != 0){ //系统状态不为0,则是系统异常
//监听到系统异常,才调用此方法恢复系统
//正常情况,禁止调用此方法
watchManager.restoreWatchSystem(new OnFatFileProgressListener() {
@Override
public void onStart(String filePath) {
//回调开始
}
@Override
public void onProgress(float progress) {
//回调进度
}
@Override
public void onStop(int result) {
//回调结果
//result : 0 --- 成功 非0是错误码,参考WatchError
}
});
}
}
});
Important
禁止在系统正常运行的情况下,使用该接口
错误码参考 3.13 错误码定义
3.11. 表盘操作流程
3.11.1. 添加表盘文件
//WatchManager是WatchOpImpl的子类,须在1.3配置好sdk
final WatchManager watchManager = WatchManager.getInstance();
//执行插入表盘操作并等待结果回调
watchManager.createWatchFile(watchFilePath, false, new OnFatFileProgressListener() {
@Override
public void onStart(String filePath) {
//回调开始插入表盘
}
@Override
public void onProgress(float progress) {
//回调插入表盘进度
}
@Override
public void onStop(int result) {
//回调插入表盘结果
if (result == 0) { //插入表盘成功
//设置当前表盘为插入表盘
watchManager.setCurrentWatchInfo(FatUtil.getFatFilePath(watchFilePath), new OnWatchOpCallback<FatFile>() {
@Override
public void onSuccess(FatFile result) {
//设置当前表盘成功
}
@Override
public void onFailed(BaseError error) {
//操作失败
}
});
} else {
//插入文件失败
}
}
});
3.11.2. 添加表盘背景文件
//WatchManager是WatchOpImpl的子类,须在1.3配置好sdk
final WatchManager watchManager = WatchManager.getInstance();
//执行插入自定义表盘背景文件操作并等待结果回调
watchManager.createWatchFile(bgFilePath, true, new OnFatFileProgressListener() {
@Override
public void onStart(String filePath) {
//回调开始插入表盘背景文件
}
@Override
public void onProgress(float progress) {
//回调插入表盘背景文件进度
}
@Override
public void onStop(int result) {
//回调插入表盘背景文件结果
if (result == 0) { //插入表盘背景文件成功
//设置表盘背景文件为当前表盘的自定义背景
watchManager.enableCustomWatchBg(FatUtil.getFatFilePath(bgFilePath), new OnWatchOpCallback<FatFile>() {
@Override
public void onSuccess(FatFile result) {
//激活自定义背景成功
}
@Override
public void onFailed(BaseError error) {
//操作失败
}
});
}else{
//插入文件失败
}
}
});
Note
插入其他文件可以参考 添加表盘背景文件 实现
3.11.3. 查询当前表盘的所有信息
//WatchManager是WatchOpImpl的子类,须在1.3配置好sdk
final WatchManager watchManager = WatchManager.getInstance();
//查询当前表盘信息
watchManager.getCurrentWatchInfo(new OnWatchOpCallback<FatFile>() {
@Override
public void onSuccess(FatFile result) {
//回调当前表盘信息
//查询当前表盘的自定义背景信息
watchManager.getCustomWatchBgInfo(result.getPath(), new OnWatchOpCallback<String>() {
@Override
public void onSuccess(String result) {
//result 如果是null, 就是默认背景
//result 若不是null, 则是自定义背景文件的路径
}
@Override
public void onFailed(BaseError error) {
//操作失败
}
});
}
@Override
public void onFailed(BaseError error) {
//操作失败
}
});
3.12. 获取手表系统剩余空间大小
获取手表系统剩余空间大小
示例代码
//WatchManager是WatchOpImpl的子类,须在1.3配置好sdk
final WatchManager watchManager = WatchManager.getInstance();
//获取手表系统剩余空间
watchManager.getWatchSysLeftSize(new OnWatchOpCallback<Long>() {
@Override
public void onSuccess(Long result) {
//手表剩余空间
}
@Override
public void onFailed(BaseError error) {
//错误信息
}
});
Important
注意调用时机, 必须在手表系统初始化完成之后调用
3.13. 获取表盘文件的大小
获取表盘文件的大小
示例代码
//WatchManager是WatchOpImpl的子类,须在1.3配置好sdk
final WatchManager watchManager = WatchManager.getInstance();
//fatFilePath : 表盘文件路径(必须存在)
//获取表盘文件的大小
watchManager.getWatchFileSize(fatFilePath, new OnWatchOpCallback<WatchFileContent>() {
@Override
public void onSuccess(WatchFileContent result) {
result.getFileSize(); //表盘文件的大小
result.getCrc(); //表盘文件的CRC (AC695X的SDK, 此此字段无效)
}
@Override
public void onFailed(BaseError error) {
//错误信息
}
});
Important
表盘文件路径必须存在设备
CRC字段, 在AC695X的手表SDK无效, 在AC701X的手表SDK有效