package com.example.task314;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.os.SystemClock;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.Toast;
/**
在Android上编写一个程序,能够启动本机的录音功能、拍照功能、摄像功能。不考虑权限问题
@author Administrator
*/
public class Sound extends Activity {
private Button bt1 = null;
private Button bt2 = null;
private Chronometer ch1 =null;
private MediaRecorder mr = null;
private String PATH = Environment.getExternalStorageDirectory().getAbsolutePath()+"/media";
private int i=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_sound);
bt1 = (Button)this.findViewById(R.id.button1);
bt2 = (Button)this.findViewById(R.id.button2);
ch1 = (Chronometer)findViewById(R.id.chronometer1);
//创建一个临时的音频输出文件
// audioFile = File.createTempFile("record_", ".amr");
//第4步:指定音频输出文件
// mediaRecorder.setOutputFile(audioFile.getAbsolutePath());
File file = new File(PATH);
if (!file.exists()) {
//按照指定的路径创建文件夹
file.mkdirs();
}
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
mr = new MediaRecorder();
// 第1步:设置音频来源(MIC表示麦克风)
mr.setAudioSource(MediaRecorder.AudioSource.MIC);
//第2步:设置音频输出格式(默认的输出格式)
mr.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
//第3步:设置音频编码方式(默认的编码方式)
mr.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyyMMdd_hhmmss");
String date = sDateFormat.format(new java.util.Date());
System.out.println("time---"+date);
String mFileName = PATH + "/"+date+".amr";
mr.setOutputFile(mFileName);
// System.out.println(""+audioFile.getAbsolutePath().toString());
//第5步:调用prepare方法
try {
mr.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//第6步:调用start方法开始录音
mr.start();
//启动计时器
// ch1.setBase(SystemClock.elapsedRealtime());
ch1.start();
Toast.makeText(getApplicationContext(), "开启", 0).show();
bt1.setEnabled(false);
}
});
bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//第7步:停止录音
if(mr != null )
{
mr.stop();
ch1.stop();
ch1.setBase(SystemClock.elapsedRealtime());
Toast.makeText(getApplicationContext(), "关闭", 0).show();
bt1.setEnabled(true);
}
}
});
}
}
一般来说对于文件的操作都是要进行异常处理的,你这个很明显是没有进行try catch 嘛,还有就是代码书写一定要规范,否则没有人想看你的代码到底有哪些错误的,一样对你有用
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。