一开始做了最简单的修改 在:AudioSystem.java
public static int[] DEFAULT_STREAM_VOLUME = new int[] {
3, // STREAM_VOICE_CALL
4, // STREAM_SYSTEM
4, // STREAM_RING
10, // STREAM_MUSIC
4, // STREAM_ALARM
4, // STREAM_NOTIFICATION
10, // STREAM_BLUETOOTH_SCO
4, // STREAM_SYSTEM_ENFORCED
10, // STREAM_DTMF
10, // STREAM_TTS
10, // STREAM_ACCESSIBILITY
};
注意!
修改完成之后,刷机发现修改的多媒体音量没有达到设置的10这个值
又从源码分析,并参考网上大神们的博客找到系统加载默认音量逻辑的代码位置在 AudioService.java
直接看下面修改的代码把 注释掉的为系统原先的,注释下面是我自己加的,默认给10
int maxMusicVolume = SystemProperties.getInt("ro.config.media_vol_steps", -1);
if (maxMusicVolume != -1) {
MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] = maxMusicVolume;
}
int defaultMusicVolume = SystemProperties.getInt("ro.config.media_vol_default", -1);
if (defaultMusicVolume != -1 &&
defaultMusicVolume <= MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC]) {
//AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] = defaultMusicVolume;
AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] = 10;
} else {
if (isPlatformTelevision()) {
/**AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] =
MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] / 4;*/
AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] = 10;
} else {
AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] =
//MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] / 3;
10;
}