恒玄BES2300P 按键事件 实现按键播放自定义提示音

从BES拿到的源码实际上已经十分成熟了app_ibrt_ui_test.cpp我们可以看到键盘的点击事件的绑定在这里插入图片描述
PWR默认进入app_ibrt_normal_ui_handle_key,FN1、2 进入app_ibrt_ui_test_key_io_event
PWR还多封装了一层来应对启用不同宏进入不同的handle_key
找到正确的按键事件接口我们已经成功了一半。status存入的就是按键的值和相应的事件(单击双击)

void app_ibrt_ui_test_key_io_event(APP_KEY_STATUS *status, void *param)
{
    TRACE(3,"%s %d,%d",__func__, status->code, status->event);
    switch(status->event)
    {
        case APP_KEY_EVENT_CLICK:
            if (status->code== APP_KEY_CODE_FN1)
            {
                app_ibrt_if_event_entry(IBRT_OPEN_BOX_EVENT);
            }
            else if (status->code== APP_KEY_CODE_FN2)
            {
                app_ibrt_if_event_entry(IBRT_FETCH_OUT_EVENT);
            }
            else
            {
                app_ibrt_if_event_entry(IBRT_WEAR_UP_EVENT);
            }
            break;

        case APP_KEY_EVENT_DOUBLECLICK:
            if (status->code== APP_KEY_CODE_FN1)
            {
                app_ibrt_if_event_entry(IBRT_CLOSE_BOX_EVENT);
            }
            else if (status->code== APP_KEY_CODE_FN2)
            {
                app_ibrt_if_event_entry(IBRT_PUT_IN_EVENT);
            }
            else
            {
                app_ibrt_if_event_entry(IBRT_WEAR_DOWN_EVENT);
            }
            break;
    }
}

剩下的就略显麻烦,首先你需要通过工具将wav音源转换成采样率设置为 16000,声道设置为单声道,采样精度 16 位的16进制txt格式文件,转化工具和过程,然后include进入项目

#ifdef MEDIA_PLAYER_SUPPORT

const uint8_t EN_POWER_ON [] = {
#include "res/en/SOUND_POWER_ON.txt"
};

const uint8_t EN_POWER_OFF [] = {
#include "res/en/SOUND_POWER_OFF.txt"
};

模仿AUD_ID_POWER_ON的过程,在media_runtime_audio_prompt_update添加绑定判断中英文(实际上我没有判断)以及新增枚举值 AUD_ID_ENUM,和APP_STATUS_INDICATION_T
最后再按键点击事件——单击事件中使用接口函数调用即可
app_voice_report(APP_STATUS_INDICATION_TEST,0);

void app_ibrt_ui_test_key_io_event(APP_KEY_STATUS *status, void *param)
{
    TRACE(3,"%s %d,%d",__func__, status->code, status->event);
	uint8_t senddata[]={"abc"};
    switch(status->event)
    {
        case APP_KEY_EVENT_CLICK:
            if (status->code== APP_KEY_CODE_FN1)
            {
            TRACE(0,"FN1 onepress");
				//app_tws_set_side(EAR_SIDE_RIGHT);//改为左声道
				app_voice_report(APP_STATUS_INDICATION_TEST,0);
            }
            else if (status->code== APP_KEY_CODE_FN2)
            {
                app_ibrt_if_event_entry(IBRT_FETCH_OUT_EVENT);
            }
            else
            {
                app_ibrt_if_event_entry(IBRT_WEAR_UP_EVENT);
            }
            break;

PS 默认左声道/app_tws_set_side(EAR_SIDE_RIGHT)改为右声道
关键函数

app_ibrt_ui_test_key_io_event按键事件
app_voice_report音频播放接口
res_audio_data.hinclude音频文件(txt格式)
media_runtime_audio_prompt_update音频绑定

txt音频工具自存

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值