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

Posted

技术标签:

【中文标题】以编程方式在android中的软输入键盘上禁用语音到文本按钮(麦克风)【英文标题】:Disable speech to text button (Micro phone) on soft input keyboard in android programmatically 【发布时间】:2015-11-22 16:08:53 【问题描述】:

提前感谢您的帮助。

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

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

【问题讨论】:

【参考方案1】:

除了用户设备中已经存在的预定义键盘之外,您不能强制用户输入。

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

只需在您正在查看的 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,看看你是否能找到你要找的东西。

更多关于谷歌键盘的信息here -> 寻找方法setOptions

【讨论】:

我也看过了。但是,我没有在我的应用程序的这一部分中使用 xml。我想以编程方式执行此操作。 你能像这样试试吗 edit_text.setPrivateImeOptions("nm"); 这很愚蠢,哈哈。谢谢你的工作就像一个魅力。【参考方案2】:

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

android:privateImeOptions="nm"

但它不适用于 Gboard(谷歌原生键盘)

在 Gboard 上禁用麦克风

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

【讨论】:

【参考方案3】:

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

android:imeOptions="flagNoPersonalizedLearning"

【讨论】:

以上是关于以编程方式在android中的软输入键盘上禁用语音到文本按钮(麦克风)的主要内容,如果未能解决你的问题,请参考以下文章

关于Android中的软键盘

以编程方式为我的应用禁用键盘

以编程方式禁用android中的触摸输入

以编程方式禁用鼠标和键盘

adb shell 命令在 android 上禁用键盘建议

Android TextField:以编程方式设置焦点+软输入