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";