SoundPool 最大只能申请1M的内存空间,只能用一些很短的声音片段,而不是用它来播放歌曲或者做游戏背景音乐。

使用 SoundPool 播放短声音实现步骤如下:

// 创建SoundPool实例, 指定最大可以加载声音为3个

SoundPool soundPool = new SoundPool(3, AudioManager.STREAM_MUSIC, 0);

// 分别加载三个不同的声音

int shoot1ID = soundPool.load(this, R.raw.shoot1, 1);

int shoot2ID = soundPool.load(this, R.raw.shoot2, 1);

int shoot3ID = soundPool.load(this, R.raw.shoot3, 1);

// 根据加载时获取的id播放对应的声音

soundPool.play(shoot1ID, 1, 1, 1, 0, 1);

soundPool.play(shoot2ID, 1, 1, 1, 0, 1);

soundPool.play(shoot3ID, 1, 1, 1, 0, 1);

在onDestory释放资源:

soundPool.release();

注意:

遇到一个奇怪的问题,soundpool.play()在部分华为和小米手机上只能发出一次声音,后面调用soundpool.play()居然没有声音发出了,可是这个问题只是在部分手机上出现而已,部分华为的也可以继续发声,魅族的也可以。经过研究分析认为应该是我在activity 的oncreate方法里面加载完文件后,后面调用了一次soundpool.play()播放了文件,然后由于部分手机的内存太小或者手机系统太优,自动释放内存把资源释放掉了,这才导致后面调用soundpool.play()不发出声音。最后我是这样解决的:在需要播放的地方重新加载文件,让它加载完成后再播放,具体如下:

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

SoundPool 播放短声音的更多相关文章

  1. soundPool播放短、频、快的声音

    package com.example.soundpool; import android.media.AudioManager; import android.media.SoundPool; im ...

  2. 使用SoundPool播放音效

    针对应用程序经常需要播放密集.短促的音效,因为MediaPlayer存在如下缺点: 1.资源占用量较高.延迟时间较长. 2.不支持多个音效同时播放. SoundPool使用音效池的概念来管理多个短促的 ...

  3. android SoundPool播放音效

    MediaPlayer的缺点: 资源占用量高,延时时间较长 不支持多个音效同一时候播放 SoundPool主要用于播放一些较短的声音片段,CPU资源占用率低和反应延时小,还支持自行色设置声音的品质,音 ...

  4. OSX/iOS 播放系统声音

    方法1: 系统会自带了些声音,有时候一些操作用必要自己播放一下声音提醒一下,用bash的直接say something就ok了,写代码的时候呢?原来很简单的,一句: [[NSSound soundNa ...

  5. iOS 实现后台 播放音乐声音 AVAudioPlayer 以及铃声设置(循环播放震动)

    1.步骤一:在Info.plist中,添加"Required background modes"键,value为:App plays audio 或者: 步骤二: - (BOOL) ...

  6. 通过WinAPI播放PCM声音

    在Windows平台上,播放PCM声音使用的API通常有如下两种. waveOut and waveIn:传统的音频MMEAPI,也是使用的最多的 xAudio2:C++/COM API,主要针对游戏 ...

  7. Android 使用SoundPool播放音效

    在Android开发中我们经常使用MediaPlayer来播放音频文件,但是MediaPlayer存在一些不足,例如:资源占用量较高.延迟时间较长.不支持多个音频同时播放等.这些缺点决定了MediaP ...

  8. Android MediaPlayer播放一般音频与SoundPool播放短促的音效

    [1]使用MediaPlayer实现一般的音频播放 MediaPlayer播放通常的音频文件 MediaPlayer mediaPlayer = new MediaPlayer(); if (medi ...

  9. SoundPool 播放提示音

    SoundPool 一个声音播放的辅助类,从名字可以看出,它具有 “池”的能力,它先加载声音文件到内存,以支持多次播放声音文件. 特点 SoundPool适合 短小的 声音文件 SoundPool适合 ...

随机推荐

  1. JavaSpring【二、IOC】

    概述: 接口及面向接口编程 接口:用于沟通的中介物的抽象,实体把自己提供给外界的方法的抽象化说明,将声明和实现分离,使其能够改变内部而不影响与外部的交互方式 面向接口编程:在结构设计中,分清层次及调用 ...

  2. 三、DQL语言

    目录 一.基础查询 (一)语法 (二)特点 (三)示例 二.条件查询 (一)语法 (二)筛选条件的分类 三.排序查询 (一)语法 (二)特点 四.常见函数 (一)介绍 (二)分类 五.单行函数 (一) ...

  3. 二、MySQL介绍

    目录 一.MySQL背景 二.MySQL的优点 三.MySQL安装 四.MySQL服务的启动和停止 五.MySQL登录和退出 六.MySQL常用命令 (一)常用命令 (二)语法规范 (三)SQL语言细 ...

  4. php连接docker运行的mysql,显示(HY000/2002): Connection refused的解决办法

    php要连接docker中运行的mysql是不能用localhost, 127.0.0.1来连接的,因为每个docker运行容器的localhost 127.0.0.1都是自己容器本身,不是mysql ...

  5. 对于在tinyOS中读取MPU6050数据卡死的总结

    最近这几天一直给tinyOS挂载外设,从最简单的LED.KEY,再到串口,这些都没什么大问题,无非就是先初始化tinyOS,再初始化硬件外设,接着启动tinyOS,然后tinyOS去寻找优先级最高的任 ...

  6. 如何让iframe框架和主页面共用一个滚动条(也称为:iframe高度自适应问题)

    最近在前端页面遇到了一个问题,我在一个页面中利用iframe框架引入了一个页面进来,但是这个页面的高度是不叫高的,高出电脑屏幕很多, 所以就引发了iframe框架一个滚动条,然后主页面一个滚动条,这样 ...

  7. 移动端rem移动适配

    https://www.cnblogs.com/jingwhale/p/5741567.html

  8. URAL 2052 Physical Education(数位DP)

    题目链接:https://vjudge.net/contest/254142#problem/G 参考题解:https://blog.csdn.net/zearot/article/details/4 ...

  9. iterm2 "agnoster"主题设置中的一些踩坑 2018.8

    主线教程:https://www.cnblogs.com/xishuai/p/mac-iterm2.html (1)在链接的“3.配置oh My zsh”中,编辑vim~/.zshrc后两下回车,然后 ...

  10. 题解 [51nod1673] 树有几多愁

    题面 解析 这题思路挺秒啊. 本麻瓜终于找了道好题了(还成功把ztlztl大仙拖下水了) 看到叶子节点数<=20就应该是状压啊. 然而DP要怎么写啊? 首先,考虑到编号肯定是从下往上一次增大的, ...