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

Posted 布列瑟农的秋天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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] 强制地赋值为你想设置的音量大小。

以上是关于Android8.1修改默认音量大小的方法的主要内容,如果未能解决你的问题,请参考以下文章

C# Win7如何获得系统主音量 只需知道主音大小 无需修改

Android 8.0 修改默认媒体音量

安卓修改默认音量

Android 6.0 修改默认媒体音量

ffmpeg 统一音量/调整音量

Android6.0源码开发之修改默认音量default及max和min