检测是否启用了语音输入

Detect if voice typing is enabled

如果用户没有从他们的设置(语言和输入 -> Google 语音输入)启用 Google 语音输入,我需要向他们显示警告。有什么方法可以检测该设置状态吗?

所以我找到了答案。没有官方的方法来检测是否启用了语音输入。我设法获得了已启用输入法(键盘、语音等)的列表。

String enabledMethods = Settings.Secure.getString(getActivity().getContentResolver(),Settings.Secure.ENABLED_INPUT_METHODS);

在那里我们可以看到 Google 语音输入是否启用,我们可以提醒用户打开它,但这适用于默认键盘。一些用户使用自定义键盘,这些键盘有自己的语音到文本实现,并且不依赖于 Google 语音输入的用户设置。所以这对他们来说是误报。

假设您知道 IME 的包名,您可以这样做:

boolean isImeEnabled(String packageName) {
    InputMethodManager imm =
        (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

    for (InputMethodInfo imi : imm.getEnabledInputMethodList()) {
        if (imi.getPackageName().equals(packageName)) {
            return true;
        }
    }

    return false;
}