Android 11 设置默认音量最大

不少项目都有这种类似的需求,网上相关文章也不少,但由于Android一直在升级,部分接口有了相应的变化,现就原码阅读后,大致修改如下:

frameworks/base/services/core/java/com/android/server/audio/AudioService.java

其中MAX_STREAM_VOLUME数组内定义了各场景的最大音量,这里需要设置为15,可对应设置内
seekbar的选取分段。
protected static int[] MAX_STREAM_VOLUME = new int[] {
        15,  // 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
        15  // STREAM_ASSISTANT
    };

之后在如下接口,会初始化设置各默认值,这里有些网上文章说是10最大,结合滑动条和实际试验,应该是15。   
public AudioService(Context context, AudioSystemAdapter audioSystem,
            SystemServerAdapter systemServer) {
             ....

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);//注释这里
int defaultCallVolume = SystemProperties.getInt("ro.config.vc_call_vol_default", 15);//设置15为最大
			 ....
int defaultMusicVolume = SystemProperties.getInt("ro.config.media_vol_default", -1);
		     ....
int defaultAlarmVolume = SystemProperties.getInt("ro.config.alarm_vol_default", -1);
		     ....
int defaultSystemVolume = SystemProperties.getInt("ro.config.system_vol_default", -1);

后面三条同理,设置为15即可;

**PS**:
不修改上面的话,也可以在源码build/目录下的buildinfo.sh脚本内(没有该脚本也可以加在别的初始化脚本中)添加:

echo "ro.config.vc_call_vol_default=15"
echo "ro.config.media_vol_default=15"
...
来设置这些ro属性的值,作为默认初始值。

2023年补充:如果想修改设置内铃声和通知的默认值,上面部分不包含。需要修改
frameworks/base/media/java/android/media/AudioSystem.java内DEFAULT_STREAM_VOLUME数组
STREAM_RING以及STREAM_NOTIFICATION的值,例如项目要求为13。

public static int[] DEFAULT_STREAM_VOLUME = new int[] {
        4,   // STREAM_VOICE_CALL
        15,  // STREAM_SYSTEM
        13,   // STREAM_RING
        8,   // STREAM_MUSIC
        8,   // STREAM_ALARM
        13,   // STREAM_NOTIFICATION
        7,   // STREAM_BLUETOOTH_SCO
        15,  // STREAM_SYSTEM_ENFORCED
        11,  // STREAM_DTMF
        11,  // STREAM_TTS
        11,  // STREAM_ACCESSIBILITY
        5, // STREAM_ASSISTANT

    };

另外还有一些平台会去改SettingProvider内的默认值,部分是不会生效的,具体可以去追代码分析,我这试过MTK平台一些参数并没有实际作用,这个从实用角度用上面的方法最合适,稳定能生效。
END.

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android中,如果需要在配对蓝牙耳机时设置默认音量,可以通过编写蓝牙连接和音量控制的相关代码来实现。通常可以使用BluetoothAdapter和BluetoothDevice类来实现蓝牙设备的配对和连接,同时可以使用AudioManager类来控制设备的音量设置。 首先,需要在AndroidManifest.xml中添加蓝牙和音频权限: ```xml <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> ``` 然后,可以在相应的Activity或Fragment中编写蓝牙连接和音量设置的代码。例如,在配对蓝牙设备时,可以使用以下代码: ```java BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); BluetoothDevice bluetoothDevice = bluetoothAdapter.getRemoteDevice("蓝牙设备地址"); // 连接蓝牙设备 bluetoothDevice.createBond(); // 设置蓝牙音量 AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, yourDefaultVolume, 0); ``` 其中,"蓝牙设备地址"应替换为实际蓝牙设备的地址,yourDefaultVolume为需要设置默认音量值。通过这样的方式,可以在配对蓝牙设备时设置默认音量。 需要注意的是,不同的Android版本可能会存在一些差异,而且一些蓝牙耳机可能有自己的默认音量设置,因此在实际开发中需要做好测试和兼容处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值