Record audio to 3gpp file
package app.test; import java.io.File; import android.app.Activity; import android.media.MediaPlayer; import android.media.MediaRecorder; import android.os.Bundle; import android.os.Environment; import android.view.View; public class Test extends Activity { private MediaPlayer mediaPlayer; private MediaRecorder recorder; private String OUTPUT_FILE; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); OUTPUT_FILE = Environment.getExternalStorageDirectory() + "/recordaudio.3gpp"; } public void doClick(View view) { switch(view.getId()) { case R.id.beginBtn: try { beginRecording(); } catch (Exception e) { e.printStackTrace(); } break; case R.id.stopBtn: try { stopRecording(); } catch (Exception e) { e.printStackTrace(); } break; case R.id.playRecordingBtn: try { playRecording(); } catch (Exception e) { e.printStackTrace(); } break; case R.id.stopPlayingRecordingBtn: try { stopPlayingRecording(); } catch (Exception e) { e.printStackTrace(); } } } private void beginRecording() throws Exception { killMediaRecorder(); File outFile = new File(OUTPUT_FILE); if(outFile.exists()) { outFile.delete(); } recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setOutputFile(OUTPUT_FILE); recorder.prepare(); recorder.start(); } private void stopRecording() throws Exception { if (recorder != null) { recorder.stop(); } } private void killMediaRecorder() { if (recorder != null) { recorder.release(); } } private void killMediaPlayer() { if (mediaPlayer != null) { try { mediaPlayer.release(); } catch (Exception e) { e.printStackTrace(); } } } private void playRecording() throws Exception { killMediaPlayer(); mediaPlayer = new MediaPlayer(); mediaPlayer.setDataSource(OUTPUT_FILE); mediaPlayer.prepare(); mediaPlayer.start(); } private void stopPlayingRecording() throws Exception { if(mediaPlayer != null) { mediaPlayer.stop(); } } @Override protected void onDestroy() { super.onDestroy(); killMediaRecorder(); killMediaPlayer(); } } //main.xml <?xml version="1.0" encoding="utf-8"?> <!-- This file is /res/layout/record.xml --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:id="@+id/beginBtn" android:text="Begin Recording" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="doClick" /> <Button android:id="@+id/stopBtn" android:text="Stop Recording" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="doClick" /> <Button android:id="@+id/playRecordingBtn" android:text="Play Recording" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="doClick" /> <Button android:id="@+id/stopPlayingRecordingBtn" android:text="Stop Playing Recording" android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="doClick" /> </LinearLayout>