android 默认按键音开关的值存储位置在
frameworks/base/packages/SettingsProvider/res/values/defaults.xml

<!-- Default for UI touch sounds enabled -->
<bool name="def_sound_effects_enabled">true</bool>

true 为打开; false 为关闭 。

查看 AN 8.0 源码,是在 frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java 中读取这个值,

 private void loadUISoundEffectsSettings(SQLiteStatement stmt) {loadBooleanSetting(stmt, Settings.System.DTMF_TONE_WHEN_DIALING,R.bool.def_dtmf_tones_enabled);loadBooleanSetting(stmt, Settings.System.SOUND_EFFECTS_ENABLED,R.bool.def_sound_effects_enabled);loadBooleanSetting(stmt, Settings.System.HAPTIC_FEEDBACK_ENABLED,R.bool.def_haptic_feedback);loadIntegerSetting(stmt, Settings.System.LOCKSCREEN_SOUNDS_ENABLED,R.integer.def_lockscreen_sounds_enabled);}

frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java 中根据该值来判断是否加载按键音,

public void restoreValue(Context context, ContentResolver cr, ContentValues contentValues,Uri destination, String name, String value) {// Will we need a post-restore broadcast for this element?String oldValue = null;boolean sendBroadcast = false;final SettingsLookup table;if (destination.equals(Settings.Secure.CONTENT_URI)) {table = sSecureLookup;} else if (destination.equals(Settings.System.CONTENT_URI)) {table = sSystemLookup;} else { /* must be GLOBAL; this was preflighted by the caller */table = sGlobalLookup;}if (sBroadcastOnRestore.contains(name)) {// TODO: http://b/22388012oldValue = table.lookup(cr, name, UserHandle.USER_SYSTEM);sendBroadcast = true;}try {if (Settings.System.SCREEN_BRIGHTNESS.equals(name)) {setBrightness(Integer.parseInt(value));// fall through to the ordinary write to settings} else if (Settings.System.SOUND_EFFECTS_ENABLED.equals(name)) {setSoundEffects(Integer.parseInt(value) == 1);// fall through to the ordinary write to settings} else if (Settings.Secure.LOCATION_PROVIDERS_ALLOWED.equals(name)) {setGpsLocation(value);return;} else if (Settings.Secure.BACKUP_AUTO_RESTORE.equals(name)) {setAutoRestore(Integer.parseInt(value) == 1);} else if (isAlreadyConfiguredCriticalAccessibilitySetting(name)) {return;} else if (Settings.System.RINGTONE.equals(name)|| Settings.System.NOTIFICATION_SOUND.equals(name)) {setRingtone(name, value);return;}// Default case: write the restored value to settingscontentValues.clear();contentValues.put(Settings.NameValueTable.NAME, name);contentValues.put(Settings.NameValueTable.VALUE, value);cr.insert(destination, contentValues);} catch (Exception e) {// If we fail to apply the setting, by definition nothing happenedsendBroadcast = false;} finally {// If this was an element of interest, send the "we just restored it"// broadcast with the historical value now that the new value has// been committed and observers kicked off.if (sendBroadcast) {Intent intent = new Intent(Intent.ACTION_SETTING_RESTORED).setPackage("android").addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY).putExtra(Intent.EXTRA_SETTING_NAME, name).putExtra(Intent.EXTRA_SETTING_NEW_VALUE, value).putExtra(Intent.EXTRA_SETTING_PREVIOUS_VALUE, oldValue);context.sendBroadcastAsUser(intent, UserHandle.SYSTEM, null);}}
}

最后调用 AudioManager 接口实现按键音效果,

private AudioManager mAudioManager;
mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);private void setSoundEffects(boolean enable) {if (enable) {mAudioManager.loadSoundEffects();} else {mAudioManager.unloadSoundEffects();}
}

Android 默认按键音开关相关推荐

  1. Android 修改按键音

    一.按键音调用流程 摘要:按键音播放的总体逻辑是先找到系统中按键音的资源,然后调用SoundPool.load让系统加载音频资源,加载成功后在onLoadComplete回调中会返回一个非0的soun ...

  2. android 系统按键音framework流程源码解析

    android 系统按键音framework源码解析(基于android 9.0) 今天来看下android中按键音的处理,首先看下按键是在那里开启的.然后再看看当按下按键后一个按键音是怎么播放出来的 ...

  3. Android P 按键音分析

    按键音分析 触摸按键音流程 第一部分 第二部分 AudioService.java 物理按键音流程 触摸按键音流程 前面简要的流程我们就不分析了,画了一下简要的流程图,由于我分析的源码具有特殊性,分为 ...

  4. android 默认开关,android默认设置的开关

    true                                                      自动适应时间true                              重力 ...

  5. Android按键音的默认值修改流程

    Android 默认按键音开关_南国樗里疾的博客-CSDN博客_android 按键音接口 android setting之Settings.system设置_知不足而奋进的博客-CSDN博客_and ...

  6. Android按键音无效

    今天遇到Android系统按键音的问题.在Android TV中,可以通过设置-声音-按键音来设置按键音开或者关.当打开按键音时,在Android TV的各个场景中通过遥控器操作上下左右键的时候都会有 ...

  7. Android9 framework 按键音调用流程及自定义按键音(替换原生按键音)和调节按键音音量的方法

    一.按键音调用流程 摘要:按键音播放的总体逻辑是先找到系统中按键音的资源,然后调用SoundPool.load让系统加载音频资源,加载成功后在onLoadComplete回调中会返回一个非0的soun ...

  8. 苹果11键盘按键音设置方法(苹果11如何设置按键音)

    如果你不喜欢在使用苹果11时有按键音,请通过以下方法进行设置: 进入苹果iPhone11的"设置"-"声音与触感"选项.在"声音"栏中点击& ...

  9. Android 8.1 系统按键音

    最近接到的任务:实现手机键盘按键音功能 可是网上查到的资料太少,可能是现在没什么带键盘的Android设备了 一开始我以为系统会做好这些东西,是需要找到一个开关,写一个默认值就行,然鹅事情并没有这么简 ...

最新文章

  1. 两个数组的交集 II
  2. linux之创建临时文件的方法
  3. iOS - 使用 SQLite 数据库实现数据持久化
  4. Script:partition table into rowid extent chunks
  5. 聊聊flink Table的ScalarFunction
  6. 响应式设计(Response Web Design)浅谈
  7. Magento安装后无法访问
  8. 收藏 | PyTorch深度学习模型训练加速指南2021
  9. 我只是bug的搬运工之jsp 编辑预览时样式可以显示出来,而在浏览器浏览时无法显示出来!
  10. k8s 您的连接不是私密连接_直插式声测管是不是承插式?如何连接?
  11. ArcFace: AdditiveAngularMarginLossforDeepFaceRecognition
  12. LabWindows/CVI入门之第二章:GUI开发
  13. 计算机出现假桌面怎么解决办法,win10专业版系统桌面经常假死解决办法
  14. Win10打开“此电脑”读绿条,显示“正在处理”
  15. 谈谈未来 APP 产品设计的革命性趋势
  16. 【kronecker积rao积,及其它矩阵运算的一些性质】
  17. 乙腈和水共沸_常用有机溶剂共沸点
  18. 常见的web服务器有哪些
  19. dedecms后台报错“Notice: Use of undefined constant MYSQL_ASSOC - assumed ‘MYSQL_ASSOC‘ ”的解决方法
  20. ES搜索结果中各个字段介绍,hits,took,timeout

热门文章

  1. 这是美国MarTech最大的一家独立公司:HubSpot
  2. 曾经被你亲手敲烂过的机械键盘
  3. FLASH AS3.0 停止播放音乐
  4. Vc++ - mfc - 象棋(末)- 网络象棋
  5. overleaf编辑latex使用中文字体的方法
  6. 微软pop3服务器,真算孤陋寡闻。。微软旗下的邮箱都支持POP3收发邮件了
  7. 搜索引擎优化(SEO)解决方案
  8. 校招前端二面常考react面试题(边面边更)
  9. js 监听手机端键盘弹出和收起事件
  10. js 手机上input表单点击不弹出软键盘,jq禁用手机键盘