Android中的soundpool小结 博客分类: Android
Android音乐游戏UI .
之前只知道android中可以用mediaplayer播放音乐,原来今天才发现
可以用soundpool,用soundpool可以播一些短的反应速度要求高的声音,
比如游戏中的爆破声,而mediaplayer适合播放长点的。
1. SoundPool载入音乐文件使用了独立的线程,不会阻塞UI主线程的操作。但是这里如果音效文件过大没有载入完成,我们调用play方法时可能产生严重的后果,这里Android SDK提供了一个SoundPool.OnLoadCompleteListener类来帮助我们了解媒体文件是否载入完成,我们重载 onLoadComplete(SoundPool soundPool, int sampleId, int status) 方法即可获得。
2. 从上面的onLoadComplete方法可以看出该类有很多参数,比如类似id,是的SoundPool在load时可以处理多个媒体一次初始化并放入内存中,这里效率比MediaPlayer高了很多。
3. SoundPool类支持同时播放多个音效,这对于游戏来说是十分必要的,而MediaPlayer类是同步执行的只能一个文件一个文件的播放。
使用方法:
1. 创建一个SoundPool
public SoundPool(int maxStream, int streamType, int srcQuality)
maxStream —— 同时播放的流的最大数量
streamType —— 流的类型,一般为STREAM_MUSIC(具体在AudioManager类中列出)
srcQuality —— 采样率转化质量,当前无效果,使用0作为默认值
eg.
SoundPool soundPool = new SoundPool(3, AudioManager.STREAM_MUSIC, 0);
创建了一个最多支持3个流同时播放的,类型标记为音乐的SoundPool。
2 一般把多个声音放到HashMap中去,比如
soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
soundPoolMap = new HashMap<Integer, Integer>();
soundPoolMap.put(1, soundPool.load(this, R.raw.dingdong, 1));
soundpool的加载:
int load(Context context, int resId, int priority) //从APK资源载入
int load(FileDescriptor fd, long offset, long length, int priority) //从FileDescriptor对象载入
int load(AssetFileDescriptor afd, int priority) //从Asset对象载入
int load(String path, int priority) //从完整文件路径名载入
最后一个参数为优先级。
3 播放
play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate) ,其中leftVolume和rightVolume表示左右音量,priority表示优先级,loop表示循环次数,rate表示速率,如
//速率最低0.5最高为2,1代表正常速度
sp.play(soundId, 1, 1, 0, 0, 1);
而停止则可以使用 pause(int streamID) 方法,这里的streamID和soundID均在构造SoundPool类的第一个参数中指明了总数量,而id从0开始
分享到:
相关推荐
总结一下,`SoundPool`是Android中用于高效播放短期音频的工具,适用于游戏或需要快速响应的场景。通过合理使用`SoundPool`,开发者可以创建出具有丰富音效的Android应用,提升用户的沉浸感。在实际项目中,要注意...
在Android开发中,处理音频播放是一项常见的任务,而MediaPlayer和SoundPool是两个主要的音频处理类,用于在应用程序中播放声音。本篇文章将对这两个组件进行深入的总结,探讨它们的特点、用途以及如何实现多个音频...
总结,`SoundPool`是Android中用于播放短小音频的利器,特别适合游戏或应用中的音效处理。通过合理使用`SoundPool`,开发者可以实现高效、流畅的音频播放体验。在实际项目中,务必注意音频资源的管理,确保音频加载...
SoundPool是Android提供的一个音频播放类,特别适用于游戏等场景中播放短小的声音效果。相比于MediaPlayer,SoundPool支持同时播放多个声音,并且可以控制音量、速度等属性。 **初始化:** 在使用SoundPool前,...
总结,使用SoundPool在Android中播放短小音频非常方便,可以有效地管理资源并支持多音频流同时播放。通过创建SoundPool对象、加载音频资源、播放音频以及适当的资源管理,我们可以轻松地实现各种音频效果。在实际...
在Android开发中,SoundPool是一个非常实用的类,主要用于播放短小的音频片段,比如游戏中的音效。在Android 5.0(API Level 21)之后,SoundPool的用法有所变化,使得在不同版本的Android系统上实现音频播放变得更...
总结一下,"SoundTest"项目通过实例展示了如何利用SoundPool在Android应用中实现高效的小型音频播放。SoundPool具有加载快速、内存占用低、多声音流播放等优点,非常适合需要频繁播放短音频的应用场景。通过学习这个...
总结来说,`MediaPlayer`适用于播放大音频文件,如背景音乐,而`SoundPool`则适用于处理小音频片段,如音效。正确地使用这两个组件,可以为Android应用程序增添丰富的音频元素,提升用户互动体验。在实践中,还需要...
在Android开发中,SoundPool是一个非常实用的音频处理类,主要用于播放短小的音频片段,如游戏中的音效。它提供了高效的声音缓存机制,能够快速响应用户操作,实现音频的即时播放。在这个"SoundPool使用Example"中,...
总结来说,`SoundPool`适合用于需要快速响应且播放短小音频的情况,如游戏中的音效。通过`SoundPool`,我们可以轻松地加载音频资源并在用户交互时迅速播放。在实际开发中,还需要考虑内存管理和音频流的控制,以确保...
总结,"SoundPool demo" 提供了一个学习和实践如何在Android应用程序中高效播放音频的平台。通过使用SoundPool,开发者可以创建响应迅速、多声音效果的应用,尤其是对于游戏开发,SoundPool是不可或缺的一部分。通过...
总结,SoundPool在Android开发中是一个用于高效播放小音频剪辑的重要工具,特别适用于需要快速响应和多音频流同步的场景。虽然在新版本的Android中已被弃用,但在旧版本和特定需求下,SoundPool仍然是一种实用的解决...
本文将深入探讨如何在Android中使用不同的组件和技术来实现音频和视频的播放功能,包括`MediaPlayer`媒体播放器、`SoundPool`音效池以及`VideoView`控件。 ### 1. MediaPlayer `MediaPlayer`是Android系统提供的一...
在Android开发中,可以使用MediaPlayer类来播放音频资源,或者使用SoundPool来管理短小的声音效果。 总结起来,这个“安卓 Android 期末作品 2048小游戏视频和源码”项目涵盖了Android开发的基础知识,包括UI设计、...
总结起来,实现Android的摇一摇功能需要结合SensorManager的加速度传感器,通过一定的算法判断摇动行为,再配合加载动画和声音播放,提升用户的交互体验。在实际开发中,需要对这些细节进行充分的测试和调整,以确保...
总结来说,Android提供了多种播放声音和视频的工具,开发者可以根据实际需求选择合适的组件。`MediaPlayer`是最基础的,适用于大多数情况;`SoundPool`针对短音频效果;`AudioTrack`适合专业音频处理;而`VideoView`...
总结,“android飞机游戏.rar”压缩包提供的内容,是Android游戏开发的一个实例,涵盖了游戏开发的基本流程和技术要点。通过深入研究和实践,开发者可以从中学习到Android游戏开发的全貌,为自己的游戏项目积累宝贵...
总结,"android 音频效果demo"是一个教学示例,它教你如何在Android应用中利用音频API和图形绘制技术,展示音乐的波形和柱状图效果。这不仅可以提升用户体验,也可以帮助用户直观地理解和感知音乐的动态。通过学习和...
总结,Android坦克大战的开发涵盖了Android应用开发的基础知识,如Java编程、Android SDK、图形处理、游戏逻辑、UI设计和音频处理。同时,它还涉及到了游戏开发的特定技术,如游戏框架的选择、碰撞检测算法和资源...
总结,“android飞机大战毕设源码.zip”项目涵盖了Android游戏开发的多个核心知识点,通过学习和分析源码,你可以深入理解Android游戏的架构设计,提升你的编程技能,为今后的项目开发打下坚实基础。