Android 默认音量大小控制总结

发布时间:2026/7/6 3:18:11
Android 默认音量大小控制总结 Android 默认音量大小控制总结文章目录Android 默认音量大小控制总结一、前言二、分析1、原生prop音量值2、 AudioService\.java音量档位、默认音量读取核心文件3、AudioSystem\.java基础音量数组定义三、其他1、小结2、适配修改后本机 dumpsys audio 实测结果3、常用调试音量 adb命令一、前言Android ROM定制开发中开机默认媒体音量、扬声器/蓝牙独立音量、音量档位适配是高频调试需求。原生Android默认音量档位为0-15档多数厂商/工控项目会硬编码修改为0-100百分比档位。本文简单说明音量默认数值的控制。二、分析1、原生prop音量值Andorid 系统原生prop默认音量ro.config.media_vol_steps //默认最大值如果没有设置就是15 ro.config.media_vol_default //默认值如果没有设置就是52、 AudioService.java音量档位、默认音量读取核心文件路径frameworks/base/services/core/java/com/android/server/audio/AudioService.java定义全局最大音量数组MAX_STREAM_VOLUME本机此处硬编码STREAM_MUSIC最大值为100/** Maximum volume index values for audio streams */ protected static int[] MAX_STREAM_VOLUME new int[] { 5, // STREAM_VOICE_CALL 7, // STREAM_SYSTEM 7, // STREAM_RING // configured by config_audio_ring_vol_steps 15, // STREAM_MUSIC //核心是这个pro没修改就是15 7, // STREAM_ALARM 7, // STREAM_NOTIFICATION // configured by config_audio_notif_vol_steps 15, // STREAM_BLUETOOTH_SCO 7, // STREAM_SYSTEM_ENFORCED 15, // STREAM_DTMF 15, // STREAM_TTS 15, // STREAM_ACCESSIBILITY 15 // STREAM_ASSISTANT };上面STREAM_MUSIC 的值就是默认的最大值如果没有prop属性定义的话如果prop属性定义了那么是优先读取prop属性值的。还有其他类型的声音需要的也可以设置。3、AudioSystem.java基础音量数组定义路径frameworks/base/media/java/android/media/AudioSystem.java/** hide */ public static int[] DEFAULT_STREAM_VOLUME new int[] { 4, // STREAM_VOICE_CALL 7, // STREAM_SYSTEM 5, // STREAM_RING // configured in AudioService by config_audio_notif_vol_default 5, // STREAM_MUSIC //核心是这个默认大小值pro没修改就是5 6, // STREAM_ALARM 5, // STREAM_NOTIFICATION // configured in AudioService by config_audio_ring_vol_default 7, // STREAM_BLUETOOTH_SCO 7, // STREAM_SYSTEM_ENFORCED 5, // STREAM_DTMF 5, // STREAM_TTS 5, // STREAM_ACCESSIBILITY 5, // STREAM_ASSISTANT };上面STREAM_MUSIC 的值就是默认大小值如果没有prop属性定义的话如果prop属性定义了那么是优先读取prop属性值的。要么修改上面的两个prop属性设置默认大小要么修改两个Java类修改最大值和默认值。优先prop值然后是Java的值。具体读取代码逻辑可以看AudioService.java。三、其他1、小结设置音量大小可以修改prop默认值也可以修改Java代码定义的值。优先选择修改prop的值因为这个比较简单在某个mk里面定义这两个值就可以了。2、适配修改后本机 dumpsys audio 实测结果STREAM_MUSIC Min:0Max:100streamVolume:50 Current:2(speaker):50,400(hdmi):50,40000000(default):50Devices: speaker(2)Volume Group: AUDIO_STREAM_MUSIC​ 1媒体音量STREAM_MUSIC最大档位固定100档百分比模式原生0-15档位已被框架硬编码修改​ 250%音量对应数值固定填50而非原生的7/8​ 3扬声器、HDMI、默认音频通路共用同一套媒体音量档位。3、常用调试音量 adb命令# 1. 查看媒体音量最大/当前档位dumpsys audio|grep-A6STREAM_MUSIC# 2. 查看出厂默认媒体音量属性getprop ro.config.media_vol_default# 3. 查看扬声器持久化音量settings get system volume_music_speaker# 4. 查看蓝牙绝对音量状态需要rootsugetprop persist.bluetooth.disableabsvol# 5. 临时修改默认媒体音量调试用重启失效setprop ro.config.media_vol_default50