Mega Code Archive

 
Categories / Android / Media
 

Audio Recording

package app.test; import android.app.Activity; import android.media.AudioFormat; import android.media.AudioRecord; import android.media.MediaRecorder; import android.os.Bundle; import android.util.Log; public class MainActivity extends Activity {   private int mAudioBufferSize;   private int mAudioBufferSampleSize;   private AudioRecord mAudioRecord;   private boolean inRecordMode = false;   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     initAudioRecord();   }   @Override   public void onResume() {     super.onResume();     inRecordMode = true;     Thread t = new Thread(new Runnable() {       @Override       public void run() {         getSamples();       }     });     t.start();   }   protected void onPause() {     inRecordMode = false;     super.onPause();   }   @Override   protected void onDestroy() {     if(mAudioRecord != null) {       mAudioRecord.release();     }     super.onDestroy();   }   private void initAudioRecord() {     try {       int sampleRate = 8000;       int channelConfig = AudioFormat.CHANNEL_IN_MONO;       int audioFormat = AudioFormat.ENCODING_PCM_16BIT;       mAudioBufferSize = 2 * AudioRecord.getMinBufferSize(sampleRate,           channelConfig, audioFormat);       mAudioBufferSampleSize = mAudioBufferSize / 2;       mAudioRecord = new AudioRecord(           MediaRecorder.AudioSource.MIC,           sampleRate,           channelConfig,           audioFormat,           mAudioBufferSize);     } catch (IllegalArgumentException e) {       e.printStackTrace();     }          int audioRecordState = mAudioRecord.getState();     if(audioRecordState != AudioRecord.STATE_INITIALIZED) {       finish();     }   }        private void getSamples() {     if(mAudioRecord == null) return;     short[] audioBuffer = new short[mAudioBufferSampleSize];     mAudioRecord.startRecording();     int audioRecordingState = mAudioRecord.getRecordingState();     if(audioRecordingState != AudioRecord.RECORDSTATE_RECORDING) {       finish();     }     while(inRecordMode) {         int samplesRead = mAudioRecord.read(audioBuffer, 0, mAudioBufferSampleSize);     }     mAudioRecord.stop();   } }