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

提前感谢您的帮助。

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

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

【问题讨论】:

    标签: android keyboard microphone speech-to-text


    【解决方案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"
      

      【讨论】:

        猜你喜欢
        • 2018-05-11
        • 1970-01-01
        • 1970-01-01
        • 2016-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-09
        • 1970-01-01
        相关资源
        最近更新 更多