以编程方式在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中的软输入键盘上禁用语音到文本按钮(麦克风)的主要内容,如果未能解决你的问题,请参考以下文章