package com.appite.record; import java.io.File; import java.io.IOException; import android.support.v7.app.ActionBarActivity; import android.media.MediaRecorder; import android.os.Bundle; import android.os.Environment; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; public class MainActivity extends ActionBarActivity { private MediaRecorder recorder=null; private void startRecord() { if(recorder==null) { File dir=new File(Environment.getExternalStorageDirectory(),"sounds"); if(!dir.exists()) { dir.mkdirs(); } File soundFile=new File(dir,System.currentTimeMillis()+".amr"); if(!soundFile.exists()) { try { soundFile.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } recorder=new MediaRecorder(); //注意必须按照这个顺序,要不会出错 //输入源 recorder.setAudioSource(MediaRecorder.AudioSource.MIC); //格式 recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_WB); //编码 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB); recorder.setOutputFile(soundFile.getAbsolutePath()); try { recorder.prepare(); recorder.start(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } private void stopRecord(){ if(recorder!=null) { recorder.stop(); recorder.release(); recorder=null; } } private OnClickListener btnClickListener=new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.btnStartRecord: startRecord(); break; case R.id.btnStopRecord: stopRecord(); break; default: break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.btnStartRecord).setOnClickListener(btnClickListener); findViewById(R.id.btnStopRecord).setOnClickListener(btnClickListener); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }