播放音频和视频的源文件可以是一下三种:

源文件(即res/raw下或assets下)
文件系统(即sdcard)
流媒体(即网络)

1、播放音频文件
播放音频文件可以用MediaPlayer类或SoundPool类。下面我们来介绍这两个类。

1.1、MediaPlayer从源文件(即res/raw下或asserts下)播放音频

mMediaPlayer = MediaPlayer.create(this, R.raw.sleep_away);
mMediaPlayer.start();

1.2、MediaPlayer从文件系统(即sdcard)播放音频

 String filePath = Environment.getExternalStorageDirectory().getPath() + File.separator + "sleep_away.mp3";// /mnt/sdcard/sleep_away.mp3
mMediaPlayer = new MediaPlayer();
try {mMediaPlayer.setDataSource(filePath);mMediaPlayer.prepare();
} catch (Exception e) {e.printStackTrace();
}
mMediaPlayer.start();

方法二:

String filePath = Environment.getExternalStorageDirectory().getPath() + File.separator + "sleep_away.mp3";// /mnt/sdcard/sleep_away.mp3
mMediaPlayer = MediaPlayer.create(this, Uri.parse(filePath));
mMediaPlayer.start();

1.3、MediaPlayer从流媒体(即网络)播放音频

添加权限<uses-permission android:name="android.permission.INTERNET" />filePath = "http://www.xyz.com/Audio/sample.mp3";
mMediaPlayer = new MediaPlayer();
try {mMediaPlayer.setDataSource(filePath);mMediaPlayer.prepare();
} catch (Exception e) {e.printStackTrace();
}
mMediaPlayer.start();
方法二:
filePath = "http://www.xyz.com/Audio/sample.mp3";
mMediaPlayer = MediaPlayer.create(this, Uri.parse(filePath));
mMediaPlayer.start();

另外,MediaPlayer的几个方法介绍一下:

start():开始播放
pause():暂停播放
reset() + prepare() + start():重新播放(其实MediaPlayer的create方法会首次调用prepare()方法)
另外,在onDestroy()方法中必须释放MediaPlayer的资源:@Override
protected void onDestroy() {super.onDestroy();if (mMediaPlayer != null) {mMediaPlayer.release();mMediaPlayer = null;}
}

1.4、SoundPool播放音频文件
开发Android软件中我们可能经常需播放多媒体声音文件,一般使用MediaPlayer类但该类占用资源较多,对于游戏等应用可能不是很适合,SoundPool类在SDK的android.media.SoundPool,顾名思义是声音池的意思。主要播放一些较短的声音片段,可以从程序的资源或文件系统加载,相对于MediaPlayer类可以做到使用较少的CPU资源和较短的反应延迟。

SoundPool和其他声音播放类相比,其特点是可以自行设置声音的品质、音量、播放比率等参等。并且它可以同时管理多个音频流,每个流都有独自的ID,对某个音频流的管理都是通过ID进行的。

SoundPool基本使用方法:

创建一个SoundPool对象:new SoundPool(int maxStreams, int streamType, int srcQuality);
从资源或者文件载入音频流:load(Context context, int resId, int priority);
播放声音:play (int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)
关于SoundPool的用法参见Demohttp://download.csdn.net/detail/tianjf0514/4895976

2、播放视频文件
播放视频有两种方法,一种是用VideoView播放,另一种是用SurfaceView播放。

2.1、VideoView播放方式可以用VideoView.setVideoURI()和VideoView.setVideoPath两种方式播放视频
从文件系统(即sdcard)

videoView.setVideoURI(Uri.parse(Environment.getExternalStorageDirectory().getPath() + File.separator + "wild_life.mp4"));
videoView.setVideoPath(Environment.getExternalStorageDirectory().getPath() + File.separator + "wild_life.mp4");

从流媒体(即网络)

videoView.setVideoURI(Uri.parse("http://v.pps.tv/play_3445G7.html"));
videoView.setVideoPath("http://v.pps.tv/play_3445G7.html");

用VideoView的方式播放视频很简单,但是视频的位置和大小不受控制,所以要下面来介绍另一种方式

2.2、SurfaceView播放方式播放视频
SurfaceView的控制接口SurfaceHolder的setFixedSize方法可以设置视频的大小。

android系统下多媒体播放相关推荐

  1. 删除android软件,adb shell删除Android系统下的软件

    一.删除Android系统下的软件,使用adb shell进入系统,然后使用命令重新挂载"/system"目录为读写权限,具体操作及命令如下: 1.打开dos窗口:win+R 输入 ...

  2. (原)android系统下绑定Server的时候报MainActivity has leaked ServiceConnection的错误

    今天在android系统下根据官方的demo代码,我们需要启动一个服务,并绑定,但在程序启动以后,老是报错: Activity MainActivity has leaked ServiceConne ...

  3. android 读build.prop,Android系统下的build.prop文件

    Android系统下的build.prop文件,用adb shell进入,再进入到system目录,查看该目录下的文件,会看到build.prop文件,用exit命令退出. 1551927518(1) ...

  4. android蓝牙配对 自动联接,Android系统下蓝牙自动配对连接方法

    Android系统下蓝牙自动配对连接方法 [专利摘要]本发明涉及一种Android系统下蓝牙自动配对连接方法,其包括如下步骤:步骤1.在Android设备端内存储上次进行蓝牙连接蓝牙外设的蓝牙地址,并 ...

  5. X86 android r7 z3735,安卓工业平板电脑android系统下各大主流CPU性能大对比分析

    原标题:安卓工业平板电脑android系统下各大主流CPU性能大对比分析 针对工控领域客户在选择工业平板电脑时的困惑,南京研维组织多位业内专家,为大家连续推出10期工业平板电脑的选型要点分析,本文作为 ...

  6. 解析android系统下Dex2oat的实现

    简介 在Android系统5.0及以上系统开始逐渐丢弃Dalvik虚拟机,由于ART虚拟机对内存分配和回收都做了算法优化,降低了内存碎片化程度,回收时间也得以缩短,所有android系统5.0及以上都 ...

  7. android系统自动休眠代码流程,一种基于Android系统下的可控休眠方法及系统与流程...

    本发明涉及一种手机应用,尤其涉及一种基于android系统下的可控休眠方法及系统. 背景技术: android设备的休眠指的是当长时间不用手机时手机会自动进入一个省电模式,调低或者关闭一部分电压的输出 ...

  8. 解决了基于Android系统下的藏文输入重叠字的问题。

    我已经完美的解决了基于Android系统下的藏文输入重叠字的问题. 首先申明该软件需要付费,否则无法使用.该软件是基于Android智能手机下的应用层软件,当前没有区分手机终端类型及型号,所以会有些手 ...

  9. android系统下替换so库等操作

    在工作过程中由于android 系统过大编译起来太过费时,所以需要小编来进行验证修改. 下面的是小编TV android 系统的操作. 小编替换android模块步骤 1,编译出.so文件 andro ...

最新文章

  1. 疯狂ios讲义疯狂连载之显示动画
  2. 初识微信小程序第一弹
  3. 安卓上比较好的python开发软件-手机随时随地写Python,还可以开发安卓APP,太厉害了!...
  4. 线性表(一)——顺序表
  5. 从Zipkin到Jaeger,Uber的分布式追踪之道tchannel
  6. python3-numpy数组创建的几种方法
  7. 哪些系统使用了linux内核,Linux操作系统有哪些
  8. Java反射修改返回值_java反射调用时如果返回值是整型数组怎么处理?
  9. python 登入界面 代码
  10. 使用VC 编程改变字体 注意点--需要设置GB2312—CHARSET
  11. python爬虫入门 之 requests 模块
  12. 第16章Stata面板数据分析
  13. js前端实现单个或多个直播视频播放方法总结hls,rtsp
  14. Linux系统的应用软件流程图绘制软件yEd
  15. 基于STM32-F401的平衡小车
  16. catdog matlab,猫狗1,猫狗1百度云资源_盘多多如风搜_盘搜搜_哎哟喂啊
  17. 教你实现微信8.0『炸裂』的表情特效
  18. 织梦编辑器加HTML视频显示很小,织梦教程:去掉编辑器自动加div的方法即大小字情况...
  19. 补充---信息安全数学基础第四章习题答案
  20. STM32与SYN6288语音合成模块的使用

热门文章

  1. 第十一天 安装Oracle数据库
  2. 数据结构 | 链表队列(基本操作及图示)
  3. (原创)shell脚本编程之---正则表达式的使用
  4. [转载]如何做一个出色的程序员
  5. 微软开始测试自己的Google Base
  6. 小学计算机教育实习教案,小学信息技术教师资格证面试教案模板:《漂亮的剪贴画》...
  7. oracle右模糊查询不使用索引,oracle like模糊查询不能走索引?
  8. php获取td数据,记一次用PHP做爬虫获取全市高考报考数据
  9. 仪征技师学院计算机,技师学院2019年下半年江苏省大学英语、大学计算机统考工作圆满结束...
  10. 怎么让电脑屏幕一直亮着_上班族需要注意哪些养生禁忌 一直坐着没好处_百姓民生_新闻...