插入耳机后去除调大音量安全提醒对话框。更改默认安全最大音量(插上耳机后)。更改默认各类型音量。

文章详细介绍了如何在Android系统中设置和控制安全媒体音量,包括在config.xml中配置安全音量指数和启用状态,AudioService.java中的逻辑处理,以及VolumeDialogImpl.java中显示安全警告的代码段。当默认最高音量被视为安全时,系统不会弹出警告对话框。
摘要由CSDN通过智能技术生成

S版本为例

方法一:

frameworks/base / core/res/res/values/config.xml

<integer name="config_safe_media_volume_index">10</integer>
<bool name="config_safe_media_volume_enabled">true</bool>

这个原理是在

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

安全弹框是在

private void onConfigureSafeVolume(booleanforce, String caller) {

boolean safeMediaVolumeEnabled =
                       SystemProperties.getBoolean("audio.safemedia.force", false)
                        ||mContext.getResources().getBoolean(
                                com.android.internal.R.bool.config_safe_media_volume_enabled);

最大安全音量是在构造方法里做的默认值, publicAudioService(Context context) {

mSafeMediaVolumeIndex =mContext.getResources().getInteger(
               com.android.internal.R.integer.config_safe_media_volume_index) * 10;

更改默认音量也可以在这里改,(当然在AudioSystem里面也有默认数组值。)

比如

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;
       }
 

有个判断是否是超过安全音量的 方法

private boolean checkSafeMediaVolume(intstreamType, int index, int device) {
       synchronized (mSafeMediaVolumeStateLock) {
           if ((mSafeMediaVolumeState ==SAFE_MEDIA_VOLUME_ACTIVE) &&
                   (mStreamVolumeAlias[streamType] == AudioSystem.STREAM_MUSIC) &&
                    ((device &mSafeMediaVolumeDevices) != 0) &&
                    (index >safeMediaVolumeIndex(device))) {
                return false;
           }
           return true;
       }
    }

所以说其实默认最高音量就是安全音量的话,其实不需要false也不会弹框

方法二:

vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java

private void showSafetyWarningH(int flags){
       if ((flags & (AudioManager.FLAG_SHOW_UI |AudioManager.FLAG_SHOW_UI_WARNINGS)) != 0
                || mShowing) {
           synchronized (mSafetyWarningLock) {
                if (mSafetyWarning != null) {
                    return;
                }
                mSafetyWarning = newSafetyWarningDialog(mContext, mController.getAudioManager()) {
                    @Override
                    protected void cleanUp() {
                        synchronized(mSafetyWarningLock) {
                            mSafetyWarning =null;
                        }
                        recheckH(null);
                    }
                };
                /*/tyd/yantao 20230228 remove volumeSafetyWarning dialog
                mSafetyWarning.show();
                //*/
           }
           recheckH(null);
       }
       rescheduleTimeoutH();
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
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版本可能会存在一些差异,而且一些蓝牙耳机可能有自己的默认音量设置,因此在实际开发中需要做好测试和兼容处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Youth King

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值