diff --git a/java/src/com/android/inputmethod/deprecated/VoiceProxy.java b/java/src/com/android/inputmethod/deprecated/VoiceProxy.java
index 700709d..c1c6d31 100644
--- a/java/src/com/android/inputmethod/deprecated/VoiceProxy.java
+++ b/java/src/com/android/inputmethod/deprecated/VoiceProxy.java
@@ -92,6 +92,7 @@
     private static final boolean DEBUG = LatinImeLogger.sDBG;
 
     private boolean mAfterVoiceInput;
+    private boolean mConfigurationChanging;
     private boolean mHasUsedVoiceInput;
     private boolean mHasUsedVoiceInputUnsupportedLocale;
     private boolean mImmediatelyAfterVoiceInput;
@@ -159,11 +160,11 @@
         mPasswordText = isPasswordText;
     }
 
-    public void flushVoiceInputLogs(boolean configurationChanged) {
+    public void flushVoiceInputLogs() {
         if (!VOICE_INSTALLED) {
             return;
         }
-        if (!configurationChanged) {
+        if (!mConfigurationChanging) {
             if (mAfterVoiceInput) {
                 mVoiceInput.flushAllTextModificationCounters();
                 mVoiceInput.logInputEnded();
@@ -318,11 +319,11 @@
         mImmediatelyAfterVoiceInput = false;
     }
 
-    public void hideVoiceWindow(boolean configurationChanging) {
+    public void hideVoiceWindow() {
         if (!VOICE_INSTALLED) {
             return;
         }
-        if (!configurationChanging) {
+        if (!mConfigurationChanging) {
             if (mAfterVoiceInput)
                 mVoiceInput.logInputEnded();
             if (mVoiceWarningDialog != null && mVoiceWarningDialog.isShowing()) {
@@ -842,4 +843,12 @@
                 SettingsUtil.LATIN_IME_VOICE_INPUT_SUPPORTED_LOCALES,
                 DEFAULT_VOICE_INPUT_SUPPORTED_LOCALES);
     }
+
+    public void startChangingConfiguration() {
+        mConfigurationChanging = true;
+    }
+
+    public void finishChangingConfiguration() {
+        mConfigurationChanging = false;
+    }
 }
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 2bcd947..6b9ee9b 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -223,9 +223,6 @@
 
     private VibratorCompatWrapper mVibrator;
 
-    // TODO: Move this flag to VoiceProxy
-    private boolean mConfigurationChanging;
-
     // Member variables for remembering the current device orientation.
     private int mDisplayOrientation;
 
@@ -664,10 +661,10 @@
                 mOptionsDialog.dismiss();
         }
 
-        mConfigurationChanging = true;
+        mVoiceProxy.startChangingConfiguration();
         super.onConfigurationChanged(conf);
         mVoiceProxy.onConfigurationChanged(conf);
-        mConfigurationChanging = false;
+        mVoiceProxy.finishChangingConfiguration();
 
         // This will work only when the subtype is not supported.
         LanguageSwitcherProxy.onConfigurationChanged(conf);
@@ -830,7 +827,7 @@
 
         LatinImeLogger.commit();
 
-        mVoiceProxy.flushVoiceInputLogs(mConfigurationChanging);
+        mVoiceProxy.flushVoiceInputLogs();
 
         KeyboardView inputView = mKeyboardSwitcher.getKeyboardView();
         if (inputView != null) inputView.closing();
@@ -960,7 +957,7 @@
             mOptionsDialog.dismiss();
             mOptionsDialog = null;
         }
-        mVoiceProxy.hideVoiceWindow(mConfigurationChanging);
+        mVoiceProxy.hideVoiceWindow();
         super.hideWindow();
     }
 
