KDocs 研发资料库
  • 屏融合应用方案入口汇总
  • JL701N穿戴客述问题FAQ
  • JL701N穿戴类补丁list
  • 手表软件调试
  • JL701手表硬件设计注意事项 总结
  • 手表烧录_升级工具说明
  • 手表量产相关
  • 生产烧录KEY及代码和升级代码
  • AC695N系列手表SDK开发指南
  • JL7012A手表-SDK入门指南V1.0
  • 穿戴手表JL701N-入门到进阶开发指导
  • 彩屏充电仓JL701N LVGL入门到进阶指导文档
  • AC695N手表软硬件问题整理
  • JL701N手表软硬件问题整理
  • 701n手表SDK共性问题汇总
  • UI效果参考demo文档
  • 屏幕触摸驱动相关参考
  • 穿戴类支付宝支付流程
  • AC701N_PMU_介绍
  • 经典蓝牙相关接口说明
  • music应用详细设计说明书
  • music_player接口设计说明文档
  • PO声测试以及处理方法
  • DAC性能测试指南
  • 杰理串口升级规范
  • AC696N串口升级说明
  • AC695N系列手表UI开发指南
  • AC695N添加升级UI说明文档.
  • UI布局工具使用说明
  • UI接口设计说明书
  • UI工具快速使用说明
  • 701N_UI编辑工具用户手册
  • UI工程源文件升级工具使用说明
  • 701N屏幕驱动配置说明
  • JL701N 2D图形硬件加速接口使用说明
  • JL701_watch常用例子参考
  • JL_WATCH_SDK UI相关工具使用文档
  • 智能手表音频 设计调试手册 V1.2
  • AC695X_AC696X_AD697X 常见通话问题处理参考资料
  • 701手表 PCBA产测工具使用说明书 V1.0
  • 杰理定频问题排查2021.1.26
  • BQB5.4 20231007
  • 各类概率性死机调试解决指南
  • 不开机问题处理汇总(仅供参考)
  • 蓝牙搜索不到问题处理汇总(仅供参考)
  • 样机发烫(仅供参考)
  • 蓝牙音乐卡顿问题处理汇总(仅供参考)
  • 充电问题处理汇总(仅供参考)
  • 触摸问题处理汇总(仅供参考)
  • 功耗调试指导
  • JL701N穿戴客述问题FAQ
  • 701N 开发板新屏幕驱动修改
  • AC701 nandflash A8图片显示问题
  • 支付宝乘车码接入资料
  • 多国语言及字库使用指南
  • 查看C程序Flash 和RAM 资源占用说明文档
  • 701N_SDK3.0.1_OPUS_OGG 编解码
  • 蓝牙在线调eq说明
  • BR EDR BLE 蓝牙性能测试配置方法_
  • BLE-HID
  • BLE-HID 调试文档
  • 【问题】701v301外置flash播放wts提示音
  • 本地录音开启及调试
  • 死机分析
  • 表盘传输APP层的压缩算法
  • 功能模版:JL701_V301_UI资源使用FAT文件系统demo
  • JL7013+4G CAT1 参考设计原理图
  • 吾爱4G模组+JL701接口说明
  • (电脑一拖多)手表升级dongle工具使用补充说明
  • 蓝牙接口使用说明
  • ble 开发流程
  • 彩屏仓功耗优化
  • 彩屏仓补丁list
  • 更新字库步骤
  • 支付宝硬件接入资料

表盘传输APP层的压缩算法

📎 原始文档:https://www.kdocs.cn/l/ct8WYOPUyvk1 表盘传输APP层的压缩算法

一、android案例

  1. 网页介绍 【金山文档】 杰理健康SDK(Android)开发资料_V1.7.1
    https://kdocs.cn/l/cbXVH5Rf44Pz
    2. 功能说明 — 杰理健康开发文档(Android) 1.7.0 documentation (zh-jieli.com)
    image

2.AC695N

image

/**
 * bitmap图像转换
 *
 * @param inPath 输入文件路径<p>例如:in.png ,in.jpg</p>
 * @param outPath 输出文件路径<p>例如:out.res, out</p>
 */
public void convertPhoto(String inPath, String outPath) {
    //1.初始化图片转换对象
    BmpConvert bmpConvert = new BmpConvert();
    //2.开始图像转换
    bmpConvert.bitmapConvert(inPath, outPath, new OnConvertListener() {
        //回调转换开始
        //path: 输入文件路径
        @Override
        public void onStart(String path) {

        }

        //回调转换结束
        //result: 转换结果
        //output: 输出文件路径
        @Override
        public void onStop(boolean result, String output) {

        }
    });
    //3.不需要使用图片转换功能时,需要释放图片转换对象
//     bmpConvert.release();
}

3.JL701N

image

/**
 * bitmap图像转换
 *
 * @param inPath 输入文件路径<p>例如:in.png ,in.jpg</p>
 * @param outPath 输出文件路径<p>例如:out.res, out</p>
 */
public void convertPhoto(int flag, String inPath, String outPath) {
    //1.初始化图片转换对象
    BmpConvert bmpConvert = new BmpConvert();
    //2.开始图像转换
    flag = BmpConvert.TYPE_BR_28;    //JL701N-WATCH-SDK
    //flag = BmpConvert.TYPE_BR_23;    //AC695N-WATCH-SDK
    bmpConvert.bitmapConvert(flag, inPath, outPath, new OnConvertListener() {
        //回调转换开始
        //path: 输入文件路径
        @Override
        public void onStart(String path) {

        }

        //回调转换结束
        //result: 转换结果
        //output: 输出文件路径
        @Override
        public void onStop(boolean result, String output) {

        }
    });
    //3.不需要使用图片转换功能时,需要释放图片转换对象
//     bmpConvert.release();
}

二、IOS案例

【金山文档】 杰理健康SDK(IOS)开发资料_V1.6.3
https://kdocs.cn/l/cuh8DEfwGT6K
iOS端的压缩算法接口在JLBLEKit.framework的bmp_convert.h 头文件下面,所给出的是C语言接口

/*
 *输入:
 *    inbuf    : bmp图像raw数据(像素排列顺序 BGRA...BGRA, inbuf大小为inWidth*inHeight*4)
 *    inWidth  : bmp图像的宽度
 *    inHeight : bmp图像的高度
 *输出:
 *    outbuf   : 存放转换后的数据缓存,为NULL时计算需要的缓存大小
 *    outsize  : 数据缓存大小
 *返回值   :
 *    转换后的数据大小
 */
int br23_bmp_to_res(u8 *inbuf, u32 inWidth, u32 inHeight, u8 *outbuf, u32 outsize);

/*
 * 输入:
 *     infile : bmp图像raw数据的文件路径(像素排列顺序 BGRA...BGRA, 文件大小为width*height*4)
 *     width  : bmp图像宽度
 *     height : bmp图像高度
 * 输出:
 *     outfile : 输出文件路径(转换后的文件)
 * 返回值:
 *     0 : 转换失败(输入的width, height与infile文件的大小不匹配)
 *     1 : 转换成功
 */
int br23_btm_to_res_path(char *infile, int width, int height, char *outfile);

/*
 *输入:
 *    inbuf    : bmp图像raw数据(像素排列顺序 BGRA...BGRA, inbuf大小为inWidth*inHeight*4)
 *    inWidth  : bmp图像的宽度
 *    inHeight : bmp图像的高度
 *输出:
 *    outbuf   : 存放转换后的数据缓存,为NULL时计算需要的缓存大小
 *    outsize  : 数据缓存大小
 *返回值   :
 *    转换后的数据大小
 */
int br28_bmp_to_res(u8 *inbuf, u32 inWidth, u32 inHeight, u8 *outbuf, u32 outsize);

/*
 * 输入:
 *     infile : bmp图像raw数据的文件路径(像素排列顺序 BGRA...BGRA, 文件大小为width*height*4)
 *     width  : bmp图像宽度
 *     height : bmp图像高度
 * 输出:
 *     outfile : 输出文件路径(转换后的文件)
 * 返回值:
 *     0 : 转换失败(输入的width, height与infile文件的大小不匹配)
 *     1 : 转换成功
 */
int br28_btm_to_res_path(char *infile, int width, int height, char *outfile);

使用示例:

-(void)changeImageToBin{
    JL_ManagerM *cmdMgr = [[JL_RunSDK sharedMe] mBleEntityM].mCmdManager;
    JLModel_Device *model = [cmdMgr outputDeviceModel];
    uint16_t dev_W = model.flashInfo.mScreenWidth;
    uint16_t dev_H = model.flashInfo.mScreenHeight;
    //这里获得的表盘尺寸大小来自设备
    if (dev_W == 0) dev_W = 240;
    if (dev_H == 0) dev_H = 240;
    NSData *imageData = [BitmapTool resizeImage:image andResizeTo:CGSizeMake(dev_W, dev_H)];

    NSString *bmpPath = [JL_Tools listPath:NSLibraryDirectory MiddlePath:@"" File:@"ios_test.bmp"];
    NSString *binPath = [JL_Tools listPath:NSLibraryDirectory MiddlePath:@"" File:self.watchBinName];
    
    [JL_Tools removePath:bmpPath];
    [JL_Tools removePath:binPath];
    
    [JL_Tools createOn:NSLibraryDirectory MiddlePath:@"" File:@"ios_test.bmp"];
    [JL_Tools createOn:NSLibraryDirectory MiddlePath:@"" File:self.watchBinName];

    UIImage *image = [UIImage imageWithData:imageData];
    int width = image.size.width;
    int height = image.size.height;
    NSLog(@"压缩分辨率 ---> w:%df h:%df",width,height);
    
    NSData *bitmap = [BitmapTool convert_B_G_R_A_BytesFromImage:image];
    [JL_Tools writeData:bitmap fillFile:bmpPath];
    
  
    //这里主要通过手表类型来作区分,选择对应的压缩算法
    if (model.sdkType == JL_SDKType701xWATCH) {
        /*--- BR28压缩算法 ---*/
        br28_btm_to_res_path((char*)[bmpPath UTF8String], width, height, (char*)[binPath UTF8String]);
        NSLog(@"--->Br28 BIN【%@】is OK!", self.watchBinName);
    }else{
        /*--- BR23压缩算法 ---*/
        br23_btm_to_res_path((char*)[bmpPath UTF8String], width, height, (char*)[binPath UTF8String]);
        NSLog(@"--->Br23 BIN【%@】is OK!", self.watchBinName);
    }

//最后这里,是压缩完的文件放到指定的文件夹,当然也可以选择另外的方法,直接压缩完在这里使用
}

本文档包含以下子页面

Prev
死机分析
Next
功能模版:JL701_V301_UI资源使用FAT文件系统demo