【杰理AC69xx】播歌时长按音量加键,最大音量播提示音后会播出一小段音乐的问题

4.【杰理AC69xx】播歌时长按音量加键,最大音量播提示音后会播出一小段音乐的问题

4.1 在公共事件处理函数中app_common.c,杰理默认写法。
    case KEY_VOL_UP:
        log_info("COMMON KEY_VOL_UP\n");
        if (!tone_get_status()) {
            int now_vol = app_audio_get_volume(APP_AUDIO_CURRENT_STATE);
                app_audio_volume_up(1);

            
            printf("common vol+: %d", now_vol);
        }
        if (app_audio_get_volume(APP_AUDIO_CURRENT_STATE) == app_audio_get_max_volume()) {
            if (tone_get_status() == 0) {
#if TCFG_MAX_VOL_PROMPT
                tone_play_by_path(tone_table[IDEX_TONE_MAX_VOL], 1);
#endif
            }
        }
        break;
4.2 将提示音播放函数改为回调方式。
    
void user_tone_play_end_callback(void *priv, int flag)
{
    int index = (int)priv;

    switch (index) {
    case KEY_REMOTE_EFF:
        // power_on_init();
        break;
    case KEY_VOL_UP:
        if(g_key_vol_flag)
        {
            key_to_tone_max_vol();
        }
        break;
    }
}

void key_to_tone_max_vol(void)
{
    tone_play_with_callback_by_name(tone_table[IDEX_TONE_MAX_VOL], 1, user_tone_play_end_callback, (void *)KEY_VOL_UP);
}

...
...
//按键事件提示音
case KEY_VOL_UP:
        if (g_key_vol_flag != 1) 
        {
            g_key_vol_flag = 1;     //设置长按标志,按键松开后将此变量置零
            tone_play_with_callback_by_name(tone_table[IDEX_TONE_MAX_VOL], 1, user_tone_play_end_callback, (void *)KEY_VOL_UP);
        }
...
...

ps:测试的效果,连续播提示音是流畅的。

这是本人的处理方法,如果各位有更好的方法,不妨分享出来,大家一起讨论。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值