代码如下:
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();
}
}
效果如下: