使用MediaPlayer播放音乐文件

来源:互联网 发布:阿尔法复制软件下载 编辑:程序博客网 时间:2024/05/29 04:27
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();        }    }}
0 0