From 375242d6fb9252999ae749b419a704737b8a18bf Mon Sep 17 00:00:00 2001 From: Branden Archer Date: Mon, 28 Dec 2015 16:08:59 -0500 Subject: [PATCH] Cleanup AudioRecord if socket throws an exception Previously an IOException would prevent the AudioRecord from being cleaned up. --- src/protect/babymonitor/MonitorActivity.java | 30 ++++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/protect/babymonitor/MonitorActivity.java b/src/protect/babymonitor/MonitorActivity.java index ac5a2e4..b3cdd86 100644 --- a/src/protect/babymonitor/MonitorActivity.java +++ b/src/protect/babymonitor/MonitorActivity.java @@ -67,21 +67,27 @@ public class MonitorActivity extends Activity audioEncoding, bufferSize); byte[] buffer = new byte[bufferSize*2]; - audioRecord.startRecording(); - OutputStream out = socket.getOutputStream(); - - socket.setSendBufferSize(bufferSize); - Log.d(TAG, "Socket send buffer size: " + socket.getSendBufferSize()); - - while (socket.isConnected() && Thread.currentThread().isInterrupted() == false) + try { - int read = audioRecord.read(buffer, 0, bufferSize); - out.write(buffer, 0, read); - } + audioRecord.startRecording(); - socket.close(); - audioRecord.stop(); + OutputStream out = socket.getOutputStream(); + + socket.setSendBufferSize(bufferSize); + Log.d(TAG, "Socket send buffer size: " + socket.getSendBufferSize()); + + while (socket.isConnected() && Thread.currentThread().isInterrupted() == false) + { + int read = audioRecord.read(buffer, 0, bufferSize); + out.write(buffer, 0, read); + } + } + finally + { + audioRecord.stop(); + socket.close(); + } } @Override