I want to record human voice on my Android phone. I noticed that Android has two classes to do this: AudioRecord and MediaRecorder. Can someone tell me what's the difference between the two and what are appropriate use cases for each?
I want to be able to analyse human speech in real-time to measure amplitude, etc. Am I correct in understanding that AudioRecord is better suited for this task?
I noticed on the official Android guide webpage for recording audio, they use MediaRecorder with no mention of AudioRecord.
If you want to do your analysis while recording is still in progress, you need to use audio record as
MediaRecorder automatically records into a file. AudioRecord has the disadvantage, that after calling
startRecording() you need to poll the data yourself from the
AudioRecord instance. Also, you must read and process the data fast enough such that the internal buffer is not overrun (look in the logcat output,
AudioRecord will tell you when that happens).