Recording progress

pull/14/head
Sam Bosley 12 years ago
parent e542b985b3
commit 5a0f3d3f1a

@ -1,5 +1,6 @@
package com.todoroo.aacenc;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import android.content.Context;
@ -7,7 +8,7 @@ import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder.AudioSource;
public class AACRecorder implements AudioRecord.OnRecordPositionUpdateListener {
public class AACRecorder {
private AudioRecord audioRecord;
private AACEncoder encoder;
@ -16,13 +17,32 @@ public class AACRecorder implements AudioRecord.OnRecordPositionUpdateListener {
private boolean recording;
private static final int SAMPLE_RATE = 16000;
private static final int SAMPLE_RATE = 8000;
private static final int NOTIFICATION_PERIOD = 160;
private static final int MIN_BUFFER_SIZE = AudioRecord.getMinBufferSize(SAMPLE_RATE,
AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT) * 3;
AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT) * 10;
private byte[] buffer = new byte[NOTIFICATION_PERIOD * 2];
private Thread readerThread = new Thread() {
private byte[] readBuffer = new byte[NOTIFICATION_PERIOD * 2];
public void run() {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while(recording) {
int bytesRead = audioRecord.read(readBuffer, 0, readBuffer.length);
System.err.println("Bytes read: " + bytesRead);
try {
baos.write(readBuffer);
} catch (IOException e) {
//
}
}
encoder.encode(baos.toByteArray());
baos.reset();
}
};
public AACRecorder(Context context) {
encoder = new AACEncoder();
}
@ -35,12 +55,14 @@ public class AACRecorder implements AudioRecord.OnRecordPositionUpdateListener {
audioRecord = new AudioRecord(AudioSource.MIC, SAMPLE_RATE, AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT, MIN_BUFFER_SIZE);
audioRecord.setPositionNotificationPeriod(NOTIFICATION_PERIOD);
audioRecord.setRecordPositionUpdateListener(this);
encoder.init(64000, 1, SAMPLE_RATE, 16, tempFile);
recording = true;
readerThread.start();
audioRecord.startRecording();
}
@ -48,9 +70,10 @@ public class AACRecorder implements AudioRecord.OnRecordPositionUpdateListener {
if (!recording)
return;
recording = false;
audioRecord.stop();
audioRecord.release();
recording = false;
System.err.println("Uninit");
encoder.uninit();
}
@ -67,21 +90,4 @@ public class AACRecorder implements AudioRecord.OnRecordPositionUpdateListener {
}
}
@Override
public void onMarkerReached(AudioRecord recorder) {
//
}
@Override
public void onPeriodicNotification(AudioRecord recorder) {
int bytesRead = recorder.read(buffer, 0, buffer.length);
if (bytesRead < 0) {
System.err.println("ERROR " + bytesRead);
stopRecording();
return;
}
encoder.encode(buffer);
}
}

Loading…
Cancel
Save