Hi,
I am trying to record the voice using AudioRecord class and writing the read bytes to speaker using AudioTrack class. I am able to hear the voice coming from Speaker but the voice is very low and a lot of noise is coming along with the recorded voice. Any solution to resolve this problem to reduce the noise and loud the actual voice. I am using below code for this: package com.my.mic.record; import android.media.AudioFormat; import android.media.AudioManager; import android.media.AudioRecord; import android.media.AudioTrack; import android.media.MediaRecorder; import android.util.Log; public class Record extends Thread { int numCrossing,p,numSamples,af; static final int bufferSize = 200000; short[] buffer = new short[bufferSize]; short[] readBuffer = new short[bufferSize]; boolean isRecording; AudioManager am; public AudioRecord arec; public AudioTrack atrack; private int sampleRate = 8000; public void run() { isRecording = true; android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO); int buffersize = AudioRecord.getMinBufferSize(sampleRate,AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT); arec = new AudioRecord(MediaRecorder.AudioSource.MIC,sampleRate,AudioFormat.CHANNEL_CONFIGURATION_MONO,AudioFormat.ENCODING_PCM_16BIT, buffersize); //buffersize = arec.getMinBufferSize(arec.getSampleRate(), arec.getChannelConfiguration(), arec.getAudioFormat()); atrack = new AudioTrack(AudioManager.STREAM_MUSIC,arec.getSampleRate(),arec.getChannelConfiguration(),arec.getAudioFormat(), buffersize,AudioTrack.MODE_STREAM); am.setRouting(AudioManager.MODE_NORMAL,AudioManager.ROUTE_EARPIECE, AudioManager.ROUTE_ALL); //am.setMode(AudioManager.MODE_NORMAL); Log.d("SPEAKERPHONE", "Is speakerphone on? : " + am.isSpeakerphoneOn()); atrack.setPlaybackRate(sampleRate); byte[] buffer = new byte[buffersize]; arec.startRecording(); atrack.play(); //atrack.setStereoVolume(atrack.getMaxVolume(), atrack.getMaxVolume()); final float frequency = sampleRate; float increment = (float)((2*Math.PI) * frequency / 44100); // angular increment for each sample float angle = 0; //AndroidAudioDevice device = new AndroidAudioDevice( ); while(isRecording) { try { arec.read(buffer, 0, buffersize); atrack.write(buffer, 0, buffer.length); } catch (Exception e) { Log.d("Record", ""+e); } } arec.stop(); atrack.stop(); //device.releaseTrack(); isRecording = false; } public boolean isRecording() { return isRecording; } public void setRecording(boolean isRecording) { this.isRecording = isRecording; } public AudioManager getAm() { return am; } public void setAm(AudioManager am) { this.am = am; } public void stopRecording(){ arec.stop(); arec.release(); atrack.stop(); atrack.release(); arec=null; atrack=null; setRecording(false); this.stop(); } } -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en