I'm developing with Android 2.1 on a Nexus One with firmware 2.1
update 1.

I'm using the RehearsalAudioRecorder class from here:

http://rehearsalassist.svn.sourceforge.net/viewvc/rehearsalassist/android/trunk/src/urbanstew/RehearsalAssistant/RehearsalAudioRecorder.java?view=markup

        public RehearsalAudioRecorder(boolean uncompressed, int audioSource,
int sampleRate, int channelConfig,
                        int audioFormat)
        {
                try
                {
                        rUncompressed = uncompressed;
                        if (rUncompressed)
                        { // RECORDING_UNCOMPRESSED
                                if (audioFormat == 
AudioFormat.ENCODING_PCM_16BIT)
                                {
                                        bSamples = 16;
                                }
                                else
                                {
                                        bSamples = 8;
                                }

                                if (channelConfig == 
AudioFormat.CHANNEL_CONFIGURATION_MONO)
                                {
                                        nChannels = 1;
                                }
                                else
                                {
                                        nChannels = 2;
                                }

                                aSource = audioSource;
                                sRate   = sampleRate;
                                aFormat = audioFormat;

                                framePeriod = sampleRate * TIMER_INTERVAL / 
1000;
                                bufferSize = framePeriod * 2 * bSamples * 
nChannels / 8;
                                if (bufferSize < 
AudioRecord.getMinBufferSize(sampleRate,
channelConfig, audioFormat))
                                { // Check to make sure buffer size is not 
smaller than the
smallest allowed one
                                        bufferSize = 
AudioRecord.getMinBufferSize(sampleRate,
channelConfig, audioFormat);

                                        // Set frame period and timer interval 
accordingly
                                        framePeriod = bufferSize / ( 2 * 
bSamples * nChannels / 8 );
                                        
Log.w(RehearsalAudioRecorder.class.getName(), "Increasing buffer
size to " + Integer.toString(bufferSize));
                                }

                                aRecorder = new AudioRecord(audioSource, 
sampleRate,
channelConfig, audioFormat, bufferSize);
                                if (aRecorder.getState() != 
AudioRecord.STATE_INITIALIZED)
                                        throw new Exception("AudioRecord 
initialization failed");
//                              
aRecorder.setRecordPositionUpdateListener(updateListener);
                                
aRecorder.setPositionNotificationPeriod(framePeriod);
                        } else
                        { // RECORDING_COMPRESSED
                                mRecorder = new MediaRecorder();
                                
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
                                
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
                                
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
                        }
                        cAmplitude = 0;
                        fPath = null;
                        state = State.INITIALIZING;
                } catch (Exception e)
                {
                        if (e.getMessage() != null)
                        {
                                Log.e(RehearsalAudioRecorder.class.getName(), 
e.getMessage());
                        }
                        else
                        {
                                Log.e(RehearsalAudioRecorder.class.getName(), 
"Unknown error
occurred while initializing recording");
                        }
                        state = State.ERROR;
                }
        }

Here's how I'm instantiating it:
                        RehearsalAudioRecorder recorder = new 
RehearsalAudioRecorder(
                                                
RehearsalAudioRecorder.RECORDING_UNCOMPRESSED,
                                                MediaRecorder.AudioSource.MIC,
                                                16000,
                                                AudioFormat.CHANNEL_IN_FRONT,
                                                
AudioFormat.CHANNEL_CONFIGURATION_MONO);

I write a .wav file to the SD card.  I specified mono, and I checked
that CHANNEL_CONFIGURATION_MONO is indeed set in the AudioRecord
object.  But when I try to play the file, it's treated as if it's
stereo, and voices sound like chipmunks.  Apparently the header
information is wrong.  For instance, I open the .wav file in Audacity,
and Audacity says it's stereo.

Is this a bug?  What can I do?

-- 
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