Android SoundPool封装
SoundPool简介
SoundPool常用来同时播放多个短暂的音频
封装
这里封装一个简单的SoundPlayer,模拟管理播放王者荣耀里的单杀、双杀、和三杀的音频,支持播放、循环播放、暂停、继续播放等功能
所需的三个音频文件sound_single_kill、sound_double_kill、sound_triple_kill放置在/res/raw文件夹下
public class SoundPlayer {private Context context;private SoundPool soundPool;// 能同时播放的最大声音数private static final int MAX_SREAMS = 5;// 单杀的声音public static int SOUND_SINGLE_KILL;// 双杀的声音public static int SOUND_DOUBLE_KILL;// 三杀的声音public static int SOUND_TRIPLE_KILL;public SoundPlayer(Context context) {this(context, null);}public SoundPlayer(Context context, SoundPool.OnLoadCompleteListener onLoadCompleteListener) {this.context = context;soundPool = new SoundPool(MAX_SREAMS, AudioManager.STREAM_MUSIC,0);SOUND_SINGLE_KILL = soundPool.load(context, R.raw.sound_single_kill, 1);SOUND_DOUBLE_KILL = soundPool.load(context, R.raw.sound_double_kill, 1);SOUND_TRIPLE_KILL = soundPool.load(context, R.raw.sound_triple_kill, 1);soundPool.setOnLoadCompleteListener(onLoadCompleteListener);}// resId为放在raw文件夹下的音频文件public void load(int resId) {soundPool.load(context, resId, 1);}// 参数为SoundPool.load()方法返回的soundIDpublic void unload(int soundID) {soundPool.unload(soundID);}// 播放单杀的声音public void playSingleKill() {play(SOUND_SINGLE_KILL);}// 播放双杀的声音public void playDoubleKill() {play(SOUND_DOUBLE_KILL);}// 播放三杀的声音public void playTripleKill() {play(SOUND_TRIPLE_KILL);}// 播放,soundID参数为SoundPool.load()方法返回的值public int play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate) {return soundPool.play(soundID, leftVolume, rightVolume, priority, loop, rate);}// 默认参数的播放public int play(int soundID) {return play(soundID, 1, 1, 0, 0, 1);}// 循环播放public int loopPlay(int soundID) {return play(soundID, 1, 1, 0, -1, 1);}// 停止播放public void stop(int streamId) {soundPool.stop(streamId);}// 暂停播放public void pausea(int streamId) {soundPool.pause(streamId);}// 继续播放public void resume(int streamId) {soundPool.resume(streamId);}// 暂停所有播放public void pauseAll() {soundPool.autoPause();}// 继续所有播放public void resumeAll() {soundPool.autoResume();}// 释放public void release() {if (soundPool != null) {soundPool.release();soundPool = null;}}
}
使用方法
public void test(Context context) {// 实例化SoundPlayerSoundPlayer player = new SoundPlayer(context);// 播放单杀音频player.playSingleKill();// 暂停播放单杀音频player.pausea(SoundPlayer.SOUND_SINGLE_KILL);// 继续播放单杀音频player.resume(SoundPlayer.SOUND_SINGLE_KILL);// 停止播放单杀音频player.stop(SoundPlayer.SOUND_SINGLE_KILL);// 播放双杀音频player.playDoubleKill();// 播放三杀音频player.playTripleKill();// 暂停播放所有音频player.pauseAll();// 继续播放所有音频player.resumeAll();// 释放player.release();
}
Android SoundPool封装相关推荐
- Android SoundPool播放音效详细步骤
MediaPlayer虽然也能播放音频,但是它有资源占用量较高,延迟时间较长,不支持多个音频同时播放等缺点,这些缺点决定MediaPlayer在某些场合的使用情况不会很理想,例如在对时间精准度要求相对 ...
- Android 中封装优雅的 MediaPlayer 音频播放器,支持多个播放器
Android 中封装优雅的 MediaPlayer 音频播放器,支持多个播放器实例的示例: public class AudioPlayer implements MediaPlayer.OnPre ...
- android wsdl封装,在Android中调用C#写的WebService(附源代码)
由于项目中要使用Android调用C#写的WebService,于是便有了这篇文章.在学习的过程中,发现在C#中直接调用WebService方便得多,直接添加一个引用,便可以直接使用将WebServi ...
- Android MVVM封装,MVVMFramework
软件简介 这是一个搭建MVVM模式极速开发库,DataBinding 和 Retrofit 配合使用搭建的快速框架. 环境 AndroidStudio 2.1 MVVM模式 MVVM模式:View,V ...
- android动画封装,Android属性动画封装,快速构建动画
Android实现动画效果的方式主要有帧动画.补间动画.属性动画.关于安桌动画的基础知识可以查看这篇文章Android属性动画完全解析 这里我要讲的是如何快速构建出一个动画效果,如下图: 如果我们用属 ...
- Android SoundPool.play方法的音量与系统音量的关系
Android中播放音频,除了使用MediaPlayer,还可以使用SoundPool.SoundPool使用音效池的概念来管理多个短促的音效,对于需要短促的提示音的场景特别合适. 通常调用Sound ...
- Xamarin.Android之封装个简单的网络请求类
http://doc.okbase.net/catcher1994/archive/220195.html Catcher8 2016/4/23 0:28:50 阅读(72) 评论(0) 一.前言 回 ...
- Android SoundPool 的简单使用
2019独角兽企业重金招聘Python工程师标准>>> 之前只知道Android中可以用MediapLayer播放音乐,原来今天才发现可以用SoundPool,用SoundPool可 ...
- Android之封装支付宝支付
在做Android支付的时候肯定会用到支付宝支付, 根据官方给出的demo做起来非常费劲,所以我们需要一次简单的封装. 封装的代码也很简单,就是将官网给的demo提取出一个类来方便使用. /*** 支 ...
- android websocket封装,Android WebSocket 方案选型OkHttp
目前Android WebSocket 框架 主要包括: SocketIO Java-WebSocket OkHttp WebSocket 一开始我首选的是采用SocketIO方案,因为考虑该方案封装 ...
最新文章
- [转]在Eclipse中使用JUnit4进行单元测试(中级篇)
- Windows平台kafka环境的搭建
- session 详解
- LeetCode: Merge k Sorted Lists
- jquery的开发版、mini版是的意思和使用场合
- PAT乙级 1093 字符串A+B(两种解法)
- git---Git中.gitignore配置
- 微信小程序购物车功能实现(干货满满)
- win10如何查看服务器日志文件,win10日志文件在哪里?小编教你查看win10日志文件的方法...
- 计算机应用二进制原因,计算机中采用二进制的主要原因是什么
- Real-Time Rendering——5.2.2 Punctual Lights精准光
- Linux CentOS 系统实战笔记-基础篇
- 明日之后android和ios,明日之后安卓ios互通区有哪些?ios安卓混服区详细介绍
- 有符号和无符号相加(vivo)
- Vue中使用Tinymce-edtio
- 在vant组件下阻止手机自带键盘弹起
- ubuntu忘记mysql密码,怎么办
- Android入门文档
- 小米运动数据导出并做个性化统计
- 放个N老的程序,留着以后看