多媒体之播放音频(二)——SoundPool(播放简短提示音)

来源:互联网 发布:js ts转码器 编辑:程序博客网 时间:2024/05/16 00:43

Mediaplay每次播放音乐都需要加载,对于手机提示音这是不必要的。所以Android提出了SoundPool 用来播放简短的提示音。SoundPool的特点是将文件全部存到内存中。
这里我们补充一点小知识,如果用多媒体播放音视频时,可能用到一个开关:
这里写图片描述
另外我们之前利用MediaPlayer播放音乐时,有些图片加载不出来,可以利用第三方提供的图片显示的方法:

这里写图片描述
(jar包在我的资源里。)

用法:

前提:将音频文件放到res下的raw文件夹下。

在API 21版本之前,直接new SoundPool实例即可 :

1.创建SoundPool实例

  pool=new SoundPool(2,AudioManager.STREAM_MUSIC,0);


API:
这里写图片描述
第一个参数:最大播放的音频数量
第二个参数:流的类型,在AudioManager中
第三个参数:音频质量,默认为0;

2.加载音频

pool.load(getApplicationContext(),R.raw.outgoing,1);


API对load的介绍:
这里写图片描述
我们在这里用第三个构造器:
第一个参数:上下文
第二个参数:音频ID地址
第三个参数:优先级

3.播放音频

例如: pool.play(voiceID,1,1,0,-1,1);


这里写图片描述
第一个参数:soundID,由load方法返回
第二个参数:左声道(0.0-1.0)
第三个参数:右声道(0.0-1.0)
第四个参数:优先级
第五个参数:是否循环(0表不循环,-1表一直循环)
第六个参数:失真度(范围0.5-2.0,1表正常)
特别注意:由于load加载需要一段时间,所以我们在onCreate中就初始化,load完成,在点击事件中play,这样才能正常播放出提示音。

在API 21版本之后,用SoundPool.Builder :

1.创建SoundPool.Builder 实例

SoundPool.Builder builder = new SoundPool.Builder();

2.准备提示音类型

//.利用AudioAttributes,先将提示音的类型准备好            AudioAttributes attributes = new AudioAttributes.Builder().setLegacyStreamType(AudioManager.STREAM_MUSIC).build();

3.利用builder设置提示音类型和最大播放数量

builder.setMaxStreams(2).setAudioAttributes(attributes)

4.利用builder建池Pool

builder.build();

5.之后的步骤就和21之前的版本从第2步一样了,需要load加载后,再play

范例:

1.创建播放提示音初始化的方法:
这里写图片描述
2.在onCreate()方法中调用初始化方法,在点击事件中play()。
这里写图片描述

0 0
原创粉丝点击