I am modifying the echo example given by Android/Google people.
What I am doing is: (1) Start Play (2) Start Record (3) Stop Play when my data/tone has played (few thousand samples) (4) Stop Record when all my data has been received (few thousand samples)
I. I am recording what is being played.
II. What is being played is a short burst of white noise prefixed and padded with 0x00’s.
The very first time I do the operation above, the difference in play/record sample time is very good, about 60 samples and consistently performs this way.
But when I want to repeat the operation (i.e by a push button), the difference in in record/play sample time is in the order of 1,000 samples to 2,000 samples.
I have tried doing things like Clearing the SLAndroidSimpleBufferQueueItf on both Playe and Recorder, but makes no difference.
I quickly looked into the available public methods of SLAndroidSimpleBufferQueueItf , SLRecordItf, and SLObjectItf, but nothing seems to bring the “engine” to the state when it is first created/initialized so I can get the low latency.