public class PlayActivity extends Activity {
private static final String TAG = "PlayActivity";
private EditText filenameText;
private MediaPlayer mediaPlayer;
private String filename;
private int position;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
filenameText = (EditText)this.findViewById(R.id.filename);

mediaPlayer = new MediaPlayer();
ButtonClickListener listener = new ButtonClickListener();
Button playButton = (Button)this.findViewById(R.id.play);
Button pauseButton = (Button)this.findViewById(R.id.pause);
Button resetButton = (Button)this.findViewById(R.id.reset);
Button stopButton = (Button) this.findViewById(R.id.stop);
playButton.setOnClickListener(listener);
pauseButton.setOnClickListener(listener);
resetButton.setOnClickListener(listener);
stopButton.setOnClickListener(listener);
Log.i(TAG, "onCreate()");
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
this.filename = savedInstanceState.getString("filename");
this.position = savedInstanceState.getInt("position");
super.onRestoreInstanceState(savedInstanceState);
Log.i(TAG, "onRestoreInstanceState()");
}

@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putString("filename", filename);
outState.putInt("position", position);
super.onSaveInstanceState(outState);
Log.i(TAG, "onSaveInstanceState()");
}

@Override
protected void onPause() {//如果突然电话到来,停止播放音乐
if(mediaPlayer.isPlaying()){
position = mediaPlayer.getCurrentPosition();//保存当前播放点
mediaPlayer.stop();
}
super.onPause();
}

@Override
protected void onResume() {
if(position>0 && filename!=null){//如果电话结束,继续播放音乐
try {
play();
mediaPlayer.seekTo(position);
position = 0;
} catch (IOException e) {
Log.e(TAG, e.toString());
}
}
super.onResume();
}

@Override
protected void onDestroy() {
mediaPlayer.release();
super.onDestroy();
Log.i(TAG, "onDestroy()");
}

private final class ButtonClickListener implements View.OnClickListener{
@Override
public void onClick(View v) {
filename = filenameText.getText().toString();//先得到文本框中的内容
Button button = (Button) v;//得到button
try {
switch (v.getId()) {//通过传过来的Buttonid可以判断Button的类型
case R.id.play://播放
play();
break;

case R.id.pause:
if(mediaPlayer.isPlaying()){
mediaPlayer.pause();
button.setText(R.string.continue1);//让这个按钮上的文字显示为继续
}else{
mediaPlayer.start();//继续播放
button.setText(R.string.pause);
}
break;

case R.id.reset:
if(mediaPlayer.isPlaying()){
mediaPlayer.seekTo(0);//让它从0开始播放
}else{
play();//如果它没有播放,就让它开始播放
}
break;

case R.id.stop:
if(mediaPlayer.isPlaying()) mediaPlayer.stop();//如果它正在播放的话,就让他停止
break;
}
} catch (Exception e) {//抛出异常
Log.e(TAG, e.toString());
}
}
}
private void play() throws IOException {
File audioFile = new File(Environment.getExternalStorageDirectory(),filename);
mediaPlayer.reset();
mediaPlayer.setDataSource(audioFile.getAbsolutePath());
mediaPlayer.prepare();
mediaPlayer.start();//播放
}
}

更多相关文章

  1. android里的service和content provider简单介绍
  2. Android(安卓)VideoView播放视频
  3. android 动画自动播放
  4. android gif播放
  5. drawable animation 循环播放
  6. Android(安卓)判断是否有声音在播放
  7. Android的手机震动
  8. Android(安卓)视频播放
  9. Android之MediaPlayer

随机推荐

  1. Android 架构简介
  2. android 根据设置的日期获取星期几
  3. Android 程式开发:(一)详解活动 —— 1.1 Ac
  4. 借一个项目谈Android应用软件架构,你还在
  5. React-Native在android原生上的绘制流程
  6. Android进程分类与管理
  7. Android 深入了解 Handler 和 Looper
  8. Android无障碍总结
  9. 从零开始学习Android开发-Android概览
  10. Android中的gen文件为空或者不存在的处理