在之前的一些android版本中,修改默认音量是修改:

path:frameworks\base\media\java\android\media\AudioService.java

    /// M: modify the default stream volume @{    public static int[] DEFAULT_STREAM_VOLUME = new int[] {        4,   // STREAM_VOICE_CALL        8,  // STREAM_SYSTEM        8,   // STREAM_RING        8,   // STREAM_MUSIC        8,   // STREAM_ALARM        8,   // STREAM_NOTIFICATION        8,   // STREAM_BLUETOOTH_SCO        8,  // STREAM_SYSTEM_ENFORCED        8,  // STREAM_DTMF        8,  // STREAM_TTS        8  // STREAM_ACCESSIBILITY    };    /// @}

当然此文件中也定义了Volume的最大值和最小值:

   /** Maximum volume index values for audio streams */    /// M: Modify the max stream volume @{    protected static int[] MAX_STREAM_VOLUME = new int[] {        7,   // STREAM_VOICE_CALL        15,  // STREAM_SYSTEM        15,  // STREAM_RING        15,  // STREAM_MUSIC        15,  // STREAM_ALARM        15,  // STREAM_NOTIFICATION        15,  // STREAM_BLUETOOTH_SCO        15,  // 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    };

OK  回归主题,在android Q版本中DEFAULT_STREAM_VOLUME数组的定义是在AudioSystem.java文件中,但是修改这个数组中的值发现还是无法正确处理为自己想要的默认值。

发现初始化默认值是在AudioService.java的AudioService()方法中:

        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 <= MAX_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL] &&                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] =                    (maxCallVolume * 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 <= MAX_STREAM_VOLUME[AudioSystem.STREAM_MUSIC] &&                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 <= MAX_STREAM_VOLUME[AudioSystem.STREAM_ALARM]) {            AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_ALARM] = defaultAlarmVolume;        } else {            // Default is 6 out of 7 (default maximum), so scale accordingly.            AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_ALARM] =                        6 * MAX_STREAM_VOLUME[AudioSystem.STREAM_ALARM] / 7;        }        int maxSystemVolume = SystemProperties.getInt("ro.config.system_vol_steps", -1);        if (maxSystemVolume != -1) {            MAX_STREAM_VOLUME[AudioSystem.STREAM_SYSTEM] = maxSystemVolume;        }        int defaultSystemVolume = SystemProperties.getInt("ro.config.system_vol_default", -1);        if (defaultSystemVolume != -1 &&                defaultSystemVolume <= MAX_STREAM_VOLUME[AudioSystem.STREAM_SYSTEM]) {            AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_SYSTEM] = defaultSystemVolume;        } else {            // Default is to use maximum.            AudioSystem.DEFAULT_STREAM_VOLUME[AudioSystem.STREAM_SYSTEM] =                        MAX_STREAM_VOLUME[AudioSystem.STREAM_SYSTEM];        }

发现这些初始化的值都是由一些ro.config.属性控制的,所以要修改默认音量大小,可以直接客制化ro.config.这些属性值就OK。

更多相关文章

  1. Android中调用startActivity结果导致:java.lang.RuntimeException
  2. Android(安卓)8.1 (O) Launcher3 方面修改
  3. Android(安卓)ril移植-6410开发板SIM300模块
  4. Android(安卓)Studio 更新时提示connection failed的解決方法
  5. react native 修改Picker样式Android
  6. Android自定义对话框列表
  7. Android(安卓)Studio 配置
  8. 【高通平台】安卓平板,使用QQ 视频通话,视频旋转90度问题修改
  9. 修改 ActivityManagerService.java 去掉 android 系统报错和程序

随机推荐

  1. Android(安卓)系统启动流程解析-从开机到
  2. Android(安卓)studio 使用原生自带Downlo
  3. Android(安卓)内存查看常用命令
  4. Android(安卓)app如何正确读写系统sys设
  5. 字节跳动屏幕适配方案解读
  6. Android(安卓)wifi 信号强度单位 dbm
  7. Android屏幕录制并转换gif
  8. android校园二手市场客户端+服务端源代码
  9. Android通过 SharedPreference 实现用户
  10. android widget 开发实例 : 桌面便签程序