1

我正在设计我的第一个 Android 输入法,有点不知所措。我的目标是与可访问性相关的,因此我想知道我是否正在尝试使用 IME 框架做一些不可能的事情。我采用了默认的软键盘示例,并让它与我的一些修改一起工作,所以我肯定至少理解了其中的一些,但是关于我正在尝试的一些事情并没有很多文档. 这就是我的意思:

目前,无法使用仅具有触摸屏键盘的 Android 手机。我目前有一个可访问的触摸屏键盘,使用的方法类似于 IOS/VoiceOver 中使用的方法,因此该项目的一部分已经完成并且在 IME 框架中完成相当简单。

目前,Android 的无障碍 API 不提供用于导航文本字段的无障碍反馈。也就是说,在加载了 Android 屏幕阅读器的情况下,如果您键入单词“this”,您会在键入时听到单个字符的朗读,但如果您随后尝试在“s”上用左箭头键,则不会朗读. 所以我想捕捉动作并为导航过去的元素提供语音反馈。这是我开始遇到问题的地方。

我目前有左右箭头的语音反馈,使用 getCurrentInputConnection.getTextBeforeCursor(1, 0) 进行左箭头,以及类似的右箭头调用。这样在处理完移动后就得到了当前光标下的字符,一切正常。

然而,我的挑战来自于在线条之间上下箭头时。理想情况下,我想抓住当前的文本行并说出来,但我看不到任何方法可以做到这一点。我唯一能想到的是 getTextBefore/AfterCursor(Integer.MAX_VALUE, 0) 的某种组合并结合这些值,通过过滤前一个和下一个 \n 来确定当前行。还有另一种方法——将字段的整个文本内容作为单个文本块获取,并使用光标位置来确定该文本的哪一段代表当前行?我在各种输入法类中看到了一些关于提取文本的内容,似乎有一种方法可以监控它,但我不知道这对我是否有用(即返回整个字段内容?)

我的下一个目标是提供标准的文本导航功能。Android 可访问性目前不包括触摸屏探索,因此无法滚动一大块文本。我不一定希望人们在手机上写小说,但我想提供快速手势或命令来向上/向下移动段落,以及更长字段的顶部/底部。IMF 是否提供了光标移动的方法,还是超出了它的权限?

4

1 回答 1

0

老实说,我没有得到第一部分:(

对于第二个问题,您需要手动处理。例如,要添加一个带有向下可绘制对象的键并使其工作,您需要:

  • onKey方法中检查代码。
  • 如果是 20,你应该做一个sendDownUpKeyEvents关键事件。
于 2011-01-05T20:01:47.720 回答