package cn.yinuo.service;

import java.io.File;

import java.io.IOException;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;

import android.widget.Toast;

public class MainActivity extends Activity {
private String filenameText;
private File audioFile;
private MediaPlayer mediaPlayer;
private int position;
musicActivity music;


public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.show);

mediaPlayer = new MediaPlayer();
ButtonClickListen listener = new ButtonClickListen();

filenameText =music.musicname;

Button playbutton = (Button) this.findViewById(R.id.start);
Button pausebutton = (Button) this.findViewById(R.id.pause);
Button resetbutton = (Button) this.findViewById(R.id.next);
Button stopbutton = (Button) this.findViewById(R.id.stop);
playbutton.setOnClickListener(listener);
pausebutton.setOnClickListener(listener);
resetbutton.setOnClickListener(listener);
stopbutton.setOnClickListener(listener);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
position = savedInstanceState.getInt("position");
String path = savedInstanceState.getString("path");
if(path!=null){
audioFile = new File(path);
}
super.onRestoreInstanceState(savedInstanceState);
}

@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putInt("position", position);
if(audioFile!=null){
outState.putString("path", audioFile.getAbsolutePath());
}
super.onSaveInstanceState(outState);
}

@Override
protected void onDestroy() {
mediaPlayer.release();
super.onDestroy();
}

@Override
protected void onResume() {
if(position > 0 && audioFile != null){
try {
play();
mediaPlayer.seekTo(position);
} catch (Exception e) {
e.printStackTrace();
}
}
super.onResume();
}

@Override
protected void onPause() {
if(mediaPlayer.isPlaying()){
position = mediaPlayer.getCurrentPosition();
mediaPlayer.stop();
}
super.onPause();
}

private class ButtonClickListen implements View.OnClickListener{
private boolean pause;

@Override
public void onClick(View v) {
try {
switch (v.getId()) {
case R.id.start:
audioFile = new File(Environment.getExternalStorageDirectory(), filenameText);
if(!audioFile.exists()){
Toast.makeText(MainActivity.this, "文件不存", 1).show();
return;
}
play();
break;

case R.id.pause:
if(mediaPlayer.isPlaying()){
mediaPlayer.pause();
pause = true;
((Button)v).setText(R.string.hello);
}else{
if(pause){
mediaPlayer.start();//继续播放音乐
pause = false;
((Button)v).setText(R.string.hello);
}
}
break;

case R.id.next:
if(mediaPlayer.isPlaying()){
mediaPlayer.seekTo(0);
}else{
audioFile = new File(Environment.getExternalStorageDirectory(), filenameText);
if(!audioFile.exists()){
Toast.makeText(MainActivity.this, "文件不存", 1).show();
return;
}
play();
}
break;

case R.id.stop:
if(mediaPlayer.isPlaying()){
mediaPlayer.stop();
}
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

private void play() throws IOException {
mediaPlayer.reset();
mediaPlayer.setDataSource(audioFile.getAbsolutePath());
mediaPlayer.prepare();
mediaPlayer.start();
}
}

更多相关文章

  1. [置顶] AndroidStudio快捷键
  2. android 一步一步创建jni示例
  3. Android(安卓)QQ多级列表的实现
  4. Android(安卓)CTS Test
  5. android studio 56 下载网络歌曲 代码
  6. Android文件读写
  7. Android获取文件的MD5值
  8. 使用Android(安卓)Studio可能会遇到的问题
  9. NPM 和webpack 的基础使用

随机推荐

  1. 安卓系统的启动流程
  2. Android之抽屉式弹窗功能
  3. 怎样在Android中ListView与ArrayAdapter
  4. Android代码的工程分为三个部分
  5. Android接入OpenCv实现人脸识别
  6. 疯狂Android讲义目录结构
  7. android 通过wifi 获取经纬度和获取渠道
  8. Android(安卓)SDCard UnMounted 流程分析
  9. 实现能定点移动的seekbar
  10. 关于Android软键盘弹出的问题