使用SoundPool记录

上个月使用了一次SoundPool用来仿一款背单词app,最近突然想起来,还是趁现在记得,赶紧记下来

1.首先先创建一个SoundPool的实例:

SoundPool soundPool = new SoundPool.Builder().setMaxStreams(1).build();
//.setMaxStreams(1)代表最大可同时播放几个音频流,我这设置的是1
//还有个.setAudioAttributes(xxx)方法,说实话我也不知道有什么鸟用,网上也查不到,反正我没设置它

2.加载音频资源

soundPool.load(wordFile.toString(), 1); //从文件加载音频
//第一个参数是文件的位置,用字符串表示
//第二个参数我就日了狗了,官方文档中注明: the priority of the sound. Currently has no effect.Use a value of 1 for future compatibility.
//妈的,没用你特么设计这个参数干毛!,不管怎么样,我们传入1就好

public int load(Context context, int resId, int priority)   //这个是从资源文件中加载音频,我没使用,看起来蛮简单的

3.播放音频文件

public final int play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)
//第一个参数soundID         就是我们加载完文件(load方法)时返回的int型数字,必须填加载过的数字
//第二个参数leftVolume      左声道音量
//第三个参数rightVolume     右声道音量
//第四个参数priority        播放声音的优先级
//第五个参数loop            声音重复的次数, 0代表不循环, -1代表无限循环
//第六个参数rate            声音播放的速度, 1.0代表正常速度, 取值范围为0.5~2.0  //这个不错哦
//返回值        如果是个非0的值代表播放成功,如果0代表播放失败

/** 翻译下这个方法的部分官方说明:
*   |   播放指定soundID的声音,这个soundID是load()方法返回的值
*   |   play()方法返回值如果是非0的值表示播放成功,如果是0表示失败,这个值可以用做重放
*   |   注意:   如果正在播放的声音数超过了播放的最大限制数,使用play()方法可能造成另一个声音被停止
*   |   
*   |   loop值如果为0表示只播放一次,如果-1表示无限重复,如果是其他值表示重复的次数
*   |   例如:   loop = 0, 正常播放1次, 重复0次, 总共播放一次
*   |           loop = 1, 正常播放1次, 重复1次, 总共播放2次
*   |           loop = 99, 正常播放1次, 重复99次, 总共播放100次
*/


4.释放资源

(1)释放指定资源:

public native final boolean unload(int soundID);
//指定soundID的声音资源将不能再使用

(2)释放所有资源:

public final void release()
//释放加载的所有资源,释放后就不能再播放了,而且应该将SoundPool的引用设为null

5.使用心得:

我想了想还是有必要要传授给大家一点人生经验

1.如果加载的资源太多了,超过了SoundPool的内存限制(具体多少我不是很清楚,但网上都说是1M),那么最先加载的资源将不再可用. 就像一个队列的数据结构一样,先进先出.

2.如果资源文件不多,但需要重复播放

//这种情况可以用一个map将load()得到的soundID保存下来,以便下次使用,例如:
Map<String, Integer> map = new HashMap()
int soundID = soundPool.load(wordFile.toString(), 1);
String key = "打飞机的声音"
map.put(key, soundID);

//这样可以重复利用已经加载过的声音资源

3.如果资源很多,每个声音播放的次数很少

//这种情况换句话说就是,每个资源加载一次就不再使用了,那么只需要在加载的时候播放就行
使用SoundPool.OnLoadCompleteListener,在加载成功后的回调中播放就行

/**
 * Called when a sound has completed loading.
 *
 * @param soundPool SoundPool object from the load() method
 * @param sampleId the sample ID of the sound loaded.
 * @param status the status of the load operation (0 = success)
 */
public void onLoadComplete(SoundPool soundPool, int sampleId, int status);

//上面的参数中sampleId,就是加载资源的soundID.
//在这个方法中使用play()方法就行

@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
    soundPool.play(sampleId, 1, 1, 1, 0, 1);
}

以上

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容