安卓系统如何开启和关闭插入耳机时弹出的保护听力对话框
2015-11-27 15:22
936 查看
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;
}
}
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;
}
}
相关文章推荐
- 用 startActivityForResult 方法启动 Activity 的简单使用
- static_cast与dynamic_cast转换
- C# string.Format谨慎使用
- linux驱动程序调试常用方法
- JavaSript模块规范 - AMD规范与CMD规范介绍
- Ios高级绘图之路径剪切和蒙版
- iOS轮询请求并在图表中动态显示
- 开发工具准备
- 资源文件包 Bundle
- C#时间戳的获取与转换方法
- Sql 语句添加字段、修改字段类型、默认值语法
- CGContext
- ui-router
- Android动画小结
- 关于maven管理下的spring工程路径的问题
- 创建 Windows 10 介质
- C++primer plus第六版课后编程练习答案7.1
- ASP网站维护1
- ipsec/racoon on ubuntu14.04
- 湖北互联网能赶上北上广吗?