Friday, February 10, 2012

How to capture audio in an android application?

This snippet captures audio from a given source and saves it to a file with android.media.MediaRecorder. 
/* Create a MediaRecorder */
recorder = new MediaRecorder();

/* ContentValues include title, timestamp, mime type */
ContentValues values = new ContentValues(3);
values.put(MediaStore.MediaColumns.TITLE, SOME_NAME_HERE);
values.put(MediaStore.MediaColumns.TIMESTAMP, System.currentTimeMillis());
values.put(MediaStore.MediaColumns.MIME_TYPE, recorder.getMimeContentType());

/* Create entry in the content database */
ContentResolver contentResolver = new ContentResolver();
Uri base = MediaStore.Audio.INTERNAL_CONTENT_URI;
Uri newUri = contentResolver.insert(base, values);

if (newUri == null) {
    /* Handle exception here - not able to create a new content entry */
}

/* Receive the real path as String */
String path = contentResolver.getDataFilePath(newUri);

/* Set Audio Source, Format, Encode and File */
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(path);

/* Prepare the Recorder */
recorder.prepare();

/* Start Recording */
recorder.start();

/* ... */

/* Stop Recording Again */
recorder.stop();
recorder.release();

No comments:

Post a Comment