Мне нужно отобразить предупреждение для пользователя, если он не включил голосовой ввод Google в своих настройках (Язык и ввод -> Голосовой ввод Google). Есть ли способ определить этот статус настройки?
Определить, включен ли голосовой ввод
Ответы (2)
Итак, я нашел свой ответ. Официального способа определить, включен ли голосовой ввод, не существует. Мне удалось получить список включенных методов ввода (клавиатура, голос и т.д.).
String enabledMethods = Settings.Secure.getString(getActivity().getContentResolver(),Settings.Secure.ENABLED_INPUT_METHODS);
Там мы можем увидеть, включен ли голосовой набор Google или нет, и мы можем предупредить пользователя о его включении, однако это относится к клавиатуре по умолчанию. Некоторые пользователи используют специальные клавиатуры, которые имеют собственную реализацию преобразования речи в текст и не зависят от пользовательских настроек для голосового набора Google. Так что для них это будет ложным срабатыванием.
person
Krasimir Unarev
schedule
01.09.2015
эта команда Красимира возвращает com.sec.android.inputmethod/.SamsungKeypad:com.google.android.googlequicksearchbox/com.google.android.voicesearch.ime.VoiceInputMethodService. Вы можете проверить, содержит ли строка %voice%...
- person Al2x; 14.04.2017
Зная, что вы знаете имя пакета 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;
}
person
Kaarel
schedule
02.09.2015