I'm trying to capture audio from a Nexus One and no matter what buffer
size (bufferSizeInBytes) I set at construct time of AudioRecord, when
I do a AudioRecord.read I always get 8192 bytes of audio data (128
ms). I would like the AudioRecord.read be able to read 40ms of data
(2560 bytes). The only working sample code that I can find is Sipdroid
(http://code.google.com/p/sipdroid/source/browse/trunk/src/org/
sipdroid/media/RtpStreamSender.java) which I haven't tried on a Nexus
One. Here's the relevant piece of my code:

        public void run() {
                running = true;
        
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
                try {
                        frameSize = AudioRecord.getMinBufferSize(samplingRate,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
                        Log.i(TAG, "trying to capture " + String.format("%d", 
frameSize) +
" bytes");
                        record = new AudioRecord(MediaRecorder.AudioSource.MIC,
samplingRate, AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT, frameSize);
                        record.startRecording();
                        byte[] buffer = new byte[frameSize];
                        while (running) {
                                record.read(buffer, 0, frameSize);
                                Log.i(TAG, "Captured " + String.format("%d", 
frameSize) + " bytes
of audio");
                        }
                record.stop();
                record.release();
                } catch (Throwable t) {
                        Log.e(TAG, "Failed to capture audio");
                }
        }

My questions/comments are:

1. Is this a limitation of AudioRecord class and/or the particular
device (Nexus One, in this case)?
2. I don't see a method to query the supported sampling rate (steps of
bufferSizeInBytes) a given device can do. It would be nice if there's
one.
3. Are there other devices where people have been able to successfully
read at 8K?

Thanks in advance,
Bala

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to