AudioManager.java->
AudioService.java(调节音量)->
AudioSystem.java->
android_media_AudioSystem.cpp->
AudioSystem.cpp->
AudioPolicyService.cpp->
Audio HAL
1) VolumeStreamState: 保存音量值
2) Default和MAX值
#### AudioManager.java
/** @hide Default volume index values for audio streams */ public static final int[] DEFAULT_STREAM_VOLUME = new int[] { 4, // STREAM_VOICE_CALL 7, // STREAM_SYSTEM 5, // STREAM_RING 11, // STREAM_MUSIC 6, // STREAM_ALARM 5, // STREAM_NOTIFICATION 7, // STREAM_BLUETOOTH_SCO 7, // STREAM_SYSTEM_ENFORCED 11, // STREAM_DTMF 11 // STREAM_TTS };
#### AudioService.java
/** @hide Maximum volume index values for audio streams */ private int[] MAX_STREAM_VOLUME = new int[] { 5, // STREAM_VOICE_CALL 7, // STREAM_SYSTEM 7, // STREAM_RING 15, // STREAM_MUSIC 7, // STREAM_ALARM 7, // STREAM_NOTIFICATION 15, // STREAM_BLUETOOTH_SCO 7, // STREAM_SYSTEM_ENFORCED 15, // STREAM_DTMF 15 // STREAM_TTS };
3) 流名字
Settings.java
/** * The mapping of stream type (integer) to its setting. */ public static final String[] VOLUME_SETTINGS = { VOLUME_VOICE, VOLUME_SYSTEM, VOLUME_RING, VOLUME_MUSIC, VOLUME_ALARM, VOLUME_NOTIFICATION, VOLUME_BLUETOOTH_SCO }; public static final String MODE_RINGER = "mode_ringer"; public static final String MODE_RINGER_STREAMS_AFFECTED = "mode_ringer_streams_affected"; public static final String MUTE_STREAMS_AFFECTED = "mute_streams_affected"; public static final String VIBRATE_ON = "vibrate_on"; public static final String VOLUME_RING = "volume_ring"; public static final String VOLUME_SYSTEM = "volume_system"; public static final String VOLUME_VOICE = "volume_voice"; /** * Music/media/gaming volume. This is used internally, changing this * value will not change the volume. See AudioManager. */ public static final String VOLUME_MUSIC = "volume_music"; public static final String VOLUME_ALARM = "volume_alarm"; public static final String VOLUME_NOTIFICATION = "volume_notification"; public static final String VOLUME_BLUETOOTH_SCO = "volume_bluetooth_sco";