当前位置: 首页 > article >正文

关于MediaPlay使用方法 与基本理解

MeadiaPlay是一个多媒体播放类 用来播放音视频


1如何获得MediaPlayer实例:

可以使用直接new的方式:
MediaPlayer mp = new MediaPlayer();
也可以使用create的方式,如:
MediaPlayer mp = MediaPlayer.create(this, R.raw.test);//这时就不用调用setDataSource了

2如何设置要播放的文件:
MediaPlayer要播放的文件主要包括3个来源:
a. 用户在应用中事先自带的resource资源也就是我们res中
例如:MediaPlayer.create(this, R.raw.test);
b. 存储在SD卡或其他文件路径下的媒体文件
例如:mp.setDataSource("/sdcard/test.mp3");
c. 网络上的媒体文件
例如:mp.setDataSource("http://www.citynorth.cn/music/confucius.mp3");

MediaPlayer的setDataSource一共四个方法:
setDataSource (String path)
setDataSource (FileDescriptor fd)
setDataSource (Context context, Uri uri)
setDataSource (FileDescriptor fd, long offset, long length)
 
其中使用FileDescriptor时,需要将文件放到与res文件夹平级的assets文件夹里,然后使用:
AssetFileDescriptor fileDescriptor = getAssets().openFd("rain.mp3");
m_mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),fileDescriptor.getStartOffset(), fileDescriptor.getLength());
来设置datasource

3对播放器的主要控制方法:
Android通过控制播放器的状态的方式来控制媒体文件的播放,其中:
prepare()和prepareAsync() 提供了同步和异步两种方式设置播放器进入prepare状态,需要注意的是,如果MediaPlayer实例是由create方法创建的,那么第一次启动播放前不需要再调用prepare()了,因为create方法里已经调用过了。
start()是真正启动文件播放的方法,
pause()和stop()比较简单,起到暂停和停止播放的作用,

seekTo()是定位方法,可以让播放器从指定的位置开始播放,需要注意的是该方法是个异步方法,也就是说该方法返回时并不意味着定位完成,尤其是播放的网络文件,真正定位完成时会触发OnSeekComplete.onSeekComplete(),如果需要是可以调用setOnSeekCompleteListener(OnSeekCompleteListener)设置监听器来处理的。
release()可以释放播放器占用的资源,一旦确定不再使用播放器时应当尽早调用它释放资源。v
reset()可以使播放器从Error状态中恢复过来,重新会到Idle状态。

4设置播放器的监听器:
MediaPlayer提供了一些设置不同监听器的方法来更好地对播放器的工作状态进行监听,以期及时处理各种情况,
如: setOnCompletionListener(MediaPlayer.OnCompletionListener listener)、
setOnErrorListener(MediaPlayer.OnErrorListener listener)
等,设置播放器时需要考虑到播放器可能出现的情况设置好监听和处理逻辑,以保持播放器的健壮性。
http://www.lryc.cn/news/2419076.html

相关文章:

  • Linux:串口编程详解(转)
  • linux 14.04安装方法,Ubuntu 14.04下安装和配置Terminator
  • 【计算机毕业设计】Django音乐推荐系统-40803,毕设开题选题+程序定制+论文书写+答辩ppt书写-原创(题目+编号)的定制程序
  • C#开源项目
  • 收益率-计算方法介绍
  • 上市公司应计盈余管理(琼斯模型:基本Jones模型和修正Jones模型)
  • 提供真随机数源的网站
  • vue实现动态获取左侧导航宽度,右侧内容动态改变margin值
  • Google网站流量统计工具
  • 利用vps+frp实现访问公司内网windows远程桌面
  • C代码内存检测工具memwatch 使用总结
  • Windows CE的目录组织
  • JDK1.8下载、安装及环境变量配置
  • 数据库开发019 DataReader对象
  • 数字图像处理(冈萨雷斯 第三版)
  • 数据通信与计算机网络
  • GJM : 数据结构 - 轻松看懂机器学习十大常用算法 [转载]
  • 虚拟机的几种网络连接方式
  • e1000网络驱动分析
  • Bugku杂项题目解析
  • Win7桌面显示计算机(我的电脑)图标
  • 操作系统0x08-内存管理概念
  • 农夫安全-安全网站导航 farmsec
  • 全球免费公共DNS服务器IP地址大全(包含IPv6)
  • 通过基因组选择预测杂交水稻的表现(数据挖掘)
  • Linux操作系统之文件系统详解
  • 完全从零Java自学系列【入门篇】(第一课:环境搭建工具安装与初入编程【初识工程JAVA文件语法变量判断循环】)
  • jpa 托管_JPA EntityManager详解(一)
  • OpenSSL安全漏洞与编程实践
  • Php168代码执行漏洞,Vulnhub-ThinkPHP 2.x 任意代码执行漏洞