Android多媒体---SoundPool
来源:互联网 发布:显微镜图像测量软件 编辑:程序博客网 时间:2024/06/10 15:14
soundpool适用于播放提示音(短促、密集),短信提示音,电话嘟嘟提示音等
这种提示音如果再用ediaplayer就有些不合适了,Mediaplayer占用资源多,延迟时间长,不支持多个音频一起播放。
soundpool使用音效池,可以开始就加载20多个音效然后在程序中按照音效的ID进行播放。
soundpool有个构造器指定了支持多少个声音、声音的品质等(音效池):
SoundPool(int maxStreams,int streamType,int srcQuality)第一个参数指定支持多少个声音;第二个参数指定声音类型;第三个参数指定声音品质。
soundpool资源中用量低,反应延迟小,还支持自行设置品质、音量、播放比率等
soundpool提供了如下四个load方法:
- int load(Context context,int resId,int priority):从resid对应的文件中加载声音
- int load(FileDescriptor fd,long offset,long length,int priority):加载fd所对应的文件的offset开始、长度为length的 声音
- int load(AssetFileDescriptor afd,int priority):从afd对应的文件中加载声音
- int load(String path,int priority):从path对应的文件中加载声音
上面四个方法中都有一个priority参数,这个参数至今还没什么作用建议设置为1,保持过河未来兼容性。
soundpool播放声音的方法:
int play(int soundID,float leftVolume,float rightVolume,int priority,int loop,float rate):第一个参数指定播放那个声音;float leftVolume,float rightVolume指定左右音量;priority是优先级;loop是否循环,0不循环,-1循环;rate指播放比率,0.5~2,1为正常
归纳使用步骤:
1)创建soundpool对象
2)使用load方法加载声音,最好使用HashMap< Integer,Integer>来管理声音
3)调用play方法播放
实例:
在res下新建文件夹raw,然后把提示音拷贝到这个文件夹下
写一个方法使用load用于返回声音的ID
private int soundPool(){ if (Build.VERSION.SDK_INT>21){//21版本之前使用new,之后使用builder SoundPool.Builder builder=new SoundPool.Builder(); builder.setMaxStreams(2);//最多两个soundpool AudioAttributes.Builder attrbuilder=new AudioAttributes.Builder(); attrbuilder.setLegacyStreamType(AudioManager.STREAM_MUSIC); builder.setAudioAttributes(attrbuilder.build()); pool=builder.build(); }else { pool=new SoundPool(2,AudioManager.STREAM_MUSIC,0); } return pool.load(getApplicationContext(),R.raw.outgoing,1);}
在onCreate中调用方法soundpool()初始化play的第一个参数
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mBtn_play= (Button) findViewById(R.id.button_play); mBtn_play.setOnClickListener(this); voiceID=soundPool();}
在按钮操作中调用play()方法启动播放,因为初始化load需要时间,所以onCreate就load,点击事件进行播放不会有延迟
public void onClick(View v) { switch (v.getId()){ case R.id.button_play: voiceID= pool.play(voiceID, 1,1,0,-1,1); break; }
0 0
- Android多媒体---SoundPool
- Android多媒体--SoundPool
- Android 多媒体:SoundPool—简短小音效
- Android --- 多媒体应用(SoundPool播放音频)
- 初学Android,多媒体之使用SoundPool播放音效(七十六)
- Android开发--多媒体应用开发(二)--SoundPool的使用
- 初学Android,多媒体之使用SoundPool播放音效
- 【Android开发】多媒体应用开发-使用SoundPool播放音频
- Android 多媒体应用——SoundPool音频播放
- android多媒体——4步学会SoundPool
- 多媒体概述SoundPool播放音效
- android - SoundPool
- Android SoundPool
- Android soundPool
- Android-SoundPool
- Android--SoundPool
- Android SoundPool
- android soundpool
- 设计模式之策略模式
- 回调函数
- android服务
- 国家发改委张书科给你介绍一种“互联网+分类回收”全新模式
- 心得体会
- Android多媒体---SoundPool
- Android 多媒体应用——MediaRecorder录制音频
- hdu1827 Summer Holiday(tarjan+ 缩点)
- Android工具类之图片流InputStream->(byte[])->Bitmap/Drawable
- ML基石_4_FeasibilityOfLearning
- sql 分页
- Log4j配置整理
- LeetCode Best Time to Buy and Sell Stock
- Linux内核工程导论——总线:Platform