From 2d968f9583688faf52cbefe76c7451f10bdbb030 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Wed, 23 May 2012 15:00:20 -0700 Subject: [PATCH] Successful recording, wooooot --- .../src/com/todoroo/aacenc/AACRecorder.java | 28 +++++++++++++++---- .../astrid/files/AACRecordingActivity.java | 20 ++++++------- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/android-aac-enc/src/com/todoroo/aacenc/AACRecorder.java b/android-aac-enc/src/com/todoroo/aacenc/AACRecorder.java index 8d8d0fe82..b0193223c 100644 --- a/android-aac-enc/src/com/todoroo/aacenc/AACRecorder.java +++ b/android-aac-enc/src/com/todoroo/aacenc/AACRecorder.java @@ -16,6 +16,7 @@ public class AACRecorder { private String tempFile; private boolean recording; + private AACRecorderCallbacks listener; private static final int SAMPLE_RATE = 8000; private static final int NOTIFICATION_PERIOD = 160; @@ -24,20 +25,28 @@ public class AACRecorder { private byte[] buffer = new byte[NOTIFICATION_PERIOD * 2]; + public interface AACRecorderCallbacks { + public void encodingFinished(); + } + private Thread readerThread = new Thread() { private byte[] readBuffer = new byte[NOTIFICATION_PERIOD * 2]; public void run() { ByteArrayOutputStream baos = new ByteArrayOutputStream(); + int bytesRead = 0; while(recording) { - int bytesRead = audioRecord.read(readBuffer, 0, readBuffer.length); + bytesRead = audioRecord.read(readBuffer, 0, readBuffer.length); System.err.println("Bytes read: " + bytesRead); try { baos.write(readBuffer); } catch (IOException e) { // } + if (bytesRead <= 0) + break; } encoder.encode(baos.toByteArray()); + finishRecording(); baos.reset(); } }; @@ -61,20 +70,29 @@ public class AACRecorder { encoder.init(64000, 1, SAMPLE_RATE, 16, tempFile); recording = true; - readerThread.start(); - audioRecord.startRecording(); + + readerThread.start(); } public synchronized void stopRecording() { if (!recording) return; - - recording = false; + audioRecord.stop(); + } + + public synchronized void finishRecording() { + recording = false; audioRecord.release(); System.err.println("Uninit"); encoder.uninit(); + if (listener != null) + listener.encodingFinished(); + } + + public void setListener(AACRecorderCallbacks listener) { + this.listener = listener; } public synchronized boolean convert(String outFile) { diff --git a/astrid/plugin-src/com/todoroo/astrid/files/AACRecordingActivity.java b/astrid/plugin-src/com/todoroo/astrid/files/AACRecordingActivity.java index 64a17a87d..03672cc1b 100644 --- a/astrid/plugin-src/com/todoroo/astrid/files/AACRecordingActivity.java +++ b/astrid/plugin-src/com/todoroo/astrid/files/AACRecordingActivity.java @@ -13,12 +13,13 @@ import android.widget.Toast; import com.timsu.astrid.R; import com.todoroo.aacenc.AACRecorder; +import com.todoroo.aacenc.AACRecorder.AACRecorderCallbacks; import com.todoroo.aacenc.AACToM4A; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DialogUtilities; 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_TASK_ID = "taskId"; //$NON-NLS-1$ @@ -28,6 +29,8 @@ public class AACRecordingActivity extends Activity { private String tempFile; private long taskId; + private ProgressDialog pd; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -40,6 +43,7 @@ public class AACRecordingActivity extends Activity { taskId = getIntent().getLongExtra(EXTRA_TASK_ID, 0L); recorder = new AACRecorder(this); + recorder.setListener(this); recorder.startRecording(tempFile); } @@ -50,7 +54,6 @@ public class AACRecordingActivity extends Activity { stopRecording.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { - System.err.println("On click"); stopRecording(); } }); @@ -70,13 +73,14 @@ public class AACRecordingActivity extends Activity { @SuppressWarnings("nls") private void stopRecording() { - System.err.println("Stopping..."); recorder.stopRecording(); - System.err.println("Stopped recorder"); - ProgressDialog pd = DialogUtilities.progressDialog(this, "Encoding..."); + pd = DialogUtilities.progressDialog(this, "Encoding..."); pd.show(); - System.err.println("Passed pd"); + } + + @SuppressWarnings("nls") + public void encodingFinished() { try { StringBuilder filePathBuilder = new StringBuilder(); filePathBuilder.append(getExternalFilesDir("audio").toString()) @@ -87,14 +91,11 @@ public class AACRecordingActivity extends Activity { .append("_audio.mp4"); String outFile = filePathBuilder.toString(); - System.err.println("Converting"); new AACToM4A().convert(this, tempFile, outFile); - System.err.println("Finished Converting"); Intent result = new Intent(); result.putExtra(RESULT_OUTFILE, outFile); setResult(RESULT_OK, result); - System.err.println("Finishing"); finish(); } catch (IOException e) { e.printStackTrace(); @@ -103,5 +104,4 @@ public class AACRecordingActivity extends Activity { pd.dismiss(); } - }