diff --git a/app/build.gradle b/app/build.gradle
index bbbc299..1ef5137 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -34,8 +34,8 @@ android {
applicationId "tv.remo.android.controller"
minSdkVersion 16
targetSdkVersion 28
- versionCode 21
- versionName "0.19.3"
+ versionCode 22
+ versionName "0.20.0"
multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
@@ -75,6 +75,10 @@ android {
buildFeatures {
viewBinding true
}
+
+ lintOptions {
+ abortOnError false
+ }
}
dependencies {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d603772..8d367dc 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -58,6 +58,7 @@
Microphone
Volume, Bitrate
Volume Boost
+ Mic Buffer Multiplier (Adjust if choppy)
Audio and Commands
Text to Speech, Device Volume, Commands
diff --git a/app/src/main/res/xml/settings_microphone.xml b/app/src/main/res/xml/settings_microphone.xml
index 056142f..8fddc82 100644
--- a/app/src/main/res/xml/settings_microphone.xml
+++ b/app/src/main/res/xml/settings_microphone.xml
@@ -10,6 +10,14 @@
app:entries="@array/volume_mic_list"
app:entryValues="@array/volume_mic_list_values"/>
+
+
microphoneSettingsEnable
micVolumeBoostKey
micAudioBitrateKey
+ micAudioBufferMultiplierKey
audioSettingsEnable
ttsCategoryKey
diff --git a/streaming/src/main/java/org/btelman/controlsdk/streaming/audio/retrievers/BasicMicrophoneAudioRetriever.kt b/streaming/src/main/java/org/btelman/controlsdk/streaming/audio/retrievers/BasicMicrophoneAudioRetriever.kt
index 08731eb..f0f7467 100644
--- a/streaming/src/main/java/org/btelman/controlsdk/streaming/audio/retrievers/BasicMicrophoneAudioRetriever.kt
+++ b/streaming/src/main/java/org/btelman/controlsdk/streaming/audio/retrievers/BasicMicrophoneAudioRetriever.kt
@@ -10,7 +10,7 @@ import org.btelman.controlsdk.streaming.utils.AudioUtil
*/
open class BasicMicrophoneAudioRetriever : BaseAudioRetriever(), AudioRecordingThread.AudioDataReceivedListener {
- private val recordingThread = AudioRecordingThread(this)
+ protected var recordingThread = AudioRecordingThread(this)
private var dataArray : AudioPacket? = null
diff --git a/streaming/src/main/java/org/btelman/controlsdk/streaming/utils/AudioRecordingThread.java b/streaming/src/main/java/org/btelman/controlsdk/streaming/utils/AudioRecordingThread.java
index 473affb..13ea99f 100644
--- a/streaming/src/main/java/org/btelman/controlsdk/streaming/utils/AudioRecordingThread.java
+++ b/streaming/src/main/java/org/btelman/controlsdk/streaming/utils/AudioRecordingThread.java
@@ -20,6 +20,8 @@
import android.util.Log;
public class AudioRecordingThread {
+ private float bufferSizeMultiplier = 1;
+
public interface AudioDataReceivedListener {
void onAudioDataReceived(short[] data);
}
@@ -43,12 +45,7 @@ public void startRecording() {
return;
mShouldContinue = true;
- mThread = new Thread(new Runnable() {
- @Override
- public void run() {
- record();
- }
- });
+ mThread = new Thread(this::record);
mThread.start();
}
@@ -73,7 +70,7 @@ private void record() {
bufferSize = SAMPLE_RATE * 2;
}
- short[] audioBuffer = new short[bufferSize / 2];
+ short[] audioBuffer = new short[(int) (bufferSize * bufferSizeMultiplier)];
AudioRecord record = new AudioRecord(MediaRecorder.AudioSource.DEFAULT,
SAMPLE_RATE,
@@ -81,6 +78,9 @@ private void record() {
AudioFormat.ENCODING_PCM_16BIT,
bufferSize);
+ Log.v(LOG_TAG, "Buffer Size : " + bufferSize);
+ Log.v(LOG_TAG, "Buffer Size Multiplier: " + bufferSizeMultiplier);
+
if (record.getState() != AudioRecord.STATE_INITIALIZED) {
Log.e(LOG_TAG, "Audio Record can't initialize!");
return;
@@ -103,5 +103,17 @@ private void record() {
Log.v(LOG_TAG, String.format("Recording stopped. Samples read: %d", shortsRead));
}
+
+ public float getBufferSizeMultiplier() {
+ return bufferSizeMultiplier;
+ }
+
+ /**
+ * Set the buffer size multiplier. The audio recording must be stopped and restarted for this to take affect
+ * @param bufferSizeMultiplier
+ */
+ public void setBufferSizeMultiplier(float bufferSizeMultiplier) {
+ this.bufferSizeMultiplier = bufferSizeMultiplier;
+ }
}