问题描述
- Android项目一点录音按钮就停止运行
- 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
解决方案二:
文件读写要try catch或者throw
解决方案三:
一般来说对于文件的操作都是要进行异常处理的,你这个很明显是没有进行try catch 嘛,还有就是代码书写一定要规范,否则没有人想看你的代码到底有哪些错误的,一样对你有用
解决方案四:
权限是否添加了????
解决方案五:
首先通过adb logcat -s AndroidRuntime *:E 打印出报错的地方,才能调试