高效的触摸屏文本输入系统及方法
【专利摘要】本发明涉及一种高效的触摸屏文本输入系统及方法,其中所述的系统包括触点检测模块、查询模块、结果输出模块,并引入了线程管理模块,使得系统在触点检测模块检测到触摸按下时,通过开启辅助线程,在辅助线程中对用户的输入字符及候选词进行查询,同时主线程持续检测是否存在触摸抬起,充分利用了触摸按下及触摸抬起之间的时间间隔。当主线程中触点检测模块检测到触摸抬起后,则从辅助线程中获取本次查询结果并输出。采用该种结构的高效的触摸屏文本输入系统及方法,系统结构简单,用户的输入速度提高了40%至50%,减少了用户输入中的卡顿现象,提高了人机交互水平,优化了用户的输入体验,应用范围广泛。
【专利说明】
高效的触摸屏文本输入系统及方法
技术领域
[0001]本发明涉及电子技术领域,尤其涉及电子产品应用,具体是指一种高效的触摸屏文本输入系统及方法。
【背景技术】
[0002]如今,智能手机、平板电脑等便携式电子设备日益普及,作为基本的人机交互工具,输入法直接影响着人们在使用这些电子设备的用户体验。
[0003]在输入法应用中,用户输入非常密集,每两次输入的时间间隔平均在几十至一两百毫秒。在获取输入信号之后,处理器将每一次输入信号匹配成对应的字符,并通过一定的算法在字典中根据输入的字符进行查询或预测等操作,获得对应的输入结果。在不同的输入法中,还会执行一些改善用户体验的反馈操作,例如对于用户按下的按键或划过的轨迹进行高亮,或将候选词中用户刚刚输入的字符采用特定的颜色进行显示,或根据用户刚刚输入的字符对更新的候选词进行排序等等。
[0004]然而,请参阅图1所示,为现有技术的一次点击手势的处理过程示意图。现有技术中针对一次点击手势,系统开启主线程对用户操作进行检测。当系统首先检测到触摸按下,然后再检测到触摸抬起后,才会针对本次点击进行查询,即确定触摸按下与触摸抬起为一次点击后,系统才会根据本次点击在字典中进行查询,最后将查询的结果进行显示。然而为了提高输入的智能化程度和准确性,输入法中字典的体积越来越大,例如,触宝输入法中字典体积达到十几兆。庞大的字典体积使得处理器在字典中进行查询或预测等操作的时间变得更长,这就造成了输入结果的响应速度变得越来越慢。在输入法这种工具性应用软件中,用户对结果的响应速度非常敏感,当输入结果的反应速度达到过0.5?I秒时,用户会形成卡顿的印象,迟缓的响应速度极大的影响了用户体验。
[0005]针对输入结果的反应速度与输入准确性之间的矛盾,业界也提出了一些解决方案,尝试在这两者之间进行平衡。例如,有一种方案提出了细胞词库的概念,通过将较大体量的词库分解成多个小体量的词库,试图解决这个问题。这种方案需要用户提前选择待使用的词库,并且只有在用户仅选择为数不多的小词库的前提下才能够在不影响输入准确性的前提下提高输入结果的反应速度。然而,在大多数输入情况下,用户在输入的时候无法得知待输入的字词属于哪一个词库,从而无法提前对词库进行选择,而选择所有的小词库相当于选择了整体的大词库,并不能提高输入结果的反应速度,甚至基于不同小词库的构造方式,反而会进一步造成反应速度变慢。
[0006]因此,有必要提供一种方法和装置,改善输入结果反应速度和输入准确性之间存在的矛盾。
【发明内容】
[0007]本发明的目的是克服了上述现有技术的缺点,提供了一种能够提高用户的输入速度、同时确保输入准确性的高效的触摸屏文本输入系统及方法。
[0008]为了实现上述目的,本发明的高效的触摸屏文本输入系统及方法具有如下构成:
[0009]根据本发明的一部分,该高效的触摸屏文本输入系统包括:
[0010]触点检测模块,用以检测所述的触摸屏上是否存在触摸按下及触摸抬起;
[0011]线程管理模块,用以当所述的触点检测模块检测到所述的触摸屏上存在触摸按下时,开启辅助线程;
[0012]查询模块,用以在所述辅助线程中根据所述触点触摸按下的区域,在字典库中查询用户的输入字符和/或候选词;
[0013]结果输出模块,用以当所述的触点检测模块检测到所述的触摸屏上存在触摸抬起时,输出所述的查询模块所查询到的用户的输入字符和/或候选词,以及当所述的触点检测模块未检测到所述的触摸屏上存在触摸抬起时,放弃所述的查询模块所查询到的结果。
[0014]进一步地,当所述触点检测模块检测到存在触摸抬起时,所述触点检测模块进一步判断该触摸按下与对应该触摸按下的触摸抬起是否构成一次点击。
[0015]根据本发明的一部分,本发明还涉及一种高效的触摸屏文本输入方法,其主要特点是,所述的方法包括主线程处理过程及辅助线程处理过程:
[0016]所述的主线程处理过程包括:
[0017]检测触摸屏上是否存在触摸按下;
[0018]当存在所述触摸按下时,则开启至少一条与所述触摸按下对应的辅助线程;
[0019]检测所述的触摸屏上是否存在触摸抬起;
[0020]当存在所述触摸抬起时,则从所述辅助线程获得根据本次输入进行查询的字符和/或候选词,并输出该查询结果;当不存在触摸抬起时,则放弃本次所述的辅助线程中的查询结果;
[0021]所述的辅助线程处理过程包括:
[0022]根据所述的触点触摸按下的区域,在字典库中查询对应的输入字符和/或候选词,并且当存在所述触摸抬起时,发送所查询到的结果至主线程处理过程。
[0023]进一步地,检测是否存在触摸抬起进一步包括:当存在触摸抬起时,判断所述的触摸按下与该触摸抬起是否组成一次点击。
[0024]采用了该发明中的高效的触摸屏文本输入系统及系统,与现有技术相比,具有以下有益效果:
[0025]请参阅图12a和12b所示,为本发明与现有技术的技术效果的对比图,其中现有技术中触摸按下和触摸抬起的时间间隔一般为100ms,在触摸抬起后再开始进行查询,也就是说,用户不得不在触摸抬起之后等待查询过程完成才能获得反馈,从而使得用户体验受到数据库查询速度甚至网络联网速度的限制,常常产生卡顿或延迟。而本发明中通过开启辅助线程,在触摸按下后同步进行查询,当触摸抬起时,查询结果已经得到,用户可以即时获得反馈。即使数据库再庞大或联网速度很慢,使得花费了超出正常数倍的时间进行查询,但由于查询与用户触摸屏幕同步进行,对于用户而言,整个输入的体验仍然是极为流畅的。在每次点击的过程中,用户的输入速度整整提高了 40%至50%,提高了用户的输入速度及人机交互水平。另外,值得注意的是,现有技术中每次点击手势的整体耗时有4.29%在150ms以上,而采用本发明后,只有2.5%的点击手势超过150ms,整整下降了一倍,优化了用户的输入体验。此外,现有技术中为了提高点击速度使用了大量的缓存,但是对于提高点击速度并未有明显的影响,而采用本发明的技术方案,能够减少缓存,释放内存,提高系统的整体运行水平。
【附图说明】
[0026]图1为现有技术的一次点击手势的处理过程示意图。
[0027]图2a为本发明的高效的触摸屏文本输入系统一种实施方式的结构示意图。
[0028]图2b为本发明的触点检测模块一种实施方式的结构示意图。
[0029]图3为本发明的高效的触摸屏文本输入系统另一种实施方式的结构示意图。
[0030]图4为本发明的高效的触摸屏文本输入方法一种实施方式的步骤流程图。
[0031]图5a至5d为本发明的一种实施方式中UI控制模块控制触摸屏中键盘示意图示意图。
[0032]图6为本发明的高效的触摸屏文本输入方法另一种实施方式的步骤流程图。
[0033]图7为本发明的一种实施方式中存在多个触摸按下时系统主线程及辅助线程的示意图。
[0034]图8为本发明的一种实施方式中对于同一触摸按下存在多个辅助线程时系统主线程及辅助线程的示意图。
[0035]图9为本发明的一种实施方式中字典库的一种优选的结构示意图。
[0036]图10为本发明高效的触摸屏文本输入方法的一种实施方式中判断触摸按下及触摸抬起是否为一次点击的步骤流程图。
[0037]图11为本发明高效的触摸屏文本输入方法的一种实施方式中步骤S14的步骤流程图。
[0038]图12a为本发明的一种实施方式与现有技术一次点击消耗时间的对比图。
[0039]图12b为本发明的一种实施方式与现有技术一次点击消耗时间的另一对比图。
【具体实施方式】
[0040]为了能够更清楚地描述本发明的技术内容,下面结合具体实施例来进行进一步的描述。
[0041 ] 在详细说明根据本发明的实施例前,应该注意到的是,所述的实施例主要在于与向终端中输入文本有关的方法步骤和系统的组合。因此,所述的系统和方法步骤已经在附图中通过常规符号在适当的位置表示出来了,并且只示出了与理解本发明的实施例有关的细节,以免因对于得益于本发明的本领域普通技术人员而言显而易见的那些细节而模糊了本公开内容。
[0042]在本文中,诸如左和右,上和下,前和后,第一和第二之类的关系术语仅仅用来区分一个实体或动作与另一个实体或动作,而不一定要求或暗示这种实体或动作之间的任何实际的这种关系或顺序。术语“包括”、“包含”或任何其他变体旨在涵盖非排他性的包含,由此使得包括一系列要素的过程、方法、物品或者设备不仅包含这些要素,而且还包含没有明确列出的其他要素,或者为这种过程、方法、物品或者设备所固有的要素。
[0043]请参阅图2a所示,本发明的高效的触摸屏文本输入系统包括触点检测模块1、线程管理模块2、查询模块4以及结果输出模块3。
[0044]其中,本发明的触点检测模块I是用于检测所述的触摸屏上是否存在触摸按下或触摸抬起,所述的触摸按下和对应于该触摸按下的触摸抬起结合在一起组成一次点击。当触点检测模块I检测到存在触摸按下时,所述的线程管理模块2就会开启至少一个辅助线程,通过查询模块4对本次触摸按下进行查询,并且当触点检测模块I检测到与本次触摸按下相对应的触摸抬起时,通过结果输出模块3输出辅助线程中的查询结果。
[0045]在一些实施方式中,当触点检测模块I再次检测到用户的触摸按下时辅助线程中尚未出现针对前一次触摸按下的查询结果,这时线程管理模块2可开启另外的辅助线程,查询对应于用户的第二次触摸按下的输入字符。
[0046]依次类推,本发明的高效的触摸屏文本输入系统中可以存在多个辅助线程以提高触摸屏文本输入效率,其中,所述的辅助线程是相对于主线程而言的,主线程可适于分发事件给构件,例如,可包括检测触摸屏上是否存在触摸按下或触摸抬起,以及在检测到触摸按下时开启辅助线程,在检测到触摸抬起时输出辅助线程中查询到的输入字符,还可包括绘制事件,改变屏幕指定区域的亮度或颜色,而辅助线程则适于根据触摸屏上的触摸按下查询对应于该触摸按下的输入字符,并将查询结果通过结果输出模块3进行输出。
[0047]在一种优选地实施例中,请参阅图2b所示,本发明中的触点检测模块I可包括检测单元102、驱动单元101及触摸屏控制单元103,驱动单元101用以向所述的触摸屏中的驱动线添加驱动信号,检测单元102在检测到触点位置(即触摸按下时的位置)后,将该检测到的触点位置发送至触摸屏控制单元103 ;而触摸屏控制单元103适于从检测单元102上接收触点位置,并将它转换成触点坐标,再送给查询模块4。
[0048]现有技术中,在用户输入字符的过程中,触摸按下、触摸抬起以及查询都是在同一个线程中进行的,即现有技术中当检测到存在触摸抬起并且检测到存在对应的触摸抬起之后,才会在同一个线程中针对本次触摸按下及与对应的触摸抬起所组成的一次点击,查询与之相对应的输入字符,而随着字典库体积的日益膨胀,在字典库中进行查询耗时也越来越久,这就使得每一次点击输入的响应速度变得越来越慢。而本发明通过引入了线程管理模块2,通过开启多个辅助线程,每一个辅助线程对本次触摸按下所对应的用户的输入字符进行查询。此外,在不同的实施方式中,由于输入法中字典库的不同,对于同一个触摸按下,具有不同结构的字典库的系统还可以开启不同数目的辅助线程,例如,在一种优选的实施例中,字典库分为多个子库,这时对于用户的一个触摸按下,系统会根据该触摸按下的位置开启多条辅助线程,同时查询不同的子库,加快查询速度,以保证在触摸抬起时,查询模块4已经查询出用户的输入字符,提高人机交互水平。
[0049]在另一种实施方式中,线程管理模块2还可进一步包括:对多个辅助线程进行管理。例如,当存在多个辅助线程一起工作时,当其中一个辅助线程中进行查询的查询时间超过第一阈值时,线程管理模块2可以将该线程及在该线程之后开启的一个线程进行合并,以提高查询效率。在一种实施方式中,所述的第一阈值为100ms,也可由用户进行自行设置。
[0050]在一种优选的实施例中,参考图3,系统还可包括UI控制模块5,用以当触点检测模块I检测到触摸屏上存在触摸按下时,控制触点触摸按下的区域的状态改变,以及当触点检测模块I检测到所述的触摸屏上存在触摸抬起时,控制触点触摸按下的区域恢复原始状态。其中,所述的状态改变可以为所述的触点触摸按下的区域亮度改变或颜色改变。通过在存在触摸按下时改变触点接触区域的状态,能够让用户对自己所输入的字符有一个直观的感受,使其可以清楚的将按下的位置与其想要输入字符联系起来,因此,此处只要是可以区分触摸按下的区域与未触摸按下的区域即可,而并不局限于该触摸按下的区域亮度改变或颜色改变。
[0051]当开启辅助线程后,查询模块4根据当前触摸按下的区域查询用户的输入字符,其中需要注意的是,所述的查询模块4适于对本地字典或通过通信模块(图中未示出)对部署于云端的字典进行查询。此处,所述触摸屏为广义上的触摸屏,会显示不同语音或不同布局的软键盘,并且软键盘中各个字符的位置信息对应于触摸屏中各个触点的位置,所以查询模块4可根据触点坐标,在字典库中进行查询,获得对应的输入字符,或进一步根据用户之前的输入内容,获得对应的候选词。
[0052]在一种实施方式中,结果输出模块3,用以当所述的触点检测模块I检测到所述的触摸屏上存在触摸抬起时,输出所述的查询模块4所查询到的用户的输入字符或候选词,以及当所述的触点检测模块I未检测到所述的触摸屏上存在触摸抬起时,放弃所述的查询模块4所查询到的用户的输入字符或候选词。在另一种实施方式中,当触点检测模块I检测到的触摸按下与触摸抬起不构成一次点击时,或当触点检测模块I所检测到的触摸抬起与触摸按下之间的时间间隔超出设定时间阈值时,例如100ms,触点检测模块I模拟触摸抬起信号,并将该信号发送至结果输出模块3,使得结果输出模块3从查询模块4获取查询的结果,并进行输出。
[0053]请参阅图4所示,在本发明高效的触摸屏文本输入方法的一种实施方式中,所述的方法包括主线程处理过程及辅助线程处理过程:
[0054]所述的主线程处理过程包括:
[0055]Sll:所述的触点检测模块I检测所述的触摸屏上是否存在触摸按下;
[0056]S12:当所述的触摸屏上存在触摸按下时,则所述的线程管理模块2开启辅助线程;
[0057]S13:所述的触点检测模块I检测所述的触摸屏上是否存在触摸抬起;当存在触摸抬起时,通知辅助线程并进入步骤S14,当不存在触摸抬起时,进入步骤S15 ;
[0058]S14:当所述的触摸屏上存在触摸抬起时,则所述的结果输出模块3输出所述的辅助线程中所查询到的用户的输入字符和/或候选词;
[0059]S15:当所述的触摸屏上不存在触摸抬起时,则所述的结果输出模块3放弃本次所述的辅助线程中所查询到的用户的输入字符和/或候选词。
[0060]所述的辅助线程处理过程包括:
[0061]S21:所述的查询模块4根据所述的触点触摸按下的区域查询用户的输入字符和/或与输入字符相对应的候选词。
[0062]S22,当检测到存在触摸抬起时,将所查询到的用户的输入字符和/或候选词发送至结果输出模块3。
[0063]为了详细地说明本发明的高效的触摸屏文本输入方法,在此,给出本发明中所涉及的各个步骤的优选的实施例,但需要注意的是,下文中所给出的本发明所涉及的各个步骤的优选的实施例并不能作为对本发明的限制。
[0064]对于步骤S11,所述的触点检测模块I检测所述的触摸屏上是否存在触摸按下,所述的触摸屏可以为四线电阻屏、声波屏、五线电阻屏、红外屏、电容屏的,该触摸屏所在的终端可以是手机、平板电脑、移动电脑等便携式移动终端,也可以是电视、台式机、机顶盒等不易于携带的终端。
[0065]在步骤S12中,当所述的触摸屏上存在触摸按下时,开启一个对应的辅助线程。在一种实施方式中,步骤S12具体可包括:创建一个Thread对象,通过Looper来处理消息队列,并将内置了 Runnable接口对象作为创建Thread对象的参数;当辅助线程被开启时,调用Thread类的start方法启动该线程,通过执行Runnable的run O方法完成辅助线程对应的操作。
[0066]此外,步骤S12还可包括:控制触摸屏触点区域的状态变化。参考图5a至5(!所示,当所述的触摸屏上存在触摸按下,则所述的UI控制模块5控制所述的触点触摸按下的区域的状态改变,其中所述的状态改变可以为变亮或改变颜色。此处,触摸按下的区域具体是指触摸屏上显示的键盘中触摸按下的字符键,例如,请参阅图5a中,图示双键键盘布局包含了 26个英文字母,数字、符号和空格键,且每个按键可代表两到三个字符,则当触摸按下的区域为字符“w”时,由于“w”和“q”、“ ; ”在同一个按键上,则该“qw”键701 (此处由于“w”和“q”在同一个按键上,所以称此键为“qw”键)变亮或改变颜色;请参阅图5b所示的QWERTY全键盘布局或如图5c所示的AZERTY全键盘布局,每个按键代表一个字符,两个键之间可有数字和符号,则当触摸按下的区域为字符“w”时,则该字符“w”所在的位置801变亮或改变颜色;请参阅图5d所示,在一种常见的简缩示键盘布局中,当触摸按下的区域为字符“r ”时,由于“P ”、“ q”、“r ”、“ s ”和“ 7 ”处于同一个键中,所以此时该包含“P ”、“ q”、“r ”、“ s ”和“ 7 ”的键“pqrs键” 901 (此处由于“P ”、“ q”、“r ”、“ s ”和“ 7 ”在同一个按键上,所以称此键为“pqrs7”键)变亮或颜色改变。所述的UI控制模块5进一步包括根据当前的键盘布局,以及根据用户的触摸按下的当前位置,控制触摸屏中软键盘对应区域的变亮、变暗或者颜色的改变。
[0067]在另一种实施方式中,请参阅图6所示,在所述主线程处理过程中,当不存在触摸抬起时,进入步骤S35,其中步骤S35包括:模拟触摸抬起的信号,并将该模拟的信号返回至步骤S13,从而对每一个用户的输入信号查询对应的字符和/或候选词,并对其进行输出。
[0068]图7为在本发明的有一种实施方式中,当存在多触摸按下时,系统主线程及辅助线程的处理过程示意图。在用户多指操作输入时或者在密集型输入的情况下,其中,触点检测模块I已经检测到一个触摸按下(第一触摸按下),并开启了第一辅助线程,在第一辅助线程查询的过程中,所述的主线程还未检测到与第一触摸按下相对应的触摸抬起时,主线程中的触点检测模块I又检测到第二个触摸按下(第二触摸按下),这时线程管理模块2又开启了第二辅助线程,在主线程中触点检测模块I又检测到第二次触摸抬起(第二触摸抬起)时,但此时还未检测到第一次触摸抬起,这时,系统则会向触点检测模块I发送与第一辅助线程中所查询的触摸按下相对应的触摸抬起的信号,当触点检测模块I接收到该触摸抬起的信号时,则会认为与第一辅助线程中所查询的触摸按下组成一次点击的触摸抬起已经完成,这样查询模块4输出在第一辅助线程中的查询结果及查询模块4在第二辅助线程中的查询结果。在某些实施方式中,当开启第一辅助线程或第二辅助线程时,还包括将触摸按下对应的区域进行高亮,并且,当辅助线程结束时,触摸按下区域的高亮消失。
[0069]另外,参阅图8所示,在本发明高效的触摸屏文本输入方法的某些实施方式中,还可以开启多个辅助线程。例如,当有多个字典库时,可以对于同一个触摸按下开启多个辅助线程;也可以对同一个触摸按下,在同一个字典库中开启多个辅助线程。在一种实施例中,当键盘的格局为例如图5d所示的简缩示键盘布局时,当用户触摸按下的位置为“abc”键,这时用户当前这一个触摸按下对应的字母可为“a”或“b”或“C”。在另一种实施例中,可根据用户当前输入进行系统纠错,例如根据当前键盘布局,将用户触摸按下区域对应的按键及其所有相邻按键,或指定方向的一个或多个相邻按键上对应的字母作为与用户当前触摸按下对应的字母。在这些情况下,由于同一个触摸按下中对应多个字符,所以线程管理模块2对应每一个字符开启多个辅助线程,以加快查询过程,提高用户的体验。参考图8,其中同一个触摸按下对应三个辅助线程,分别是第一辅助线程、第二辅助线程以及第三辅助线程,其中,每个辅助线程分别将触摸按下位置对应按键上的一个字母与用户输入历史相结合,查询对应的候选词。
[0070]在某些实施例中,还可以根据用户的随后的输入,关闭其中某些辅助线程,例如,当用户输入的下一个或者多个字符时,根据字典库中可以判断不存在该单词或者在系统自动纠错后,字典库中不存在与该单词相对应的单词,而此时用户还在继续输入,则系统会关闭该辅助线程,但仍旧维持其他的辅助线程的进行。此外,当用户在其它连续点击时,即连续有多个触摸按下时,这时系统可以针对多个触摸按下分别开启多个辅助线程,以加快查询过程,提高用户的体验度。
[0071]在所述的辅助线程处理过程中,当存在用户的触摸按下时,所述的查询模块4根据所述的触点触摸按下的区域,在字典库中进行查询,获得用户的输入字符以及与输入字符相对应的候选词,并将所查询到的用户的输入字符及候选词发送至结果输出模块3。其中,所述字典库可包括本地字典库和/或部署于云端的字典库。在一种实施例中,步骤S21可包括设置先对本地字典库进行查询,当没有结果时,才在云端字典库进行查询,或反之。在另一种实施例中,步骤S21可包括检测网络状态,当网络状态符合设定条件时,例如为wifi状态下,则开启云端字典库的查询,否则仅在本地字典库进行查询。
[0072]由于查询步骤通常耗时较长,在某些实施方式中,步骤S22进一步可包括:当接收到主线程传递的存在触摸抬起的信号时,查询模块4等待第一时间间隔之后,再将查询结果发送至结果输出模块3。其中,所述第一时间间隔可设置为小于等于60ms,从而避免给用户造成卡顿的感觉。
[0073]其中,在某些实施方式中,步骤S21可进一步包括:根据所述触点触摸按下的区域,获得输入字符;根据输入字符,在字典库中查询,获得候选词。
[0074]其中,所述触点触摸按下的区域对应的输入字符可包括触摸按下区域对应按键上所分配的字符,也可包括根据触摸按下区域进行系统纠错所获得的字符。在进行系统纠错时,系统根据键盘的布局以及用户已经输入的文本,对用户当前输入的字符进行合理的预测,例如当键盘的布局为如图5b所示的QWERTY键盘时,当用户在中文全拼输入法中,输入“q”后,紧接着输入“k”,基于汉语拼音中并不存在“qk”的字节,另外结合当前键盘布局中,与“k”相连的字符包括“U”、“ i ”、“O”、“ I ”、“m”、“n”、“b”、“ j ”,根据汉语拼音的语法特点,可以推测用户输入存在错误,用户应该输入的是“u”或“i”而非“k”,从而在查询的时候,直接根据纠错结果,即“qu”或“qi”进行查询。另外该系统纠错可以根据触摸按下区域对应按键的所有相邻键进行纠错,或者指定方向的相邻按键进行纠错,也可以根据用户输入习惯自行进行设置。
[0075]请参阅图9所示,图9为字典库的一种优选的结构示意图,在一种优选的实施方式中,单词分别以树状结构排列在字典库中,如图9所示,在树状结构形成的字典中的每一个节点N1-1,N1-2…N1-m代表一个字符,其中i代表该节点在树中的深度(第i层)。位于第i层的节点代表了单词的第i个字符。m代表了该层中的字符总数,例如在英语中有26个字母,则m可以不超过26 ;如果字典内可以包含由其他符号组成的单词,如don’t,则m可以大于26。这些节点由路径P1-j-1,P1-j-2,…,P1-j-m连接起来,其中i_j代表该路径所连接父节点为N1-j。从根节点向下到达某一节点的路径所途径的节点序列,称为该节点(或该路径)的字符序列。如果一个节点的字符序列是字典中的一个单词,则称该节点为单词节点。如果某一条路径不存在,则代表该路径的字符序列在字典中不存在。例如,英语单词apple所对应的节点,就是从根节点向下顺序寻找节点a-p-p-1-e。其中第I个字母a所对应的节点在树的第I层,第2个字母P的节点在树的第2层,而最后一个字母e的节点是单词节点,其字符序列就是“apple”。这种树状结构的字典库可以快速地找到一个特定的字母序列是否是字典里的一个单词,以及该单词对应的节点。
[0076]每一个单词节点可对应于一个单词对象,但单词对象的数据结构是独立于词典结构的。根据某些实施方式,一个单词对象可包含以下信息:单词的统计词频,相关词,上下文关联规则,替代格式等。其中,单词的统计词频可以来自于对常用语料的统计,也可来自于对于用户输入习惯的统计。单词的统计词频可以用一个数值表示,例如数字I到8,8代表最常用的词,I代表最不常用的词。统计词频可成为候选词优先级排序的一个重要考虑因素。在不考虑其他因素时,词频越高,单词的优先级就越高。
[0077]其中,单词的相关词是指与该单词相关联的单词,例如名词的复数形式,动词的不同时态,该词的不同词性等等。例如英文单词“jump”的相关词包括“jumps”,“jumping”,“jumped”等。具体来说,根据某些实施方式,相关词列表可以用指针方式实现,即一个单词对象可以指向其相关联的其他单词对象。根据在字典库中的查找结果获得相关词,可以方便用户从一个单词快速选择其关联的单词。例如当用户看到“jump”出现在候选词中时,可以通过某种事先指定的动作(例如在单词上向下滑动)让系统显示出所有的相关词,并从中选择。根据某些实施方式,步骤S21中根据输入字符获得候选的单词还可进一步包括,根据所述的候选词,获得与其关联的相关词。
[0078]此外,上下文关联规则包含了该单词的常见短语搭配、语法准则等与上下文环境相关的信息。例如,单词“look”的上下文关联规则可包含常见短语搭配“look at”,“lookforward to”,“look for”等。又如,单词“am”的上下文关联规则可包含常见短语搭配“I am”等。又如,单词“of”的上下文关联规则可包含语法规则:“其后跟的词应为名词或动名词”。有了这些信息后,系统即可通过上下文智能判断候选词的优先级。根据某些实施方式,步骤S21中根据输入字符获得候选的单词还可进一步包括,根据上下文,获得与所述输入字符关联的候选词。
[0079]其中,上下文关联规则在相关词之间中也可以互相生效。例如,当上下文关联规则中有“look forward to”时,文中即使出现“looking”也可以关联到“forward to,,,因为“looking”是“look”的相关词。替代格式是单词的某种关联表现形式,例如“asap”是“as soon as possible”的缩写形式,那么如果用户输入了 “asap”,系统可以自动对应到“as soon as possible,,。因此 “as soon as possible” 就是单词对象“asap” 的替代格式。又如,用户输入“dont”能自动纠正为“don’ t”,因为单词对象“dont”上含有替代格式“don’t”。此时单词对象“dont”实际上是一种索引。当一个单词有替代格式时,候选词模块可以优先将替代格式输出。
[0080]根据上述的字典库的结构及每个单词对象的数据结构(即单词的统计词频,相关词,上下文关联规则,替代格式等),步骤S21中,所述根据输入字符在字典库中查询并获得候选词进一步还可包括:查询模块4在查询用户的某一个的触摸按下所对应的字符时,对下一个触摸按下进行预测。例如,当第一个触摸按下的查询结果为“s”时,在第二个触摸按下还未到来之前,查询模块4对下一个触摸按下进行预测。例如,查询模块4根据在字典库中查询的结果,预测用户最有可能输入的单词为“save”,“surprise”,“see”等;根据这些预测的结果,查询模块4获得对下一个触摸按下区域对应字符的预测结果,即字符“a” “u” “e”等。这时,当触点检测模块I检测到下一个触摸按下到来时,则查询模块4首先根据上一个触摸按下的查询预测结果对本次触摸按下进行查询,这样可以加快查询的速度,提高候选词的显示速度等,有利于人机交互水平的提高。
[0081]对于步骤S13,所述的触点检测模块I检测所述的触摸屏上是否存在触摸抬起;由于一次点击手势是由触摸按下和触摸抬起组成,现有技术中是在触摸抬起后才对触摸按下区域对应的字符或候选词进行查询,而本发明通过在触摸按下后,开启辅助线程并立即在辅助线程中进行查询,并且通过主线程判断是否存在触摸抬起,当存在触摸抬起时,则输出本次查询结果,大大地提升了用户的输入速度,改善了人机交互体验。
[0082]其中,在检测到与本次触摸按下相对应的触摸抬起时,所述的UI控制模块5将本次检测到触摸抬起时状态发生改变的区域的状态变回至未检测到触摸抬起时的状态,以表示本次点击结束,例如,使得高亮的区域不再高亮,或者使颜色发生了改变的区域重新恢复之前的颜色。此外,为了提高用户的体验度,在高亮的区域,或者改变颜色的区域变回至未检测到触摸抬起时的状态时,所述的结果输出模块3输出本次查询的结果,这样可以给用户一种流畅的感觉。另外,在另一种实施方式中,由于本次查询过程被并入至其随后的查询过程中,在本次触摸按下的高亮的区域,或者改变颜色的区域变回至未检测到触摸抬起时的状态时,并未输出本次触摸按下的字符串,但是在其后的一个触摸按下所对应的高亮的区域,或者改变颜色的区域变回至未检测到触摸抬起时的状态时,输出本次及本次其后所对应的字符及候选词,在该种情况下,虽然输入字符串延缓显示,但是候选词的显示还是正常的,并不影响用户的输入速度。
[0083]在一种实施方式中,步骤S13进一步还包括:判断所述触摸按下以及触摸抬起是否为一次点击。请参阅图10所示,具体包括:
[0084]S131:所述的触点检测模块I检测所述的触摸屏上是否存在触摸抬起;
[0085]S132:当所述的触摸屏上存在触摸抬起时,则所述的触点检测模块I判断所述的触摸按下与触摸抬起是否组成一次点击;
[0086]其中,步骤S132可包括:检测触摸按下和触摸抬起的位置是否发生变化,或检测触摸按下与触摸抬起之间的时间间隔是否超过设定的时间间隔。由于存在触点滑动的情况,即虽然系统检测到触摸按下和触摸抬起,但是当触摸按下和触摸抬起的位置发生了改变,例如触摸按下和触摸抬起位于不同的键上,或者当触摸按下和触摸抬起之间的时间间隔超过设定的时间间隔,例如虽然触摸按下和触摸抬起位于同一个键上,但是触摸按下和触摸抬起之间的时间间隔不符合一次点击中触摸按下和触摸抬起之间的时间间隔范围时,则该触摸按下和触摸抬起并未组成一次点击。
[0087]当所述的触摸按下与触摸抬起组成一次点击时,则继续步骤S14,返回所述的触摸屏上存在触摸抬起的结果。例如,请结合图5b所示,当触点位于键“w”时,触点检测模块I检测到触摸按下,一定时间间隔后,触点检测模块I检测到触摸抬起;本次触摸按下和触摸抬起触点都位于键,且触摸按下和触摸抬起之间的时间间隔符合一次点击中触摸按下和触摸抬起之间的时间间隔的范围,则返回所述的触摸屏上存在触摸抬起的结果。
[0088]当所述的触摸按下与触摸抬起未组成一次点击时,则继续步骤S15,返回所述的触摸屏上不存在触摸抬起的结果。例如,请结合图5b所示,当触摸按下位于“w”键,而触摸抬起位于“t”键,则本次触摸按下和触摸抬起不能组成一次点击;在某些实施方式中,触摸按下和触摸抬起虽然都位于同一个键上,例如“W”,但是由于触摸按下和触摸抬起之间的时间间隔超过或者小于一次点击的时间间隔的范围,则返回触摸屏上不存在触摸抬起的结果。
[0089]当所述的触摸屏上不存在触摸抬起时,则执行步骤S15或步骤S35,返回所述的触摸屏上不存在触摸抬起的结果。在某些实施方式中,虽然触点检测模块I检测到触摸按下,但触点检测模块I并未检测到触摸抬起,例如在用户长按某一键,例如“w”的时候,触点检测模块I则不会检测到触摸抬起,此时返回触摸屏上不存在触摸抬起的结果。另外,结合图6,当触点检测模块I检测到第一次触摸按下后,并未检测到对应该第一次触摸按下的触摸抬起,而是检测到第二次触摸按下,以及与第二次触摸按下相对应的触摸抬起,则系统会执行步骤S35,向触点检测模块I发送对应于第一次触摸按下的触摸抬起的信号,以使得结果输出模块3输出对应于第一次触摸按下和第二次触摸按下的查询结果。
[0090]其中,通常将一次触摸按下及一次触摸抬起的时间间隔达到10ms左右时,认为该触摸按下和触摸抬起构成一次点击手势,当然不同的触摸屏其时间间隔不一定相同,所以此处可以由终端制造商在终端出厂前进行设置,也可以是用户根据自己的输入的习惯及速度进行设置,但是此处的设置值必须大于或者等于触摸按下与触摸抬起能组成一次点击手势的最短时间。另外,为了与按住手势相区分,触摸按下和触摸抬起之间的时间间隔也不能超过一定的时间间隔,此处触摸按下和触摸抬起之间的时间间隔的设置也与触摸屏的灵敏度有关。
[0091]请参阅图11,在本发明一种实施方式中,步骤S14具体包括:
[0092]S141:所述的结果输出模块3判断所述的查询模块4是否已查询到本次用户的输入字符及候选词;
[0093]S142:当所述的查询模块4已查询到本次用户的输入字符及候选词时,则所述的结果输出模块3输出本次辅助线程中所查询到的用户的输入字符及候选词。
[0094]S143:当所述的查询模块4尚未查询到本次用户的输入字符及候选词时,则所述的结果输出模块3判断所述的查询模块4的本次查询的时间是否超过第一阈值。
[0095]S144:当所述的查询模块4的本次查询的时间超过第一阈值时,则所述的线程管理模块2判断是否还存在其他的正在处理的辅助线程;
[0096]S145:当还存在其他的正在处理的辅助线程时,则所述的查询模块4将本次查询的辅助线程与其他的正在处理的辅助线程合并后继续查询;
[0097]S146:当不存在其他的正在处理的辅助线程时,则所述的查询模块4重新进行查询;
[0098]S147:当所述的查询模块4的本次查询的时间未超过第一阈值时,则所述的结果输出模块3等待所述的查询模块4查询本次用户的输入字符及候选词。
[0099]其中,本发明辅助线程中的查询在触摸抬起后还未完成,则所述的结果输出模块3则需要判断查询时间是否超过第一阈值,即系统所允许的查询过程的最大的时间,超过该第一阈值,则认为本次查询不成功,当还存在其他正在运行的辅助线程时,该辅助线程查询的内容可以与紧随在该辅助线程后的一正在运行的辅助线程合并,这样查询模块4可以根据两次输入的字符进行查询,以加快查询速度。其中,可设置该第一阈值为50ms-80ms。
[0100]需要指出的是,本发明所描述的系统和方法可以运用于除英语外的其他语种。本发明所描述的系统和方法还可以应用于其他键盘等,术语“键盘”是广义定义的,包括任何具有确定区域的输入部件,包含但不局限于硬件机械式键盘、硬件感应式键盘、触摸屏上的软件键盘等。本发明的实施例默认以触摸屏上的软件键盘为例说明,但本领域的普通技术人员可以理解,本发明所提及的方法和系统也可以应用于硬件键盘。
[0101]采用了该发明中的高效的触摸屏文本输入系统及方法,与现有技术相比,具有以下有益效果:
[0102]第一,请参阅图12a和12b所示,为本发明与现有技术的对比图,其中现有技术中触摸按下和触摸抬起的时间间隔一般为100ms,在触摸抬起后再开始进行查询,也就是说,用户不得不在触摸抬起之后等待查询过程完成才能获得反馈,从而使得用户体验受到数据库查询速度甚至网络联网速度的限制,常常产生卡顿或延迟。而本发明中通过开启辅助线程,在触摸按下后同步进行查询,当触摸抬起时,查询结果已经得到,用户可以即时获得反馈。在另一种实施方式中,即使数据库再庞大或联网速度很慢,使得查询模块4花费了超出正常数倍的时间进行查询,但由于其在用户触摸抬起时完成了查询,对于用户而言,整个输入的体验仍然是极为流畅的。因此在每次点击的过程中,采用本发明,使得用户的输入速度整整提高了 40%至50%,同时也有效地增强了人机交互水平。另外,值得注意的是,现有技术中每次点击手势的整体耗时有4.29 %在150ms以上,而采用本发明后,只有2.5 %的点击手势超过150ms,整整下降了一倍,优化了用户的输入体验。
[0103]第二,对于内存,现有技术中为了提高点击速度使用了大量的cache,但是对于提高点击速度并未有明显的影响,而采用本发明的技术方案,可以减少部分cache,释放内存,提高系统的整体运行水平。
[0104]在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。
【主权项】
1.一种高效的触摸屏文本输入系统,其特征在于,所述的系统包括: 触点检测模块,用以检测所述的触摸屏上是否存在触摸按下及触摸抬起; 线程管理模块,用以当所述的触点检测模块检测到所述的触摸屏上存在触摸按下时,开启辅助线程; 查询模块,用以在所述辅助线程中根据所述触点触摸按下的区域,在字典库中查询用户的输入字符和/或候选词; 结果输出模块,用以当所述的触点检测模块检测到所述的触摸屏上存在触摸抬起时,输出所述的查询模块所查询到的用户的输入字符和/或候选词,以及当所述的触点检测模块未检测到所述的触摸屏上存在触摸抬起时,放弃所述的查询模块所查询到的结果。2.根据权利要求1所述的高效的触摸屏文本输入系统,其特征在于,当所述触点检测模块检测到存在触摸抬起时,所述触点检测模块进一步判断该触摸按下与对应该触摸按下的触摸抬起是否构成一次点击。3.根据权利要求2所述的高效的触摸屏文本输入系统,其特征在于,所述触点检测模块进一步检测所述触摸按下与触摸抬起的位置是否发生变化,或检测触摸按下与触摸抬起之间的时间间隔是否超过预定时间间隔。4.根据权利要求1所述的高效的触摸屏文本输入系统,其特征在于,根据包含多个子库或支路的字典库,所述线程管理模块对于同一个触摸按下,开启多条辅助线程同时进行查询。5.根据权利要求1所述的高效的触摸屏文本输入系统,其特征在于,当存在多个辅助线程一起工作,并且其中一个辅助线程中所述查询模块进行查询的查询时间超过第一阈值时,所述线程管理模块将该线程与在该线程之后开启的一个线程进行合并。6.根据权利要求1所述的高效的触摸屏文本输入系统,其特征在于,当所述触点检测模块依次检测到第一次触摸按下、第二次触摸按下、第二次触摸抬起之后,仍未检测到对应所述第一次触摸按下的触摸抬起,则模拟对应于第一次触摸按下的触摸抬起的信号,并发送至对应的辅助线程。7.根据权利要求1所述的高效的触摸屏文本输入系统,其特征在于,所述的系统还包括UI控制模块,用以当所述的触点检测模块检测到所述的触摸屏上存在触摸按下时,控制触点触摸按下的区域的状态改变,以及当所述的触点检测模块检测到所述的触摸屏上存在触摸抬起时,控制触点触摸按下的区域恢复原始状态。8.根据权利要求1所述的高效的触摸屏文本输入系统,其特征在于,所述字典库进一步部署在云端,所述的系统还包括通信模块,所述的查询模块用以通过所述的通信模块对云端的字典库进行查询。9.一种高效的触摸屏文本输入方法,其特征在于,所述的方法包括主线程处理过程及辅助线程处理过程: 所述的主线程处理过程包括: 检测触摸屏上是否存在触摸按下; 当存在所述触摸按下时,则开启至少一条与所述触摸按下对应的辅助线程; 检测所述的触摸屏上是否存在触摸抬起; 当存在所述触摸抬起时,则从所述辅助线程获得根据本次输入进行查询的字符和/或候选词,并输出该查询结果;当不存在触摸抬起时,则放弃本次所述的辅助线程中的查询结果; 所述的辅助线程处理过程包括: 根据所述的触点触摸按下的区域,在字典库中查询对应的输入字符和/或候选词,并且当存在所述触摸抬起时,发送所查询到的结果至主线程处理过程。10.根据权利要求9所述的高效的触摸屏文本输入方法,其特征在于,所述检测是否存在触摸抬起进一步包括:当存在触摸抬起时,判断所述的触摸按下与该触摸抬起是否组成一次点击。11.根据权利要求10所述的高效的触摸屏文本输入方法,其特征在于,所述判断触摸按下与触摸抬起是否组成一次点击包括:检测所述触摸按下与触摸抬起的位置是否发生变化,或检测触摸按下与触摸抬起之间的时间间隔是否超过预定时间间隔。12.根据权利要求9所述的高效的触摸屏文本输入方法,其特征在于,根据同一个触摸按下的区域,开启多条辅助线程同时进行查询。13.根据权利要求9所述的高效的触摸屏文本输入方法,其特征在于,当尚未查询到与本次触摸按下对应的字符和/或候选词时,判断本次查询的时间是否超过第一阈值,若超过且存在其他的正在处理的辅助线程,则将本次查询的辅助线程与其他的正在处理的辅助线程合并后继续查询;当不存在其他的正在处理的辅助线程时,则重新进行查询。14.根据权利要求9所述的高效的触摸屏文本输入方法,其特征在于,还包括:当所述的触摸屏上存在触摸按下时,改变所述的触点触摸按下的区域的状态;以及当存在触摸抬起时,将状态发生改变的触点触摸按下区域恢复原始状态。15.根据权利要求9所述的高效的触摸屏文本输入方法,其特征在于,所述辅助线程进一步包括对部署在云端的字典库进行查询。
【文档编号】G06F17/30GK105988704SQ201510095074
【公开日】2016年10月5日
【申请日】2015年3月3日
【发明人】甘露
【申请人】上海触乐信息科技有限公司