Mediaplay 的理解 与使用方法
1)如何获得MediaPlayer实例:
可以使用直接new的方式:
MediaPlayer mp = new MediaPlayer();
也可以使用create的方式,如:
MediaPlayer mp = MediaPlayer.create(this, R.raw.test);//这时就不用调用setDataSource了
2) 如何设置要播放的文件:
MediaPlayer要播放的文件主要包括3个来源:
a. 用户在应用中事先自带的resource资源
例如: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()可以释放播放器占用的资源,一旦确定不再使用播放器时应当尽早调用它释放资源。
reset()可以使播放器从Error状态中恢复过来,重新会到Idle状态。
4)设置播放器的监听器:MediaPlayer提供了一些设置不同监听器的方法来更好地对播放器的工作状态进行监听,以期及时处理各种情况,
如: setOnCompletionListener(MediaPlayer.OnCompletionListener listener)、
setOnErrorListener(MediaPlayer.OnErrorListener listener)等,设置播放器时需要考虑到播放器可能出现的情况设置好监听和处理逻辑,以保持播放器的健壮性。
Mediaplay 的理解 与使用方法相关推荐
- 机器学习:一步步教你理解反向传播方法
机器学习:一步步教你理解反向传播方法 时间 2016-09-13 00:35:59 Yong Yuan's blog 原文 http://yongyuan.name/blog/back-propa ...
- behavior php,YII2框架中behavior行为的理解与使用方法示例
本文实例讲述了YII2框架中behavior行为的理解与使用方法.分享给大家供大家参考,具体如下: YII2中的行为说白了就是对组件功能的扩展,在不改变继承关系的条件下. 行为附加到组件后,行为将注入 ...
- 【数据清洗】异常点的理解与处理方法(1)
[数据清洗]异常点的理解与处理方法(1) 参考文章: (1)[数据清洗]异常点的理解与处理方法(1) (2)https://www.cnblogs.com/SevnChen/p/5024644.htm ...
- 从MIXMAX概率模型理解Bayesian建模方法
从MIXMAX概率模型理解Bayesian建模方法 储备知识 HMM-隐马尔可夫模型(Hidden Markov Model) GMM-混合高斯模型 多元高斯分布(The Multivariate n ...
- 理解WebViewClient各方法重写的作用
创建并设置一个WebViewClient子类,回调对应的方法改变网页内容的呈现方式,比如:网页加载错误回调onReceivedError(),提交表单错误回调onFormResubmission(), ...
- 深入理解Objective-C:方法缓存
摘要 只要用到Objective-C,我们每天都会跟方法调用打交道.我们都知道Objective-C的方法决议是动态的,但是在底层一个方法究竟是怎么找到的,方法缓存又是怎么运作的却鲜为人知.本文主要从 ...
- python递归详解_Python理解递归的方法总结
递归 一个函数在执行过程中一次或多次调用其本身便是递归,就像是俄罗斯套娃一样,一个娃娃里包含另一个娃娃. 递归其实是程序设计语言学习过程中很快就会接触到的东西,但有关递归的理解可能还会有一些遗漏,下面 ...
- 深入理解 Objective-C:方法缓存
摘要 只要用到Objective-C,我们每天都会跟方法调用打交道.我们都知道Objective-C的方法决议是动态的,但是在底层一个方法究竟是怎么找到的,方法缓存又是怎么运作的却鲜为人知.本文主要从 ...
- Thread线程的深刻理解和代理方法参数[有图有真相]
在这说的是Thread的基本用法,线程池ThreadPool在这就不说的,以前的blog有写,基本上两个用法都是相同的.基本用法和图,不需要的大鸟请绕行,谢谢! 目录: 1.Thread基本用法与异步 ...
最新文章
- linux dd命令磁盘写入
- python整数二进制有多少个1_几种统计一个二进制数内有几个1的方法
- php5.3的新特性
- C语言记录元音字母的位置,算法训练 确定元音字母位置
- Caffe代码导读(5):对数据集进行Testing
- 【MM模块】Invoice Verification in the Background 后台发票校验
- JVM_垃圾收集器与内存分配策略01
- 隔壁大爷都会网络布线啦、搞起来搞起来
- 华为鸿蒙系统不卡,华为鸿蒙系统,到底能不能取代安卓?网友:细节决定成败...
- Batch Normalization原理及pytorch的nn.BatchNorm2d函数
- mysql 开启远程访问_QxOrm 访问 MySQL
- python socket 主动断开_python之使用ctrl+c断开多线程(TcpSocketServer连接)出现端口占用的情况...
- BI开发之——ETL注意细节
- 计算机网络 职中,职中计算机网络基础期中考试试卷.pdf
- mac虚拟机服务器设置u盘启动不了,mac虚拟机如何使用u盘启动盘
- Hadoop之MapReduce02【自定义wordcount案例】
- android 自定义控件gif压缩包,android显示gif图片(自定义控件以及属性)
- Mac装Xcode后开不了机
- 把汇编程序翻译成C语言,pic单片机汇编程序翻译成c语言解决办法
- 中级网络工程师——第一章计算机组成与原理