在实际项目中我们总会遇到要播放音频文件,其实一个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格式的音频资源,然后制作有个性的按钮点击声音。好了,小知识点的记录就到这里了。



更多相关文章

  1. android 音频播放类
  2. Android MediaCodec硬解码AAC音频文件(实时AAC音频帧)并播放
  3. Android音频传输、接收与播放遇到的问题,恳请大牛支招。
  4. 绑定服务后台播放音频的简单示例
  5. 如何将音频文件与新视频文件合并?是否可以在Android中使用?
  6. Fragment的setUserVisibleHint方法实现视频音频播放暂停
  7. AAC终结者Opus音频编码器的瑞士军刀,编译android ios
  8. 【笔记】上传图片和音频

随机推荐

  1. 【分享】Android(安卓)Push 开源方案解析
  2. 什么是Android——Android平台简介
  3. Kotlin 写 Android 单元测试(二),JUnit 4 测
  4. Android的SharedPreferences和Preference
  5. Android Studio 简单设置
  6. 利用HTML5开发Android应用程序 PPT
  7. Android.Essentials[精要]
  8. Eclipse for Android开发环境设置
  9. 错误收集
  10. android蓝牙BLE(一) —— 扫描