Движение курсора и поиск текста в методах ввода

1

Я разрабатываю свой первый Android IME и немного перегружен. Мои цели связаны с доступностью, и поэтому я задаюсь вопросом, возможно ли, что я пытаюсь использовать рамки IME, которые просто невозможны. Я применил пример экранной клавиатуры по умолчанию, и он работает вместе с некоторыми из моих модификаций, поэтому я определенно понял хотя бы некоторые из них, но документации по некоторым из вещей, которые я пытаюсь сделать, не так много, Вот что я имею в виду:

В настоящее время телефоны Android с сенсорными экранами недоступны. В настоящее время я имею доступную сенсорную клавиатуру, используя методы, аналогичные тем, которые используются в IOS/VoiceOver, так что часть проекта выполняется и довольно прямолинейна для реализации в рамках IME.

В настоящее время API доступности Android не предоставляет доступную обратную связь для навигации по текстовым полям. То есть, если загружен загрузочный экран Android-скриншота, если вы наберете слово "this", вы услышите отдельные символы, которые будут произноситься по мере их ввода, но если вы затем попробуете стрелку влево по "s", это не будет сказано, Поэтому я хочу, чтобы ловушки перемещались и предоставляли устную обратную связь для элементов, прошедших мимо. Здесь, где я начинаю сталкиваться с проблемами.

В настоящее время у меня есть речевая обратная связь для стрелок влево и вправо, используя getCurrentInputConnection.getTextBeforeCursor(1, 0) для стрелки влево и аналогичный вызов для стрелки вправо. Это получает символ, находящийся под курсором после обработки движения, и все хорошо.

Моя задача, однако, возникает при стрелке вверх и вниз между строками. В идеале, я хотел бы захватить текущую строку текста и говорить об этом, но я не вижу никакого способа сделать это. Единственное, что я могу придумать, это комбинация getTextBefore/AfterCursor (Integer.MAX_VALUE, 0) и объединение этих значений, определение текущей строки путем фильтрации для предыдущего и следующего \n. Есть ли другой способ - получить весь текстовый контент в поле как единый блок текста и использовать позицию курсора, чтобы определить, какая часть этого текста представляет текущую строку? Я вижу что-то об извлеченном тексте в различных классах классов ввода, и кажется, что может быть способ отслеживать это, но я не знаю, действительно ли это полезно для меня (То есть это вернет все поле содержание?)

Моя следующая цель - предоставить стандартные возможности навигации по текстам. Доступность Android в настоящее время не включает в себя исследования сенсорного экрана, поэтому невозможно пролистывать большой блок текста. Я не обязательно ожидаю, что люди напишут романы на своих телефонах, но я хотел бы предоставить быстрые жесты или команды для перемещения вверх/вниз по абзацам и к верхнему/нижнему углу более длинных полей. Предоставляет ли МВФ методы перемещения курсора или находится вне его полномочий?

Теги:
ime

1 ответ

0

Честно говоря, я не получил первую часть: (

Для вашего второго вопроса вам нужно будет обработать его вручную. Например, чтобы добавить ключ с вытаскиванием вниз и заставить его работать, вам необходимо:

  • В методе onKey проверьте код.
  • Если это 20, вы должны сделать sendDownUpKeyEvents этого ключевого события.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню