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提供了pausestop方法,但这些方法建议最好不要轻易使用,因为有些时候它们可能会使你的程序莫名其妙的终止。Android开发网建议使用这两个方法的时候尽可能多做测试工作,还有些朋友反映它们不会立即中止播放声音,而是把缓冲区里的数据播放完才会停下来,也许会多播放一秒钟。

3. SoundPool的效率问题。其实SoundPool的效率在这些播放类中算是很好的了,这可能会影响用户体验。也许这不能管SoundPool本身,因为到了性能比较好的Droid中这个延迟就可以让人接受了。

注意soundPool播放的音源文件必须是ogg格式,否则可能会出现莫名其妙的问题

转载于:https://www.cnblogs.com/hexinwei/p/3469399.html

Android中的音频播放(MediaPlayer和SoundPool)相关推荐

  1. Android 中封装优雅的 MediaPlayer 音频播放器,支持多个播放器

    Android 中封装优雅的 MediaPlayer 音频播放器,支持多个播放器实例的示例: public class AudioPlayer implements MediaPlayer.OnPre ...

  2. android 音频播放过程,一种Android系统中的音频播放方法与流程

    本申请涉及android系统技术,特别涉及一种android系统中的音频播放方法. 背景技术: 在android系统中,现有的使用audiotrack进行音频播放时,audiotrack应用与andr ...

  3. android调用系统音频播放器,Android使用Service实现简单音乐播放实例

    Service翻译成中文是服务,熟悉Windows 系统的同学一定很熟悉了.Android里的Service跟Windows里的Service功能差不多,就是一个不可见的进程在后台执行. Androi ...

  4. Android Studio——简易音频播放器

    目的 设计一个具有选歌功能的音频播放器 工具及环境 使用java语言,在Android studio平台上进行开发 功能设计 界面有三个按钮选项,可以停止.播放.暂停音乐.通过选择列表的音乐,播放相应 ...

  5. ios中AVAudioPlayer音频播放器

    IOS中有三种播放音频的方式:AVAudioPlayer.音频服务.音频队列. AVAudioPlayer在AVFoundation框架下,所以我们要导入AVFoundation.framework. ...

  6. android中录音断点播放,Android实现语音播放与录音功能

    本文实例为大家分享了Android实现语音播放与录音的具体代码,供大家参考,具体内容如下 项目用到的技术点和亮点 语音录音 (单个和列表) 语音播放(单个和列表) 语音录音封装 语音播放器封装 语音列 ...

  7. Android中的音乐播放

    在Android平台下,要实现声音的播放是十分容易实现的,只要生成一个MediaPlayer对象,并调用它的相关方法,就能改变对声音播放进行控制.MediaPlayer对象有一下各种状态: 熟悉了Me ...

  8. android中录音断点播放,Android实现暂停--继续录音(AudioRecord)

    Android提供了两个API用于录音的实现:MediaRecorder 和 AudioRecord,各有优劣. 1.MediaRecorder 已经集成了录音.编码.压缩等,支持少量的录音音频格式, ...

  9. android打开wav格式,在Android中使用AudioTrack播放WAV文件

    我偶然发现了这个答案(坦白说,通过尝试& ^ @!我没有想到会工作),如果有人有兴趣-在我的原始代码(这是源自原始帖子中的链接的例子) ,数据从文件中读取如下: InputStream is ...

最新文章

  1. html无序列表空心圆_列表样式的使用CSS入门基础(018)
  2. 【Java Web后台实验与开发】The server time zone value ‘�й���׼ʱ��‘ is unrecognized or represents more than one
  3. PHP项目部署在tomcat,在Tomcat中部署Web项目的操作方法(必看篇)
  4. java我的世界显示合成表_我的世界:谁动了我的合成表?每10秒打乱合成配方,你撑不过一晚...
  5. 可靠消息最终一致性设计_如何最终启动您的设计产品组合
  6. iphonex如何关机_历时一个月,跨越一千里,我找回了在澳门被偷的iphoneX
  7. python3写的一个检测远程服务器端口脚本
  8. android屏幕休眠和唤醒两种方法(newWakeLock)
  9. 数论基础(浅谈数论的部分实现)
  10. win10开启虚拟化服务器,Windows10开启Hyper-V虚拟机管理器
  11. jquery填充列表内容
  12. Excel如何提取单元格中最后一次出现的数值
  13. css日落_如何拍摄好日落照片
  14. 股指的趋势持续研究(Hurst指数)
  15. Processing摸索前行(9)-音频可视化
  16. java中List Stream的简单使用
  17. 神经性脚臭案例整理(六)
  18. js中break关键字的用法。
  19. Mysql-mmm高可用集群(有mysql环境)
  20. Yara引擎编译和发布

热门文章

  1. vue resource then
  2. Shiro表结构设计
  3. jquery --- 阻止表单默认的提交行为,标准化表单的数据
  4. IPython 使用记录
  5. 代码生成工具之界面快速生成
  6. Hyper-v 2016 VHD Set
  7. MFC控件(7):Split Button
  8. HALCON示例程序measure_circles.hdev测量圆的半径
  9. 机器学习——支持向量机SVM之非线性模型(原问题转化为对偶问题)
  10. matlab常用函数——数学函数