一下是我的代码,每次点击录音按钮就崩了,求大神指教~
///Recorder类
package com.com.testrecorder;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import android.content.Context;
import android.media.MediaRecorder;
import android.text.format.DateFormat;
public class Record {
//声明MediaRecorder
public MediaRecorder mediarecorder;
public Record()
{
//mediarecorder=new MediaRecorder();
}
/*
* 检查SD卡状态,SD卡安装则返回true,卸载或作为USE接口则返回false
*/
public boolean checkSDCard()
{
String state=android.os.Environment.getExternalStorageState();
if(!state.equals(android.os.Environment.MEDIA_MOUNTED))
return false;
else return true;
}
/*
* 创建多重用户文件路径,创建成功则返回true,否则返回false
*/
public boolean setPath()
{
String state=android.os.Environment.getExternalStorageState();
if(!state.equals(android.os.Environment.MEDIA_MOUNTED))return false;
File directory=new File(android.os.Environment.getExternalStorageDirectory()+"/HiChang");
if(!directory.exists())
{
if(!directory.mkdirs())return false;
else
{
directory=new File(android.os.Environment.getExternalStorageDirectory()+"/HiChang/record");
if(!directory.mkdirs())return false;
else return true;
}
}
else
{
directory=new File(android.os.Environment.getExternalStorageDirectory()+"/HiChang/record");
if(directory.exists())return true;
if(!directory.mkdirs())return false;
else return true;
}
}
//开始录音
public void start()
{
if(setPath())
{
Date now=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");
String recordname=sdf.format(now)+".amr";
String path=android.os.Environment.getExternalStorageDirectory()+"/HiChang/record/"+recordname;
File file = new File(path);
try
{
mediarecorder = new MediaRecorder();
mediarecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediarecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
mediarecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediarecorder.setOutputFile(file.getAbsolutePath());
// //创建文件
file.createNewFile();
// //准备录制
// mediarecorder.prepare();
}
catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//开始录制
//mediarecorder.start();
}
}
//停止录音
public void stop()
{
//停止录音
mediarecorder.stop();
//释放资源
mediarecorder.release();
mediarecorder=null;
}
}
///主Activity
package com.testrecorder;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class myRecorder extends Activity implements OnClickListener{
Record record;
Button play;
Button stop;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
play=(Button)findViewById(R.id.play);
stop=(Button)findViewById(R.id.stop);
stop.setEnabled(false);
play.setOnClickListener(this);
stop.setOnClickListener(this);
record=new Record();
@Override
public void onClick(View v)
{
switch(v.getId())
{
case R.id.play:
{
record.start(MediaRecorder.OutputFormat.DEFAULT, ".amr", this);
play.setEnabled(false);
stop.setEnabled(true);
}
break;
case R.id.stop:
{
record.stop();
play.setEnabled(true);
stop.setEnabled(false);
}
break;
}
}
}
log?
评论 (
) 引用此答案
举报