diff --git a/java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java b/java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java index 1cbdbd650..9c5ccc76b 100644 --- a/java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java +++ b/java/src/com/android/inputmethod/latin/AudioAndHapticFeedbackManager.java @@ -16,9 +16,7 @@ package com.android.inputmethod.latin; -import android.content.BroadcastReceiver; import android.content.Context; -import android.content.Intent; import android.media.AudioManager; import android.view.HapticFeedbackConstants; import android.view.View; @@ -32,7 +30,7 @@ import com.android.inputmethod.keyboard.Keyboard; * It offers a consistent and simple interface that allows LatinIME to forget about the * complexity of settings and the like. */ -public class AudioAndHapticFeedbackManager extends BroadcastReceiver { +public class AudioAndHapticFeedbackManager { final private SettingsValues mSettingsValues; final private AudioManager mAudioManager; final private VibratorCompatWrapper mVibrator; @@ -100,13 +98,7 @@ public class AudioAndHapticFeedbackManager extends BroadcastReceiver { } } - @Override - public void onReceive(Context context, Intent intent) { - final String action = intent.getAction(); - // The following test is supposedly useless since we only listen for the ringer event. - // Still, it's a good safety measure. - if (action.equals(AudioManager.RINGER_MODE_CHANGED_ACTION)) { - mSoundOn = reevaluateIfSoundIsOn(); - } + public void onRingerModeChanged() { + mSoundOn = reevaluateIfSoundIsOn(); } } diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index ca38cdeec..73a96895f 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -532,6 +532,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar // Also receive installation and removal of a dictionary pack. final IntentFilter filter = new IntentFilter(); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); + filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION); registerReceiver(mReceiver, filter); mVoiceProxy = VoiceProxy.init(this, prefs, mHandler); @@ -547,19 +548,11 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar registerReceiver(mDictionaryPackInstallReceiver, newDictFilter); } - private void renewFeedbackReceiver() { - if (null != mFeedbackManager) unregisterReceiver(mFeedbackManager); - mFeedbackManager = new AudioAndHapticFeedbackManager(this, mSettingsValues); - final IntentFilter ringerModeFilter = new IntentFilter(); - ringerModeFilter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION); - registerReceiver(mFeedbackManager, ringerModeFilter); - } - // Has to be package-visible for unit tests /* package */ void loadSettings() { if (null == mPrefs) mPrefs = PreferenceManager.getDefaultSharedPreferences(this); mSettingsValues = new SettingsValues(mPrefs, this, mSubtypeSwitcher.getInputLocaleStr()); - renewFeedbackReceiver(); + mFeedbackManager = new AudioAndHapticFeedbackManager(this, mSettingsValues); resetContactsDictionary(null == mSuggest ? null : mSuggest.getContactsDictionary()); } @@ -648,7 +641,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar mSuggest = null; } unregisterReceiver(mReceiver); - unregisterReceiver(mFeedbackManager); unregisterReceiver(mDictionaryPackInstallReceiver); mVoiceProxy.destroy(); LatinImeLogger.commit(); @@ -2356,6 +2348,8 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar final String action = intent.getAction(); if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) { mSubtypeSwitcher.onNetworkStateChanged(intent); + } else if (action.equals(AudioManager.RINGER_MODE_CHANGED_ACTION)) { + mFeedbackManager.onRingerModeChanged(); } } };