I have an IntentService that I am using to record audio via AudioRecord in my app.
In the onHandleIntent method, I call .getInstance of a seperate class that I used for handling the recording, and then call a couple of methods of that class.
However as soon as the intentService starts, its onDestroy method gets called, and the recording stops.
In the class that gets instantiated in the onHandleIntent, the audio is still recording, until the onDestroy gets called.
So surely onDestroy shouldn't get called until the recording is finished.
If someone could offer a suggestion as to why it is doing this, it would be much appreciated.
The code for my IntentService is below:
public class RecordService extends IntentService {
public File directory;
AudioRecord audioRecord;
int sampleRate = 44100;
int channelConfiguration = AudioFormat.CHANNEL_IN_MONO;
int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;
File file;
short channels = 1;
int bitsPerSample = 16;
public RecordService() {
super("Record");
}
ExtAudioRecorder extAudioRecord;
@Override
protected void onHandleIntent(Intent intent) {
Log.v("Record", "Record called");
extAudioRecord = ExtAudioRecorder.getInstanse(false);
extAudioRecord.reset();
extAudioRecord.setOutputFile(getOutputFile("RecV2").toString());
extAudioRecord.prepare();
extAudioRecord.start();
//record();
}
public void onDestroy(){
extAudioRecord.stop();
//audioRecord.stop();
Log.v("Record", "onDestroy called, Record stopped");
}
I believe the
extAudioRecord.start();is non-blocking meaning it returns immediately exitingonHandleIntent(). The IntentService is terminated shortly after callingonDestroy.