教你用MediaPlayer做个带进度条的音乐播放器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

教你用MediaPlayer做个带进度条的音乐播

放器

先看效果图

很尴尬的一点就是大家没法听到音乐, 就只能看看图片.

布局文件

好像还有点小清新

MediaPlayer的使用

/**

* 初始化播放器MediaPlayer

*/

private void initMediaPlayer() {

//1. 加载选中歌曲

try {

// 设置音频文件路径, 或者是资源uri

if (mType == 1) {

(mFilePath);

} else if (mType == 2) {

Uri uri = (":///" + );

(this, uri);

} else {

return;

}

// 设置为循环, MediaPlayer预加载

(true);

();

} catch (Exception e) {

();

}

}

/**

* @param v 使用资源文件中的音乐

*/

public void addMusic(View v) {

mRawMusic = "";

et_input_(mRawMusic);

//2. 初始化播放器

mType = 2;

initMediaPlayer();

}

public void setDataSource(Context context, Uri uri);

public void setDataSource(String path);

你可以使用setDataSource来加载uri定位的文件, 也可以传入文件系统中的路径path来加载, 示例就是这么分的. 在这之后一定要记得调用prepare方法去预装文件.

/**

* @param v 播放按钮

*/

public void playMusic(View v) {

//1. 获取文件的持续时间

sb_(());

if (!()) {

();

}

}

/**

* @param v 暂停按钮

*/

public void pauseMusic(View v) {

if (()) {

();

}

}

/**

* @param v 停止按钮

*/

public void stopMusic(View v) {

if (()) {

();

initMediaPlayer();

}

}

这是三个按钮对应的点击方法, 要记得在播放前获取音乐文件的总时长, 并设置给进度条.

读取文件系统肯定是要权限的, 可以查看我之前的文章一个Util带你获取以上的读写sdcard权限

进度条的设置

/**

* 初始化进度条

*/

private void initSeekBar() {

//1. 设置进度条监听

isSeek = false;

sb_(new () {

@Override

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

}

@Override

public void onStartTrackingTouch(SeekBar seekBar) {

isSeek = true;

}

@Override

public void onStopTrackingTouch(SeekBar seekBar) {

(());

isSeek = false;

}

});

//2. 开启线程同步进度条

new Thread() {

@Override

public void run() {

while (keepTrue) {

try {

(500);

} catch (InterruptedException e) {

();

}

if (!isSeek) {

sb_(());

}

}

}

}.start();

}

setOnSeekBarChangeListener的监听器有三个方法要重写, 除了用isSeek记录状态之外, 停止触摸之后使用MediaPlayer的seekTo方法是重点. 然后就是进度条的绘制肯定是要开新线程的. 有一点就是, 在while循环中, 条件参数不要直接写true, 要设置变量, 否则会警告啥的.

行了. 喜欢的快下载源码编译看看吧.

相关文档
最新文档