I would like to do this too, and I also took the OP's approach. I can't actually get AudioRecord's ctor to set the state to STATE_INITIALIZED, but that's a separate issue. I'm trying to understand the correct code structure. You say we shouldn't use the position-based callback, but instead should making a blocking call to read(). Can you explain why that is? For what application is the callback approach recommended instead of the blocking read() approach?
Also, regardless of whether we *should* call read(), do you know why the OP said his callback was not being called? What's wrong with the code he provided? On May 19, 2:54 pm, Dave Sparks <[email protected]> wrote: > You probably don't need the callback interface. The read() will block > until the buffer is full. > > If you are getting buffer overflows, you are probably spending too > much time in your doSomething() call. > > On May 19, 11:59 am, benmccann <[email protected]> wrote: > > > Thanks for the response. I'm still foggy on the API usage though. I > > basically want to listen to the mic and continually process the > > incoming audio. Should I be using the OnRecordPositionUpdateListener > > at all? > > > Or should it look something like: > > recorder.startRecording() > > while(recorder.read(buffer) > 0) { > > doSomething(buffer) > > > } > > > When I've done the latter I get buffer overflow exceptions. > > > On May 15, 3:51 pm, Dave Sparks <[email protected]> wrote: > > > > You need to call the read() method. > > > > On May 15, 3:15 pm, benmccann <[email protected]> wrote: > > > > > Any ideas? > > > > > Thanks, > > > > Ben > > > > > On May 15, 1:02 am, benmccann <[email protected]> wrote: > > > > > > Hi, > > > > > I'm trying to figure out how to use theAudioRecordclass. I created > > > > > a callback with a logging message, but don't ever see it called. Do > > > > > you see anything wrong with what I'm doing? Do you have an example of > > > > > how to use the API? > > > > > > Thanks, > > > > > Ben > > > > > > import android.media.AudioFormat; > > > > > import android.media.AudioRecord; > > > > > import android.media.MediaRecorder; > > > > > import android.util.Log; > > > > > > public class AudioListener { > > > > > > public static final int DEFAULT_SAMPLE_RATE = 8000; > > > > > private static final int DEFAULT_BUFFER_SIZE = 4096; > > > > > private static final int CALLBACK_PERIOD = 4000; // 500 msec > > > > > (sample rate / callback period) > > > > > private finalAudioRecordrecorder; > > > > > > public AudioListener() { > > > > > this(DEFAULT_SAMPLE_RATE); > > > > > } > > > > > > private AudioListener(int sampleRate) { > > > > > recorder = newAudioRecord(MediaRecorder.AudioSource.DEFAULT, > > > > > sampleRate, AudioFormat.CHANNEL_CONFIGURATION_DEFAULT, > > > > > AudioFormat.ENCODING_DEFAULT, DEFAULT_BUFFER_SIZE); > > > > > } > > > > > > public void start() { > > > > > recorder.setPositionNotificationPeriod(CALLBACK_PERIOD); > > > > > > > > > > recorder.setRecordPositionUpdateListener(newAudioRecord.OnRecordPositionUpdateListener() > > > > > { > > > > > @Override > > > > > public void onMarkerReached(AudioRecordrecorder) { > > > > > Log.e(this.getClass().getSimpleName(), "onMarkerReached > > > > > Called"); > > > > > } > > > > > > @Override > > > > > public void onPeriodicNotification(AudioRecordrecorder) { > > > > > Log.e(this.getClass().getSimpleName(), "onPeriodicNotification > > > > > Called"); > > > > > } > > > > > }); > > > > > > recorder.startRecording(); > > > > > } > > > > > > } --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---

