点阵屏歌词字库相关(蓝牙歌词,普通歌词)
📎 原始文档:https://www.kdocs.cn/l/caVKTF0KYLvg 点阵屏歌词字库相关(蓝牙歌词,普通歌词)
获取歌词需要在板级文件中打开ID3使能AC695N_soundbox_sdk_release_3.1.0_OLED_lrc_DEMO:(带普通歌词)
链接:https://pan.baidu.com/s/1mowD_fMa5rMOROmgVY93Hg
提取码:8888
JL701N_soundbox_sdk_release_1.4.2_OLED_LRC_DEMO:
demo_701142_OLED_lrc.zip
一、蓝牙歌词
- 获取蓝牙歌词 按照695问题处理文档AC695X软件问题整理.pdf 第73点:AC695系列获取蓝牙的ID3歌词和播放时间串口能够打印出蓝牙歌词,根据传入参数type做显示,type为1时为蓝牙歌词内容;
注:串口打印能正常显示的格式为UTF-8格式,做显示需要使用ui_text_set_textu_by_id()这个函数接口。 - 获取蓝牙歌曲当前播放时间:

case BT_STATUS_FIRST_CONNECTED:
log_info("BT_STATUS_CONNECTED\n");
bt_status_connect(bt);
bt_music_time_id = sys_timer_add(NULL,music_player_time,800);
break;
case BT_STATUS_FIRST_DISCONNECT:
case BT_STATUS_SECOND_DISCONNECT:
log_info(" BT_STATUS_SECOND_DISCONNECT\n");
bt_status_disconnect(bt);
if (bt_music_time_id)
{
sys_timer_del(bt_music_time_id);
bt_music_time_id = 0;
}
break;
void music_player_time(void *priv)
{
if (BT_STATUS_PLAYING_MUSIC == get_bt_connect_status()) {
user_send_cmd_prepare(USER_CTRL_AVCTP_OPID_GET_PLAY_TIME, 0, NULL);
}
}
在连接蓝牙播歌的情况下,使用定时发送USER_CTRL_AVCTP_OPID_GET_PLAY_TIME命令获取时间,会在void user_get_bt_music_info(u8 type, u32 time, u8 *info, u16 len)回调中获取到当前播放的时间,配合type为7时的总时间即可做蓝牙歌曲播放时间显示。
二、普通歌词
- 获取LRC歌词显示buf 打开相关宏定义后,驱动层会定时器调用lrc_ui_show()去刷新显示歌词内容,正常情况下不需要做处理就能够正常显示,如果遇到显示不正常的情况,检查步骤如下:
- 检查UI区域初始化 步骤:
- 检查UI工程编译
- 检查ename.h和style_JL02.h中是否有ID号的宏定义

- 程序写一个字符串buf如“hello world”,使用UI显示函数在该区域看看是否正常
- 注:初始化显示区域时,文字框的高度配置最好为显示文字的字体大小的整数倍(默认字体为16)
- 检查传入buf是否正常 在lrc_ui_show中增加打印buf部分,看看是否有数据
/*----------------------------------------------------------------------------*/
/**@brief 歌词显示,默认显示两行
@param lrc_show_flag:滚动显示标志 lrc_update:显示下一条歌词内容标志
@return true--成功
@note 可以根据xi需要修改该函数的实现方法
*/
/*----------------------------------------------------------------------------*/
bool lrc_ui_show(int text_id, u8 encode_type, u8 *buf, int len, u8 lrc_show_flag, u8 lrc_update)
{
struct font_info lyric_font;
u8 lyric_utf16_date[50];
printf(">>>lrc_ui_show\n");
put_buf(buf,len);
printf("lrc:%s\n",buf);
printf("encode_type:%d\n",encode_type);
- 检查buf的编码格式 使用ascii.exe程序选择不同的编码对比数据内容,确定是哪一种格式显示。
不同的格式使用不同的显示函数:
UTF-8:ui_text_set_textu_by_id
UTF-16:ui_text_set_textw_by_id (UNICODE)
GBK:ui_text_set_text_by_id
三、多国字库切换以及多国语言列表
四、UI常见问题处理
- 歌曲名(mp3)显示少了3,只显示了mp。

- 歌词显示不出来 为了支持长歌词,默认是打开了
可以按照注释修改isd文件,增加歌曲读取分区 - 695LCD屏幕调用ui_hide后无法使用ui_show重新显示出来 LTY 在需要使用的地方定义并使用下方这个函数调用
//注意不能在onchange里面调用 0:显示 1:隐藏
static void re_ui_hide(int id, u8 enable)
{
struct element *elm = ui_core_get_element_by_id(id);
if(!elm){
printf("elm is null");
return;
}
elm->css.invisible = enable;
ui_core_redraw(elm);//手动刷新
} - AC695N 开启spi推屏 ui_task 会影响到dac L trim数值,导致DAC左声道播放会出现杂音("po声") ui_task会影响到dac trim,导致杂音
修改方法如下:
- 音箱系列SDK支持字库目录
框住的不支持,如果需要增加,请通过代理提需求到鉴冰处理。
AC695N_soundbox_sdk_release_3.1.0_OLED_lrc_DEMO:(带普通歌词)