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:测试的效果,连续播提示音是流畅的。
这是本人的处理方法,如果各位有更好的方法,不妨分享出来,大家一起讨论。