У меня есть EditText View, который редактируется setText() из моего кода и пользователем через (мягкую/твердую) клавиатуру и, если возможно, с помощью речевого ввода. Я хочу обрабатывать ввод, сделанный моим кодом, по-другому, чем обычный пользовательский ввод: при входе пользователя происходит внутреннее событие. Но я не знаю, как отличить их обоих. Раньше - при разработке на эмуляторе я использовал метод onKeyDown(), чтобы поймать пользовательский ввод. Однако при тестировании на реальном устройстве я узнал, что onKeyDown() не запускается с мягкого ввода клавиатуры. Кроме того, речевой ввод не был бы признан этим, хотя я считаю, что это незначительный недостаток. Так что решение для меня не вариант.
С другой стороны, существует метод onTextChanged(), но это срабатывает как с помощью setText(), так и с клавиатуры. Итак, как я могу различать оба метода, или какой метод вызывается только пользователем, но не при использовании setText(), поэтому я могу его переписать?