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

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

用法:

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

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

1.创建SoundPool实例

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


API:
多媒体之播放音频(二)——SoundPool(播放简短提示音)_第3张图片
第一个参数:最大播放的音频数量
第二个参数:流的类型,在AudioManager中
第三个参数:音频质量,默认为0;

2.加载音频

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


API对load的介绍:
多媒体之播放音频(二)——SoundPool(播放简短提示音)_第4张图片
我们在这里用第三个构造器:
第一个参数:上下文
第二个参数:音频ID地址
第三个参数:优先级

3.播放音频

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


多媒体之播放音频(二)——SoundPool(播放简短提示音)_第5张图片
第一个参数: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.创建播放提示音初始化的方法:
多媒体之播放音频(二)——SoundPool(播放简短提示音)_第6张图片
2.在onCreate()方法中调用初始化方法,在点击事件中play()。
多媒体之播放音频(二)——SoundPool(播放简短提示音)_第7张图片

你可能感兴趣的:(android,手机,多媒体)