AC696N开发历程分享——music音量控制与同步

摘要

AC696N SDK 默认提示音跟随系统音量变化。若需将提示音固定为特定音量(如最大音量播放警报音),需通过三步代码修改实现:关闭 music 音量宏、配置固定音量值、防止静音状态无声音。

一、默认行为与改造需求

AC696N 的提示音默认跟随系统音量变化------手机或设备调高音量,提示音随之增大。这种设计在多数场景下是合理的,但在某些产品需求中并不适用。例如,低电量警报或来电提示音需要以固定高音量播放,确保用户在任何音量设置下都能听到。此时就需要将提示音从"跟随系统"改为"固定音量"。

二、三步改造方案

第一步:关闭提示音的 music 音量宏

提示音默认走 music 音量通道,会跟随系统音量变化。需要找到 board_ac696x_demo_cfg.h 文件,将与提示音音量相关的宏定义关闭,使其脱离 music 音量的控制范围。

第二步:在 audio_config.h 中设置固定音量

打开 audio_config.h,找到 SYS_DEFAULT_TONE_VOL 宏定义:

c

复制代码
#define SYS_DEFAULT_TONE_VOL 20  // 固定提示音音量

该值范围取决于 SYS_MAX_VOL 的定义。若希望提示音以最大音量播放,可将该值设为 SYS_MAX_VOL。AC696N 的 app_audio_set_volume 函数中,APP_AUDIO_STATE_WTONE 分支会直接使用此宏作为提示音音量。

第三步:防止音量为 0 时提示音无声

当系统音量为 0 时,提示音可能因音量通道被静音而无法播放。需要在 app_audio_set_volume 函数的 APP_AUDIO_STATE_WTONE 分支中,增加音量下限判断:

c

复制代码
if (app_var.wtone_volume < 5) {
    app_var.wtone_volume = 5;
}

确保即使系统音量为 0,提示音仍能以最低可用音量播放,避免关键提示被遗漏。

三、补充:音量同步机制

若需要实现手机与设备之间的音量同步,AC696N 依赖两张映射表:vol_sys_tab(手机音量→设备音量)和 vol_sync_tab(设备音量→手机音量)。修改这两张表可自定义音量同步曲线。首次连接固定音量、通话音量独立、双向同步等需求均可通过配置宏快速实现。

总结

AC696N 提示音音量控制的核心逻辑集中在三个位置:board_ac696x_demo_cfg.h(关闭宏)、audio_config.h(设置固定值)、app_audio.c(防无声处理)。三步走完,即可让提示音脱离系统音量独立控制。音量同步则依赖两张映射表加若干配置宏。掌握这几处关键代码,音量相关的定制需求基本都能覆盖。