diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index ee9eb7b0028f19ebbc8bd2c46e25d535c5d5f03f..28c91b848c79546a5beda90368950775e04862ee 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -313,7 +313,12 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
         }
 
         final boolean settingsKeyEnabled = settingsValues.isSettingsKeyEnabled(editorInfo);
-        final boolean voiceKeyEnabled = settingsValues.isVoiceKeyEnabled(editorInfo);
+        final boolean noMicrophone = Utils.inPrivateImeOptions(
+                mPackageName, LatinIME.IME_OPTION_NO_MICROPHONE, editorInfo)
+                || Utils.inPrivateImeOptions(
+                        null, LatinIME.IME_OPTION_NO_MICROPHONE_COMPAT, editorInfo);
+        final boolean voiceKeyEnabled = settingsValues.isVoiceKeyEnabled(editorInfo)
+                && !noMicrophone;
         final boolean voiceKeyOnMain = settingsValues.isVoiceKeyOnMain();
         final boolean noSettingsKey = Utils.inPrivateImeOptions(
                 mPackageName, LatinIME.IME_OPTION_NO_SETTINGS_KEY, editorInfo);