package com.cbt.SHDemo;
import java.io.File;
import java.util.Date;
import com.cbt.SHDemo.EnvActivity.BackLoginListener;
import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class SleepActivity extends Activity {
private MediaPlayer mPlayer = null;
public String path = "";
private ImageButton bt_start;
private Button play_start;
private Button stop_play;
private Button exit;
private TextView Text_path;
private TextView Text_size;
private TextView Text_time;
private LinearLayout mlinearLayout;
private MediaRecorder mediaRecorder = null;
Date mdata1;
Date mdata2;
long time1;
long cha;
long time2;
private boolean isruning = false; // 定义一个布尔类型的变量来监控是否正在录音
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sleep);
bt_start = (ImageButton) findViewById(R.id.start);
stop_play = (Button) findViewById(R.id.stop_play);
play_start = (Button) findViewById(R.id.start_play);
exit = (Button) findViewById(R.id.exit);
exit.setOnClickListener(new BackLoginListener());
Text_path = (TextView) findViewById(R.id.textlujing);
Text_size = (TextView) findViewById(R.id.textsize);
Text_time = (TextView) findViewById(R.id.texttime);
mlinearLayout = (LinearLayout) findViewById(R.id.stoplin);
mlinearLayout.setVisibility(View.GONE);
bt_start.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
int i = event.getAction();
switch (i) {
case MotionEvent.ACTION_DOWN:
Toast.makeText(SleepActivity.this, "开启录音...",
Toast.LENGTH_SHORT).show();
mediaRecorder = null;
mdata1 = new Date();
time1 = mdata1.getTime(); // 当前时间
System.out.println("当前时间为1:" + time1);
record();
break;
case MotionEvent.ACTION_UP:
if (isruning) { // 如果正在录音
Toast.makeText(SleepActivity.this, "终止录音...",
Toast.LENGTH_SHORT).show();
mediaRecorder.stop(); // 停止录音
mediaRecorder.release(); // 释放资源
mlinearLayout.setVisibility(View.VISIBLE); // 可见
information();
mdata2 = new Date();
time2 = mdata2.getTime(); // 当前时间
System.out.println("当前时间为2:" + time2);
cha = (time2 - time1) / 1000;
System.out.println("时间差为:" + cha + "秒");
Text_time.setText(cha + " 秒");
}
break;
default:
break;
}
return false;
}
});
play_start.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
System.out.println("play_start");
Toast.makeText(SleepActivity.this, "播放录音...", Toast.LENGTH_SHORT)
.show();
mPlayer = null;
startPlaying();
}
});
stop_play.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
stopPlaying();
}
});
}
// 该方法 是用来是实现录音功能并保存到制定文件中
class BackLoginListener implements OnClickListener {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(SleepActivity.this, HomePage.class);
startActivity(intent);
SleepActivity.this.finish();
}
}
public void record() {
if (mediaRecorder == null) {
mediaRecorder = new MediaRecorder(); // 判断是都为空 如果为空new 一个对象
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); // 设置输入源为麦克风
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); // 设置输出格式
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); // 设置音频的编码
// 默认
// 创建一个临时文件来存储音频
path = Environment.getExternalStorageDirectory().getPath()
+ "/test_Audio.mp3";
mediaRecorder.setOutputFile(path);
// mediaRecorder.getMaxAmplitude() 获取文件的大小
try {
mediaRecorder.prepare(); // 准备录音
} catch (Exception e) {
e.printStackTrace();
}
mediaRecorder.start(); // 开启录音
isruning = true; // 正在录音
}
}
private void startPlaying() {
try {
mPlayer = new MediaPlayer();
// 设置要播放的文件
mPlayer.setDataSource(path);
mPlayer.prepare();
mPlayer.start();
} catch (Exception e) {
mPlayer.release();
e.printStackTrace();
}
}
// 停止播放
private void stopPlaying() {
if (mPlayer == null) {
Toast.makeText(SleepActivity.this, "您还没播放任何音频", Toast.LENGTH_SHORT)
.show();
} else {
mPlayer.release();
mPlayer = null;
play_start.setEnabled(true);
Toast.makeText(SleepActivity.this, "已终止播放", Toast.LENGTH_SHORT)
.show();
}
}
// 设置文件信息布局information
public void information() {
File mfile = new File(path);
Text_path.setText(path);
getFilesize size = new getFilesize();
long msize = size.getFileSize(mfile) / 1024; // 获得文件大小
Text_size.setText(msize + "KB");
}
}