Did any one try code of sipdroid given in [url]http://sipdroid.org/[/
url]. If yes than please help me. I have to read samples from
microphone and send it to udp socket. For this I'm using AudioRecord
class as given in RtpStreamSender.java and I have use read method to
read the samples which is given below:
public int read (byte[] audioData, int offsetInBytes, int
sizeInBytes).This method reads audio data from the audio hardware for
recording into a buffer.
Its Parameters are :
audioData :the array to which the recorded audio data is written.
offsetInBytes: index in audioData from which the data is written
expressed in bytes.
sizeInBytes :the number of requested bytes.
It Returns:
the number of bytes that were read or or ERROR_INVALID_OPERATION if
the object wasn't properly initialized, or ERROR_BAD_VALUE if the
parameters don't resolve to valid data and indexes. The number of
bytes will not exceed sizeInBytes.
I have written this method in my code like this :
int num;
byte[] buf = new byte[160]; num = record.read(buf, 0, 160);
The problem is that it always returns 160 (i.e. the requested byte to
be read) not less than 160 even if the data is not available. I am
getting voice sample from microphone and My sampling rate is 8000 Hz
so 8000 samples per second encoding in 16 bit so to read 160 byte it
requires at least 10 milliseconds but it send data at every 1 ms. If
it is a blocking method than it should return the value 160 after
reading 160 bytes. Why it returns maximum value even if it reads
10-20bytes ? what's the problem? please help me. Thanks in advance.
My code is like :
public void run()
{
running = true;
int frame_size = 160;
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
try
{
minBuffersize= AudioRecord.getMinBufferSize(8000,
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, 8000,
AudioFormat.CHANNEL_CONFIGURATION_MONO,AudioFormat.ENCODING_PCM_16BIT,
20000);
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");
}
}
catch (Exception e)
{ Log.e(TAG, "Failed to capture audio"); }
}
--
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