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实现电话录音
  2. Android 扫描SDCard上的音乐文件以及监听扫描事件
  3. android 音乐播放器源码
  4. Android Service 手机启动服务 监听电话的状态 进行录音
  5. 在测试环境模拟电话的进入和短信的进入
  6. Android应用实例之----基于Service与ContentProvider的音乐播放
  7. Android实现简单拨打电话功能

随机推荐

  1. 修改android framework 添加service
  2. android中ListView介绍
  3. Android(安卓)Studio 使用小技巧和快捷键
  4. Android开源网站一网打尽
  5. android content provider
  6. Android的pagerAdapter源码,在线查看网址
  7. Android 加载大图片是出现的 OutOfMemory
  8. Supporting Multiple Screens(支持Androi
  9. 设置 Toolbar(ActionBar) 上的按钮颜色
  10. android 安装软件