From 828e6a16f6a37afd652615f02d872a6ff52b91b3 Mon Sep 17 00:00:00 2001 From: Branden Archer Date: Sat, 26 Dec 2015 17:50:33 -0500 Subject: [PATCH] Stream audio data to connected clients While connected, send packets of audio data to connected clients. --- src/protect/babymonitor/MonitorActivity.java | 27 ++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/protect/babymonitor/MonitorActivity.java b/src/protect/babymonitor/MonitorActivity.java index 5aba2fd..2babbef 100644 --- a/src/protect/babymonitor/MonitorActivity.java +++ b/src/protect/babymonitor/MonitorActivity.java @@ -17,10 +17,15 @@ package protect.babymonitor; import java.io.IOException; +import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; + import android.app.Activity; import android.content.Context; +import android.media.AudioFormat; +import android.media.AudioRecord; +import android.media.MediaRecorder; import android.net.nsd.NsdManager; import android.net.nsd.NsdServiceInfo; import android.os.Bundle; @@ -51,7 +56,29 @@ public class MonitorActivity extends Activity statusText.setText("Streaming..."); } }); + + int frequency = 11025; + int channelConfiguration = AudioFormat.CHANNEL_IN_MONO; + int audioEncoding = AudioFormat.ENCODING_PCM_16BIT; + + int bufferSize = AudioRecord.getMinBufferSize(frequency, channelConfiguration, audioEncoding); + AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, + frequency, channelConfiguration, + audioEncoding, bufferSize); + + byte[] buffer = new byte[bufferSize*2]; + audioRecord.startRecording(); + + OutputStream out = socket.getOutputStream(); + + while (socket.isConnected() && Thread.currentThread().isInterrupted() == false) + { + int read = audioRecord.read(buffer, 0, bufferSize); + out.write(buffer, 0, read); + } + socket.close(); + audioRecord.stop(); } @Override