2011-01-05 77 views
1

我正在设计我的第一个Android IME并且有点不知所措。我的目标是与可访问性相关的,因此我想知道是否我正在尝试使用IME框架,而这是不可能的。我已经采用了默认的软键盘示例,并使其与我的一些修改一起工作,所以我已经明确了解至少其中的一些内容,但是有关我尝试的某些内容没有太多文档。这就是我的意思:输入法中的光标移动和文本检索

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

目前,Android的辅助功能API不提供导航文本字段的可访问反馈。也就是说,在安装了Android屏幕阅读器的情况下,如果您键入单词“this”,您会在输入时听到单个角色的说话,但是如果您尝试向左箭头键入“s”,则不会说出。所以我想要捕捉动作并为导航过的元素提供语音反馈。这是我开始遇到问题的地方。

我目前有用于向左和向右箭头的语音反馈,使用getCurrentInputConnection.getTextBeforeCursor(1,0)左箭头和类似的右箭头调用。移动处理完成后,会获得当前光标下的字符,并且一切都很好。

但是,我的挑战来自于在各行之间上下跳动。理想情况下,我想抓住当前的文本行并说出来,但我认为没有办法做到这一点。我唯一能想到的就是getTextBefore/AfterCursor(Integer.MAX_VALUE,0)的一些组合,并组合这些值,通过筛选前一个和下一个\ n来确定当前行。还有另一种方法 - 将字段的整个文本内容作为单个文本块并使用光标位置来确定哪一段文本代表当前行?我在各种输入方法类中看到了关于提取文本的内容,似乎可能有一种方法来监视它,但我不知道这对我是否有用(即,是否会返回整个字段内容?)

我的下一个目标是提供标准的文本导航功能。 Android可访问性目前不包含触摸屏浏览功能,因此无法滚动大块文本。我不一定希望人们在他们的手机上写小说,但我想提供快速的手势或命令来移动上/下段落,以及移到较长字段的顶部/底部。国际货币基金组织是否提供光标移动的方法,还是超出其权限?

回答

0

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

关于第二个问题,你将需要手工来处理它。 例如,添加一键用下来绘制,并使其发挥作用你将需要:

  • 在对代码onKey方法检查
  • 如果是20,你应该做的关键事件的sendDownUpKeyEvents