Merge pull request #14252 from gcalero/enable_aec_by_default

Enabled AEC by default (bug 19210)
This commit is contained in:
Sam Gondelman 2018-11-12 16:15:33 -08:00 committed by GitHub
commit f68706e72f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 28 additions and 11 deletions

View file

@ -210,11 +210,13 @@ JNIEXPORT void Java_io_highfidelity_hifiinterface_InterfaceActivity_nativeOnDest
JNIEXPORT void Java_io_highfidelity_hifiinterface_InterfaceActivity_nativeGotoUrl(JNIEnv* env, jobject obj, jstring url) { JNIEXPORT void Java_io_highfidelity_hifiinterface_InterfaceActivity_nativeGotoUrl(JNIEnv* env, jobject obj, jstring url) {
QAndroidJniObject jniUrl("java/lang/String", "(Ljava/lang/String;)V", url); QAndroidJniObject jniUrl("java/lang/String", "(Ljava/lang/String;)V", url);
DependencyManager::get<AddressManager>()->loadSettings(jniUrl.toString()); DependencyManager::get<AddressManager>()->loadSettings(jniUrl.toString());
AndroidHelper::instance().muteMic();
} }
JNIEXPORT void Java_io_highfidelity_hifiinterface_InterfaceActivity_nativeGoToUser(JNIEnv* env, jobject obj, jstring username) { JNIEXPORT void Java_io_highfidelity_hifiinterface_InterfaceActivity_nativeGoToUser(JNIEnv* env, jobject obj, jstring username) {
QAndroidJniObject jniUsername("java/lang/String", "(Ljava/lang/String;)V", username); QAndroidJniObject jniUsername("java/lang/String", "(Ljava/lang/String;)V", username);
DependencyManager::get<AddressManager>()->goToUser(jniUsername.toString(), false); DependencyManager::get<AddressManager>()->goToUser(jniUsername.toString(), false);
AndroidHelper::instance().muteMic();
} }
JNIEXPORT void Java_io_highfidelity_hifiinterface_InterfaceActivity_nativeOnPause(JNIEnv* env, jobject obj) { JNIEXPORT void Java_io_highfidelity_hifiinterface_InterfaceActivity_nativeOnPause(JNIEnv* env, jobject obj) {

View file

@ -3,8 +3,8 @@ package io.highfidelity.hifiinterface.fragment;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.media.audiofx.AcousticEchoCanceler; import android.media.audiofx.AcousticEchoCanceler;
import android.os.Bundle; import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceFragment; import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import io.highfidelity.hifiinterface.R; 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 HIFI_SETTINGS_AEC_KEY = "aec";
private final String PREFERENCE_KEY_AEC = "aec"; private final String PREFERENCE_KEY_AEC = "aec";
private final boolean DEFAULT_AEC_ENABLED = true;
@Override @Override
public void onCreate(@Nullable Bundle savedInstanceState) { public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings); addPreferencesFromResource(R.xml.settings);
boolean aecAvailable = AcousticEchoCanceler.isAvailable();
PreferenceManager.setDefaultValues(getContext(), R.xml.settings, false);
if (!AcousticEchoCanceler.isAvailable()) { if (!aecAvailable) {
getPreferenceScreen().getPreferenceManager().findPreference("aec").setEnabled(false); findPreference(PREFERENCE_KEY_AEC).setEnabled(false);
updateHifiSetting(HIFI_SETTINGS_ANDROID_GROUP, HIFI_SETTINGS_AEC_KEY, false);
} }
getPreferenceScreen().getSharedPreferences().edit().putBoolean(PREFERENCE_KEY_AEC, 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() { public static SettingsFragment newInstance() {
@ -46,15 +52,13 @@ public class SettingsFragment extends PreferenceFragment implements SharedPrefer
public void onPause() { public void onPause() {
super.onPause(); super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
} }
@Override @Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Preference pref = findPreference(key);
switch (key) { switch (key) {
case "aec": case PREFERENCE_KEY_AEC:
updateHifiSetting(HIFI_SETTINGS_ANDROID_GROUP, HIFI_SETTINGS_AEC_KEY, sharedPreferences.getBoolean(key, false)); updateHifiSetting(HIFI_SETTINGS_ANDROID_GROUP, HIFI_SETTINGS_AEC_KEY, sharedPreferences.getBoolean(key, DEFAULT_AEC_ENABLED));
break; break;
default: default:
break; break;

View file

@ -6,6 +6,7 @@
<SwitchPreference <SwitchPreference
android:key="aec" android:key="aec"
android:title="@string/AEC" android:title="@string/AEC"
android:summary="@string/acoustic_echo_cancellation" /> android:summary="@string/acoustic_echo_cancellation"
android:defaultValue="true" />
</PreferenceCategory> </PreferenceCategory>
</PreferenceScreen> </PreferenceScreen>

View file

@ -73,6 +73,14 @@ void AndroidHelper::notifyHeadsetOn(bool pluggedIn) {
#endif #endif
} }
void AndroidHelper::muteMic() {
auto audioClient = DependencyManager::get<AudioClient>();
if (audioClient) {
QMetaObject::invokeMethod(audioClient.data(), "setMuted", Q_ARG(bool, true), Q_ARG(bool, true));
}
}
void AndroidHelper::signup(QString email, QString username, QString password) { void AndroidHelper::signup(QString email, QString username, QString password) {
JSONCallbackParameters callbackParams; JSONCallbackParameters callbackParams;
callbackParams.callbackReceiver = this; callbackParams.callbackReceiver = this;

View file

@ -35,6 +35,7 @@ public:
void performHapticFeedback(int duration); void performHapticFeedback(int duration);
void processURL(const QString &url); void processURL(const QString &url);
void notifyHeadsetOn(bool pluggedIn); void notifyHeadsetOn(bool pluggedIn);
void muteMic();
AndroidHelper(AndroidHelper const&) = delete; AndroidHelper(AndroidHelper const&) = delete;
void operator=(AndroidHelper const&) = delete; void operator=(AndroidHelper const&) = delete;

View file

@ -483,7 +483,7 @@ QAudioDeviceInfo defaultAudioDeviceForMode(QAudio::Mode mode) {
#if defined (Q_OS_ANDROID) #if defined (Q_OS_ANDROID)
if (mode == QAudio::AudioInput) { if (mode == QAudio::AudioInput) {
Setting::Handle<bool> enableAEC(SETTING_AEC_KEY, false); Setting::Handle<bool> enableAEC(SETTING_AEC_KEY, DEFAULT_AEC_ENABLED);
bool aecEnabled = enableAEC.get(); bool aecEnabled = enableAEC.get();
auto audioClient = DependencyManager::get<AudioClient>(); auto audioClient = DependencyManager::get<AudioClient>();
bool headsetOn = audioClient? audioClient->isHeadsetPluggedIn() : false; bool headsetOn = audioClient? audioClient->isHeadsetPluggedIn() : false;
@ -1691,7 +1691,7 @@ void AudioClient::setHeadsetPluggedIn(bool pluggedIn) {
QThread::msleep(200); QThread::msleep(200);
} }
Setting::Handle<bool> enableAEC(SETTING_AEC_KEY, false); Setting::Handle<bool> enableAEC(SETTING_AEC_KEY, DEFAULT_AEC_ENABLED);
bool aecEnabled = enableAEC.get(); bool aecEnabled = enableAEC.get();
if ((pluggedIn || !aecEnabled) && _inputDeviceInfo.deviceName() != VOICE_RECOGNITION) { if ((pluggedIn || !aecEnabled) && _inputDeviceInfo.deviceName() != VOICE_RECOGNITION) {

View file

@ -68,6 +68,7 @@
#define VOICE_COMMUNICATION "voicecommunication" #define VOICE_COMMUNICATION "voicecommunication"
#define SETTING_AEC_KEY "Android/aec" #define SETTING_AEC_KEY "Android/aec"
#define DEFAULT_AEC_ENABLED true
#endif #endif
class QAudioInput; class QAudioInput;