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
  • 更新字库步骤
  • 支付宝硬件接入资料

本地录音开启及调试

📎 原始文档:https://www.kdocs.cn/l/ckfrTfZQ27Ts 本地录音开启及调试

一、本地录音

  1. sdk开启该功能 在对应的板级配置board_xxxx_demo_cfg.h文件中,将下图中的两个宏开启,即是开启了该功能。
    imageimage
#define TCFG_APP_RECORD_EN                    1
#define TCFG_ENC_MP3_ENABLE                   ENABLE
  1. 效果演示 开启该功能后,建议先在开发板上测试效果,再做进一步开发。
    公版默认录音文件储存在sd卡中,因此做此效果演示需要装入sd卡,并且把mic和喇叭都接上。而且要保证硬件正常。
    image

    进入开发板的菜单选择界面,选择录音功能项,点击进入有是一个开始暂停的图片,点击即开始录音。
    image 录音完成后,默认会在storage/sd0/C/JL_REC/路径下生成AC69****.mp3的录音文件,此时可以在音乐界面上拉出音乐列表,找到JL_REC文件夹进入,播放录音文件,就可以了。
    image

二、录音文件存放位置

  1. sd卡 默认就是录在sd卡,参考1中的操作即可。

  2. 外挂flash

  3. 内置flash 开启下列宏,并配置内置flash分区。
    imageimage

三、调试

  1. 播放录音文件 默认就是录在sd卡可以参考效果演示中的操作,从音乐界面选取播放。
    也可以调用以下接口播放,下方提供一个扫盘的简单demo,可以在获取到名字后,将名字与根目录拼接再调用record_file_play_by_path接口直接播放。
    record_file_play则是播放最后一次录音的音频
    image
 struct vfscan *fs = NULL;
    char  name[128];
    struct vfs_attr attr = {0};
    FILE * fp = NULL;
    char * root_path ="storage/sd0/C/JL_REC";
    
    fs = fscan(root_path,"-tMP3 -sn",1);
    if(fs == NULL)
    {
        printf("fscan end");
        return;
    }
    printf("fscan: file_number = %d\n", fs->file_number);
    if (fs->file_number == 0) { //判断是否有被扫描格式文件存在
        printf("Please create some test files!");
        return;
    }
    //遍历整个文件夹
    for(int i=1;i < fs->file_number;i++)
    {
        //通过文件号选择文件
        fp = fselect(fs,FSEL_BY_NUMBER,i);
        if(fp)
        {
            fget_name(fp,name,sizeof(name));
            fget_attrs(fp, &attr);
            printf("fscan: attr.sclust = %d, file_name = %s\n", attr.sclust, name);
            
        }
        
        fclose(fp);
        fp = NULL;
    }
    //根据路径播放录音文件
    record_file_play_by_path("storage/sd0/C/JL_REC/AC690013.MP3");
    fscan_release(fs);
    fs = NULL;
  1. 录音时间添加

image

 //获取当前时间
static void get_sys_time(struct sys_time *time)
{
    void *fd = dev_open("rtc", NULL);
    if (!fd) {
        memset(time, 0, sizeof(*time));
        return;
    }
    dev_ioctl(fd, IOCTL_GET_SYS_TIME, (u32)time);
    dev_close(fd);
}

//***********************************************
    //添加录音文件时间
    struct sys_time time;
    get_sys_time(&time);
    fat_set_datetime_info(time.year,time.month,time.day,time.hour,time.min,time.sec);
//***********************************************
  1. 录音长文件名 【金山文档】 长文件名demo
    https://kdocs.cn/l/cvXIlOecDLoq
    长文件名:通过path写入路径,由通过字符转UTF16LE编码写入file_name中,然后通过memcpy将filename的文件名加到path路径后面。通过fopen的"w+"打开可 读/写文件,若文件存在则原文件会被直接覆盖;若文件不存在则创建该文件。通过fopen的"r"以只读方式打开文件,该文件必须存在。
    短文件名文件除了通过以上长文件名的方式进行创建和打开读写之外,也可以直接通过路径+短文件名如CONFIG_ROOT_PATH"filename.txt",使用8+3规则,短文件名不能超过8个字节。
    image
    //文件夹名
     char usr_path[256] = "storage/sd0/C/JL_REC";
    //文件名"123456789123.mp3"
    char file_path[128] = {'/', '\\', 'U', 0x31, 0x0, 0x32, 0x0, 0x33, 0x0, 0x34, 0x0, 0x35, 0x0, 0x36, 0x0, 0X37, 0x0, 0x38, 0x0, 0x39, 0x0, 0x31, 0, 0x32, 0, 0x33, 0, 0x2E, 0x0, 0x6D, 0x0, 0x70, 0x0, 0x33, 0};
    memcpy(usr_path + strlen(usr_path), file_path, sizeof(file_path));
    wfil->file = fopen(usr_path, "w+");

转换工具如下:
HEX转字符 十六进制转字符 hex gb2312 gbk utf8 汉字内码转换 - The X 在线工具 (the-x.cn)

本文档包含以下子页面

Prev
【问题】701v301外置flash播放wts提示音
Next
死机分析