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

每日赠言

空谈误国,实干兴邦

相关推荐
麻瓜生活睁不开眼8 小时前
Android16修改全局桌面视图边框四直角显示为弧边圆角
android·java·深度学习
AFinalStone11 小时前
Android 7系统休眠唤醒(六)唤醒全链路
android·电源管理·休眠唤醒
雨白12 小时前
深入理解 Kotlin 协程 (九):互通有无,解构 Channel 缓冲策略与底层无锁机制
android·kotlin
灯塔@kuaidao13 小时前
平台交叉编译名词解释与基础流程
android
__Witheart__14 小时前
3568 Android otg模式下adb热拔插不识别
android·adb·rockchip
明天…ling16 小时前
Upload-Labs (Pass1-Pass21) 完整通关思路与源码分析
android·网络安全·渗透测试·burpsuite·upload-labs·文件上传绕过·靶场复现
__Witheart__16 小时前
3568 Android ntp校时使用
android·rockchip
wddptwd2817 小时前
android studio 报错怎么处理 java.lang.NullPointerException
android·java·android studio
美狐美颜SDK开放平台18 小时前
直播APP开发,美颜SDK和相机SDK有什么区别?
android·深度学习·数码相机·ios·直播美颜sdk·视频美颜sdk
唐诺19 小时前
Android Open Accessory (AOA) 协议完全解析
android·usb·aoa