android 简单的音乐播放

代码如下:

package com.test;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;

public class MusicActivity extends Activity {

	/* 声明一个 ImageButton,TextView,MediaPlayer变量 */
	private ImageButton mButton01, mButton02, mButton03;
	private TextView mTextView01;
	private MediaPlayer mMediaPlayer01;
	/* 声明一个Flag作为确认音乐是否暂停的变量并默认为false */
	private boolean bIsPaused = false;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		/* 通过findViewById构造器创建TextView与ImageView对象 */
		mButton01 = (ImageButton) findViewById(R.id.myButton1);
		mButton02 = (ImageButton) findViewById(R.id.myButton2);
		mButton03 = (ImageButton) findViewById(R.id.myButton3);
		mTextView01 = (TextView) findViewById(R.id.myTextView1);

		/* onCreate时创建MediaPlayer对象 */
		mMediaPlayer01 = new MediaPlayer();
		/* 将音乐以Import的方式存储在res/raw/always.mp3 */
		mMediaPlayer01 = MediaPlayer.create(MusicActivity.this, R.raw.big);

		/* 运行播放音乐的按钮 */
		mButton01.setOnClickListener(new ImageButton.OnClickListener() {
			@Override
			/* 覆盖OnClick事件 */
			public void onClick(View v) {
				try {

					if (mMediaPlayer01 != null) {
						mMediaPlayer01.stop();
					}
					/*
					 * 在MediaPlayer取得播放资源与stop()之后
					 * 要准备Playback的状态前一定要使用MediaPlayer.prepare()
					 */
					mMediaPlayer01.prepare();
					/* 开始或回复播放 */
					mMediaPlayer01.start();
					/* 改变TextView为开始播放状态 */
					mTextView01.setText(R.string.str_start);
				} catch (Exception e) {
					// TODO Auto-generated catch block
					mTextView01.setText(e.toString());
					e.printStackTrace();
				}
			}
		});

		/* 停止播放 */
		mButton02.setOnClickListener(new ImageButton.OnClickListener() {
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				try {
					if (mMediaPlayer01 != null) {
						/* 停止播放 */
						mMediaPlayer01.stop();
						/* 改变TextView为停止播放状态 */
						mTextView01.setText(R.string.str_close);
					}

				} catch (Exception e) {
					// TODO Auto-generated catch block
					mTextView01.setText(e.toString());
					e.printStackTrace();
				}
			}
		});

		/* 暂停播放 */
		mButton03.setOnClickListener(new ImageButton.OnClickListener() {
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				try {
					if (mMediaPlayer01 != null) {
						/* 是否为暂停状态=否 */
						if (bIsPaused == false) {
							/* 暂停播放 */
							mMediaPlayer01.pause();
							/* 设置Flag为treu表示 Player状态为暂停 */
							bIsPaused = true;
							/* 改变TextView为暂停播放 */
							mTextView01.setText(R.string.str_pause);
						}
						/* 是否为暂停状态=是 */
						else if (bIsPaused == true) {
							/* 回复播出状态 */
							mMediaPlayer01.start();
							/* 设置Flag为false表示 Player状态为非暂停状态 */
							bIsPaused = false;
							/* 改变TextView为开始播放 */
							mTextView01.setText(R.string.str_start);
						}
					}
				} catch (Exception e) {
					// TODO Auto-generated catch block
					mTextView01.setText(e.toString());
					e.printStackTrace();
				}
			}
		});

		/* 当MediaPlayer.OnCompletionLister会运行的Listener */
		mMediaPlayer01
				.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
					// @Override
					/* 覆盖文件播出完毕事件 */
					public void onCompletion(MediaPlayer arg0) {
						try {
							/*
							 * 解除资源与MediaPlayer的赋值关系 让资源可以为其它程序利用
							 */
							mMediaPlayer01.release();
							/* 改变TextView为播放结束 */
							mTextView01
									.setText(R.string.str_OnCompletionListener);
						} catch (Exception e) {
							mTextView01.setText(e.toString());
							e.printStackTrace();
						}
					}
				});

		/* 当MediaPlayer.OnErrorListener会运行的Listener */
		mMediaPlayer01.setOnErrorListener(new MediaPlayer.OnErrorListener() {
			@Override
			/* 覆盖错误处理事件 */
			public boolean onError(MediaPlayer arg0, int arg1, int arg2) {
				// TODO Auto-generated method stub
				try {
					/* 发生错误时也解除资源与MediaPlayer的赋值 */
					mMediaPlayer01.release();
					mTextView01.setText(R.string.str_OnErrorListener);
				} catch (Exception e) {
					mTextView01.setText(e.toString());
					e.printStackTrace();
				}
				return false;
			}
		});
	}

	@Override
	/* 覆盖主程序暂停状态事件 */
	protected void onPause() {
		// TODO Auto-generated method stub
		try {
			/* 再主程序暂停时解除资源与MediaPlayer的赋值关系 */
			mMediaPlayer01.release();
		} catch (Exception e) {
			mTextView01.setText(e.toString());
			e.printStackTrace();
		}
		super.onPause();
	}
}

 效果如下:


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值