• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Apps Need AudioRecord understanding..

dakira

Lurker
Hello all, I have been messing around with the AudioRecord feature of the Android API and found some strange behaviors with it.

Background info:
My phone is a HTC Incredible
I am using the Eclipse plugin for Android development with the emulator.
Targeted platform or OS is 2.2... Since it is what my phone uses.

Some code:
bufferSize = AudioRecord.getMinBufferSize(FREQUENCY, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
FREQUENCY, AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT, bufferSize);

This is the code I use to setup the AudioRecord API with. Now, for the emulator it likes FREQUENCY to be set to 8000 for it to work. Comes back with a buffer size 640. For the phone I use 44100. One issue here is it seems the resulting PCM data for the wave seems to be an eight bit signed wave. I get values from -127 to 128. I thought the value AudioFormat.ENCODING_PCM_16BIT would produce something different.

I process the audio with a thread,
public void run() {
while(isRecording) {
audioRecord.startRecording();
byte[] data = new byte[bufferSize];
audioRecord.read(data, 0, bufferSize);
listener.setData(data);
handleData(data);
}
audioRecord.release();
}

I have a way to graphically display to corresponding wave in real time using a SurfaceView. There seems to be a lot of noise coming from the MIC. I get this noise from the emulator and the phone as well. Do I need to run the data through some sort of filter(s)? I would like to use this data to calculate some fun FFT and stuff just to play around with the wave. But I need to reduce the noise somehow.

Has anyone else experience this as well. Does anyone have a solution?

I appreciated your time and responses,
thanks,
dk
 
Back
Top Bottom