MediaPlayer类
静态构造方法
方法名称
|
描述
|
public static MediaPlayer create(Context context, Uri uri, SurfaceHolder holder)
|
指定从资源ID对应的资源文件中来装载音乐文件,同时指定了SurfaceHolder对象并返回MediaPlyaer对象
|
public static MediaPlayer create(Context context, int resid)
|
指定从资源ID对应的资源文件中来装载音乐文件,并返回MediaPlyaer对象
|
public static MediaPlayer create(Context context, Uri uri)
|
指定从Uri对应的资源文件中来装载音乐文件,并返回MediaPlyaer对象
|
常用方法
方法名称
|
描述
|
public void start ()
|
开始或恢复播放
|
public void stop()
|
停止播放
|
public void pause()
|
暂停播放
|
public void setDataSource (String path)
|
从指定的装载path路径所代表的文件
|
public void setDataSource (FileDescriptor fd, long offset, long length)
|
指定装载fd所代表的文件中从offset开始、长度为length的文件内容
|
public void setDataSource (FileDescriptor fd)
|
指定装载fd所代表的文件
|
public void setDataSource (Context context, Uri uri)
|
指定装载uri所代表的文件
|
public void setDataSource (Context context, Uri uri, Map<String, String> headers)
|
指定装载uri所代表的文件
|
public void prepare()
|
预期准备,因为setDataSource()方法之后,MediaPlayer并未真正的去装载那些音频文件,需要调用prepare()这个方法去准备音频
|
public void setLooping(boolean looping)
|
设置是否循环播放这个音乐文件
|
public void setSurface(Surface surface)
|
设置Surface
|
public void setVolume(float leftVolume,float rightVolume)
|
设置音量
|
public void setDisplay(SurfaceHolder sh)
|
设置显示方式
|
public void seekTo(int mses)
|
寻求指定的时间位置。
|
public void isLooping()
|
判断是否循环播放
|
public void isPlaying()
|
判断是否正在播放
|
public void release()
|
释放相关该MediaPlayer对象的资源。
|
绑定事件监听器
监听器
|
描述
|
public void setOnCompletionListener (MediaPlayer.OnCompletionListener listener)
|
为MediaPlayer的播放完成事件绑定事件监听器
|
public void setOnErrorListener (MediaPlayer.OnErrorListener listener)
|
为MediaPlayer的播放错误事件绑定事件监听器
|
public void setOnPreparedListener (MediaPlayer.OnPreparedListener listener)
|
当MediaPlayer调用prepare()方法时触发该监听器
|
public void setOnSeekCompleteListener (MediaPlayer.OnSeekCompleteListener listener)
|
当MediaPlayer调用seek()方法的时候触发该监听器
|
播放音频
1、播放应用的资源文件(res/raw/)
通过我们上面介绍的几个静态构造函数创建MediaPlayer对象
MediaPlayer mediaPlayer = MediaPlayer.create(MediaPlayerDemoActivity.this,
R.raw.a1);
2、播放应用的原始资源文件(assets)
1) 通过Context.getAssets()方法获得AssetManager对象
2) 通过AssetManager对象的openFd(String name)方法打开指定的原生资源文件夹,返回一个AssetFileDescriptor对象
3) 通过AssetFileDescriptor的getFileDescriptor()得到一个FileDescriptor对象
4) 通过public void setDataSource (FileDescriptor fd, long offset, long length)来创建MediaPlayer对象
5) 调用MediaPlayer.prepare()方法准备音频
6) 调用MediaPlayer的start()、pause()、stop()等方法控制
AssetFileDescriptor fileDescriptor = assetManager
.openFd("a2.mp3");
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),
fileDescriptor.getStartOffset(),
fileDescriptor.getLength());
mediaPlayer.prepare(); mediaPlayer.start();
3、播放外部存储上的音频资源文件(sdcard)
1) 创建MediaPlayer对象,通过MediaPlayer对象的setDataSource(String path)方法装载预定的音频文件
2) 调用MediaPlayer对象的prepare()方法准备音频
3) 调用MediaPlayer的start()、pause()、stop()等方法控制
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource("/mnt/sdcard/a3.mp3");
mediaPlayer.prepare();
mediaPlayer.start();
4、播放网络上的音频文件
1) 根据网络上的地址创建Uri对象
2) 通过public void setDataSource (Context context, Uri uri)设置音频来源装载音频文件
3) 调用MediaPlayer对象的prepare()方法准备音频
4) 调用MediaPlayer的start()、pause()、stop()等方法控制
mediaPlayer = new MediaPlayer();
// 通过Uri解析一个网络地址
Uri uri = Uri
.parse("http://zhangmenshiting2.baidu.com/data2/music/9138619/9138619.mp3?xcode=dd0d0d0df7218eb9a79c7fd72cefb648&mid=0.18926789458694");
mediaPlayer.setDataSource(MediaPlayerDemoActivity.this, uri);
mediaPlayer.prepare();
mediaPlayer.start();
当然也可以通过我们的另一种静态构造方法直接创建一个MediaPlayer对象
Uri uri = Uri
.parse("http://zhangmenshiting2.baidu.com/data2/music/9138619/9138619.mp3?xcode=dd0d0d0df7218eb9a79c7fd72cefb648&mid=0.18926789458694");
mediaPlayer = MediaPlayer.create(MediaPlayerDemoActivity.this,
uri);
mediaPlayer.start();
实现效果:
贴上源代码:
package com.jiahui.media;
import java.io.IOException;
public class MediaPlayerDemoActivity extends Activity implements
OnClickListener {
private Button btnAppStart, btnAssetsStart, btnSdcardStart,
btnNetworkStart;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnAppStart = (Button) this.findViewById(R.id.btnAppStart);
btnAssetsStart = (Button) this.findViewById(R.id.btnAssetsStart);
btnSdcardStart = (Button) this.findViewById(R.id.btnSdcardStart);
btnNetworkStart = (Button) this.findViewById(R.id.btnNetworkStart);
btnAppStart.setOnClickListener(this);
btnAssetsStart.setOnClickListener(this);
btnSdcardStart.setOnClickListener(this);
btnNetworkStart.setOnClickListener(this);
}
@Override
public void onClick(View v) {
MediaPlayer mediaPlayer = null;
switch (v.getId()) {
case R.id.btnAppStart:
System.out.println("---播放应用的资源文件----");
// 使用raw下的资源文件创建MediaPlayer对象
mediaPlayer = MediaPlayer.create(MediaPlayerDemoActivity.this,
R.raw.a1);
mediaPlayer.start();
break;
case R.id.btnAssetsStart:
System.out.println("---播放assest的资源文件----");
AssetManager assetManager = this.getAssets();
try {
AssetFileDescriptor fileDescriptor = assetManager
.openFd("a2.mp3");
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),
fileDescriptor.getStartOffset(),
fileDescriptor.getLength());
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
case R.id.btnSdcardStart:
System.out.println("---播放SDcard上的文件---");
try {
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource("/mnt/sdcard/a3.mp3");
mediaPlayer.prepare();
mediaPlayer.start();
} catch (Exception e) {
}
break;
case R.id.btnNetworkStart:
System.out.println("播放网络上的音频");
// http://zhangmenshiting2.baidu.com/data2/music/9138619/9138619.mp3?
// xcode=dd0d0d0df7218eb9a79c7fd72cefb648&mid=0.18926789458694
try {
// mediaPlayer = new MediaPlayer();
// 通过Uri解析一个网络地址
Uri uri = Uri
.parse("http://zhangmenshiting2.baidu.com/data2/music/9138619/9138619.mp3?xcode=dd0d0d0df7218eb9a79c7fd72cefb648&mid=0.18926789458694");
mediaPlayer.setDataSource(MediaPlayerDemoActivity.this, uri);
// mediaPlayer.prepare();
// 也可以直接通过这种方式装载网络上的音频文件
mediaPlayer = MediaPlayer.create(MediaPlayerDemoActivity.this,
uri);
mediaPlayer.start();
} catch (Exception e) {
// TODO: handle exception
}
break;
default:
break;
}
}
}
如需转载引用请注明出处:http://blog.csdn.net/jiahui524
源代码下载:http://download.csdn.net/detail/jiahui524/3847987
分享到:
相关推荐
从头学Android之多媒体--使用MediaPlayer播放音频示例代码
Android 中级教程之------Android MediaPlayer播放mp3的实例 是提示性代码!
例子中使用SurfaceView控件显示视频,使用MediaPlayer控制视频播放。
代码中使用MediaPlayer类实现播放音频的功能。
使用VideoView播放视频简单、方便,但有些早期的开发者还是更喜欢使用MediaPlayer来播放视频,但由于MediaPlayer主要用于播放音频,因此它没有提供图像输出界面,此时就需要借助于SurfaceView来显示MediaPlayer播放...
Android 使用MediaPlayer播放assets或者raw目录的音频文件 https://blog.csdn.net/qq_31939617/article/details/80491552
Android MediaPlayer Playback---多媒体开发应用程序接口
详情见博客:https://blog.csdn.net/qq_20785431/article/details/100543504
MediaPlaye简介以及使用MediaPlayer播放音频文件
Android 使用mediaplayer播放res/raw文件夹中的音乐的实例 (1)在res文件夹中新建一个文件夹重命名为raw,并且将要播放的音乐放到raw文件夹里面 (2)修改layout目录下的xml布局文件,添加3个按钮空间和一个文本...
android中多媒体应用:MediaPlayer 媒体播放器、SoundPool音效池、控件VedioView ,设置媒体控制器播放视频。音频及视频的录制。
这是一个简单的带有进度条的mediaplayer音频播放器demo,只有一个按键,用来播放和暂停。进度条可以通过拖动来改变播放的进度。供Android初学者参考
停止播放音频,调用该方法后MediaPlayer对象无法在播放音频 release() 释放掉与MediaPlayer对象相关的资源 isPlaying() 判断当前MediaPlayer是否正在播放音频 getDuration 获取载入的音频文件的时长 …… …… 创建...
使用MediaPlayer和ProgressBar完成一个MP3的播放,ProgressBar配合Mp3播放进度位置
Android开发 多媒体开发之MediaPlayer源代码
Android MediaPlayer 自定义循环次数
下面介绍使用MediaPlayer播放音频 在Android中,提供了MediaPlayer类来播放音频。使用MediaPlayer类播放音频比较简单,只需要创建该类的对象,并为其指定要播放的音频文件,然后调用该类的start()方法即可,下面...
Android-MediaPlayer-播放音频 Android MediaPlayer依次播放存储在/ raw中的音频 看起来如何!
Android MediaPlayer播放mp3的实例