前言
在这里做一个比较考验初学者对杰理方案非可视化SDK掌握度的基础UI按键切换中英文提示音功能做一个分享,希望对大家有所帮助。
明确UI功能
中英文切换功能首先想到需要添加好提示音,在按键上实现中英文切换的功能。
如何在按键上做中英文切换? 【根据中英文标志位切换中英文】
1. 配置中英文提示音
2. 中英文标志位存入VM
3. TWS对耳传输中英文标志位
4. 根据标志位切换中英文提示音
5. 按键切换标志位
实现后的流程即开机提示音前读取VM区域中的中英文标志位,每次按键切换标志位再次将标志位存入VM区域中。在TWS做对耳消息同步。
实现UI功能
TWS对耳消息同步__[bt_tws.c]
// 定义用于ENCN同步的TWS功能ID
#define TWS_FUNC_ID_ENCN_SYNC TWS_FUNC_ID('E', 'N', 'C', 'N')
// ENCN同步处理函数
static void bt_tws_encn_sync(void *_data, u16 len, bool rx)
{
// 如果是接收数据
if (rx) {
u8 *data = (u8 *)_data;
en_cn_flag = data[0]; // 存储ENCN标志
}
}
// 注册TWS功能存根
REGISTER_TWS_FUNC_STUB(app_encn_sync_stub) = {
.func_id = TWS_FUNC_ID_ENCN_SYNC, // 设置功能ID
.func = bt_tws_encn_sync, // 设置处理函数
};
// 发送ENCN同步数据到从设备
void bt_tws_sync_encn()
{
tws_api_send_data_to_slave(&en_cn_flag, 1, TWS_FUNC_ID_ENCN_SYNC); // 发送数据和功能ID
}
在对耳同步音量后用bt_tws_sync_encn()同步即可
在syscfg_id.h中配置VM区域
开机提示音前读取该区域存入的内容
…
syscfg_read(CFG_VM_EN_CH, &en_cn_flag, 1);
…
每次按键切换做一个存储即可
…
syscfg_write(CFG_VM_EN_CH, &en_cn_flag, 1);
…
最后根据标志位切换中英文提示音即实现该功能。