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

Reply via email to