Successful recording, wooooot

pull/14/head
Sam Bosley 13 years ago
parent 5a0f3d3f1a
commit 2d968f9583

@ -16,6 +16,7 @@ public class AACRecorder {
private String tempFile; private String tempFile;
private boolean recording; private boolean recording;
private AACRecorderCallbacks listener;
private static final int SAMPLE_RATE = 8000; private static final int SAMPLE_RATE = 8000;
private static final int NOTIFICATION_PERIOD = 160; private static final int NOTIFICATION_PERIOD = 160;
@ -24,20 +25,28 @@ public class AACRecorder {
private byte[] buffer = new byte[NOTIFICATION_PERIOD * 2]; private byte[] buffer = new byte[NOTIFICATION_PERIOD * 2];
public interface AACRecorderCallbacks {
public void encodingFinished();
}
private Thread readerThread = new Thread() { private Thread readerThread = new Thread() {
private byte[] readBuffer = new byte[NOTIFICATION_PERIOD * 2]; private byte[] readBuffer = new byte[NOTIFICATION_PERIOD * 2];
public void run() { public void run() {
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream();
int bytesRead = 0;
while(recording) { while(recording) {
int bytesRead = audioRecord.read(readBuffer, 0, readBuffer.length); bytesRead = audioRecord.read(readBuffer, 0, readBuffer.length);
System.err.println("Bytes read: " + bytesRead); System.err.println("Bytes read: " + bytesRead);
try { try {
baos.write(readBuffer); baos.write(readBuffer);
} catch (IOException e) { } catch (IOException e) {
// //
} }
if (bytesRead <= 0)
break;
} }
encoder.encode(baos.toByteArray()); encoder.encode(baos.toByteArray());
finishRecording();
baos.reset(); baos.reset();
} }
}; };
@ -61,20 +70,29 @@ public class AACRecorder {
encoder.init(64000, 1, SAMPLE_RATE, 16, tempFile); encoder.init(64000, 1, SAMPLE_RATE, 16, tempFile);
recording = true; recording = true;
readerThread.start();
audioRecord.startRecording(); audioRecord.startRecording();
readerThread.start();
} }
public synchronized void stopRecording() { public synchronized void stopRecording() {
if (!recording) if (!recording)
return; return;
recording = false;
audioRecord.stop(); audioRecord.stop();
}
public synchronized void finishRecording() {
recording = false;
audioRecord.release(); audioRecord.release();
System.err.println("Uninit"); System.err.println("Uninit");
encoder.uninit(); encoder.uninit();
if (listener != null)
listener.encodingFinished();
}
public void setListener(AACRecorderCallbacks listener) {
this.listener = listener;
} }
public synchronized boolean convert(String outFile) { public synchronized boolean convert(String outFile) {

@ -13,12 +13,13 @@ import android.widget.Toast;
import com.timsu.astrid.R; import com.timsu.astrid.R;
import com.todoroo.aacenc.AACRecorder; import com.todoroo.aacenc.AACRecorder;
import com.todoroo.aacenc.AACRecorder.AACRecorderCallbacks;
import com.todoroo.aacenc.AACToM4A; import com.todoroo.aacenc.AACToM4A;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.service.ThemeService;
public class AACRecordingActivity extends Activity { public class AACRecordingActivity extends Activity implements AACRecorderCallbacks {
public static final String EXTRA_TEMP_FILE = "tempFile"; //$NON-NLS-1$ public static final String EXTRA_TEMP_FILE = "tempFile"; //$NON-NLS-1$
public static final String EXTRA_TASK_ID = "taskId"; //$NON-NLS-1$ public static final String EXTRA_TASK_ID = "taskId"; //$NON-NLS-1$
@ -28,6 +29,8 @@ public class AACRecordingActivity extends Activity {
private String tempFile; private String tempFile;
private long taskId; private long taskId;
private ProgressDialog pd;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -40,6 +43,7 @@ public class AACRecordingActivity extends Activity {
taskId = getIntent().getLongExtra(EXTRA_TASK_ID, 0L); taskId = getIntent().getLongExtra(EXTRA_TASK_ID, 0L);
recorder = new AACRecorder(this); recorder = new AACRecorder(this);
recorder.setListener(this);
recorder.startRecording(tempFile); recorder.startRecording(tempFile);
} }
@ -50,7 +54,6 @@ public class AACRecordingActivity extends Activity {
stopRecording.setOnClickListener(new OnClickListener() { stopRecording.setOnClickListener(new OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
System.err.println("On click");
stopRecording(); stopRecording();
} }
}); });
@ -70,13 +73,14 @@ public class AACRecordingActivity extends Activity {
@SuppressWarnings("nls") @SuppressWarnings("nls")
private void stopRecording() { private void stopRecording() {
System.err.println("Stopping...");
recorder.stopRecording(); recorder.stopRecording();
System.err.println("Stopped recorder");
ProgressDialog pd = DialogUtilities.progressDialog(this, "Encoding..."); pd = DialogUtilities.progressDialog(this, "Encoding...");
pd.show(); pd.show();
System.err.println("Passed pd"); }
@SuppressWarnings("nls")
public void encodingFinished() {
try { try {
StringBuilder filePathBuilder = new StringBuilder(); StringBuilder filePathBuilder = new StringBuilder();
filePathBuilder.append(getExternalFilesDir("audio").toString()) filePathBuilder.append(getExternalFilesDir("audio").toString())
@ -87,14 +91,11 @@ public class AACRecordingActivity extends Activity {
.append("_audio.mp4"); .append("_audio.mp4");
String outFile = filePathBuilder.toString(); String outFile = filePathBuilder.toString();
System.err.println("Converting");
new AACToM4A().convert(this, tempFile, outFile); new AACToM4A().convert(this, tempFile, outFile);
System.err.println("Finished Converting");
Intent result = new Intent(); Intent result = new Intent();
result.putExtra(RESULT_OUTFILE, outFile); result.putExtra(RESULT_OUTFILE, outFile);
setResult(RESULT_OK, result); setResult(RESULT_OK, result);
System.err.println("Finishing");
finish(); finish();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
@ -103,5 +104,4 @@ public class AACRecordingActivity extends Activity {
pd.dismiss(); pd.dismiss();
} }
} }

Loading…
Cancel
Save