MediaPlayer
MediaPlayer是Android系统自带的,可以用来播放音频、视频和流媒体。MediaPlayer包含了Audio和Video的播放功
常用方法
方法 | 说明 |
---|---|
create | 创建一多媒体 |
getCurrentPosition | 当前播放位置 |
getDuration | 文件的总时间 |
getVideoHeight | 视频的高度 |
getVideoWidth | 视频的宽度 |
isLooping | 是否循环播放 |
isPlaying | 是否正在播放 |
start | 开始播放 |
pause | 暂停 |
prepare | 准备(同步) |
prepareAsync | 准备(异步) |
stop | 停止播放 |
release | 释放相关资源 |
reset | 重置 |
seekTo | 指定 |
setAudioStreamType | 设置类型 |
setDataSource | 设多媒体数据来源 |
setDisplay | 设置显示多媒体的载体 |
setLooping | 是否循环播放 |
setOnButteringUpdateListener | 网络流媒体的缓冲监听 |
setOnErrorListener | 错误信息监听 |
setOnVideoSizeChangedListener | 视频尺寸监听 |
setScreenOnWhilePlaying | 设置是否保持屏幕常亮 |
setVolume | 设置音量 |
播放实现
简单步骤
创建一个MediaPlayer对象,实现start()方法,便可以简单播放音乐
mPlayer = MediaPlayer.create(this, R.raw.summer);
mPlayer.start();
具体步骤
-
先创建MediaPlayer对象;
-
调用setDataSource()方法来设置音频文件来源;
-
再调用prepare()/prepareAysnc()方法进行准备;
-
调用start方法就可以播放音频。
mediaPlayer = new MediaPlayer(); mediaPlayer.setDataSource(file.getAbsolutePath()); mediaPlayer.setOnPreparedListener(this); mediaPlayer.prepareAsync(); //setOnPreparedListener(this)实现的方法 @Override public void onPrepared(MediaPlayer mp) { mediaPlayer.start(); }
MediaPlayer实现了四个不同setDataSource()方法
setDataSource (String path)
setDataSource (FileDescriptor fd)
setDataSource (Context context, Uri uri)
setDataSource (FileDescriptor fd, long offset, long length)
可以从路径,raw,Assets,网络等加载
实例
简单实现一个带进度条的音乐播放器
image.png
布局文件很简单,一个进度条,三个按钮
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="3dp"
android:orientation="vertical">
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="歌曲名"
android:textSize="20dp"/>
<SeekBar
android:id="@+id/seek_bar_music"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="0"
android:progress="0" />
<Button
android:id="@+id/btn_play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="播放" />
<Button
android:id="@+id/btn_pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="暂停" />
<Button
android:id="@+id/btn_stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="停止" />
</LinearLayout>
具体实现
点击播放按钮进行播放
case R.id.btn_play:
if (mPlayer != null) {
mPlayer.release();
mPlayer = null;
}
mPlayer = new MediaPlayer();
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.setOnPreparedListener(this);
try {
mPlayer.setDataSource(url);
} catch (Exception e) {
e.printStackTrace();
}
mPlayer.prepareAsync();
break;
OnPrepared准备完成之后,开始播放
//setOnPreparedListener(this)实现的方法
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
timer();
}
点击暂停或停止按钮,暂停或结束播放
case R.id.btn_pause:
if (mPlayer.isPlaying()) {
mPlayer.pause();
}
break;
case R.id.btn_stop:
if (mPlayer != null) {
mPlayer.stop();
mPlayer.reset();
}
break;
网友评论