Android中的音频播放(MediaPlayer和SoundPool)
Android中音频和视频的播放我们最先想到的就是MediaPlayer类了,该类提供了播放、暂停、停止、和重复播放等方法。该类位于android.media包下,详见API文档。其实除了这个类还有一个音乐播放类那就是SoundPool,这两个类各有不同分析一下便于大家理解
MediaPlayer:
此类适合播放较大文件,此类文件应该存储在SD卡上,而不是在资源文件里,还有此类每次只能播放一个音频文件。
此类用法如下:
1、从资源文件中播放
MediaPlayer player = new MediaPlayer.create(this,R.raw.test);
player.stare();
2、从文件系统播放
MediaPlayer player = new MediaPlayer();
String path = "/sdcard/test.mp3";
player.setDataSource(path);
player.prepare();
player.start();
3、从网络播放
(1)通过URI的方式:
String path="http://**************.mp3"; //这里给一个歌曲的网络地址就行了
Uri uri = Uri.parse(path);
MediaPlayer player = new MediaPlayer.create(this,uri);
player.start();
(2)通过设置数据源的方式:
MediaPlayer player = new MediaPlayer.create();
String path="http://**************.mp3"; //这里给一个歌曲的网络地址就行了
player.setDataSource(path);
player.prepare();
player.start();
SoundPool:
此类特点就是低延迟播放,适合播放实时音实现同时播放多个声音,如游戏中炸弹的爆炸音等小资源文件,此类音频比较适合放到资源文件夹 res/raw下和程序一起打成APK文件。
用法如下:
SoundPool soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100);
HashMap<Integer, Integer> soundPoolMap = new HashMap<Integer, Integer>();
soundPoolMap.put(1, soundPool.load(this, R.raw.dingdong1, 1));
soundPoolMap.put(2, soundPool.load(this, R.raw.dingdong2, 2));
public void playSound(int sound, int loop) {
AudioManager mgr = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE);
float streamVolumeCurrent = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);
float streamVolumeMax = mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = streamVolumeCurrent/streamVolumeMax;
soundPool.play(soundPoolMap.get(sound), volume, volume, 1, loop, 1f);
//参数:1、Map中取值 2、当前音量 3、最大音量 4、优先级 5、重播次数 6、播放速度
}
this.playSound(1, 0);
1. SoundPool最大只能申请1M的内存空间,这就意味着我们只能用一些很短的声音片段,而不是用它来播放歌 曲或者做游戏背景音乐。
2. SoundPool提供了pause和stop方法,但这些方法建议最好不要轻易使用,因为有些时候它们可能会使你的程序莫名其妙的终止。Android开发网建议使用这两个方法的时候尽可能多做测试工作,还有些朋友反映它们不会立即中止播放声音,而是把缓冲区里的数据播放完才会停下来,也许会多播放一秒钟。
3. SoundPool的效率问题。其实SoundPool的效率在这些播放类中算是很好的了,这可能会影响用户体验。也许这不能管SoundPool本身,因为到了性能比较好的Droid中这个延迟就可以让人接受了。
注意soundPool播放的音源文件必须是ogg格式,否则可能会出现莫名其妙的问题
转载于:https://www.cnblogs.com/hexinwei/p/3469399.html
Android中的音频播放(MediaPlayer和SoundPool)相关推荐
- Android 中封装优雅的 MediaPlayer 音频播放器,支持多个播放器
Android 中封装优雅的 MediaPlayer 音频播放器,支持多个播放器实例的示例: public class AudioPlayer implements MediaPlayer.OnPre ...
- android 音频播放过程,一种Android系统中的音频播放方法与流程
本申请涉及android系统技术,特别涉及一种android系统中的音频播放方法. 背景技术: 在android系统中,现有的使用audiotrack进行音频播放时,audiotrack应用与andr ...
- android调用系统音频播放器,Android使用Service实现简单音乐播放实例
Service翻译成中文是服务,熟悉Windows 系统的同学一定很熟悉了.Android里的Service跟Windows里的Service功能差不多,就是一个不可见的进程在后台执行. Androi ...
- Android Studio——简易音频播放器
目的 设计一个具有选歌功能的音频播放器 工具及环境 使用java语言,在Android studio平台上进行开发 功能设计 界面有三个按钮选项,可以停止.播放.暂停音乐.通过选择列表的音乐,播放相应 ...
- ios中AVAudioPlayer音频播放器
IOS中有三种播放音频的方式:AVAudioPlayer.音频服务.音频队列. AVAudioPlayer在AVFoundation框架下,所以我们要导入AVFoundation.framework. ...
- android中录音断点播放,Android实现语音播放与录音功能
本文实例为大家分享了Android实现语音播放与录音的具体代码,供大家参考,具体内容如下 项目用到的技术点和亮点 语音录音 (单个和列表) 语音播放(单个和列表) 语音录音封装 语音播放器封装 语音列 ...
- Android中的音乐播放
在Android平台下,要实现声音的播放是十分容易实现的,只要生成一个MediaPlayer对象,并调用它的相关方法,就能改变对声音播放进行控制.MediaPlayer对象有一下各种状态: 熟悉了Me ...
- android中录音断点播放,Android实现暂停--继续录音(AudioRecord)
Android提供了两个API用于录音的实现:MediaRecorder 和 AudioRecord,各有优劣. 1.MediaRecorder 已经集成了录音.编码.压缩等,支持少量的录音音频格式, ...
- android打开wav格式,在Android中使用AudioTrack播放WAV文件
我偶然发现了这个答案(坦白说,通过尝试& ^ @!我没有想到会工作),如果有人有兴趣-在我的原始代码(这是源自原始帖子中的链接的例子) ,数据从文件中读取如下: InputStream is ...
最新文章
- html无序列表空心圆_列表样式的使用CSS入门基础(018)
- 【Java Web后台实验与开发】The server time zone value ‘�й���ʱ��‘ is unrecognized or represents more than one
- PHP项目部署在tomcat,在Tomcat中部署Web项目的操作方法(必看篇)
- java我的世界显示合成表_我的世界:谁动了我的合成表?每10秒打乱合成配方,你撑不过一晚...
- 可靠消息最终一致性设计_如何最终启动您的设计产品组合
- iphonex如何关机_历时一个月,跨越一千里,我找回了在澳门被偷的iphoneX
- python3写的一个检测远程服务器端口脚本
- android屏幕休眠和唤醒两种方法(newWakeLock)
- 数论基础(浅谈数论的部分实现)
- win10开启虚拟化服务器,Windows10开启Hyper-V虚拟机管理器
- jquery填充列表内容
- Excel如何提取单元格中最后一次出现的数值
- css日落_如何拍摄好日落照片
- 股指的趋势持续研究(Hurst指数)
- Processing摸索前行(9)-音频可视化
- java中List Stream的简单使用
- 神经性脚臭案例整理(六)
- js中break关键字的用法。
- Mysql-mmm高可用集群(有mysql环境)
- Yara引擎编译和发布