检测是否启用了语音输入
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;
}
如果用户没有从他们的设置(语言和输入 -> 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;
}