您的位置:首页 > 其它

使用MediaPlayer播放音乐文件

2017-04-12 13:48 603 查看
package com.example.day502;

import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;

import java.io.File;

/**
* 创建自定义的音频播放器MediaPlayer
*/
public class MainActivity extends AppCompatActivity implements MediaPlayer.OnCompletionListener,View.OnTouchListener,View.OnClickListener{
private MediaPlayer mediaPlayer;
private Button start,stop;
private View view;
private int position=0; //保存音频文件中的位置,后面将使用这个位置确定从哪里播放
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

start=(Button)findViewById(R.id.start);
stop=(Button)findViewById(R.id.stop);
view=(View)findViewById(R.id.view);
start.setOnClickListener(this);
stop.setOnClickListener(this);
view.setOnTouchListener(this);
}

@Override
protected void onStart() {
super.onStart();
File file=new File(Environment.getExternalStorageDirectory().getPath()+"/output_audios.wav");
Uri uri = Uri.fromFile(file);
mediaPlayer=MediaPlayer.create(this,uri);       //创建MediaPlayer对象加载uri
mediaPlayer.setOnCompletionListener(this);
mediaPlayer.start();
}

@Override
protected void onStop() {
super.onStop();
mediaPlayer.stop();
mediaPlayer.release();
}

@Override
public void onCompletion(MediaPlayer mp) {
mp.start();
mp.seekTo(position);//定位到保存的位置
}

/**
* @param v
* @param event
* @return
*
* getDuration()返回文件的持续时间如果没有持续时间返回-1即实时流直播
*/
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE) {
if (mediaPlayer.isPlaying()) {
//计算出滑动的距离最终换算成文件在屏幕上的长度
position = (int) event.getX() * mediaPlayer.getDuration() / view.getWidth();
//定位到拖动的位置
mediaPlayer.seekTo(position);
}
}
return true;
}

@Override
public void onClick(View v) {
if (v == start) {
mediaPlayer.start();
}
if (v == stop) {
mediaPlayer.pause();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: