Android 音量调节(三)Android10 系统音量设置和修改

马肤
这是懒羊羊

Android系统拥有多种声音属性,包括有多媒体、通话、通知等声音属性,这些声音属性分别含有自己默认音量、最大音量和最小音量属性。我们看下Android10系统源码对此的定义和设置。

默认音量

音量设置和定义都在frameworks/base/media/java/android/media/AudioSystem.java中。具体如下:

    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

    };

 最大音量和最小音量

系统声音的最大音量和最小音量则定义在
frameworks/base/services/core/java/com/android/server/audio/AudioService.java 中,具体如下:

   /** Maximum volume index values for audio streams */

    protected static 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

        15  // STREAM_ACCESSIBILITY

    };

    /** Minimum volume index values for audio streams */

    protected static int[] MIN_STREAM_VOLUME = new int[] {

        1,  // STREAM_VOICE_CALL

        0,  // STREAM_SYSTEM

        0,  // STREAM_RING

        0,  // STREAM_MUSIC

        1,  // STREAM_ALARM

        0,  // STREAM_NOTIFICATION

        0,  // STREAM_BLUETOOTH_SCO

        0,  // STREAM_SYSTEM_ENFORCED

        0,  // STREAM_DTMF

        0,  // STREAM_TTS

        1   // STREAM_ACCESSIBILITY

    };

  音量值的修改

通过上面的介绍,虽然我们知道系统声音的三种音量值的定义位置,但是声音属性 默认音量和最大音量最好不要在这里进行修改,否则你的修改可能会是无效。你可能会问为什么?

因为这两种音量属性被定义之后,还会在 AudioService.java 的构造方法中进行初始化。在此期间,之前定义的音量值可能会被覆盖掉。

 

 // framework/base/services/core/java/com/android/server/audio/AudioService.java
/** @hide */
    public AudioService(Context context) {     
       //.....省略部分代码
        int maxCallVolume = SystemProperties.getInt("ro.config.vc_call_vol_steps", -1);
        if (maxCallVolume != -1) {
            MAX_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL] = maxCallVolume;
        }
        int defaultCallVolume = SystemProperties.getInt("ro.config.vc_call_vol_default", -1);
        if (defaultCallVolume != -1 &&
                defaultCallVolume = MIN_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL]) {
            AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL] = defaultCallVolume;
        } else {
            AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL] =
                    (MAX_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL] * 3) / 4;
        }
        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 = MIN_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;
            }
        }
        int maxAlarmVolume = SystemProperties.getInt("ro.config.alarm_vol_steps", -1);
        if (maxAlarmVolume != -1) {
            MAX_STREAM_VOLUME[AudioSystem.STREAM_ALARM] = maxAlarmVolume;
        }
        int defaultAlarmVolume = SystemProperties.getInt("ro.config.alarm_vol_default", -1);
        if (defaultAlarmVolume != -1 &&
                defaultAlarmVolume 

文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复:表情:
评论列表 (暂无评论,0人围观)

还没有评论,来说两句吧...

目录[+]

取消
微信二维码
微信二维码
支付宝二维码