android下MediaPlayer的使用

     在开发中,有时候我们可能会用到一些多媒体操作的一些功能。下面,简单介绍一下mediaPlayer的使用.市面上很多音乐播放器之类,个人觉得应该是在service中去开启mediaPlayer的,因为生命周期的问题,这个在这就不阐述了,下面就以一个案例的形式介绍一下常见的操作和使用。

     1.首先,我们把界面做成这样,简单易懂

    

    2.具体mediaPlayer开启创建以及暂停之类的API介绍,就看代码好了,在代码里做了详细的介绍。

   

package com.lds.mp3player;

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnErrorListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

	private EditText et_path;
	private Button bt_play;
	private Button bt_pause;
	private Button bt_replay;
	private Button bt_stop;

	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);
		bt_play = (Button) findViewById(R.id.bt_play);
		bt_pause = (Button) findViewById(R.id.bt_pause);
		bt_replay = (Button) findViewById(R.id.bt_replay);
		bt_stop = (Button) findViewById(R.id.bt_stop);
		// 设置监听
		bt_play.setOnClickListener(this);
		bt_pause.setOnClickListener(this);
		bt_replay.setOnClickListener(this);
		bt_stop.setOnClickListener(this);
		
	}

	@Override
	public void onClick(View v) {
		String path = et_path.getText().toString().trim();
		switch (v.getId()) {
		case R.id.bt_play://播放
			if (TextUtils.isEmpty(path)) {
				Toast.makeText(this, "路径不能为空", 0).show();
				return;
			}
			try {
				//初始化mediaPlayer
				mediaPlayer = new MediaPlayer();
				//设置音频类型
				mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
				//设置播放源
				mediaPlayer.setDataSource(path);
				//设置播放完成回调
				mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
					@Override
					public void onCompletion(MediaPlayer mp) {
						bt_play.setEnabled(true);
					}
				});
				//设置播放失败回调
				mediaPlayer.setOnErrorListener(new OnErrorListener() {
					@Override
					public boolean onError(MediaPlayer mp, int what, int extra) {
						bt_play.setEnabled(true);
						return false;
					}
				});
				//让mediaplayer准备
//				mediaPlayer.prepare();同步,如果为网络资源或者文件较大,会出现延迟
				mediaPlayer.prepareAsync();//异步准备
				//准备完成进行的回调
				mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
					@Override
					public void onPrepared(MediaPlayer mp) {
						mediaPlayer.start();
						bt_play.setEnabled(false);
					}
				});
			} catch (Exception e) {
				e.printStackTrace();
				Toast.makeText(this, "播放失败", 0).show();
			}
			break;
		case R.id.bt_pause://暂停
			String text = bt_pause.getText().toString();
			if("暂停".equals(text)){
				if(mediaPlayer!=null&&mediaPlayer.isPlaying()){
					mediaPlayer.pause();
					bt_pause.setText("继续播放");
					return;
				}
			}
			if("继续播放".equals(text)){
				mediaPlayer.start();
				bt_pause.setText("暂停");
				return;
			}
			break;
		case R.id.bt_replay://重新播放
			if(mediaPlayer!=null){
				mediaPlayer.seekTo(0);
				bt_pause.setText("暂停");
			}
			break;
		case R.id.bt_stop://停止
			if(mediaPlayer!=null){
				bt_play.setEnabled(true);
				mediaPlayer.stop();
				bt_pause.setText("暂停");
				mediaPlayer.release();
				mediaPlayer = null;
			}
			break;
		}
	}

}

 

    3.相信把上面几个点击事件看完后,这样再看一下google提供的mediaPlyer生命周期图解,貌似凌乱的大图,是不瞬间清晰点了,有木有。

 

  自己加到注释,有不明白的可以留言,共同进步~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值