提前感谢您的帮助。
我正在开发一个用于研究目的的android应用程序,需要禁用软输入键盘上的语音到文本按钮。这样做的原因是由于并发性问题,因为我正在开发的应用程序使用了麦克风。我理解,对于一般的应用程序,禁用键通常被认为是不可能的(因为用户可以更改默认键盘)。我知道一个事实,默认键盘将被使用。
考虑到这一点,是否有可能禁用某些键?我相信,至少我应该能够指定输入类型,这样麦克风按钮是隐藏的。我这么说是因为如果我在设置中禁用语音对文本(不是通过编程,而是作为用户手动),麦克风图标就会从键盘上移除。我是开放的任何可能的解决方案(除了不使用默认键盘),因为这个应用程序将不会出现在播放商店。
你不能强迫用户通过用户设备中已经存在的预定义键盘输入。
你唯一能解决这个问题的方法就是编写你自己的自定义键盘,这是一个非常糟糕的主意。
只需通过在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");
你可以把PrivateImeOptions参数中的值以CVS的形式组合起来,所以最好的选择是使用:
edt_txt.setPrivateImeOptions("nm,com.google.android.inputmethod.latin.noMicrophoneKey");
浏览一下这里,看看你是否能找到你要找的东西。
更多关于谷歌键盘的信息在这里->查找方法setopoptions
禁用多个键盘上的麦克风按钮。使用属性
android:privateImeOptions="nm"
但它不能为Gboard(谷歌本地键盘)
在Gboard上禁用麦克风使用
android:privateImeOptions="nm"
editText.setImeOptions(IME_FLAG_NO_PERSONALIZED_LEARNING)
只需在布局文件的editText中使用这个:
android:imeOptions="flagNoPersonalizedLearning"