Android8.1修改默认音量大小的方法

目前网上有一些关于修改系统默认音量大小的方法,比如修改AudioSystem.java的DEFAULT_STREAM_VOLUME:

public static int[] DEFAULT_STREAM_VOLUME = new int[] {
        4,  // STREAM_VOICE_CALL
        7,  // STREAM_SYSTEM
        5,  // STREAM_RING
        5, // STREAM_MUSIC
        6,  // STREAM_ALARM
        5,  // STREAM_NOTIFICATION
        7,  // STREAM_BLUETOOTH_SCO
        7,  // STREAM_SYSTEM_ENFORCED
        5, // STREAM_DTMF
        5, // STREAM_TTS
        5, // STREAM_ACCESSIBILITY
    };

但是我试过这种方式,发现默认音量大小并没有改变。分析代码发现AudioService.java文件的AudioService构造函数中,对默认音量值进行了强行赋值。

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;
        } else {
            if (isPlatformTelevision()) {
                AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] =
                        MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] / 4;
            } else {
                AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] =
                        MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] / 3;
            }
        }

如果定义了ro.config.media_vol_default的属性值,则默认音量值会被设置为该属性值的大小。如果没有定义该属性值,则默认音量值会被强制设置为最大音量值的1/4(手机模式)或者1/3(其他模式)。

因此,想修改默认的media音量大小,有两种方法可以修改。一种方法是定义ro.config.media_vol_default的系统属性值,这种方法不用修改源文件,只需在配置文件中增加一句即可;另一种方法是,将AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] 强制地赋值为你想设置的音量大小。

你可能感兴趣的:(音频)