Android - API - android.media.SoundPool (专用于播放音效)
2013-04-15 15:00
489 查看
[b]概述:[/b]
在android里有一个MediaPlayer多媒体类可以播放音频文件,可是MediaPlayer占用资源较多并且,只适用于播放时间长,对加载时间没有过高要求的环境;而游戏里资源相对紧张,并且音效需要的音频文件非常短,同时要求要瞬间加载,显然MediaPlayer并不符合要求。于是就出现了SoundPool!
注意:请不要用SoundPool去加载较大的音频文件,因为可能会造成堆溢出!
构造函数:
SoundPool(int maxStreams, int streamType, int srcQuality)
maxStreams:最多同时播放maxStreams个音效。
streamType :音频类型,其取值为AudioManager中以STREAM_开头的静态字段,在游戏中通常设为STREAM_MUSIC。
srcQuality : 该参数设置音频文件的质量,目前还没有实际效果,设置为默认值0即可。
方法:
autoPause()
暂停所有的音频流。
autoResume()
重新播放所有的音频流。
load(AssetFileDescriptor afd, int priority)
加载afd表示的音频资源文件。
afd :资源文件。
priority:优先级,0为最低。
int:返回一个资源ID,可以使用这个ID去播放此ID代表的音频文件,也可在音频池里删掉此ID代表的音频文件
load(Context context, int resId, int priority)
加载apk文件中ID为resId的音频资源。
context:上下文对象,也就是调用这个方法的Activite,也可理解为是这个方法的调用者。
resId :要加载的音频资源的ID。
priority :优先级,0为最低。
int:返回一个资源ID,可以使用这个ID去播放此ID代表的音频文件,也可在音频池里删掉此ID代表的音频文件
load(String path, int priority)
加载path指向的SD卡中或机身中的音频文件
path :音频文件的绝对路径。
priority:优先级,0为最低。
int:返回一个资源ID,可以使用这个ID去播放此ID代表的音频文件,也可在音频池里删掉此ID代表的音频文件
load(FileDescriptor fd, long offset, long length, int priority)
加载fd表示的音频文件中从offset开始的length个字节的数据。
fd :资源文件对象。
offset :开始位置。
length :个数。
priority:优先级,0为最低。
int:返回一个资源ID,可以使用这个ID去播放此ID代表的音频文件,也可在音频池里删掉此ID代表的音频文件
pause(int streamID)
暂停音频池中ID为streamID的音频流
streamID:音频池中音频流的ID。
play(int soundID, float leftVolume, float rightVolume,
int priority, int loop, float rate)
播放音频池中ID为soundID的音频流。
soundID :音频池中音频流的ID,就是load方法返回的值。
leftVolume :左声道音量。
rightVolume:右声道音量。
priority :优先级,0为最低。
loop :循环次数,0为不循环;-1为永远循环。
rate :播放速度,该值在0.5-2.0之间,1为正常速度。
int:当返回0时,表示播放失败;非0时,播放成功。
release()
释放所有的资源。
resume(int streamID)
重新播放音频池中ID为streamID的音频流。
streamID:音频池中音频流的ID
setLoop(int streamID, int loop)
设置音频池中ID为streamID的音频流的循环次数为loop。
streamID:音频池中音频流的ID。
loop :循环次数,0为不循环;-1为永远循环。
setOnLoadCompleteListener(SoundPool.OnLoadCompleteListener
listener)
设置完全卸载一个音频流时的监听函数。
listener:卸载音频流的监听。
setPriority(int streamID, int priority)
设置音频池中ID为streanID的音频流的优先级为priority。
streamID:音频池中音频流的ID。
priority :优先级,0为最低。
setRate(int streamID, float rate)
设置音频池中ID为streamID的音频流的播放速度为rate。
streamID:音频池中音频流的ID。
rate :播放速度,该值在0.5-2.0之间,1为正常速度。
setVolume(int streamID, float leftVolume, float rightVolume)
设置音频池中ID为streamID的音频流的左声道音量为leftVolume,右声道音量为rightVolume。
streamID :音频池中音频流的ID。
leftVolume :左声道音量。
rightVolume:右声道音量。
stop(int streamID)
停止音频池中ID为streamID的音频流。
streamID:音频池中音频流的ID。
unload(int soundID)
卸载音频池中ID为soundID的音频流。
soundID:音频池中音频流的ID,就是load方法返回的值。
boolean:true:卸载成功;false:已经被卸载或不存在。
在android里有一个MediaPlayer多媒体类可以播放音频文件,可是MediaPlayer占用资源较多并且,只适用于播放时间长,对加载时间没有过高要求的环境;而游戏里资源相对紧张,并且音效需要的音频文件非常短,同时要求要瞬间加载,显然MediaPlayer并不符合要求。于是就出现了SoundPool!
注意:请不要用SoundPool去加载较大的音频文件,因为可能会造成堆溢出!
构造函数:
SoundPool(int maxStreams, int streamType, int srcQuality)
maxStreams:最多同时播放maxStreams个音效。
streamType :音频类型,其取值为AudioManager中以STREAM_开头的静态字段,在游戏中通常设为STREAM_MUSIC。
srcQuality : 该参数设置音频文件的质量,目前还没有实际效果,设置为默认值0即可。
方法:
autoPause()
暂停所有的音频流。
autoResume()
重新播放所有的音频流。
load(AssetFileDescriptor afd, int priority)
加载afd表示的音频资源文件。
afd :资源文件。
priority:优先级,0为最低。
int:返回一个资源ID,可以使用这个ID去播放此ID代表的音频文件,也可在音频池里删掉此ID代表的音频文件
load(Context context, int resId, int priority)
加载apk文件中ID为resId的音频资源。
context:上下文对象,也就是调用这个方法的Activite,也可理解为是这个方法的调用者。
resId :要加载的音频资源的ID。
priority :优先级,0为最低。
int:返回一个资源ID,可以使用这个ID去播放此ID代表的音频文件,也可在音频池里删掉此ID代表的音频文件
load(String path, int priority)
加载path指向的SD卡中或机身中的音频文件
path :音频文件的绝对路径。
priority:优先级,0为最低。
int:返回一个资源ID,可以使用这个ID去播放此ID代表的音频文件,也可在音频池里删掉此ID代表的音频文件
load(FileDescriptor fd, long offset, long length, int priority)
加载fd表示的音频文件中从offset开始的length个字节的数据。
fd :资源文件对象。
offset :开始位置。
length :个数。
priority:优先级,0为最低。
int:返回一个资源ID,可以使用这个ID去播放此ID代表的音频文件,也可在音频池里删掉此ID代表的音频文件
pause(int streamID)
暂停音频池中ID为streamID的音频流
streamID:音频池中音频流的ID。
play(int soundID, float leftVolume, float rightVolume,
int priority, int loop, float rate)
播放音频池中ID为soundID的音频流。
soundID :音频池中音频流的ID,就是load方法返回的值。
leftVolume :左声道音量。
rightVolume:右声道音量。
priority :优先级,0为最低。
loop :循环次数,0为不循环;-1为永远循环。
rate :播放速度,该值在0.5-2.0之间,1为正常速度。
int:当返回0时,表示播放失败;非0时,播放成功。
release()
释放所有的资源。
resume(int streamID)
重新播放音频池中ID为streamID的音频流。
streamID:音频池中音频流的ID
setLoop(int streamID, int loop)
设置音频池中ID为streamID的音频流的循环次数为loop。
streamID:音频池中音频流的ID。
loop :循环次数,0为不循环;-1为永远循环。
setOnLoadCompleteListener(SoundPool.OnLoadCompleteListener
listener)
设置完全卸载一个音频流时的监听函数。
listener:卸载音频流的监听。
setPriority(int streamID, int priority)
设置音频池中ID为streanID的音频流的优先级为priority。
streamID:音频池中音频流的ID。
priority :优先级,0为最低。
setRate(int streamID, float rate)
设置音频池中ID为streamID的音频流的播放速度为rate。
streamID:音频池中音频流的ID。
rate :播放速度,该值在0.5-2.0之间,1为正常速度。
setVolume(int streamID, float leftVolume, float rightVolume)
设置音频池中ID为streamID的音频流的左声道音量为leftVolume,右声道音量为rightVolume。
streamID :音频池中音频流的ID。
leftVolume :左声道音量。
rightVolume:右声道音量。
stop(int streamID)
停止音频池中ID为streamID的音频流。
streamID:音频池中音频流的ID。
unload(int soundID)
卸载音频池中ID为soundID的音频流。
soundID:音频池中音频流的ID,就是load方法返回的值。
boolean:true:卸载成功;false:已经被卸载或不存在。
相关文章推荐
- Android基础入门教程——9.1 使用SoundPool播放音效(Duang~)
- Android应用:SoundPool 播放音效
- Android多媒体开发 音乐播放(加带进度条、时间显示)以及使用SoundPool播放音效
- Android多媒体开发 音乐播放(加带进度条、时间显示)以及使用SoundPool播放音效
- 【Android】游戏开发--SoundPool类多种音效同时播放
- Android使用SoundPool播放短音效
- android SoundPool api 翻译(正在进行) 播放游戏声音
- android SoundPool api 翻译(正在进行) 播放游戏声音
- android 声音播放 mediaplay soundpool
- Android移动开发-使用SoundPool播放音效的实现
- Android之SoundPool播放音效
- Android 音频播放之SoundPool的使用和封装
- Android SoundPool播放实例和方法详解
- android控制soundpool播放音量
- Android声音播放之SoundPool
- Android之SoundPool背景音乐,MediaPlayer播放背景音乐
- 【Android开发】多媒体应用开发-使用SoundPool播放音频
- Android 音频播放之SoundPool的使用和封装(自定义声音资源)
- soundPool播放音效没声音的解决办法并据此研究如何提高音效声音