Android----音乐播放器

来源:互联网 发布:网络用语皮皮虾 编辑:程序博客网 时间:2024/05/12 06:32

## 音乐播放器##
列表内Android 官方提供了MediaPlayer 核心类,用于播放音乐,其状态流程如下图所示。MediaPlayer 必须严格按照状态图操作,否则就会出现错误,这些错误都是底层抛出,严格按照状态图操作的话一般就不会出问题。
使用MediaPlayer 播放音乐的核心方法如下所示:
1. MediaPlayer player = new MediaPlayer(); 创建对象
2. player.reset(); 重置为初始状态
3. player.setAudioStreamType(AudioManager.STREAM_MUSIC);声音流类型
4. player.setDataSource(“/mnt/sdcard/test.mp3”); 设置音频源
5. player.prepare(); 准备
6. player.start(); 开始或恢复播放
7. player.pause(); 暂停播放
8. player.start(); 恢复播放
9. player.stop(); 停止播放
10. player.release(); 释放资源容

流程图如下:


这里写图片描述

MainActivity代码实现:public class MainActivity extends Activity {    private EditText et_path;    private MediaPlayer mediaPlayer;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        et_path = (EditText) findViewById(R.id.et_path);    }    public void play(View view) {        try {            mediaPlayer = new MediaPlayer();            final ProgressDialog pd = new ProgressDialog(this);            pd.setMessage("正在缓冲...");            //将mediaPlayer设置为未初始化状态,设置完后必须得重新设置数据源以及进行prepare才能进行播放            mediaPlayer.reset();            //设置播放的文件            mediaPlayer.setDataSource(et_path.getText().toString().trim());//          mediaPlayer.prepare();//同步的准备 在主线程中            mediaPlayer.prepareAsync();//异步的准备,开启子线程去准备            pd.show();            mediaPlayer.setOnErrorListener(new OnErrorListener() {                @Override                public boolean onError(MediaPlayer mp, int what, int extra) {                    Toast.makeText(MainActivity.this, "播放失败,错误代码:"+what, 0).show();                    return false;                }            });            mediaPlayer.setOnPreparedListener(new OnPreparedListener() {                @Override                public void onPrepared(MediaPlayer mp) {                    pd.dismiss();                    mediaPlayer.start();                }            });        } catch (Exception e) {            e.printStackTrace();        }    }    public void pause(View view) {        if(mediaPlayer!=null&&mediaPlayer.isPlaying()){            mediaPlayer.pause();            return;        }        if(mediaPlayer!=null){            mediaPlayer.start();        }    }    public void stop(View view) {        if(mediaPlayer!=null){            mediaPlayer.stop();            mediaPlayer.release();            mediaPlayer = null;        }    }}
原创粉丝点击