diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/SettingsFragment.java b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/SettingsFragment.java
index cc23665e72..58b6638531 100644
--- a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/SettingsFragment.java
+++ b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/SettingsFragment.java
@@ -3,8 +3,8 @@ package io.highfidelity.hifiinterface.fragment;
import android.content.SharedPreferences;
import android.media.audiofx.AcousticEchoCanceler;
import android.os.Bundle;
-import android.preference.Preference;
import android.preference.PreferenceFragment;
+import android.preference.PreferenceManager;
import android.support.annotation.Nullable;
import io.highfidelity.hifiinterface.R;
@@ -18,17 +18,23 @@ public class SettingsFragment extends PreferenceFragment implements SharedPrefer
private final String HIFI_SETTINGS_AEC_KEY = "aec";
private final String PREFERENCE_KEY_AEC = "aec";
+ private final boolean DEFAULT_AEC_ENABLED = true;
+
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
+ boolean aecAvailable = AcousticEchoCanceler.isAvailable();
+ PreferenceManager.setDefaultValues(getContext(), R.xml.settings, false);
- if (!AcousticEchoCanceler.isAvailable()) {
- getPreferenceScreen().getPreferenceManager().findPreference("aec").setEnabled(false);
+ if (!aecAvailable) {
+ findPreference(PREFERENCE_KEY_AEC).setEnabled(false);
+ updateHifiSetting(HIFI_SETTINGS_ANDROID_GROUP, HIFI_SETTINGS_AEC_KEY, false);
}
getPreferenceScreen().getSharedPreferences().edit().putBoolean(PREFERENCE_KEY_AEC,
- getHifiSettingBoolean(HIFI_SETTINGS_ANDROID_GROUP, HIFI_SETTINGS_AEC_KEY, false));
+ aecAvailable && getHifiSettingBoolean(HIFI_SETTINGS_ANDROID_GROUP, HIFI_SETTINGS_AEC_KEY, DEFAULT_AEC_ENABLED)).commit();
+
}
public static SettingsFragment newInstance() {
@@ -46,15 +52,13 @@ public class SettingsFragment extends PreferenceFragment implements SharedPrefer
public void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
-
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
- Preference pref = findPreference(key);
switch (key) {
- case "aec":
- updateHifiSetting(HIFI_SETTINGS_ANDROID_GROUP, HIFI_SETTINGS_AEC_KEY, sharedPreferences.getBoolean(key, false));
+ case PREFERENCE_KEY_AEC:
+ updateHifiSetting(HIFI_SETTINGS_ANDROID_GROUP, HIFI_SETTINGS_AEC_KEY, sharedPreferences.getBoolean(key, DEFAULT_AEC_ENABLED));
break;
default:
break;
diff --git a/android/app/src/main/res/xml/settings.xml b/android/app/src/main/res/xml/settings.xml
index 5ec47b1aff..934d34ba73 100644
--- a/android/app/src/main/res/xml/settings.xml
+++ b/android/app/src/main/res/xml/settings.xml
@@ -6,6 +6,7 @@
+ android:summary="@string/acoustic_echo_cancellation"
+ android:defaultValue="true" />
\ No newline at end of file
diff --git a/libraries/audio-client/src/AudioClient.cpp b/libraries/audio-client/src/AudioClient.cpp
index d00bc29054..abe8f628f7 100644
--- a/libraries/audio-client/src/AudioClient.cpp
+++ b/libraries/audio-client/src/AudioClient.cpp
@@ -465,7 +465,7 @@ QAudioDeviceInfo defaultAudioDeviceForMode(QAudio::Mode mode) {
#if defined (Q_OS_ANDROID)
if (mode == QAudio::AudioInput) {
- Setting::Handle enableAEC(SETTING_AEC_KEY, false);
+ Setting::Handle enableAEC(SETTING_AEC_KEY, DEFAULT_AEC_ENABLED);
bool aecEnabled = enableAEC.get();
auto audioClient = DependencyManager::get();
bool headsetOn = audioClient? audioClient->isHeadsetPluggedIn() : false;
@@ -1673,7 +1673,7 @@ void AudioClient::setHeadsetPluggedIn(bool pluggedIn) {
QThread::msleep(200);
}
- Setting::Handle enableAEC(SETTING_AEC_KEY, false);
+ Setting::Handle enableAEC(SETTING_AEC_KEY, DEFAULT_AEC_ENABLED);
bool aecEnabled = enableAEC.get();
if ((pluggedIn || !aecEnabled) && _inputDeviceInfo.deviceName() != VOICE_RECOGNITION) {
diff --git a/libraries/audio-client/src/AudioClient.h b/libraries/audio-client/src/AudioClient.h
index 5e7f1fb8a0..057f477777 100644
--- a/libraries/audio-client/src/AudioClient.h
+++ b/libraries/audio-client/src/AudioClient.h
@@ -69,6 +69,7 @@
#define VOICE_COMMUNICATION "voicecommunication"
#define SETTING_AEC_KEY "Android/aec"
+#define DEFAULT_AEC_ENABLED true
#endif
class QAudioInput;