安卓系统如何开启和关闭插入耳机时弹出的保护听力对话框

Android系统在4.2及以后的版本里面增加了耳机音量保护功能,当插入耳机且音量增大到一定级别时,会弹出“音量过大会伤害听力”的对话框,如果不想在增加音量时弹出此对话框,可以在代码里面做如下修改:

1. 修改~/framework/base/core/res/res/values/config.xml中config_safe_media_volume_enabled的值为false;


2. 调用AudioService.disableSafeMediaVolume()关闭对话框,调用setSafeMediaVolumeEnabled()打开对话框;


3. 直接在AudioService.java源码里面将mSafeMediaVolumeState设置为以下值;

SAFE_MEDIA_VOLUME_DISABLED关闭对话框

SAFE_MEDIA_VOLUME_ACTIVE打开对话框


4. 直接修改checkSafeMediaVolume()这个函数,改为如下:

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

改为

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


你可能感兴趣的:(音频,Android项目实战经验)