前言

对于Android播放一些简短音效,例如提示音,或者铃声,相对于使用MediaPlayer,SoundPool可以节省更多资源,并且可以同时播放多个音效,而且可以针对不同音效设置不同播放品质

实现

SoundPool的具体作用,就不再阐述,直接贴代码

private SoundPool.Builder spBuilder;

private SoundPool soundPool;

private Integer[] fmSound = FmManager.getRawAudios();

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

if (null == spBuilder) {

spBuilder = new SoundPool.Builder();

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

builder.setLegacyStreamType(AudioManager.STREAM_MUSIC);

spBuilder.setAudioAttributes(builder.build());

spBuilder.setMaxStreams(10);

}

if (null == soundPool) {

soundPool = spBuilder.build();

}

} else {

if (null == soundPool) {

soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 10); //最多播放10个音效,格式为Steam_music,音质为10

}

}

soundPool.setOnLoadCompleteListener(this);

if (null == fmArray) {

fmArray = new SparseIntArray();

}

if (null == streamArray) {

streamArray = new SparseIntArray();

}

for (int i = 0; i < fmSound.length; i++) {

fmArray.put(i + 1, soundPool.load(this, fmSound[i], 1)); //将需要播放的资源添加到SoundPool中,并保存返回的StreamID,通过StreamID可以停止某个音效

}

private void playFmByPosition(int resultId) {

if (null == soundPool || resultId < 0 || fmArray == null || fmArray.size() < 0 || streamArray == null)

return;

LogUtils.e(resultId + "------------" + fmArray.size());

if (resultId < fmArray.size()) {

if (!FmPlaying.isPlay(resultId)) {

int fmPlayId = soundPool.play(fmArray.get(resultId + 1), 1, 1, 0, -1, 1);

streamArray.put(resultId, fmPlayId);

FmPlaying.setPlay(resultId, true);

} else {

soundPool.stop(streamArray.get(resultId));

streamArray.removeAt(resultId);

FmPlaying.setPlay(resultId, false);

}

}

}

static class FmPlaying {

private static SparseBooleanArray playArray = new SparseBooleanArray();

public static boolean isPlay(int position) {

return playArray.get(position, false);

}

public static void setPlay(int position, boolean play) {

playArray.put(position, play);

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2019-11-27

android soundpool 播放音效,Android使用SoundPool播放短音效相关推荐

  1. android播放系统音效,Android用SoundPool播放音效

    SoundPool可以用来播放一些较短的音效,如一些信息提醒之类的 先来说下会用到的参数 SoundPool(int maxStreams, int streamType, int srcQualit ...

  2. Android开发音效增强中铃声播放Ringtone及声音池调度SoundPool的讲解及实战(超详细 附源码)

    需要源码请点赞关注收藏后评论区留下QQ~~~ 一.铃声播放 虽然媒体播放器MediaPlayer既可用来播放视频,也可以用来播放音频,但是在具体的使用场合,MediaPlayer存在某些播音方面的不足 ...

  3. 【Android -- 音效】使用 SoundPool 播放音效

    前言 SoundPool 一般用来 播放密集,急促而又短暂的音效,比如特技音效:Duang~,游戏用得较多,你也可以为你的 APP 添加上这个音效,比如酷狗音乐进去的时候播放"哈喽,酷狗&q ...

  4. android 播放短铃声,Android使用SoundPool播放短音效

    前言 对于Android播放一些简短音效,例如提示音,或者铃声,相对于使用MediaPlayer,SoundPool可以节省更多资源,并且可以同时播放多个音效,而且可以针对不同音效设置不同播放品质 实 ...

  5. android 播放一段音效,android 之使用SoundPool播放音效(Duang~)

    1.相关方法介绍: 1)构造方法: SoundPool(int maxStreams, int streamType, int srcQuality) 参数依次是: ①指定支持多少个声音,SoundP ...

  6. android学习笔记---43_音乐播放器,音频采集,音乐播放,使用SoundPool播放音效

    43_音乐播放器 ------------------------------------------ 1.注意在string.xml中不可以使用java的关键字,因为用关键字的话,会和java内部冲 ...

  7. Android中的音频播放(MediaPlayer和SoundPool)

    Android中音频和视频的播放我们最先想到的就是MediaPlayer类了,该类提供了播放.暂停.停止.和重复播放等方法.该类位于android.media包下,详见API文档.其实除了这个类还有一 ...

  8. Android SDK 提供的3套音频播放的API之玩转SoundPool,面试流程4轮技术面+1轮HR

    1.SoundPool的使用 1.1.准备音频资源 将准备的音频文放入assets文件夹下或者res下的raw文件夹下: assets下可以再新建文件夹批量加载,而raw只能同级存放单个加载: 在as ...

  9. Android 音频开发(三) 如何播放一帧音频数据上

    上一篇只要介绍了如何采集一帧音频,本篇就讲述如何播放一帧音频数据,这一篇我将分倆篇来详细介绍. Android SDK 提供了3套音频播放的API,分别是:MediaPlayer,SoundPool, ...

  10. MusicPlayer音乐播放器Android

    MusicPlayer音乐播放器Android [音频采集] 你可以使用手机进行现场录音,实现步骤如下: 第一步:在功能清单文件AndroidManifest.xml中添加音频刻录权限: <us ...

最新文章

  1. 中服公司企业信息化的ERP系统选择
  2. python信号与槽_Python信号和插槽(1),python,与,一
  3. python官方网站地址-一些python牛人地址分享
  4. 推荐系统笔记:矩阵分解+基于邻居的模型
  5. 张永伟 大数据会成为互联时代重要变革
  6. 使用Adobe Lifecycle ES将若干个word合并成一个PDF
  7. webview键盘自适应_黑爵毛茸茸机械键盘:感受来自治愈系的暖萌
  8. 增强服务器安全性能,加强Linux服务器安全的20项建议
  9. docker网络--理解linux底层实现机制、docker网络模式
  10. Makefile的几个赋值运算符(转:笔记)
  11. python输入的方式有几种_Python输入方式具体的三种实现方式
  12. 项目团队中的五种人(之一)
  13. 勤于思考:Asp.Net MVC Html.TextBoxFor日期格式化
  14. Java面试题:热情盛夏,分享Java大厂面试百题
  15. 利用 SQL Monitor 查看语句运行状态步骤
  16. 《金字塔原理》学习笔记 | 第4篇—演示的逻辑
  17. Hadoop学习笔记——HA
  18. Java实现CCF/CSP 201312-2 ISBN编号(零分!!!
  19. [Python数据分析]NBA的球星们喜欢在哪个位置出手
  20. ie 无人操作自动关闭_为什么一打开IE浏览器就自动关闭解决办法 IE浏览器打开后马上自动关闭了如何办...

热门文章

  1. 树莓派29/100 - 树莓派接上Kindle的墨水屏是什么体验?
  2. 【Unity】Unity Pivot 与 Center Globle 与Lical
  3. 2022年全国各省四级行政区划Shp矢量数据
  4. vue 请求word文档流并打印预览
  5. 银河麒麟服务器操作系统V10SP2安装虚拟化管理软件
  6. HDU2030-汉字机内码
  7. 建造者2全部岛屿_勇者斗恶龙建造者2全流程攻略介绍 通关流程攻略分享 蒙佐拉岛-游侠网...
  8. centos7下载php7.4
  9. 店铺淘客软件定制,1688分销软件OEM贴牌配合精细化运营提升店铺流量
  10. 印刷机软件测试,印刷测控条与测试版