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版本不停地在迭代,但是大的框架没变,可以通过追溯代码找到可以修改的地方

每日赠言

空谈误国,实干兴邦

相关推荐
bst@微胖子12 小时前
CrewAI+FastAPI实现多Agent协作完成软件编码项目
android·fastapi
Android-Flutter12 小时前
Compose - Scaffold使用
android·kotlin
2501_9462447813 小时前
Flutter & OpenHarmony OA系统图片预览组件开发指南
android·javascript·flutter
极客小云13 小时前
【IEEE Transactions系列期刊全览:计算机领域核心期刊深度解析】
android·论文阅读·python
wanghowie13 小时前
02.01 Spring Boot|自动配置机制深度解析
android·spring boot·后端
一起搞IT吧13 小时前
三方相机问题分析十一:【手电筒回调异常】手电筒打开3档时,达到档位控制温度,手电筒二级界面中档位为0
android·图像处理·数码相机
2501_9240641113 小时前
2025年移动应用渗透测试流程方案及iOS安卓测试方法对比
android·ios
千里马学框架14 小时前
安卓14-16车机手机仿小米su7三分屏实战项目专题
android·智能手机·framework·分屏·车载·小米汽车·三分屏
走在路上的菜鸟14 小时前
Android学Flutter学习笔记 第二节 Android视角认知Flutter(resource,生命周期,layout)
android·学习·flutter
zh_xuan14 小时前
kotlin的常见空检查
android·开发语言·kotlin