Rk3576 Andorid 14修改默认的通知音量,通话音量,闹钟音量等系统音量大小

Rk3576 Andorid 14 ,修改默认的通知音量,通话音量,闹钟音量等系统音量大小

问题描述

在Rk3576 Andorid 14 中之前修改/frameworks/base/media/java/android/media/AudioSystem.java的方法已经不生效了,需要重新分析问题。

代码位置

java 复制代码
/frameworks/base/media/java/android/media/AudioSystem.java
/frameworks/base/core/res/res/values/config.xml
frameworks/base/services/core/java/com/android/server/audio/AudioService.java
device/rockchip/rk3576/rk3576_u/rk3576_u.mk 

问题分析

通过查看AudioService.java的代码可以发现可以用过几个默认的属性来设置音量,但是只有三个通知音量,通话音量,和媒体音量。 最终追代码发现 闹钟音量和警告音量需要在frameworks/base/core/res/res/values/config.xml里面修改

java 复制代码
    // Initialize volume
    // Priority 1 - Android Property
    // Priority 2 - Audio Policy Service
    // Priority 3 - Default Value
    if (AudioProductStrategy.getAudioProductStrategies().size() > 0) {
        int numStreamTypes = AudioSystem.getNumStreamTypes();

        for (int streamType = numStreamTypes - 1; streamType >= 0; streamType--) {
            AudioAttributes attr =
                    AudioProductStrategy.getAudioAttributesForStrategyWithLegacyStreamType(
                            streamType);
            int maxVolume = AudioSystem.getMaxVolumeIndexForAttributes(attr);
            if (maxVolume != -1) {
                MAX_STREAM_VOLUME[streamType] = maxVolume;
            }
            int minVolume = AudioSystem.getMinVolumeIndexForAttributes(attr);
            if (minVolume != -1) {
                MIN_STREAM_VOLUME[streamType] = minVolume;
            }
        }
        if (mUseVolumeGroupAliases) {
            // Set all default to uninitialized.
            for (int stream = 0; stream < AudioSystem.DEFAULT_STREAM_VOLUME.length; stream++) {
                AudioSystem.DEFAULT_STREAM_VOLUME[stream] = UNSET_INDEX;
            }
        }
    }

    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] =
                (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 <= 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];
    }

    int minAssistantVolume = SystemProperties.getInt("ro.config.assistant_vol_min", -1);
    if (minAssistantVolume != -1) {
        MIN_STREAM_VOLUME[AudioSystem.STREAM_ASSISTANT] = minAssistantVolume;
    }

修改方案如下

java 复制代码
diff --git a/device/rockchip/rk3576/rk3576_u/rk3576_u.mk b/device/rockchip/rk3576/rk3576_u/rk3576_u.mk
index 7fcfba9cebb..86255aa70a5 100755
--- a/device/rockchip/rk3576/rk3576_u/rk3576_u.mk
+++ b/device/rockchip/rk3576/rk3576_u/rk3576_u.mk
@@ -92,13 +92,13 @@ PRODUCT_PROPERTY_OVERRIDES += persist.sys.rotation.einit-1=0
 
 #cdh add for default media volume 24.9.20
 #0~7 STREAM_SYSTEM
 //注意要查看frameworks/base/services/core/java/com/android/server/audio/AudioService.java里面设置的音量最大值,上面代码有判断不能小于最小值和大于最大值才生效
-PRODUCT_PROPERTY_OVERRIDES += ro.config.system_vol_default=6
+PRODUCT_PROPERTY_OVERRIDES += ro.config.system_vol_default=12
 #0~5 STREAM_VOICE_CALL
-PRODUCT_PROPERTY_OVERRIDES += ro.config.vc_call_vol_default=4
+PRODUCT_PROPERTY_OVERRIDES += ro.config.vc_call_vol_default=12
 #0~7 STREAM_ALARM
-PRODUCT_PROPERTY_OVERRIDES += ro.config.alarm_vol_default=6
+PRODUCT_PROPERTY_OVERRIDES += ro.config.alarm_vol_default=10
 #0~15 STREAM_MUSIC  
-PRODUCT_PROPERTY_OVERRIDES += ro.config.media_vol_default=12
+PRODUCT_PROPERTY_OVERRIDES += ro.config.media_vol_default=10
java 复制代码
--- a/frameworks/base/core/res/res/values/config.xml
+++ b/frameworks/base/core/res/res/values/config.xml
@@ -2168,13 +2168,13 @@
     <integer name="config_audio_notif_vol_steps">7</integer>
 
     <!-- The default volume for the notification stream -->
-    <integer name="config_audio_notif_vol_default">5</integer>
+    <integer name="config_audio_notif_vol_default">11</integer>
 
     <!-- The number of volume steps for the ring stream -->
     <integer name="config_audio_ring_vol_steps">7</integer>
 
     <!-- The default volume for the ring stream -->
-    <integer name="config_audio_ring_vol_default">5</integer>
+    <integer name="config_audio_ring_vol_default">11</integer>
 
     <!-- The default value for whether head tracking for

总结

尽管android版本不停地在迭代,但是大的框架没变,可以通过追溯代码找到可以修改的地方

每日赠言

空谈误国,实干兴邦

相关推荐
_李小白3 小时前
【Android FrameWork】延伸阅读:CursorWindow的作用
android
介一安全3 小时前
【Frida Android】实战篇14:非标准算法场景 Hook 教程
android·网络安全·逆向·安全性测试·frida
小虎牙0073 小时前
关于Android Compose架构的思考
android·前端·mvvm
2501_915909064 小时前
手机崩溃日志导出的工程化体系,从系统级诊断到应用行为分析的多工具协同方法
android·ios·智能手机·小程序·uni-app·iphone·webview
木风小助理4 小时前
MySQL内存监控深度解析与故障排查实践
android·adb
灰鲸广告联盟4 小时前
APP广告变现定制化解决方案,助力收益提升与用户体验平衡
android·flutter·搜索引擎·ux
帅得不敢出门4 小时前
精简Android SDK(AOSP)的git项目提高git指令速度
android·java·开发语言·git·elasticsearch
2501_937189235 小时前
神马 9.0 2025 最新版源码系统:安全加固 + 二次开发友好
android·源码·开源软件·源代码管理·机顶盒
モンキー・D・小菜鸡儿5 小时前
Android 中 StateFlow 的使用
android·kotlin