【Android笔记】MediaPlayer基本使用方式
Android MediaPlayer基本使用方式
使用MediaPlayer播放音频或者视频的最简单例子:
Java代码部分:
publicclass MediaPlayerStudy extends Activity {
private Button bplay,bpause,bstop;
private MediaPlayer mp = new MediaPlayer();
@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bplay = (Button)findViewById(R.id.play);
bpause = (Button)findViewById(R.id.pause);
bstop = (Button)findViewById(R.id.stop);
bplay.setOnClickListener(new OnClickListener(){
@Override
publicvoid onClick(View v) {
try {
mp.setDataSource("/sdcard/test.mp3");
mp.prepare();
mp.start();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
mp.setOnCompletionListener(new OnCompletionListener(){
@Override
publicvoid onCompletion(MediaPlayer mp) {
mp.release();
}
});
}
});
bpause.setOnClickListener(new OnClickListener(){
@Override
publicvoid onClick(View v) {
if(mp != null){
mp.pause();
}
}
});
bstop.setOnClickListener(new OnClickListener(){
@Override
publicvoid onClick(View v) {
if(mp != null){
mp.stop();
}
}
});
}
@Override
protectedvoid onDestroy() {
if(mp != null)
mp.release();
super.onDestroy();
}
}
布局文件main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/hello" />
<Button android:text="play" android:id="@+id/play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></Button>
<Button android:text="pause" android:id="@+id/pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></Button>
<Button android:text="stop" android:id="@+id/stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></Button>
</LinearLayout>
程序说明:
这个例子只是描述了MediaPlayer的基本使用步骤和方式,MediaPlayer还有多种使用方式和方法,并不只局限于例子所介绍的一种。具体来看:
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)
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)等,设置播放器时需要考虑到播放器可能出现的情况设置好监听和处理逻辑,以保持播放器的健壮性。
【Android笔记】MediaPlayer基本使用方式相关推荐
- 【Android笔记】MediaPlayer基本用法
Android MediaPlayer基本使用方式 使用MediaPlayer播放音频或者视频的最简单样例: JAVA代码部分: publicclass MediaPlayerStudy extend ...
- Android笔记【3】---多媒体播放/广播与服务
Android笔记[3]-多媒体播放/广播与服务 1.音乐播放 (1)创建MediaPlayer媒体播放器 存储在应用程序的res资源中的音乐文件,使用create()方法创建MediaPlayer对 ...
- 采用Android的MediaPlayer+SurfaceView设计视频播放器
前言 android视频播放有很多方式(自带videoView等),这里简单说其中一种:MediaPlayer+SurfaceView,一个播放音频,一个播放视频(图像). 大体结构图 BaseMed ...
- Android的MediaPlayer架构介绍
第一部分 MediaPlayer概述 Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video两个应用程序都是调用MediaPla ...
- 基于Android的MediaPlayer的音乐播放器的封装
基于Android的MediaPlayer的音乐播放器的封装 使用过android原生的mediaplayer来做音频播放的同学们,肯定是经历过一些痛苦的,因为android提供了一个状态机,确实这个 ...
- android listview替代,Android笔记——RecyclerView替代ListView
ListView是常用列表控件,但设置Adapter时自定义代码较为复杂,因此Android3.0后,增加RecyclerView替代ListView RecyclerView没有提供OnItemCl ...
- Android 使用MediaPlayer播放音频详解
目录 一.官方资料 二.简单介绍 三.MediaPlayer使用 1.创建MediaPlayer实例 2.重要API 3.状态图 4.代码 5.常用API 6.辅助效果 总结 一.官方资料 Media ...
- android无缝切换播放器,Android使用MediaPlayer和TextureView实现视频无缝切换
需求描述 比如广告播放,每个视频15秒,视频之间切换的时候,性能不太好的机器可能会黑屏一段时间,体验不太好,接下来我们就是要解决这个黑屏问题. 解决方案 使用两个surfaceView方式,经过测试不 ...
- Android 使用MediaPlayer播放本地视频
MediaPlayer可以播放视频和音频,并且它支持本地和网络文件的播放.本篇文章是使用MediaPlayer播放本地视频,如果觉得使用MediaPlayer比较麻烦,也可以选择VideoView播放 ...
最新文章
- Java 虚拟机经典六问
- 02365计算机软件基础,自考02365《计算机软件基础(二)》习题解答.pdf
- 计算机专业人毕业设计外文翻译,计算机专业毕业设计外文翻译.doc
- JavaScript_Util_01
- 信息学奥赛一本通 1392:繁忙的都市(city) | 洛谷 P2330 [SCOI2005]繁忙的都市
- [JavaScript] 防止页面被嵌入Iframe
- 0.python class
- 代数方程与差分方程模型(三):按年龄分组的人口模型
- 关于网络超时时间那些事
- Dorado7的初次使用
- 最简单的P2P加密聊天软件开发完成
- 随书赠送的股票量化分析工具—出升级版啦!功能抢先看
- 乐扣309:最佳购买股票时机含冷冻期
- 基于MPlayer的QT媒体播放器
- java-net-php-python-13jspm珠宝销售网开题计算机毕业设计程序
- 企业微信 1.3.5、多了个同事吧
- Android开发之简单快速对APP进行GIF动图生成
- Java软件架构设计
- python常用基础库:标准库和第三方库
- 医学图像处理:CT与CBCT