android声音播放之SoundPool的应用,让你的按钮从此有声有色
在实际项目中我们总会遇到要播放音频文件,其实一个MediaPlayer足够大家使用了,但是如果我们在点击按钮的时候要播放声音呢,这个在游戏中使用的非常普遍?当然其实也可以用MediaPlayer来做,但是对性能是极大的浪费,杀鸡焉用牛刀。这篇文章就带大家来学习下android中的另一款音频播放控件SoundPool,下面开始学习了!
1.先来看下API,了解下大概的调用方法和流程。
https://developer.android.google.cn/reference/android/media/SoundPool.html 附上链接地址,有不懂得大家可以自行翻译或者百度。
The SoundPool class manages and plays audio resources for applications.
这句就讲清楚了SoundPool的作用了:管理应用的音频资源。那么看下是怎么管理的。
在几个方法中我们关注其中的四个重载load()方法和一个play()方法。
load中加载声音资源的位置可以是File,path,Assets或者应用的资源中加载,play()方法中各个参数的说明如下,
英文意思还是比较简单的,实在不懂的可以百度查看,原谅我懒,没必要去给大家翻译下,原汁原味的意思更显高逼格。
2.开始撸代码。
大概看懂了API之后我们就来手撸代码了,请打开AS,新建项目………………
public class MainActivity extends AppCompatActivity implements View.OnClickListener{private Button btn01 , btn02 , btn03 , btn04 ; private SoundPool soundPool ; List<Integer> soundIdList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); AudioAttributes audioAttributes = new AudioAttributes.Builder()// 设置场景 .setUsage(AudioAttributes.USAGE_NOTIFICATION )// 设置类型 .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build(); soundPool = new SoundPool.Builder()// 设置上面的属性 .setAudioAttributes(audioAttributes)// 设置最多10个音频流文件 .setMaxStreams(10).build(); // 加载音频流到soundPool中去,并且用List存储起来 soundIdList.add(soundPool.load(this , R.raw.keypress_delete , 1)); soundIdList.add(soundPool.load(this , R.raw.keypress_invalid , 1)); soundIdList.add(soundPool.load(this , R.raw.keypress_return , 1)); soundIdList.add(soundPool.load(this , R.raw.keypress_spacebar , 1)); soundIdList.add(soundPool.load(this , R.raw.keypress_standard , 1)); }// 初始化界面控件,并设置点击事件监听 private void initView(){btn01 = (Button) this.findViewById(R.id.button1); btn02 = (Button) this.findViewById(R.id.button2); btn03 = (Button) this.findViewById(R.id.button3); btn04 = (Button) this.findViewById(R.id.button4); btn01.setOnClickListener(this); btn02.setOnClickListener(this); btn03.setOnClickListener(this); btn04.setOnClickListener(this); }@Override public void onClick(View v) {
// 随机播放声音 , 根据按钮的值,来随机播放声音 soundPool.play( soundIdList.get(v.getId() % 5) , 1 ,1 , 0 , 0 , 1);
}}
代码啥的还是比较少的,注释也比较完整。
演示的界面也比较简单,根据点击不同的按钮播放不同的声音。声音资源文件放到了raw文件夹下
大家可以自行去网络上搜寻一些,.ogg格式的音频资源,然后制作有个性的按钮点击声音。好了,小知识点的记录就到这里了。
android声音播放之SoundPool的应用,让你的按钮从此有声有色相关推荐
- Android 音频播放之SoundPool的使用和封装(自定义声音资源)
例如,现在在一个五子棋游戏中,我们需要在棋子落盘的时候播放一段声音.我们可以利用SoundPool,因为它时间很短,而且需要反复播放,并且我们不希望声音占用太大资源. 一般大家使用的是MediaPla ...
- Android 音频播放之SoundPool的使用和封装
一般大家使用的是MediaPlayer来播放音频,它的创建和销毁都是非常消耗资源的,如果我们的需求是播放一些短促而且频繁播放的音频的话MediaPlayer就有些不合适了,我们来讲讲SoundPool ...
- android声音播放函数双声道合并,Android音频编辑之音频合成功能
前言 音频编辑系列: 本篇主要讲解音频PCM数据的合成,这里合成包括音频之间的拼接,混合. - 音频拼接:一段音频连接着另一段音频,两段音频不会同时播放,有先后顺序. - 音频混合:一段音频和另一段音 ...
- android声音播放函数双声道合并,Android音视频系列(七):PCM音频单声道与双声道的相互转换...
前言 上一篇我们已经学习了PCM音频的保存格式,这一篇我们通过掌握的知识,完成PCM音频的单声道和双声道的互相转换. 正文 首先我们把上一篇的最核心部分贴出来: PCM音频保存格式 我们首先完成单声道 ...
- Android开发音效增强中铃声播放Ringtone及声音池调度SoundPool的讲解及实战(超详细 附源码)
需要源码请点赞关注收藏后评论区留下QQ~~~ 一.铃声播放 虽然媒体播放器MediaPlayer既可用来播放视频,也可以用来播放音频,但是在具体的使用场合,MediaPlayer存在某些播音方面的不足 ...
- android 声音池,Android使用SoundPool实现播放音效
如果在程序应用中(比如:游戏的音效等)需要播放密集.短促的音效,这时就使用SoundPool来播放音效,SoundPool使用音效池的概念来管理多个短促的音效,例如它可以开始就10个音效,以后在程序中 ...
- Android 自定义播放器旋转角度及手势调整声音亮度
最近项目中用到了自定义播放器,大概要求是这样的:控制台会自动消失点击屏幕又会自动弹出,视频角度需要旋转,手势控制亮度跟音量. 一般在Android中,播放视频如果要求不高的话我都是用的videoVie ...
- Android中播放音乐的几种方式
Android中播放音乐的几种方式 前言 前几天一直在研究RxJava2,也写了记录了几篇博客,但因为工作任务原因,需要研究音频相关的知识,暂时放下Rxjava,本文的demo中,MediaPalye ...
- 【Android】播放音频的几种方式介绍
转自:u013366008的博客 https://blog.csdn.net/u013366008/article/details/76577372 Android中播放音乐的几种方式 前言 前几天 ...
最新文章
- Linux命令(2):free
- VC中GetLastError()获取错误信息的使用,以及错误代码的含义
- nginx for discuz 伪静态规则
- div 文字 input 垂直居中
- Vue中组件间通信的方式
- android studio 中使用lambda表达式
- 我花了一年时间研究不确定性估算,写下了这份最全指南
- js 自带的 map() 方法
- Eclipse 编码常用技巧【不断补充完善】
- c语言注释部分两侧的分界符号分别是,C语言习题及解答.doc
- Android渐变色画笔 自定义View渐变色
- Allatori:代码混淆器的使用(EclipseIDEA)
- java生成pdf旋转_Java 添加、删除、旋转PDF页面
- 应用分发是什么意思?APP内测分发步骤
- HDU多校第三场6608 Fansblog(米勒罗宾+威尔逊定理)
- 来一起造轮子:手写 Vue3 reactivity 模块
- oracle 按照lead,Oracle之Lead和Lag偏移量函数使用详解
- python爬取股票图_python 股票数据爬取(两种方法)
- 苏宁易购 App 客户端架构演进
- Quartus安装及使用教程(13版附安装包)
热门文章
- php生成准考证,用这种方法5分钟就可以批量生成上百份带照片的准考证
- Word模板引擎poi-tl
- 基于bluez的树莓派低功耗蓝牙开发:与多个低功耗蓝牙模块连接
- 为什么Chrome比其他浏览器快
- 新手入门贴:史上最全Web端即时通讯技术原理详解
- 互联网企业盈利模式全分析二
- torch.normal(mean, std, size, *, out=None)
- sip软电话yate client的编译过程
- c语言循环写回合制小游戏_【资源】60个C语言项目源码免费领取!
- 误泄公司代码、疫情被裁,一个程序员的生存日记