首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Android使用SoundPool播放音效

本文实例为大家分享了Android使用SoundPool播放音效的具体代码,供大家参考,具体内容如下 SoundPool(int maxStreams, int streamType, int srcQuality...) 参数依次是: ①指定支持多少个声音,SoundPool对象中允许同时存在的最大流的数量。...3.资源释放 方法:可以通过release()方法释放所有SoundPool对象所占据的内存和资源,也可以根据声音ID来释放。 下面是使用SoundPool实现的一个代码示例: 1.运行效果图: ?..." / </LinearLayout 点击声音1~5按钮会发出声音,但当点击最后一个release按钮将SoundPool释放后,再去按就没有任何效果了哦。...源码下载:Android使用SoundPool播放音效 以上就是本文的全部内容,希望对大家的学习有所帮助。

1.2K30

Android使用SoundPool实现播放音效

如果在程序应用中(比如:游戏的音效等)需要播放密集、短促的音效,这时就使用SoundPool来播放音效,SoundPool使用音效池的概念来管理多个短促的音效,例如它可以开始就10个音效,以后在程序中按音效的...SoundPool主要用于播放一些较短的声音片段,与MediaPlayer相比,SoundPool的优势在 于CPU资源占用量低和反应延迟小。...一般使用SoundPool播放声音的步骤如下: Step1:调用SoundPool.Builder的构造器创建SoundPool.Builder对象,并可通过该Builder对象为SoundPool设置属性...; Step2:调用SoundPool的构造器创建SoundPool对象; Step3:调用SoundPool对象的load()方法从指定资源、文件中加载声音。...实际使用SoundPool播放声音时有如下几点需要注意:SoundPool虽然可以一次性加载多个声音,但由于内存限制,因此应该避免使用SoundPool来播放歌曲,只有那些短促、密集的声音才考虑使用SoundPool

2.7K10

Android SoundPool实现简短小音效

一、SoundPool介绍 我们之前有用过MediaPlayer进行播放音频文件,但是当我们的应用程序需要经常的播放密集、短促的音效时,调用MediaPlayer则会占用系统的大量资源,且延时时间较长,...这种简单的音乐的播放就运用到了我们的SoundPool,它使用音效池的概念来管理短促的音效,例如它可以开始就加载20 个音效,通过他们的id进行管理与播放。...SoundPool的优势在于占用的CPU资源少,反应延迟降低。另外它还支持自行设置声音的品质,音量,播放比率。...builder=new SoundPool.Builder(); //设置最多容纳的流数 builder.setMaxStreams(2); AudioAttributes.Builder...的创建需要时间,因此不能将SoundPool初始化后直接start /*参数: (int soundID, float leftVolume, float rightVolume, int priority

74020

Android使用SoundPool播放音效实例

使用场景 SoundPool一般用来 播放密集,急促而又短暂的音效,比如特技音效:Duang~,游戏用得较多,你也可以为你的 APP添加上这个音效,比如酷狗音乐进去的时候播放”哈喽,酷狗” 是不是提起了对于...SoundPool的兴趣了呢 ok,废话不多说 详细的参数解释请看注释 public class SoundPlayer extends AppCompatActivity { private SoundPool...的一个分水岭 if (Build.VERSION.SDK_INT = 21) { SoundPool.Builder builder = new SoundPool.Builder(); //传入最多播放音频数量...*/ mSoundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0); } //可以通过四种途径来记载一个音频资源: //context:上下文...() { @Override public void onLoadComplete(SoundPool soundPool, int sampleId, int status) { if (status

45710

android使用SoundPool播放音效的方法

SoundPool(android.media.SoundPool),顾名思义是声音池的意思,主要用于播放一些较短的声音片段,支持从程序的资源或文件系统加载。...与MediaPlayer相比,SoundPool的优势在于CPU资源占用量低和反应延迟小。另外,SoundPool还支持自行设置声音的品质、音量、播放比率等参数,支持通过ID对多个音频流进行管理。...SoundPool的效率问题。其实SoundPool的效率在这些播放类中算是很好的了,但是有的朋友在G1中测试它还是有100ms左右的延迟,这可能会影响用户体验。...而用到一个SoundPool.Builder的东东,我们要实例化SoundPool只需调用: SoundPool.Builder spb = new SoundPool.Builder(); spb.setMaxStreams...(10); spb.setAudioAttributes(null); //转换音频格式 SoundPool sp = spb.build(); //创建SoundPool对象 要使用上述代码的话

2.1K10

Android多媒体之SoundPool+pcm流的音频操作

零、前言 今天比较简单,先理一下录制和播放的四位大将 再说一下SoundPool的使用和pcm转wav 讲一下C++文件如何在Android中使用,也就是传说中的JNI 最后讲一下变速播放和变调播放...的使用 话说杀鸡焉用牛刀,对于经常播放比较短小的音效,用SoundPool更好 SoundPool源码就616行,小巧很多,看到pool肯定是池啦 ?...= new HashMap(); private boolean isOne; private void initSound() { SoundPool.Builder spb = new...SoundPool.Builder(); //设置可以同时播放的同步流的最大数量 spb.setMaxStreams(10); //创建SoundPool对象 mSp...isOne; } ---- 3.加载完成监听 三个参数:soundPool,第几个,状态(0==success) mSp.setOnLoadCompleteListener((soundPool,

2.7K20

Android多媒体应用使用SoundPool播放音频

SoundPool即音频池,可以同时播放多个短小的音频,而且占用的资源较少。SoundPool适合在应用程序中播放按键音或消息提示音等,在游戏中播放密集而短暂的声音,如多个飞机爆炸的声音等。...使用SoundPool播放音频,首先需要创建SoundPool对象,然后加载所需要播放的音频,最后调用play()方法播放音频,下面进行详细介绍 1.创建SoundPool对象 SoundPool类提供了一个构造方法...,用来创建SoundPool对象,该构造方法的语法格式如下: SoundPool(int maxStreams,int streamType,int srcQuality); 其中,参数maxStreams...例如,创建可以容纳10个音频的SoundPool对象,可以使用下面的代码: SoundPool soundpool=new SoundPool(10,AudioManager.STREAM_MUSIC...(soundpool.load(Manactivity.this,R.raw.notify,1),1,1,0,0,1); 下面写一个小实例,实现通过SoundPool播放音频: 音频文件放入位置如图-

1.3K20

【Android 应用开发】Android游戏音效实现

游戏音效SoundPool 游戏中会根据不同的动作 , 产生各种音效 , 这些音效的特点是短暂(叫声,爆炸声可能持续不到一秒) , 重复(一个文件不断重复播放) , 并且同时播放(比如打怪时怪的叫声 ,...相关API介绍 (1) SoundPool 构造方法 : SoundPool(int maxStreams, int streamType, int srcQuality) ; 参数解析 :  maxStream...音效的音量 , 当前音量 / 系统最大音量 , 结果就是soundPool.play()方法中需要传入的音量 ;  3....程序代码 public class MainActivity extends Activity implements OnClickListener { private SoundPool soundPool...SoundPool播放的音效要小于7秒 , 否则会出现加载失败的现象; 在Android平台上使用的即时文件越小越好 , 必要的时候可以降低采样频率或者将立体声改为单声道;

60120

Android开发中播放声音的两种方法分析

Android提供了另外一种,叫做SoundPool,它适合播放那些需要反复播放,但时间较短的音效。...我们可以利用SoundPool,因为它时间很短,而且需要反复播放,并且我们不希望声音占用太大资源。...先看看代码: private SoundPool soundPool; soundPool= newSoundPool(10,AudioManager.STREAM_SYSTEM,5); soundPool.load...(this,R.raw.collide,1); soundPool.play(1,1, 1, 0, 0, 1); 代码非常简单,第一行是声明了一个SoundPool对象,这个一般是作为类的成员属性出现的...第二行将soundPool实例化,第一个参数为soundPool可以支持的声音数量,这决定了Android为其开设多大的缓冲区,第二个参数为声音类型,在这里标识为系统声音,除此之外还有AudioManager.STREAM_RING

3.7K20

android里面播放声音的方法---执行某项操作发出滴的一声

**************************************/ /***************播放声音的另外一种方法*****************/     private SoundPool...soundPool;     private int music;     /**哪里要调用就执行这行代码**/     public void play_voice() {        ...soundPool.play(music, 1, 1, 0, 0, 1);     }     /**播放声音初始化*/     public void initVoice2(){        ...soundPool= new SoundPool(10, AudioManager.STREAM_SYSTEM, 5);//第一个参数为同时播放数据流的最大个数,第二数据流类型,第三为声音质量        ...music = soundPool.load(context, R.raw.beep, 1); //把你的声音素材放到res/raw里,第2个参数即为资源文件,第3个为音乐的优先级     } /**

2.4K10

【团队分享】苍翼之刃:论File Descriptor泄漏如何导致Crash?

解决方案 通过对代码的排查,我们发现在使用SoundPool处理音效的时候,确实存在FD泄露的情况: 1 private SoundPool m_soundPool; 2 public int loadSound...(String path) { 3 int soundID = m_soundPool.load(getAssets().openFd(path), 0); 4 return soundID...; 5 } 6 public unloadSound(int soundID) { 7 m_soundPool.unload(soundID); 8 } 虽然我们在不需要这些音效的时候,...对其进行了卸载处理,但不知道是SoundPool类自身的缺陷,还是我们的使用不当,在实际测试中我们发现unload过后,在load中通过openFd打开的FD并没有被释放掉。...最终我们自行对这些FD进行管理,并且在unload的时候手动调用这些FD的close方法: 1 private SoundPool m_soundPool; 2 private HashMap<

2.1K80

android实现小音频频繁播放

android中多媒体文件(音乐和视频)的播放是用MediaPlayer方式是大家比较熟悉的,但是现在要来说一下另外一种音乐文件播放的方式SoundPool,相比较而言,用MediaPlayer来播放音乐的话...,占用的系统资源是很多的,加载资源也需要时间,所以它不适合用来频繁播放小音频文件,比如控件焦点、点击时需要播放小音频文件,这个时候用SoundPool来播放音频文件,比用MediaPlayer来播放效率要高很多...所以,SoundPool比MediaPlayer更轻量级,适合用于频繁播放的小音频文件。...public final static int MUSIC_CLICK = 1 ; public final static int MUSIC_FOCUSED = 2 ; } private SoundPool...context){ mContext = context ; sSpMap = new TreeMap<integer ,integer="" () ; mSp = new SoundPool

72920

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券