以编程方式在 android 中的软输入键盘上禁用语音到文本按钮 (Micro phone)

Disable speech to text button (Micro phone) on soft input keyboard in android programmatically

在此先感谢您的帮助。

我正在开发一个 android 应用程序用于研究目的,需要禁用软输入键盘上的语音到文本按钮。这样做的原因是由于我正在开发的应用程序使用麦克风而出现的并发问题。我知道对于一般的应用程序,禁用键通常被认为是不可能的(因为用户可能会更改默认键盘)。我知道将使用默认键盘这一事实。

考虑到这一点,是否可以禁用某些键?我相信至少我应该能够指定输入类型,以便隐藏麦克风按钮。我这样说是因为如果我在设置中禁用语音到文本(不是以编程方式,而是作为用户手动),麦克风图标将从键盘上删除。我愿意接受任何可能的解决方案(不使用默认键盘除外),因为此应用程序不会出现在 Play 商店中。

除了用户设备中已经存在的预定义键盘之外,您不能强制用户通过任何其他方式进行输入。

解决此问题的唯一方法是编写您自己的自定义即时键盘,这是一个非常糟糕的主意。

只需在您正在查看的 EditText 中使用 XML 声明以编程方式禁用语音输入。您可以使用属性执行此操作:

android:privateImeOptions="nm"   // nm stands for No Microphone.

如果你想以编程方式设置它,你可以试试这个::

        // deprecated i guess
        edt_txt.setPrivateImeOptions("nm");   
         // this one is new but it works only with Google Keyboard.
         edt_txt.setPrivateImeOptions("com.google.android.inputmethod.latin.noMicrophoneKey"); 

您可以在 CVS 格式的 PrivateImeOptions 参数中组合值,因此最好的选择是使用:

                edt_txt.setPrivateImeOptions("nm,com.google.android.inputmethod.latin.noMicrophoneKey"); 

浏览一下 here,看看是否能找到您要找的东西。

有关 Google 键盘的更多信息 here -> 寻找方法 setOptions

禁用多个键盘上的麦克风按钮。使用 属性

android:privateImeOptions="nm"

但不适用于 Gboard(google 原生键盘)

要在 Gboard 上禁用麦克风使用

android:privateImeOptions="nm" editText.setImeOptions(IME_FLAG_NO_PERSONALIZED_LEARNING)

只需在布局文件的 editText 中使用它:

android:imeOptions="flagNoPersonalizedLearning"