最近在项目中碰到需要设置音效开关的需求。

关于音效开发的问题,都是建立在手机系统设置中,没有静音,且打开了选择操作音的前提下。

1.系统自带的点击声音(通过设置View.playSoundEffect ()实现)

看源码请参考http://blog.csdn.net/jdsjlzx/article/details/17382455

在项目所以的Activity的抽象基类BaseActivity中复写findViewById方法,通过配置文件记录音效开关

         /*** 重写findViewById()方法,设置控件是否有按键声音* */@Overridepublic View findViewById(int id) {// TODO Auto-generated method stubView v = super.findViewById(id);if (v != null) {if (mAppConfig.soundOn()) {v.setSoundEffectsEnabled(true);} else {v.setSoundEffectsEnabled(false);}}return v;}

playSoundEffect方法对包括TextView,Button,GridView的item点击,ListView等等控件在内都是适用的,这个可以根据View的源码看到,但是我在项目中碰到的例如RadioGroup,就只能通过以下代码实现点击切换时的音效了

(RadioGroup)rgTab.setOnCheckedChangeListener(onCheckedChangeListener);
private OnCheckedChangeListener onCheckedChangeListener = new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {if(new AppConfig(MainActivity.this).soundOn()){rgTab.setSoundEffectsEnabled(true);rgTab.playSoundEffect(SoundEffectConstants.CLICK);//按键音效}switch(checkedId){case R.id.rb_1:break;case R.id.rb_2:break;case R.id.rb_3:break;}}};

另外,碰到GridView和ListView中item下绑定的控件,必须也得添加音效的设置了,这点不能忘记。

总结:建议在项目中尽量使用自定义的控件,这样不必每处都修改了

2.通过SoundPool播放自定义音效

参考http://blog.csdn.net/qq435757399/article/details/8010015

里面说的已经很详细了,我之前的测试结果是,好像会先播放系统自带的点击音效,再接着播放我们自定义的音效,应该可以通过在xml布局中为控件添加android:soundEffectsEnabled="false"来避免吧

欢迎大家指出不当之处!!

android:为你的app设置音效相关推荐

  1. Android自定义壁纸预览界面,Android仿主流壁纸App设置界面

    摘要:项目中做到在线壁纸应用,在壁纸设置界面也是参考了主流壁纸应用的做法,例如小米,vivo,搜狗等都是采用了类似下图的界面布局.这里将介绍如何做出类似布局和功能. 在图中,当手指滑动滑块的时候,背景 ...

  2. Android使用SharedPreferences存储APP设置参数

    一.什么是SharedPreferences? android.content.SharedPreferences是一个接口,用来获取和修改持久化存储的数据. Android数据持久化方法中最简单的一 ...

  3. android 让app全屏显示,Android app设置全屏模式

    Android中,为APP设置全屏模式,主要有如下几种方式: 在manifest中设置 在项目中找到AndroidManifest.xml配置文件,找到Activity所在的节点,添加theme. p ...

  4. React Native App设置amp;Android版发布

    React Native系列 <逻辑性最强的React Native环境搭建与调试>  <ReactNative开发工具有这一篇足矣>  <解决React Native ...

  5. android 11.0 12.0第三方输入法app设置系统默认输入法

    1.概述 在11.0 12.0的产品开发中,有功能需要要求设置默认输入法,替换掉系统的输入法,所以这就需要了解设置 输入法的相关功能需求,然后根据输入法包名来设置默认输入法 2.第三方输入法app设置 ...

  6. android 9.0 10.0 设置上网应用白名单(上网app白名单)

    1.概述 在10.0的系统产品开发中,进行网络模块开发中,根据客户要求设置某些app可以上网,某些app不可以上网,就是所谓的网络白名单功能,而系统整个网络模块都是由NMS服务负责通讯的 2.设置上网 ...

  7. Android App 设置系统时间,语言和时区、系统重启

    文章目录 说明 1. 修改系统时间 1. 设置系统时间(仅设置xx:xx) 2. 设置系统日期(仅设置到xxxx年xx月xx日) 3.设置系统是否自动获取时间 4.判断系统是否自动获取时间 2. 修改 ...

  8. android 12.0 第三方输入法app设置系统默认输入法

    1.概述 在12.0的产品开发中,有功能需要要求设置默认输入法,替换掉系统的输入法,所以这就需要了解设置输入法的相关功能需求,然后根据输入法包名来设置默认输入法 2.第三方输入法app设置系统默认输入 ...

  9. Android App设置成Launch

    做这个的需求是因为要做开机自启,但是通过广播的方式会有延迟,所以采用了这种方式,把app设置成launch,这样开机就不会再进入系统的桌面,直接进入app 1.<application>中 ...

最新文章

  1. python-eggs异常解决方法
  2. Leetcode-探索 | 旋转数组
  3. scihub只能用doi查吗_同步带轮齿形加工只能用滚齿机吗?
  4. mysql128位整数_mysql的数据类型
  5. Oracle执行计划中 并行和BUFFER SORT的问题
  6. 云软件——艺术字符设计!【推荐】
  7. Worklight学习-第一个Worlight项目
  8. 【字符串】旋转字符串
  9. [BScroll warn]: Can not resolve the wrapperDOM. .......
  10. ETL最佳实践-NiFi
  11. Win2019 ServerManager.exe 0xc0000135 应用程序错误
  12. 中国最美的100首情诗
  13. win7桌面计算机丢失,W7电脑系统msvcp120.dll丢失的解决方法
  14. 年薪60w的程序员与年薪6w的极品程序员,差距怎么这么大呢?
  15. WIN10下删除Hiberfil.sys文件
  16. jfinal与bootstrap的登出实战
  17. python中raise啥意思_python raise什么意思
  18. 基因分子生物学~DNA双螺旋
  19. 基于jsp,java,javaweb毕设项目大全
  20. js+css+html实现放大镜效果

热门文章

  1. Linux离线安Redis
  2. selenium+aiohttp+aiofiles+ffmpeg → m3u8
  3. OCR之engraved.hdev
  4. 九度OJ 1024 畅通工程 -- 并查集、贪心算法(最小生成树)
  5. 清华加强版「蚂蚁呀嘿」来袭 鬼畜区up主再也不用手动抠素材了
  6. 用html制作的蚂蜂窝旅游网页设计,爬取马蜂窝用户评论页面
  7. 初中学历就没出息?看一个农村小孩是如何开超市年赚百万的!
  8. Linux C基础02——进制转换和c语言简单介绍
  9. 树链剖分之重链剖分详解
  10. 那么30岁还一事无成到底晚不晚?