2011-01-05 2 views
1

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

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

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

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

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

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

ответ

0

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

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

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