CN109947388A - 页面播读的控制方法、装置、电子设备及存储介质 - Google Patents
页面播读的控制方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN109947388A CN109947388A CN201910298127.9A CN201910298127A CN109947388A CN 109947388 A CN109947388 A CN 109947388A CN 201910298127 A CN201910298127 A CN 201910298127A CN 109947388 A CN109947388 A CN 109947388A
- Authority
- CN
- China
- Prior art keywords
- broadcast
- node
- free
- barrier
- reading
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 254
- 238000013515 script Methods 0.000 claims abstract description 173
- 230000008569 process Effects 0.000 claims abstract description 170
- 230000004044 response Effects 0.000 claims abstract description 10
- 230000006854 communication Effects 0.000 claims description 64
- 238000004891 communication Methods 0.000 claims description 63
- 238000012163 sequencing technique Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 7
- 238000004806 packaging method and process Methods 0.000 claims description 5
- 230000009466 transformation Effects 0.000 abstract description 3
- 230000001771 impaired effect Effects 0.000 description 26
- 238000005516 engineering process Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 18
- 238000011161 development Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 14
- 238000012544 monitoring process Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 208000029257 vision disease Diseases 0.000 description 12
- 241000737241 Cocos Species 0.000 description 9
- 230000001960 triggered effect Effects 0.000 description 8
- 239000000243 solution Substances 0.000 description 7
- 230000008859 change Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000012827 research and development Methods 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 206010010356 Congenital anomaly Diseases 0.000 description 1
- 241000876446 Lanthanotidae Species 0.000 description 1
- 206010047571 Visual impairment Diseases 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 210000005252 bulbus oculi Anatomy 0.000 description 1
- 230000001364 causal effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000004064 dysfunction Effects 0.000 description 1
- 210000005069 ears Anatomy 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 210000005036 nerve Anatomy 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 210000000056 organ Anatomy 0.000 description 1
- 239000003973 paint Substances 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000012089 stop solution Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000004393 visual impairment Effects 0.000 description 1
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及无障碍化技术领域,公开了一种页面播读的控制方法、装置、电子设备及存储介质,所述方法包括:响应针对当前显示的无障碍化页面上需要无障碍化的元素节点的选中操作,从无障碍化页面对应的无障碍脚本中获取元素节点的播读信息,无障碍脚本存储有无障碍化页面中需要无障碍化的元素节点的播读信息;将播读信息发送给播读进程,以使播读进程对播读信息进行播读。本发明实施例提供的技术方案,提供了一种通用的页面无障碍化方法,能够快速便捷的对现有的应用程序进行无障碍化改造。
Description
技术领域
本发明涉及无障碍化技术领域,尤其涉及一种页面播读的控制方法、装置、电子设备及存储介质。
背景技术
随着智能手机、个人电脑等计算机设备的快速普及,各种移动互联网应用也层出不穷,越来越多的用户能够真实感受到移动互联技术带来的生活便利和无限乐趣。但是,社会中还有一部分特殊群体也需要使用智能手机等计算机设备,那就是有一定功能障碍的人群,例如视觉障碍用户,只能是靠耳朵听取声音来操作计算机设备。目前,通过MSAA(Microsoft Active Accessibility)的COM(Component Object Model,组件对象模型)组件提供的IAccessible接口,可获取界面所显示的UI(User Interface,用户界面)元素的详细信息,在计算机设备上外接的读屏软件,读屏软件通过IAccessible接口获取到UI(UserInterface,用户界面)元素的详细信息后进行语音播读,以帮助视觉障碍用户了解界面所显示的内容。或者,还可以在使用wai-aria(Web Accessibility Initiative-AccessibleRich Internet Applications,无障碍网页应用),在界面显示的内容中添加标准aria属性字段,读屏软件通过获取标准aria属性字段来进行识别需要无障碍化的内容,再对无障碍化的内容进行播读。
IAccessible接口处理的对象只能是窗口化控件,但是,如今多数开发软件使用的是非窗口化控件,因此,无法直接通过IAccessible接口实现页面无障碍化。使用wai-aria,所有UI元素都需要进行标准规则的属性添加,但是很多开发软件(例如Cocos、Turbulenz等页面游戏开发引擎)都不支持aria属性添加。因此,现有的无障碍化处理方法需要对开发软件本身进行修改,以支持IAccessible接口技术或wai-aria技术。但是,修改开发软件的难度较大,且每款开发软件的修改都不尽相同。因此亟需一种通用、便捷的页面无障碍化方法,尤其是针对页面游戏开发引擎。
发明内容
本发明实施例提供一种页面播读的控制方法、装置、电子设备及存储介质,以解决现有的页面无障碍化方法需要在应用程序开发过程中进行大量修改、适配的问题。
第一方面,本发明一实施例提供了一种页面播读的控制方法,包括:
响应针对当前显示的无障碍化页面上需要无障碍化的元素节点的选中操作,从所述无障碍化页面对应的无障碍脚本中获取所述元素节点的播读信息,所述无障碍脚本存储有所述无障碍化页面中需要无障碍化的元素节点的播读信息;
将所述播读信息发送给播读进程,以使所述播读进程对所述播读信息进行播读。
可选地,所述播读进程对所述播读信息进行播读,具体包括:
所述播读进程调用SAPI组件对所述播读信息进行播读。
可选地,还包括:
在所述无障碍化页面完成初始化后,启动所述播读进程;
接收所述播读进程启动后申请的通信端口的端口号,以建立与所述播读进程间的通信连接。
可选地,所述将所述播读信息发送给播读进程,具体包括:
按照预设的通信协议对所述播读信息进行封装,得到播读消息;
通过所述端口号将所述播读消息发送给所述播读进程,以使所述播读进程按照所述通信协议解析所述播读消息以获得所述播读信息。
可选地,还包括:
在所述无障碍化页面完成初始化时,将所述无障碍化页面中具有无障化标识的元素节点确定为需要无障碍化的元素节点;
将需要无障碍化的元素节点的文案信息确定为所述需要无障碍化的元素节点的播读信息;
将所述需要无障碍化的元素节点和其对应的播读信息添加到预设的无障碍脚本模板中,得到所述无障碍化页面对应的无障碍脚本。
可选地,针对每个需要无障碍化的元素节点设置节点级别,所述将所述需要无障碍化的元素节点和其对应的播读信息添加到预设的无障碍脚本模板中,具体包括:
根据各个需要无障碍化的元素节点的节点级别,将所述需要无障碍化的元素节点和其对应的播读信息,添加到无障碍脚本模板中与所述需要无障碍化的元素节点的节点级别对应的列表中。
可选地,除最高节点级别外,相邻两个节点级别之间,下一节点级别中的每个元素节点均从属于上一级别中的一个元素节点,且上一级别的元素节点从属有至少两个下一级别的元素节点;
所述根据各个需要无障碍化的元素节点的节点级别,将所述需要无障碍化的元素节点和其对应的播读信息,添加到无障碍脚本模板中与所述需要无障碍化的元素节点的节点级别对应的列表中,具体包括:
将最高节点级别的元素节点和其对应的播读信息添加到无障碍脚本模板中与所述最高节点级别对应的列表中;
针对除所述最高节点级别以外的任一节点级别,将所述节点级别中的元素节点和其对应的播读信息,添加到所述无障碍脚本模板中与所述节点级别中的元素节点从属的元素节点对应的列表中。
可选地,所述响应针对当前显示的无障碍化页面上的元素节点的选中操作,从所述无障碍化页面对应的无障碍脚本中获取所述元素节点的播读信息,具体包括:
响应针对所述最高节点级别的元素节点的选中操作,根据所述选中操作指示的选择顺序以及所述最高节点级别对应的列表中的元素节点的排序,从所述最高节点级别对应的列表中确定所述选中操作对应的元素节点,获取所述选中操作对应的元素节点的播读信息。
可选地,针对每个节点级别设置了对应的选中操作,所述响应针对当前显示的无障碍化页面上的元素节点的选中操作,从所述无障碍化页面对应的无障碍脚本中获取所述元素节点的播读信息,还包括:
若当前响应的选中操作为针对除最高节点级别外的任一节点级别的选中操作,且上次响应的选中操作和当前响应的选中操作对应不同的节点级别,则根据当前响应的选中操作指示的选择顺序以及上次响应的选中操作对应的元素节点对应的列表中的元素节点的排序,从上次响应的选中操作对应的元素节点对应的列表中确定出当前响应的选中操作对应的元素节点,获取当前响应的选中操作对应的元素节点的播读信息;
若当前响应的选中操作为针对除最高节点级别外的任一节点级别的选中操作,且上次响应的选中操作和当前响应的选中操作对应相同的节点级别,则根据当前响应的选中操作指示的选择顺序以及上次响应的选中操作对应的元素节点所在的列表中的元素节点的排序,从上次响应的选中操作对应的元素节点所在的列表中确定出当前响应的选中操作对应的元素节点,获取当前响应的选中操作对应的元素节点的播读信息。
可选地,所述无障碍脚本中,针对每个元素节点还设置有用于指示是否播读的播读属性;
所述从所述无障碍化页面对应的无障碍脚本中获取所述元素节点的播读信息,包括:
从所述无障碍化页面对应的无障碍脚本中获取播读属性为可播读的元素节点的播读信息。
可选地,还包括:若所述无障碍化页面中的元素节点的操作属性从可操作变更为不可操作,在所述无障碍脚本中将对应元素节点的播读属性从可播读更新为不播读。
可选地,所述从所述无障碍化页面对应的无障碍脚本中获取播读属性为可播读的元素节点的播读信息之前,还包括:
根据所述无障碍化页面的播读配置参数,确定所述无障碍化页面不需要播读不能操作的元素节点。
第二方面,本发明一实施例提供了一种页面播读的控制装置,包括:
信息读取模块,用于响应针对当前显示的无障碍化页面上需要无障碍化的元素节点的选中操作,从所述无障碍化页面对应的无障碍脚本中获取所述元素节点的播读信息,所述无障碍脚本存储有所述无障碍化页面中需要无障碍化的元素节点的播读信息;
通讯模块,用户将所述播读信息发送给播读进程,以使所述播读进程对所述播读信息进行播读。
可选地,所述通讯模块中,所述播读进程对所述播读信息进行播读,具体包括:所述播读进程调用SAPI组件对所述播读信息进行播读。
可选地,还包括通讯建立模块,用于在所述无障碍化页面完成初始化后,启动所述播读进程;接收所述播读进程启动后申请的通信端口的端口号,以建立与所述播读进程间的通信连接。
可选地,所述通讯模块具体用于:
按照预设的通信协议对所述播读信息进行封装,得到播读消息;
通过所述端口号将所述播读消息发送给所述播读进程,以使所述播读进程按照所述通信协议解析所述播读消息以获得所述播读信息。
可选地,还包括无障碍初始化模块,用于:
在所述无障碍化页面完成初始化时,将所述无障碍化页面中具有无障化标识的元素节点确定为需要无障碍化的元素节点;
将需要无障碍化的元素节点的文案信息确定为所述需要无障碍化的元素节点的播读信息;
将所述需要无障碍化的元素节点和其对应的播读信息添加到预设的无障碍脚本模板中,得到所述无障碍化页面对应的无障碍脚本。
可选地,针对每个需要无障碍化的元素节点设置节点级别,所述无障碍初始化模块具体用于:
根据各个需要无障碍化的元素节点的节点级别,将所述需要无障碍化的元素节点和其对应的播读信息,添加到无障碍脚本模板中与所述需要无障碍化的元素节点的节点级别对应的列表中。
可选地,除最高节点级别外,相邻两个节点级别之间,下一节点级别中的每个元素节点均从属于上一级别中的一个元素节点,且上一级别的元素节点从属有至少两个下一级别的元素节点;
所述无障碍初始化模块具体用于:
将最高节点级别的元素节点和其对应的播读信息添加到无障碍脚本模板中与所述最高节点级别对应的列表中;
针对除所述最高节点级别以外的任一节点级别,将所述节点级别中的元素节点和其对应的播读信息,添加到所述无障碍脚本模板中与所述节点级别中的元素节点从属的元素节点对应的列表中。
可选地,所述信息读取模块具体用于:
响应针对所述最高节点级别的元素节点的选中操作,根据所述选中操作指示的选择顺序以及所述最高节点级别对应的列表中的元素节点的排序,从所述最高节点级别对应的列表中确定所述选中操作对应的元素节点,获取所述选中操作对应的元素节点的播读信息。
可选地,针对每个节点级别设置了对应的选中操作,所述信息读取模块具体用于:
若当前响应的选中操作为针对除最高节点级别外的任一节点级别的选中操作,且上次响应的选中操作和当前响应的选中操作对应不同的节点级别,则根据当前响应的选中操作指示的选择顺序以及上次响应的选中操作对应的元素节点对应的列表中的元素节点的排序,从上次响应的选中操作对应的元素节点对应的列表中确定出当前响应的选中操作对应的元素节点,获取当前响应的选中操作对应的元素节点的播读信息;
若当前响应的选中操作为针对除最高节点级别外的任一节点级别的选中操作,且上次响应的选中操作和当前响应的选中操作对应相同的节点级别,则根据当前响应的选中操作指示的选择顺序以及上次响应的选中操作对应的元素节点所在的列表中的元素节点的排序,从上次响应的选中操作对应的元素节点所在的列表中确定出当前响应的选中操作对应的元素节点,获取当前响应的选中操作对应的元素节点的播读信息。
可选地,所述无障碍脚本中,针对每个元素节点还设置有用于指示是否播读的播读属性;
所述信息读取模块具体用于:从所述无障碍化页面对应的无障碍脚本中获取播读属性为可播读的元素节点的播读信息。
可选地,还包括播读属性更新模块,用于:
若所述无障碍化页面中的元素节点的操作属性从可操作变更为不可操作,在所述无障碍脚本中将对应元素节点的播读属性从可播读更新为不播读。
可选地,还包括播读配置参数模块,用于在从所述无障碍化页面对应的无障碍脚本中获取播读属性为可播读的元素节点的播读信息之前,根据所述无障碍化页面的播读配置参数,确定所述无障碍化页面不需要播读不能操作的元素节点。
第三方面,本发明一实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行计算机程序时实现上述任一种方法的步骤。
第四方面,本发明一实施例提供了一种计算机可读存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时实现上述任一种方法的步骤。
本发明实施例提供的技术方案,通过脚本的方式为无障碍化页面中需要进行无障碍化的元素节点配置无障碍化参数,利用开发软件开发应用程序时,只需要将用于配置无障碍化参数的无障碍脚本添加到为视觉正常用户开发的应用程序中,即可实现无障碍化参数的配置,无需为适配IAccessible接口或wai-aria标准规则对作出任何调整,可配置性和灵活性更高。因此,本发明实施例的页面播读的控制方法,提供了一种通用的页面无障碍化方法,可快速适用于任何一款开发软件,尤其是不支持wai-aria标准规则的开发软件(如Cocos、Turbulenz等页面游戏开发引擎),能够帮助研发人员快速便捷的对现有的应用程序进行无障碍化改造,快速实现页面的无障碍化。此外,通过内嵌在应用程序中的播读进程对播读信息进行播读,实现了应用程序闭包,解决了使用外部读屏软件需要适配联调的问题,且用户无需安装额外的读屏软件,提高了用户体验。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A为本发明实施例提供的页面播读的控制方法的应用场景示意图;
图1B为执行页面播读的控制方法的终端设备的结构示意图;
图2为本发明一实施例提供的页面播读的控制方法的流程示意图;
图3为本发明一实施例提供的页面播读的控制方法的流程示意图;
图4为本发明一实施例提供的页面播读的控制方法的流程示意图;
图5为本发明一实施例提供的三个节点级别的元素节点之间的从属关系的示意图;
图6为本发明一实施例提供的无障碍脚本中的多个列表以及多个列表件间的从属关系的示意图;
图7A为本发明一实施例提供的一个无障碍化页面的示例图;
图7B为本发明一实施例提供的一个无障碍化页面的示例图;
图7C为本发明一实施例提供的一个无障碍化页面的示例图;
图7D为本发明一实施例提供的一个无障碍化页面的示例图;
图8为本发明一实施例提供的基于TS脚本实现的部分无障碍脚本模板的示意图;
图9为本发明一实施例提供的应用于游戏应用中的页面播读的控制方法的流程示意图;
图10为发明一实施例提供的游戏页面进程进行无障碍初始化的方法的流程示意图;
图11为本发明一实施例提供的页面播读的控制装置的结构示意图;
图12为本发明一实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明的说明书和权利要求书及上述附图中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本发明实施例中,“多个”可以表示至少两个,例如可以是两个、三个或者更多个,本发明实施例不做限制。
为了方便理解,下面对本发明实施例中涉及的名词进行解释:
无障碍化:对先天或后天原因,导致视觉器官(眼球视觉神经、大脑视觉中心)之构造或机能发生部分或全部之障碍人士,创建无障碍化信息传递环境,使信息尽可能准确地传达给更多的视觉障碍用户。
Cocos引擎,是cocos游戏开发一站式解决方案,整合了Cocos2d-x、Cocos Studio、Cocos Code IDE等框架及工具。
MSAA,全称是Microsoft Active Accessibility,是类似DCOM(MicrosoftDistributed Component Object Model,分布式组件对象模型)的技术。MSAA技术通过暴露出一个Interface(接口),方便另一个程序对其进行控制,比如视觉障碍用户看不到UI程序在电脑显示的内容,但是可以通过读屏软件通过暴露出来的这个Interface,获取UI程序中的信息,并将获取到的信息转化为盲文或者语音等形式,传递给视觉障碍用户。MSAA技术的初衷是为了方便视觉障碍用户使用Windows程序。MSAA暴露出来的Interface叫做IAccessible。
WAI-ARIA(Web Accessibility Initiative-Accessible Rich InternetApplications),是指无障碍的网页应用技术,主要针对的是视觉障碍用户,例如,在其浏览网页,可借助辅助设备(如屏幕阅读器、读屏软件)播读出网页显示的内容,而ARIA就是可以让屏幕阅读器准确识别网页中的内容,以便让视觉障碍用户也能无障碍阅读。
UI(User Interface,用户界面)元素,即面向对象程序设计平台上的各类控件,例如菜单、编辑框、按钮等。
DirectUI,意为直接在父窗口上绘图(Paint on parent dc directly),即子窗口不以窗口句柄的形式创建(windowless),只是逻辑上的窗口,绘制在父窗口之上,得到的非窗口化控件。微软的“DirectUI”技术广泛的应用于Windows XP、Vista、Windows7,如浏览器左侧的TaskPanel、控制面板导航界面、Media Player播放器、即时通讯工具MSN Messager等。DirectUI好处在于可以很方便的构建高效、绚丽、非常易于扩展的界面,从而很好的将界面和逻辑分离,同时易于实现各种超炫的界面效果,如换色、换肤、透明等。DirectUI旨在满足客户端界面快速开发的需要,同时融入业界前沿的皮肤技术,为用户创建更加高效,专业的界面。因此,现有的开发软件,尤其是页面游戏开发引擎,大多使用DirectUI技术设计界面。
脚本(Script),是批处理文件的延伸,是一种纯文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。脚本通常可以由应用程序临时调用并执行。各类脚本被广泛地应用于网页设计中,因为脚本不仅可以减小网页的规模和提高网页浏览速度,而且可以丰富网页的表现,如动画、声音等。常见脚本语言包括Scala、JavaScript,VBScript,ActionScript,MAXScript,ASP,JSP,PHP,SQL,Perl,Shell,python,Ruby,JavaFX,Lua,AutoIt等。
SAPI,全称The Microsoft Speech API,是微软推出的应用编程接口(API)。SAPI包括以下应用编程接口:
(1)Voice Commands API,对应用程序进行控制,一般用于语音识别系统中,识别某个命令后,会调用相关接口是应用程序完成对应的功能。
(2)Voice Dictation API,听写输入,即语音识别接口。
(3)Voice Text API,完成从文字到语音的转换,即语音合成接口。
(4)Voice Telephone API,语音识别和语音合成综合运用到电话系统之上,利用此接口可以建立一个电话应答系统,甚至可以通过电话控制计算机。
(5)Audio Objects API,封装了计算机发音系统。
页面进程,在本申请中,指用于创建显示页面中的UI元素并对应用程序的控制逻辑进行处理的程序。
加载进程,在本申请中,指对应用程序需要显示的页面进程初始化程序,以通过显示装置向用户展示对应的页面,页面初始化的过程包括:创建应用程序中对应的窗口、创建页面中的UI元素、对页面进行渲染等。
模态对话框(Modal Dialogue Box),又叫做模式对话框,是指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对话框进行响应。如单击【确定】或【取消】按钮等将该对话框关闭。一般来说,Windows应用程序中,对话框分为模态对话框和非模态对话框两种。二者的区别在于当对话框打开时,是否允许用户进行其他对象的操作。模态对话框垄断了用户的输入。当一个模态对话框打开时,用户只能与该对话框进行交互,而其他用户界面对象收不到输入信息。模态对话框下,用户需要操作目标对话框就必须先操作模态对话框。
透传,即透明传输(pass-through),指的是在通讯中不管传输的业务内容如何,只负责将传输的内容由源地址传输到目的地址,而不对业务数据内容做任何改变。
附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
在具体实践过程中,在需要视觉障碍用户使用的计算机设备中装载读屏软件,由读屏软件实时监听用户通过键盘、鼠标等输入装置进行的操作,在监听到用户输入的操作后,读屏软件通过调用IAccessible接口获取界面所显示的UI元素的内容,对获取到的内容进行语音播读,以帮助视觉障碍用户了解界面所显示的内容。但是,IAccessible接口只能获取到窗口化控件的内容,而随着界面开发技术的发展,尤其是在游戏开发领域,为了获得更好的用户体验,大多使用DirectUI技术设计界面,也就是说,现有的计算机设备显示的界面中的UI元素大多通过非窗口控件实现,IAccessible接口无法直接获取到非窗口控件显示的内容。想要利用IAccessible接口实现对非窗口控件的无障碍化,势必需要对现有的开发软件作出修改,以支持IAccessible接口。目前,市面上还提供了利用wai-aria技术来实现无障碍化的方法,具体来说,开发过程中,为界面显示的UI元素添加标准aria属性字段,读屏软件在监听到用户输入的操作后,通过获取界面所显示的UI元素的标准aria属性字段,来识别需要无障碍化的内容,再对需要无障碍化的内容进行播读。但是,wai-aria技术也存在一些弊端,例如,很多开发软件(例如Cocos、Turbulenz等页面游戏开发引擎)都不支持标准aria属性添加,针对这类开发软件,需要对开发软件自身作出修改,且使用wai-aria技术需要严格的遵守wai-aria标准,不够灵活。
综上可知,无论是基于IAccessible接口的页面无障碍化方法,还是基于wai-aria技术的页面无障碍化方法,都无法较好地、便捷地应用于常用的开发软件,都需要对开发软件本身进行修改,以适配IAccessible接口或wai-aria技术。但是,修改开发软件的难度较大,需要耗费大量的时间精力,且每款开发软件的修改都不尽相同,需要针对每一款开发软件的特性都作出修改,通用性较低。因此,亟需一种通用便捷的页面无障碍化处理的处理方法,尤其是针对页面游戏开发引擎。
此外,现有的页面无障碍化方法都需要依赖外接的读屏软件,来实现内容的播读,这就涉及到开发软件与读屏软件的适配问题。市面上读屏软件的种类很多,不同的读屏软件在获取界面所显示的内容时的处理逻辑以及使用的通信协议等都可能不同,而基于市场或技术等种种因素的考虑,不同公司开发的应用程序会适配不同的读屏软件,这就导致用户需要为不同的应用程序装载不同的读屏软件。此外,一旦应用程序发生升级或变更时,需要对读屏软件进行同步变更,因此,现有的页面无障碍化方法与读屏软件的耦合性过大,在应用程序开发、升级或变更过程中,都需要进行应用程序与读屏软件的联调适配,增加了开发人员的工作量。
为此,本发明的发明人考虑到,通过脚本的方式为界面中需要进行无障碍化的元素节点配置无障碍化参数,利用开发软件开发应用程序时,只需要将用于配置无障碍化参数的无障碍脚本添加到为视觉正常用户开发的应用程序中,即可实现无障碍化参数的配置,无需为适配IAccessible接口或wai-aria标准规则对作出任何调整,可配置性和灵活性更高,通过无障碍脚本实现页面无障碍化的方法可快速适用于任何一款开发软件,尤其是不支持wai-aria标准规则的开发软件(如Cocos、Turbulenz等页面游戏开发引擎),可帮助研发人员快速实现页面的无障碍化。用户启动应用程序后,可选择开启无障碍化功能,在开启无障碍化功能后,由应用程序内的页面进程监听用户针对当前显示的无障碍化页面上的元素节点的选中操作,根据响应的选中操作,从当前显示的无障碍化页面对应的无障碍脚本中获取被选中的元素节点的播读信息,然后,将播读信息发送给播读进程,由播读进程对该播读信息进行播读。由于仅是在为视觉正常用户开发的应用程序中添加了无障碍脚本,视觉正常用户只需关闭无障碍化功能,即可正常使用应用程序,即挂载有无障碍脚本的应用程序可支持正常和无障碍化两种模式,因此,针对视觉正常用户和视觉障碍用户,只需要发布应用程序的一个编译版本。
进一步地,为了解决外部读屏软件与应用程序的适配问题,本发明的发明人在应用程序内部设置了用于对播读信息进行播读的播读进程,并通过脚本的方式在应用程序内配置了控制页面进程和播读进程通信的通信模块,在应用程序初始化过程中,建立页面进程和播读进程的通信连接。页面进程获取被选中的元素节点的播读信息后,调用通信模块,将播读信息发送给播读进程,由播读进程调用相关组件对播读信息进行播读。通过应用程序内置的播读进程进行播读,实现了应用程序闭包,解决了使用外部读屏软件需要适配联调的问题,且用户无需安装额外的读屏软件,提高了用户体验。
在介绍完本发明实施例的设计思想之后,下面对本发明实施例的技术方案能够适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本发明实施例而非限定。在具体实施时,可以根据实际需要灵活地应用本发明实施例提供的技术方案。
参考图1A和图1B所示,图1A其为本发明实施例提供的页面播读的控制方法的应用场景示意图,图1B为终端设备102的结构示意图。视觉障碍用户101可直接使用终端设备102内部的应用程序,或通过终端设备102中安装的应用程序访问服务器103,以获取相应地的服务。参考图1B,其为图1A中使用的终端设备102的结构框图。视觉障碍用户101启动终端设备102中安装的任一应用程序,终端设备102内部的处理器1021从存储器1022中获取并加载该应用程序,并通过终端设备102内置或外接的显示装置1023显示应用程序向视觉障碍用户101展示的用户界面。视觉正常用户可通过显示器1023获知用户界面展示的内容,并通过鼠标操作或触摸操作点击用户界面上的控件,完成相应的操作。由于视觉障碍用户101无法看到用户界面上展示的控件,因此,视觉障碍用户101可通过键盘或鼠标等输入装置1024来选择需要播读的控件,处理器1021在启动应用程序后,执行存储器1022内的读屏软件的相应程序,读屏软件根据监听到的键盘事件确定视觉障碍用户101选择的需要播读的控件,并播读用户选择的控件对应的文案信息,让视觉障碍用户101获知用户界面展示的各个控件的功能,从而通过按下输入装置1024上的相应按键来点击用户界面上的控件,完成相应的操作,使得视觉障碍用户101能够像视觉正常用户一样通过各类应用程序进行上网、阅读、购物、玩游戏等,享受互联网技术带来的生活便利和无限乐趣。当然,还可以通过内嵌在各个应用程序中的播读进程,来实现读屏软件的功能,播读进程具体的实现方式在后续实施例中会详细阐述,此处不再赘述。
在上述应用场景下,应用程序可以是购物APP、电子书APP、单机游戏或网络游戏等。应用程序可以是单机版应用程序,即不需要联网即可使用的应用程序,例如,单机版游戏、计算器等。应用程序也可以是交互过程中需要连接网络的应用程序,购物APP、电子书APP、即时通信软件或网络游戏等,这种应用场景下,终端设备102和服务器103之间通过网络进行通信连接,该网络可以为局域网、广域网等,服务器103为终端设备102提供各种网络服务,对于终端设备102上不同的应用程序,服务器可以认为是提供相应网络服务的后台服务器。
在上述应用场景下,服务器103可以是一台服务器、若干台服务器组成的服务器集群或云计算中心。终端设备102可以是手机、平板电脑、掌上电脑(PersonalDigitalAssistant,PDA)、笔记本电脑、个人计算机,等等,无论是哪种类型的终端设备,用户均可以通过在该终端设备102中安装的应用程序与服务器103进行交互。
需要说明的是,当终端设备102供视觉障碍用户使用时,该终端设备102为视觉障碍用户可操作的终端设备,例如,连接有视觉障碍用户可操作的输入装置1024的终端设备,以使视觉障碍用户通过输入装置1024完成相应的操作。上述输入装置1024可以是终端设备102自身配备的键盘(如个人计算机通用的键盘、手机或笔记本电脑上内嵌的键盘),也可以是为视觉障碍用户定制的键盘。
当然,本发明实施例提供的方法并不限用于图1A所示的应用场景中,还可以用于其它可能的应用场景,本发明实施例并不进行限制。对于图1A所示的应用场景的各个设备所能实现的功能将在后续的方法实施例中一并进行描述,在此先不过多赘述。
为进一步说明本发明实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本发明实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本发明实施例提供的执行顺序。
下面结合图1A、图1B,对本发明实施例提供的技术方案进行说明。
参考图2,本发明实施例提供一种页面播读的控制方法,该方法对应的程序可嵌入在如图1B所示的应用程序中,由处理器在执行应用程序时,执行该方法对应的步骤,具体包括以下步骤:
S201、监听针对当前显示的无障碍化页面上需要无障碍化的元素节点的选中操作。
本步骤中,在应用程序启动后,如果当前显示页面为无障碍化页面,则监听是否有针对需要无障碍化的元素节点的选中操作,如果是则继续步骤S202,否则继续监听。
S202、响应针对当前显示的无障碍化页面上需要无障碍化的元素节点的选中操作,从无障碍化页面对应的无障碍脚本中获取元素节点的播读信息。
S203、将播读信息发送给播读进程,以使播读进程对播读信息进行播读。
本发明实施例中,针对每个无障碍化页面,其对应的无障碍脚本中存储有该无障碍化页面中需要无障碍化的元素节点的播读信息。一个元素节点可对应无障碍化页面上显示的一个UI元素。在实际应用中,也可以是对页面中部分元素节点进行无障碍化处理,并非必须对所有元素节点都进行无障碍化处理,可根据实际需求选择需要无障碍化处理的元素节点,将其存储到无障碍脚本中。
本发明实施例中的无障碍脚本可通过现有的任何一种脚本实现,如JavaScript、MAX Script、PHP、SQL等,本发明实施例不作限定。
实际应用中,视觉障碍用户启动终端设备内的应用程序后,应用程序中的加载进程会对当前待显示的无障碍化页面进行初始化,初始化过程包括:创建无障碍化页面对应的窗口、对无障碍化页面进行渲染、加载无障碍化页面等,以在终端设备的显示装置上显示无障碍化页面。在无障碍化页面完成初始化后,启动监听端口,以监听视觉障碍用户针对当前显示的无障碍化页面输入的选中操作,从而对视觉障碍用户选中的元素节点的播读信息进行播读。此外,当应用程序设置有背景音乐或音效时,可在无障碍化页面完成初始化后,关闭背景音乐或音效,防止背景音乐或音效对视觉障碍用户造成干扰。
本发明实施例的页面播读的控制方法,通过脚本的方式为无障碍化页面中需要进行无障碍化的元素节点配置无障碍化参数,利用开发软件开发应用程序时,只需要将用于配置无障碍化参数的无障碍脚本添加到为视觉正常用户开发的应用程序中,即可实现无障碍化参数的配置,无需为适配IAccessible接口或wai-aria标准规则对作出任何调整,可配置性和灵活性更高。因此,本发明实施例的页面播读的控制方法,提供了一种通用的页面无障碍化方法,可快速适用于任何一款开发软件,尤其是不支持wai-aria标准规则的开发软件(如Cocos、Turbulenz等页面游戏开发引擎),能够帮助研发人员快速便捷的对现有的应用程序进行无障碍化改造,快速实现页面的无障碍化。
作为一种可能的实现方式,可以在开发应用程序时,为应用程序中的每个无障碍化页面配置对应的无障碍脚本,开发人员将需要无障碍化的元素节点的文案信息作为播读信息存储到无障碍脚本中。当然还可以将元素节点的其它信息(可包括节点名称、节点级别、从属的元素节点、播读属性等)也存储到无障碍脚本中,以实现更多的功能。
作为另一种可能的实现方式,可以在开发应用程序时,为无障碍化页面中的元素节点配置参数脚本,参数脚本中可存储该元素节点的节点名称、用于指示需要无障碍化的无障碍化标识等信息,并将预先配置好的参数脚本模板添加到应用程序中。启动应用程序并在无障碍化页面完成初始化后,由应用程序内的页面进程进行无障碍化功能的初始化,即基于无障碍脚本模板和为当前显示的无障碍化页面中的元素节点配置的参数脚本,动态生成当前显示的无障碍化页面对应的无障碍脚本。具体来说,参考图3,在步骤S201之前,本发明实施例的页面播读的控制方法还包括如下步骤:
S301、在无障碍化页面完成初始化后,获取无障碍化页面中各元素节点的参数脚本;
S302、根据参数脚本中的信息,将无障碍化页面中具有无障化标识的元素节点确定为需要无障碍化的元素节点;
S303、将需要无障碍化的元素节点的文案信息确定为需要无障碍化的元素节点的播读信息;
S304、将需要无障碍化的元素节点和其对应的播读信息添加到无障碍脚本模板中,得到无障碍化页面对应的无障碍脚本。
当显示界面切换到下一个无障碍化页面时,在下一个无障碍化页面完成初始化后,页面进程基于无障碍脚本模板和下一个无障碍化页面中的元素节点配置的参数脚本,动态生成下一个无障碍化页面的无障碍脚本。基于无障碍脚本模板和参数脚本,可根据当前显示的无障碍化页面动态生成其对应的无障碍脚本,因此,无需预先为应用程序中的每个无障碍化页面单独配置无障碍脚本,降低了需要存储的数量。此外,通过上述方法可以动态获取元素节点当前的文案信息作为实际的播读信息,即便在应用程序更新过程中,文案信息发生了变化,也可以获取到最新的文案信息,减少了修改无障碍脚本的频率,提高了无障碍脚本的通用性。
此外,本发明实施例的页面播读的控制方法仅是在为视觉正常用户开发的应用程序中添加了无障碍脚本,视觉正常用户只需关闭无障碍化功能,即可正常使用应用程序,即挂载有无障碍脚本的应用程序可支持正常和无障碍化两种模式,视觉正常用户和视觉障碍用户可共享一个应用程序。因此,针对正常用户和视觉障碍用户,只需要发布应用程序的一个编译版本,降低开发人员的工作量。
进一步地,还可设置无障碍化快捷键,用户可通过无障碍化快捷键设置无障碍化配置参数,无障碍化配置参数用于指示是否进行无障碍化处理。
视觉障碍用户可通过无障碍化快捷键,将无障碍化配置参数设置为需要进行无障碍化处理,在无障碍化页面初始化时,页面进程可根据无障碍化页面的无障碍化配置参数,确定无障碍化页面需要进行无障碍化处理,再启动监听端口,以监听视觉障碍用户针对当前显示的无障碍化页面输入的选中操作。
视觉正常用户可通过无障碍化快捷键,将无障碍化配置参数设置为不需要进行无障碍化处理,在无障碍化页面初始化时,页面进程可根据无障碍化页面的无障碍化配置参数,确定无障碍化页面不需要进行无障碍化处理,禁止启动监听端口。
通过无障碍化快捷键,可便捷地在正常和无障碍化两种模式间相互切换,使得视觉正常用户和视觉障碍用户可便捷地使用同一的应用程序。
作为一种可能的实现方式,步骤S203中的播读进程可以是外接的读屏软件内部的播读进程,即,页面进程在获取到播读信息后,将播读信息发送给外接的读屏软件,通过外接的读屏软件对播读信息进行播读,让视觉障碍用户获取当前选中的元素节点的文案信息,从而确定是否需要点击该元素节点。在开发应用程序时,需要根据可支持的读屏软件,确定与读屏元件支持的通信方式和数据格式,并在应用程序中添加用于与读屏元件进行通信的通信模块,页面进程通过调用通信模块,将播读信息修改成读屏软件支持的数据格式,并按照读屏元件支持的通信方式将播读信息发送给读屏软件。这种情况下,仅能通过应用程序支持的读屏软件对播读信息进行播读,无法适用于所有的读屏软件,且用户需要预先在终端设备中安装应用程序支持的读屏软件。
作为另一种可能的实现方式,步骤S203中的播读进程也可以是内嵌在应用程序内部的一个进程。播读进程在收到播读信息后,可通过调用SAPI组件对收到的播读信息进行播读,让视觉障碍用户获取当前选中的元素节点的文案信息,从而确定是否需要点击该元素节点。播读进程是在开发应用程序过程中,内嵌在应用程序中的一个进程,用户在启动应用程序后,应用程序会自动完成对播读进程的初始化,无需用户执行额外的操作,即可通过播读进程对播读信息进行播读,实现了应用程序闭包,解决了使用外部读屏软件需要适配联调的问题,且用户无需安装额外的读屏软件,提高了用户体验。
此外,SAPI组件还支持修改语速、语音类型等参数。具体实施时,可将键盘上特定的按键配置为语速设置按键和语音类型设置按键,用户可通过语速设置按键调整语音播读的速度,通过语音类型设置按键来修改语音类型,例如,语音类型可以是男声或女声。应用程序可存储用户最新设置的语速和语音类型,再下一次启动应用程序后,获取存储的语速和语音类型,确定为本次运行过程中的SAPI组件在播读时使用的语速和语音类型。
具体实施时,在监听用户操作之前,可通过如下方式完成内嵌在应用程序内部的播读进程的初始化:页面进程在无障碍化页面完成初始化后,启动播读进程;播读进程动态申请通信端口,将该通信端口的端口号发送给页面进程,并监听该通信端口;页面进程接收播读进程返回的通信端口的端口号,以建立与播读进程间的通信连接。
进一步地,在建立好与播读进程间的通信连接的基础上,页面进程具体通过以下方式将播读信息发送给播读进程:按照预设的通信协议对播读信息进行封装,得到播读消息,通过端口号将播读消息发送给播读进程,以使播读进程按照通信协议解析播读消息以获得播读信息。播读进程获取到页面进程发送的播读消息后,按照预设的通信协议解析播读消息以获得播读信息,然后,调用SAPI组件对解析获得的播读信息进行播读。其中,预设的通信协议可以是任何一种可实现的通信协议,例如HTTP协议,对此本发明实施例不作限定。具体地,参考图4,本发明实施例的页面播读的控制方法,具体包括如下步骤:
S401、在无障碍化页面完成初始化后,启动所述播读进程。
S402、接收播读进程启动后申请的通信端口的端口号,以建立与播读进程间的通信连接。
S403、监听针对当前显示的无障碍化页面上需要无障碍化的元素节点的选中操作。
本步骤的具体实施方法可参考步骤S201,不再赘述。
S404、响应针对当前显示的无障碍化页面上需要无障碍化的元素节点的选中操作,从无障碍化页面对应的无障碍脚本中获取元素节点的播读信息。
本步骤的具体实施方法可参考步骤S202,不再赘述。
S405、按照预设的通信协议对播读信息进行封装,得到播读消息,通过端口号将播读消息发送给播读进程,以使播读进程按照通信协议解析播读消息以获得播读信息并对播读信息进行播读。
具体实施时,视觉障碍用户可通过键盘上的预设按键,控制播读无障碍化页面中的元素节点。例如,预设按键为TAB键,视觉障碍用户首次按下TAB键,页面进程从当前显示的无障碍化页面对应的无障碍脚本中获取第一个元素节点的播读信息,播读进程对第一个元素节点的播读信息进行播读,之后,视觉障碍用户每按下一次TAB键,页面进程从当前显示的无障碍化页面对应的无障碍脚本中获取下一个元素节点的播读信息,播读进程对下一个元素节点的播读信息进行播读。在上述情况下,如果一个无障碍化页面中包含的元素节点太多,会导致视觉障碍用户需要听完很多元素节点的播读信息后,才能找到自己想要点击的元素节点。以图7A所示的无障碍化页面为例,如果视觉障碍用户想点击“快速开始”按钮,就需要等待播读完返回按钮、“新手场”按钮、“中级场”按钮、……、“连打场”按钮后,才会播读“快速开始”按钮,此时,视觉障碍用户才能点击“快速开始”按钮,开始游戏,这显然降低了播读的效率。
为此,当同一无障碍化页面中的元素节点过多时,在应用程序的开发过程中,开发人员还可以根据无障碍化页面中的元素节点间的关系,将元素节点划分为多个不同的级别,即为无障碍化页面中的元素节点配置节点级别。相应地,在页面进程进行无障碍化功能的初始化的过程中,将需要无障碍化的元素节点和其对应的播读信息添加到预设的无障碍脚本模板中,具体包括以下步骤:根据各个需要无障碍化的元素节点的节点级别,将需要无障碍化的元素节点和其对应的播读信息,添加到无障碍脚本模板中与该需要无障碍化的元素节点的节点级别对应的列表中。具体来说,在无障碍化页面完成初始化后,页面进程获取无障碍化页面中各元素节点的参数脚本,根据参数脚本中的信息,将无障碍化页面中具有无障化标识的元素节点确定为需要无障碍化的元素节点,将需要无障碍化的元素节点的文案信息确定为需要无障碍化的元素节点的播读信息,根据各个需要无障碍化的元素节点的节点级别,将需要无障碍化的元素节点和其对应的播读信息,添加到无障碍脚本模板中与该需要无障碍化的元素节点的节点级别对应的列表中,得到无障碍化页面对应的无障碍脚本。
相应地,可为各个节点级别,设置对应的选中操作。在对无障碍化页面中元素节点进行播读时,视觉障碍用户可通过不同的选中操作,选择播读对应节点级别的元素节点。具体地,页面进程在监听到针对当前显示的无障碍化页面上需要无障碍化的元素节点的选中操作后,响应该选中操作,确定该选中操作对应的节点级别,从无障碍化页面对应的无障碍脚本中查询到该节点级别对应的列表,从查询到的列表中获取该元素节点的播读信息。这样,将元素节点按节点级别划分到多个列表中后,视觉障碍用户就可以按节点级别对元素节点进行分类,仅控制播读某一节点级别中的元素节点,快速查找到需要点击的元素节点。
进一步地,同一无障碍化页面中,除最高节点级别外,相邻两个节点级别之间,下一节点级别中的每个元素节点均从属于上一级别中的一个元素节点,且上一级别的元素节点从属有至少两个下一级别的元素节点。
举例说明,参阅图5所示,无障碍化页面中设置了三个节点级别,第一节点级别的节点元素包括A1、A2、……A6,第二节点级别的节点元素包括B1、B2、……B5,第三节点级别的节点元素包括C1、C2、C3,其中,第三节点级别为最高节点级别,第一节点级别为最低节点级别。三个节点级别间的元素节点可具有如下关系:B1、B2从属于C1,B3、B4、B5从属于C3,C2没有从属的元素节点,A1、A2从属于B1,A3、……A6从属于B3,B2、B4和B5没有从属的元素节点。
具体实施时,节点级别的数量、各元素节点的节点级别的划分以及相邻节点级别间的从属关系,可由开发人员根据无障碍化页面中元素节点的数量、各个元素节点的功能、属性以及元素节点间的逻辑关系等确定,本发明实施例不作限定。
实际应用中,针对同一无障碍化页面,一般设置两个节点级别即可。以图7A所示的场景为例,“新手场”按钮、“中级场”按钮、……、“连打场”按钮这六个元素节点的功能都是场次选择,可将这六个按钮可设置对象级(即对应上述例子中的第一节点级别)的元素节点,在控件级(即对应上述例子中的第二节点级别)中设置一个“场次选择”元素节点,则这六个按钮可从属于控件级中的“场次选择”元素节点,同时可将返回按钮和“快速开始”按钮对应的元素节点的节点级别设置为控件级。需要说明的是,该“场次选择”元素节点不是障碍化页面中实际存在的一个UI元素,而是抽象出来的一个元素节点,因此,并不会显示“场次选择”元素节点对应的UI元素,对这类元素节点无法操作,只能进行播读。当然,实际应用中,也可以为“场次选择”元素节点这类抽象出来的元素节点设置对应的UI元素。
实际应用中,控件级的元素节点可没有从属的对象级元素节点,或者,控件级的元素节点包括至少两个对象级的元素节点。针对控件级,还可以是设置第一控件级、第二控件级等多个控件级,第一控件级的元素节点可没有从属的对象级的元素节点,或者第一控件级的元素节点包括至少两个对象级的元素节点,第二控件级的元素节点可没有从属的第一控件级的元素节点,或者第二控件级的元素节点包括至少两个第一控件级的元素节点。
仍以图7A所示的场景为例,假设为控件级配置的选中操作为按下TAB键,为对象级配置的选中操作为按下Shif键。当视觉障碍用户每按下一次TAB键,则顺序播读控件级中的一个元素节点的播读信息,例如第一次按下TAB键后,播读控件级中的第一个元素节点(即返回按钮)的播读信息,再次按下TAB键后,播读控件级中的第二个元素节点(即场次选择)的播读信息。当播读到“场次选择”这个元素节点时,可告知用户该元素节点还包括多个对象级的元素节点,此时,用户可通过按下Shif键,播读对象级中从属于“场次选择”元素节点的元素节点。用户每按下一次Shif键,则顺序播读从属于“场次选择”元素节点的一个元素节点的播读信息,例如第一次按下Shif键后,播读的“新手场”元素节点的播读信息,再次按下Shif键后,播读“中级场”元素节点的播读信息。当播读到用户想要进入的场次时,用户可通过按下空格键选择进入的该场次,如果用户不想进入任何一个场次,用户可在播读到从属于“场次选择”元素节点的任一元素节点时,按下TAB键,此时,会播读控件级中的排在“场次选择”元素节点之后的元素节点。
进一步地,在页面进程初始化无障碍化功能的过程中,可通过如下步骤,将需要无障碍化的元素节点和其对应的播读信息添加到预设的无障碍脚本模板中:将最高节点级别的元素节点和其对应的播读信息添加到无障碍脚本模板中与最高节点级别对应的列表中;针对除最高节点级别以外的任一节点级别,将节点级别中的元素节点和其对应的播读信息,添加到无障碍脚本模板中与节点级别中的元素节点从属的元素节点对应的列表中。
具体实施时,可通过脚本的方式,预先配置好无障碍化页面中的各个元素节点对应的节点级别以及其从属的元素节点,并将参数脚本与对应的元素节点绑定,初始化无障碍化功能时,只需要从元素节点对应的参数脚本中获取该元素节点的节点级别以及其从属的元素节点,根据该元素节点的节点级别以及其从属的元素节点,将该元素节点添加到无障碍脚本模板中对应的列表中。
举例说明,参考图5,无障碍化页面中三个节点级别间的元素节点可具有如下关系:B1、B2从属于C1,B3、B4、B5从属于C3,C2没有从属的元素节点,A1、A2从属于B1,A3、……A6从属于B3,B2、B4和B5没有从属的元素节点,上述这些信息均预先记录在各个元素节点对应的参数脚本中。初始化无障碍化功能时,顺序获取无障碍化页面中各个元素节点的参数脚本,根据各个元素节点的参数脚本中的节点级别以及其从属的元素节点,将该元素节点添加到无障碍脚本模板中对应的列表中。以元素节点C1为例,从其对应的参数脚本中获知C1为第三节点级别,在该无障碍化页面中为最高节点级别,将C1和其对应的播读信息添加到无障碍脚本模板中与最高节点级别对应的列表3.1中。以同样的方法,将C2、C3和对应的播读信息添加到列表1.1中。以元素节点B1为例,从其对应的参数脚本中获知B1为第二节点级别,其从属于C1,将B1和其对应的播读信息添加到无障碍脚本模板中其从属的C1对应的列表2.1中。以同样的方法,将B2和对应的播读信息添加到列表2.1中,将B3、B4、B5和对应的播读信息添加到C3对应的列表2.2中。以元素节点A1为例,从其对应的参数脚本中获知A1为第一节点级别,其从属于B1,将A1和其对应的播读信息添加到无障碍脚本模板中其从属的B1对应的列表3.1中。以同样的方法,将A2和对应的播读信息添加到列表3.1中,将A3、……A6和对应的播读信息添加到列表3.2中。最终得到的无障碍脚本中的各个列表以及各个列表件的从属关系如图6所。
进一步地,步骤S202具体包括以下步骤:响应针对最高节点级别的元素节点的选中操作,根据选中操作指示的选择顺序以及最高节点级别对应的列表中的元素节点的排序,从最高节点级别对应的列表中确定选中操作对应的元素节点,获取选中操作对应的元素节点的播读信息。
进一步地,步骤S202具体还包括以下步骤:若当前响应的选中操作为针对除最高节点级别外的任一节点级别的选中操作,且上次响应的选中操作和当前响应的选中操作对应不同的节点级别,则根据当前响应的选中操作指示的选择顺序以及上次响应的选中操作对应的元素节点对应的列表中的元素节点的排序,从上次响应的选中操作对应的元素节点对应的列表中确定出当前响应的选中操作对应的元素节点,获取当前响应的选中操作对应的元素节点的播读信息;或者,若当前响应的选中操作为针对除最高节点级别外的任一节点级别的选中操作,且上次响应的选中操作和当前响应的选中操作对应相同的节点级别,则根据当前响应的选中操作指示的选择顺序以及上次响应的选中操作对应的元素节点所在的列表中的元素节点的排序,从上次响应的选中操作对应的元素节点所在的列表中确定出当前响应的选中操作对应的元素节点,获取当前响应的选中操作对应的元素节点的播读信息。
无障碍脚本中的各个列表中的元素节点按预设的顺序排列,可参考图6。具体实施时,可针对每个节点级别分别设置对应的选中操作。例如,为第三节点级别设置的选中操作为按下TAB键,为第二节点级别设置的选中操作为按下Shif键,为第一节点级别设置的选中操作为按下Ctrl键,则各个选中操作指示的选择顺序为:每触发一次选中操作,就选择列表中的下一个元素节点,即按照列表中从上到下的顺序播读元素节点。具体实施时,选中操作指示的选择顺序可根据需求自由设定,不限于本发明实施例中列举的例子。
在上述情况下,以图6所示的无障碍脚本为例,当用户第一次按TAB键,页面进程响应TAB键触发的选中操作,确定本次选中操作对应的是最高节点级别(第三节点级别)对应的列表3.1中的第一个元素节点C1,从列表3.1中获取C1的播读信息。当用户第二次按TAB键,页面进程响应TAB键触发的选中操作,由于基于上一次TAB键触发的选中操作定位到的元素节点是C1,因此,当前响应的选中操作是针对列表3.1中C1的下一个元素节点C2,从列表3.1中获取C2的播读信息。当用户第三次按TAB键后,页面进程按照列表3.1中元素节点的排列顺序获取C2的下一个元素节点C3的播读信息。当用户第四次按TAB键,可返回到列表3.1中的第一个元素节点C1,获取C1的播读信息。
当播读到包含下一级元素节点的这类元素节点(如C1和C3)时,可告知用户该元素节点还包括多个从属的元素节点,此时,用户可通过按下下一级节点级别对应的按键,来播读这多个从属的元素节点。例如,用户选中元素节点C1后,用户可按下Shif键,此时,页面进程响应Shif键触发的选中操作,确定当前响应的选中操作是针对第二节点级别的元素节点的选中操作,上次响应的选中操作对应的元素节点为C1,与本次选中操作对应的节点级别不同,因此,从上次响应的选中操作对应的元素节点C1对应的列表2.1中,选择列表2.1中的第一个元素节点B1作为当前响应的选中操作对应的元素节点,获取B1的播读信息。当用户再次按下Shif键后,页面进程响应Shif键触发的选中操作,确定本次选中操作是针对第二节点级别的元素节点的选中操作,而上次响应的选中操作对应的元素节点为B1,与当前响应的选中操作对应的节点级别相同,因此,从上次响应的选中操作对应的元素节点B1所在的列表2.1中,选择B1的下一个元素节点B2作为当前响应的选中操作对应的元素节点,获取B2的播读信息。
同样,在用户选中元素节点B1后,可告知用户B1还包括多个从属的元素节点,用户可通过按下Ctrl键,获取B1还包括的多个从属的元素节点的播读信息,具体实现方法与通过Shif键的控制播读的方法相同,不再赘述。
具体实施时,选中操作对应的按键不限于上述实施例中列举的例子,可根据实际需求进行设置,针对每个节点级别可设置多个按键,在选择元素节点时可控制选择的方向,例如,选中操作对应的按键可以是左键和右键,或者是上键和下键等。
以图6所示的无障碍脚本为例,当第三节点级别对应的选中操作为左键和右键时,左键指示的选择顺序可以为:每按下一次左键,就选择列表中的上一个元素节点,相对的,右键指示的选择顺序可以为:每按下一次右键,就选择列表中的下一个元素节点。当播读到元素节点C3时,用户可通过按下右键,选择播读从属于C3的元素节点,页面进程响应右键触发的选中操作,由于是第一次响应右键,因此确定当前响应的选中操作对应的是第三节点级别对应的列表2.2中的第一个元素节点B1,从列表2.2中获取B1的播读信息。当用户第二次按下右键,页面进程响应右键触发的选中操作,由于基于上一次右键触发的选中操作定位到的元素节点是B1,因此,当前响应的选中操作是针对列表2.2中B1的下一个元素节点B2,从列表2.2中获取B2的播读信息。当用户第三次按右键,页面进程按照列表2.2中元素节点的排列顺序获取B2的下一个元素节点B3的播读信息。当用户第四次下右键,可告知用户当前已经是列表2.2中的最后一个元素节点,此时,用户可通过按下左键,播读B3的上一个元素节点B2。上述过程中,在播读到列表2.2中任何一个元素节点后,用户都可以通过按下第三节点级别对应的TAB键,返回到上一节点级别(即第三节点级)中,继续播读列表3.1中的元素节点。
上述例子中,在第一次按下左键时,由于此前还未播读列表2.2中的任何一个元素节点,因此,此时按下左键可视为无效操作。对于无效操作,可播放提示语或提示音告知用户。
在上述任一实施例的基础上,无障碍脚本中,针对每个元素节点还设置有用于指示是否播读的播读属性。播读属性可以是可播读或不播读,当元素节点的播读属性为可播读时,表示视觉障碍用户可选中该元素节点,并播读该元素节点的播读信息,当元素节点的播读属性为不播读时,表示视觉障碍用户无法选中该元素节点,即无法选择播读该元素节点的播读信息。
相应地,步骤S202中,从无障碍化页面对应的无障碍脚本中获取元素节点的播读信息,具体包括:从无障碍化页面对应的无障碍脚本中获取播读属性为可播读的元素节点的播读信息。
以表1为例,其中存储的是当前显示的无障碍化页面中的元素节点的相关信息,当视觉障碍用户通过TAB键来选择表1中的元素节点时,会跳过播读属性为不可播读的元素节点,即仅对播读属性为可播读的元素节点进行播读。当视觉障碍用户第一次按下TAB键时,此时定位到表1中的1号元素节点,即选中了1号元素节点,其播读属性为可播读,获取1号元素节点的播读信息“返回上一级”进行播读。当视觉障碍用户再次按下TAB键时,定位到2号元素节点,其播读属性为可播读,获取2号元素节点的播读信息“场次选择”进行播读。当视觉障碍用户又一次按下TAB键时,定位到3号元素节点,获知其播读属性为不可播读,则直接跳过3号元素,定位到4号元素节点,获取4号元素节点的播读信息“返回主页”进行播读。
表1
元素节点 | 播读信息 | 播读属性 |
1 | 返回上一级 | 可播读 |
2 | 场次选择 | 可播读 |
3 | 快速开始 | 不可播读 |
4 | 返回主页 | 可播读 |
具体实施时,在应用程序运行过程中,随着用户的操作以及应用程序内在的控制逻辑,会导致无障碍化页面中的部分元素节点不可操作,此时,无需对这部分元素节点进行播读,因此,可根据无障碍化页面中的元素节点的操作属性的变化,对无障碍脚本中的播读属性进行动态修改。
为此,本发明实施例的方法还包括以下步骤:若无障碍化页面中的元素节点的操作属性从可操作变更为不可操作,在无障碍脚本中将对应元素节点的播读属性从可播读更新为不播读;若无障碍化页面中的元素节点的操作属性从不可操作变更为可操作,在无障碍脚本中将对应元素节点的播读属性从不播读更新为可播读。
通过上述方法,针对无障碍化页面中的不可操作的元素节点,可不进行播读,即仅对用户可操作的元素节点进行播读,提高了播读效率。
在一些应用场景下,视觉障碍用户依然希望播读不能操作的元素节点,为此,可设置播读快捷键,视觉障碍用户可通过播读快捷键设置播读配置参数,播读配置参数用于指示是否播读不可操作的元素节点。
作为一种可能的实现方式,可在监听到针对当前显示的无障碍化页面上需要无障碍化的元素节点的选中操作时,根据无障碍化页面的播读配置参数,确定无障碍化页面是否需要播读不能操作的元素节点,若确定需要播读不能操作的元素节点,则从无障碍化页面对应的无障碍脚本中所有的元素节点中确定出需要播读的元素节点,获取需要播读的元素节点的播读信息,对获取到的播读信息进行播读;若确定不需要播读不能操作的元素节点,则从无障碍化页面对应的无障碍脚本中所有播读属性为可播读的元素节点中确定出需要播读的元素节点,获取需要播读的元素节点的播读信息,对获取到的播读信息进行播读。这种情况下,无需根据播读配置参数更新播读属性。
作为另一种可能的实现方式,在无障碍脚本中将对应元素节点的播读属性从可播读更新为不播读之前,本发明实施例的方法还包括以下步骤:根据无障碍化页面的播读配置参数,确定无障碍化页面不需要播读不能操作的元素节点。即,当播读配置参数为不播读不可操作的元素节点时,确定不需要播读无障碍脚本中不能操作的元素节点,此时,若无障碍化页面中的元素节点的操作属性从可操作变更为不可操作,在无障碍脚本中将对应元素节点的播读属性从可播读更新为不播读;若无障碍化页面中的元素节点的操作属性从不可操作变更为可操作,在无障碍脚本中将对应元素节点的播读属性从播读更新为可播读。当播读配置参数为播读不可操作的元素节点时,确定需要播读无障碍脚本中不能操作的元素节点,此时,无需根据无障碍化页面中的元素节点的操作属性,对无障碍脚本中对应元素节点的播读属性进行更新,即无障碍脚本中所有元素节点的播读属性均保持为可播读。
具体实施时,如果视觉障碍用户在应用程序运行过程中,将播读配置参数从不播读不可操作的元素节点切换为播读不可操作的元素节点,且在切换播读配置参数前,已经有部分元素节点的播读属性被更新为不播读,可在播读配置参数被配置为播读不可操作的元素节点后,将无障碍脚本中所有元素节点的播读属性均为可播读。在可在播读配置参数被配置为不播读不可操作的元素节点之后,再将无障碍化页面中的元素节点的操作属性为不可操作的元素节点的播读属性从可播读更新为不播读。
以图7B所示的游戏场景为例,用户A持有的每一张手牌对应无障碍脚本中的一个元素节点,用户A可对这些手牌进行操作,例如,选中需要出的牌,点击出牌按钮,打出选中的手牌。在游戏过程中,当进行到图7B所示的场景时,用户A出的手牌必须大过用户D出的牌,此时,游戏应用程序会根据游戏逻辑,自动将用户A持有的手牌中比用户D出的牌小的手牌的操作属性更新为不可操作的元素节点,即图7B中显示为灰色的手牌,此时,用户A只能对可操作的手牌(即图7B中未被设置为灰色的手牌)进行操作,游戏应用程序的页面进程将无障碍脚本中操作属性为不可操作的元素节点的播读属性从可播读更新为不播读。当用户A设置的播读配置参数被配置为不播读不可操作的元素节点时,用户A通过输入设备上预设的按键顺序选择播读的手牌时,会跳过播读属性为不播读的手牌,而仅对播读属性为播读的手牌进行播读。当用户A设置的播读配置参数被配置为播读不可操作的元素节点时,用户A通过输入设备上预设的按键顺序选择播读的手牌时,可对所有的手牌都进行播读,但是,用户A无法对不可操作的手牌进行操作,例如,无法打出不可操作的手牌。
实际应用中,还存在一些元素节点无法在无障碍化页面中时时显示,这些元素节点只在特定场景下才会在无障碍化页面中显示,针对这类元素节点,当这类元素节点在无障碍化页面中显示时,应用程序会将元素节点的操作属性从可操作变更为不可操作,因此,可通过更新元素节点的播读属性,来控制元素节点是否可被播读,使得只有元素节点在无障碍化页面中显示时,才能够被用户选中并播读。
参考图7D,举例说明,当用户选择退出游戏时,无障碍化页面会弹出窗口,该窗口中的元素节点在用户选择退出游戏前并不会显示(参考图7C),但是,该窗口中的元素节点在无障碍化页面初始化时,就已经存储在无障碍脚本中,只是其播读属性为不播读,因此,用户无法选中这些元素进行播读。当窗口在无障碍化页面中显示后,应用程序会将窗口中的元素节点的操作属性从不可操作更新为可操作,此时,页面程序会将这些元素节点的播读属性从可播读更新为不播读,并播读窗口中的文案信息“确定退出游戏吗”,用户可通过预设按键播读“取消”按钮和“确定”按钮,并选择返回游戏或退出游戏。图7D所示的场景中,弹出的窗口为模态对话框,用户需要对该模态对话框进行响应后,才能对模态对话框以外的应用程序进行操作,因此,应用程序会将模态对话框以外的元素节点的操作属性更新为不可操作,对应地,页面进程将对话框以外的元素节点的播读属性更新为不播读,此时,用户无法选择播读对话框以外的元素节点,当用户按下“取消”按钮或“确定”按钮后,模态对话框消失,显示画面返回图7C所示的状态,此时,应用程序会将模态对话框以外的元素节点的操作属性更新为可操作,将模态对话框内的元素节点的操作属性更新为不可操作,对应地,页面进程将对话框以外的元素节点的播读属性更新为可播读,将模态对话框内的元素节点的播读属性更新为可操作。
参考图8,为基于TS脚本实现的无障碍脚本模板。在开发应用程序时,只需要无障碍脚本模板加入工程即可,无需进行大量的特殊处理,实现了通用化。
图8所示的无障碍脚本模板主要包括以下几个模块:AccessibilityService、AccessibilityLayer、AccessibilityComponent、AccessibilityObject和AccessibilityCommunicator。
AccessibilityCommunicator主要用于与播读进程进行通讯,AccessibilityCommunicator包含有对播读信息进行封装的方法,并提供播读接口让上层业务调用,把封装后的播读信息发送至播读进程,进行语音播读。
AccessibilityObject为对象级的对象实例主要用于保存无障碍化页面中需要无障碍化的元素节点的相关信息,包括播读信息、播读属性等。在由页面进程对无障碍化功能进行初始化过程中,针对无障碍化页面中的每个元素节点,创建一个对应的AccessibilityObject对象实例,以存储该元素节点的相关信息。当用户操作按键进行元素节点的播读时,通过该AccessibilityObject对象实例提供的接口获取元素节点的播读信息,并调用通信AccessibilityCommunicator将播读信息发送给播读进程。
AccessibilityComponent为组件级的对象实例,是AccessibilityObject对象实例的容器,一个AccessibilityComponent中允许有多个AccessibilityObject。如果AccessibilityObject用于存储对象级的元素节点,则AccessibilityComponent用于存储组件级的元素节点。AccessibilityComponent可提供接口让上层业务遍历查询、增加和删除所包含的AccessibilityObject对象实例。AccessibilityComponent自身可监听键盘事件(即监听用户操作),通过不同的键盘事件选择播读所包含的对象级的元素节点的播读信息或者自身的播读信息。例如,在监听到接收到向左按键事件,会播读当前对象级元素节点的上一个对象级元素节点的播读信息。
AccessibilityLayer为场景级的对象实例,是AccessibilityComponent对象实例的容器,针对同一无障碍化页面创建的多个AccessibilityComponent加入到一个AccessibilityLayer中。例如,应用程序中的一个场景(即一个无障碍化页面)对应一个AccessibilityLayer,当一个应用程序包含多个场景时,针对该应用程序可创建多个AccessibilityLayer。AccessibilityLayer包含有与无障碍化页面中的UI元素匹配的AccessibilityComponent。AccessibilityLayer同样提供了接口对所包含的AccessibilityComponent进行增加、查询和删除等。
AccessibilityService为无障碍模块的总管理类。AccessibilityService包含有一个或多个或AccessibilityLayer,AccessibilityService用于对AccessibilityLayer进行维护,上层业务使用接口可进行删除、增加等。对无障碍化模块的初始化、键盘事件的监听响应、通讯进程的数据处理等功能都可以嵌入AccessibilityService中执行。
图8仅为示例性说明,实际应用中,可选择其他的脚本来实现无障碍脚本模板,本发明实施例不作限定。图8所示的无障碍脚本模板仅设置了两个节点级别(组件级和对象级),实际应用中,可设置更多的节点级别,具体实现方式不再赘述。
参考图9,以游戏应用为例,对上述实施例中的页面播读的控制方法进行进一步地阐述。参考图9,无障碍化的游戏应用中设置有游戏页面进程(即对应上述实施例中的页面进程)、游戏加载进程(即对应上述实施例中的加载进程)和播读进程。游戏页面进程用于处理游戏逻辑和创建游戏页面(即无障碍化页面)中的UI元素。游戏加载进程用于创建游戏对应的窗口、对游戏页面进行渲染、加载游戏页面等。播读进程用于通过监听通信端口接收到播读消息,解析播读消息获得播读信息,并调用SAPI组件对播读信息进行播读。具体的,通过以下步骤实现无障碍化的游戏应用的初始化:
S901、启动游戏加载进程。
具体实施时,如果用户刚打开游戏应用,则控制游戏加载进程加载第一个游戏页面。在游戏进行过程中,用户可通过终端设备上的输入装置,控制游戏应用切换到下一个游戏页面,此时需要控制游戏加载进程加载下一个游戏页面。
S902、游戏加载进程对游戏页面进行初始化。
具体地,游戏的初始化包括:创建游戏对应的窗口、对游戏页面进行渲染、加载游戏页面等。游戏页面进行初始化后,即可在终端设备的显示装置中显示示游戏页面,包括游戏页面中的各个元素节点。
S903、在游戏页面完成初始化后,启动播读进程。
S904、在播读进程启动后,播读进程动态申请通信端口,并监听该通信端口。
S905、播读进程将申请的通信端口的端口号返回给游戏加载进程。
具体地,播读进程可通过window message消息方式,把通信端口的端口号发送至游戏加载进程。
S906、游戏加载进程通过JS回调方式将通信端口的端口号透传给与游戏页面进程。
S907、游戏页面进程接收通信端口的端口号,以建立与播读进程间的通信连接,并对游戏页面进行无障碍初始化。
具体地,游戏页面进程进行无障碍初始化的方法可参考图10,具体包括以下步骤:
S1001、获取当前显示的游戏页面中各元素节点的参数脚本。
其中,参数脚本中可存储该元素节点的节点名称、用于指示需要无障碍化的无障碍化标识、节点级别以及从属的元素节点等信息,参数脚本已预先添加到应用程序中。
S1002、根据参数脚本中的信息,将游戏页面中具有无障化标识的元素节点确定为需要无障碍化的元素节点。
S1003、将需要无障碍化的元素节点的文案信息确定为需要无障碍化的元素节点的播读信息。
S1004、将控件级的元素节点和其对应的播读信息添加到无障碍脚本模板中与控件级对应的列表中,将对象级的元素节点和其对应的播读信息,添加到无障碍脚本模板中该对象级的元素节点从属的元素节点对应的列表中。
S1005、将所有需要无障碍化的元素节点添加到无障碍脚本模板后,得到无障碍化页面对应的无障碍脚本,完成游戏页面的无障碍初始化。
图10所示的方案仅以控件级和对象级两个节点级别为例,实际应用中,针对控件级,还可以是设置第一控件级、第二控件级等多个控件级。
在完成游戏页面的无障碍初始化后,用户开始玩游戏。参考图9,通过以下方式在游戏运行过程中实现对游戏页面的无障碍化播读:
S911、通过监听端口监听用户针对当前显示的游戏页面上需要无障碍化的元素节点的选中操作。
其中,监听端口在游戏应用启动后打开,以监听用户针对当前显示的游戏页面输入的选中操作。本步骤中,如果监听到选中操作,则继续步骤S912,否则继续监听。
S912、游戏页面进程响应针对当前显示的游戏页面上需要无障碍化的元素节点的选中操作,从游戏页面对应的无障碍脚本中获取元素节点的播读信息。
S913、游戏页面进程按照预设的通信协议对获取的播读信息进行封装,得到播读消息,通过通信端口的端口号将播读消息发送给播读进程。
S914、播读进程解析播读消息以获得播读信息,调用SAPI组件对解析获得的播读信息进行播读。
如图11所示,基于与上述页面播读的控制方法相同的发明构思,本发明实施例还提供了一种页面播读的控制装置110,包括信息读取模块1101和通讯模块1102。
信息读取模块1101,用于响应针对当前显示的无障碍化页面上需要无障碍化的元素节点的选中操作,从无障碍化页面对应的无障碍脚本中获取元素节点的播读信息,无障碍脚本存储有无障碍化页面中需要无障碍化的元素节点的播读信息。
通讯模块1102,用于将播读信息发送给播读进程,以使播读进程对播读信息进行播读。
可选地,通讯模块中,播读进程对播读信息进行播读,具体包括:播读进程调用SAPI组件对播读信息进行播读。
可选地,本发明实施例的页面播读的控制装置110还包括通讯建立模块,用于在无障碍化页面完成初始化后,启动播读进程;接收播读进程启动后申请的通信端口的端口号,以建立与播读进程间的通信连接。
可选地,通讯模块1102具体用于:按照预设的通信协议对播读信息进行封装,得到播读消息;通过端口号将播读消息发送给播读进程,以使播读进程按照通信协议解析播读消息以获得播读信息。
可选地,本发明实施例的页面播读的控制装置110还包括无障碍初始化模块,用于:在无障碍化页面完成初始化时,将无障碍化页面中具有无障化标识的元素节点确定为需要无障碍化的元素节点;将需要无障碍化的元素节点的文案信息确定为需要无障碍化的元素节点的播读信息;将需要无障碍化的元素节点和其对应的播读信息添加到预设的无障碍脚本模板中,得到无障碍化页面对应的无障碍脚本。
可选地,针对每个需要无障碍化的元素节点设置节点级别,无障碍初始化模块具体用于:根据各个需要无障碍化的元素节点的节点级别,将需要无障碍化的元素节点和其对应的播读信息,添加到无障碍脚本模板中与需要无障碍化的元素节点的节点级别对应的列表中。
可选地,除最高节点级别外,相邻两个节点级别之间,下一节点级别中的每个元素节点均从属于上一级别中的一个元素节点,且上一级别的元素节点从属有至少两个下一级别的元素节点。
相应地,无障碍初始化模块具体用于:将最高节点级别的元素节点和其对应的播读信息添加到无障碍脚本模板中与最高节点级别对应的列表中;针对除最高节点级别以外的任一节点级别,将节点级别中的元素节点和其对应的播读信息,添加到无障碍脚本模板中与节点级别中的元素节点从属的元素节点对应的列表中。
可选地,信息读取模块1101具体用于:响应针对最高节点级别的元素节点的选中操作,根据选中操作指示的选择顺序以及最高节点级别对应的列表中的元素节点的排序,从最高节点级别对应的列表中确定选中操作对应的元素节点,获取选中操作对应的元素节点的播读信息。
可选地,针对每个节点级别设置了对应的选中操作,信息读取模块1101具体用于:
若当前响应的选中操作为针对除最高节点级别外的任一节点级别的选中操作,且上次响应的选中操作和当前响应的选中操作对应不同的节点级别,则根据当前响应的选中操作指示的选择顺序以及上次响应的选中操作对应的元素节点对应的列表中的元素节点的排序,从上次响应的选中操作对应的元素节点对应的列表中确定出当前响应的选中操作对应的元素节点,获取当前响应的选中操作对应的元素节点的播读信息;或者,
若当前响应的选中操作为针对除最高节点级别外的任一节点级别的选中操作,且上次响应的选中操作和当前响应的选中操作对应相同的节点级别,则根据当前响应的选中操作指示的选择顺序以及上次响应的选中操作对应的元素节点所在的列表中的元素节点的排序,从上次响应的选中操作对应的元素节点所在的列表中确定出当前响应的选中操作对应的元素节点,获取当前响应的选中操作对应的元素节点的播读信息。
可选地,无障碍脚本中,针对每个元素节点还设置有用于指示是否播读的播读属性。
相应地,信息读取模块1101具体用于:从无障碍化页面对应的无障碍脚本中获取播读属性为可播读的元素节点的播读信息。
可选地,本发明实施例的页面播读的控制装置110还包括播读属性更新模块,用于:若无障碍化页面中的元素节点的操作属性从可操作变更为不可操作,在无障碍脚本中将对应元素节点的播读属性从可播读更新为不播读。
可选地,本发明实施例的页面播读的控制装置110还包括播读配置参数模块,用于在从无障碍化页面对应的无障碍脚本中获取播读属性为可播读的元素节点的播读信息之前,根据无障碍化页面的播读配置参数,确定无障碍化页面不需要播读不能操作的元素节点。
本发明实施例提的页面播读的控制装置与上述页面播读的控制方法采用了相同的发明构思,能够取得相同的有益效果,在此不再赘述。
基于与上述页面播读的控制方法相同的发明构思,本发明实施例还提供了一种电子设备,该电子设备具体可以为服务器内部的控制设备或控制系统。如图12所示,该电子设备120可以包括处理器1201和存储器1202。
处理器1201可以是通用处理器,例如中央处理器(CPU)、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器1202作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random Access Memory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本发明实施例中的存储器1202还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
本发明实施例提供了一种计算机可读存储介质,用于储存为上述电子设备所用的计算机程序指令,其包含用于执行上述页面播读的控制方法的程序。
上述计算机存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NAND FLASH)、固态硬盘(SSD))等。
以上,以上实施例仅用以对本申请的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本发明实施例的方法,不应理解为对本发明实施例的限制。本技术领域的技术人员可轻易想到的变化或替换,都应涵盖在本发明实施例的保护范围之内。
Claims (15)
1.一种页面播读的控制方法,其特征在于,包括:
响应针对当前显示的无障碍化页面上需要无障碍化的元素节点的选中操作,从所述无障碍化页面对应的无障碍脚本中获取所述元素节点的播读信息,所述无障碍脚本存储有所述无障碍化页面中需要无障碍化的元素节点的播读信息;
将所述播读信息发送给播读进程,以使所述播读进程对所述播读信息进行播读。
2.根据权利要求1所述的方法,其特征在于,所述播读进程对所述播读信息进行播读,具体包括:
所述播读进程调用SAPI组件对所述播读信息进行播读。
3.根据权利要求2所述的方法,其特征在于,还包括:
在所述无障碍化页面完成初始化后,启动所述播读进程;
接收所述播读进程启动后申请的通信端口的端口号,以建立与所述播读进程间的通信连接。
4.根据权利要求3所述的方法,其特征在于,所述将所述播读信息发送给播读进程,具体包括:
按照预设的通信协议对所述播读信息进行封装,得到播读消息;
通过所述端口号将所述播读消息发送给所述播读进程,以使所述播读进程按照所述通信协议解析所述播读消息以获得所述播读信息。
5.根据权利要求1所述的方法,其特征在于,还包括:
在所述无障碍化页面完成初始化时,将所述无障碍化页面中具有无障化标识的元素节点确定为需要无障碍化的元素节点;
将需要无障碍化的元素节点的文案信息确定为所述需要无障碍化的元素节点的播读信息;
将所述需要无障碍化的元素节点和其对应的播读信息添加到预设的无障碍脚本模板中,得到所述无障碍化页面对应的无障碍脚本。
6.根据权利要求5所述的方法,其特征在于,针对每个需要无障碍化的元素节点设置节点级别,所述将所述需要无障碍化的元素节点和其对应的播读信息添加到预设的无障碍脚本模板中,具体包括:
根据各个需要无障碍化的元素节点的节点级别,将所述需要无障碍化的元素节点和其对应的播读信息,添加到无障碍脚本模板中与所述需要无障碍化的元素节点的节点级别对应的列表中。
7.根据权利要求6所述的方法,其特征在于,除最高节点级别外,相邻两个节点级别之间,下一节点级别中的每个元素节点均从属于上一级别中的一个元素节点,且上一级别的元素节点从属有至少两个下一级别的元素节点;
所述根据各个需要无障碍化的元素节点的节点级别,将所述需要无障碍化的元素节点和其对应的播读信息,添加到无障碍脚本模板中与所述需要无障碍化的元素节点的节点级别对应的列表中,具体包括:
将最高节点级别的元素节点和其对应的播读信息添加到无障碍脚本模板中与所述最高节点级别对应的列表中;
针对除所述最高节点级别以外的任一节点级别,将所述节点级别中的元素节点和其对应的播读信息,添加到所述无障碍脚本模板中与所述节点级别中的元素节点从属的元素节点对应的列表中。
8.根据权利要求7所述的方法,其特征在于,所述响应针对当前显示的无障碍化页面上的元素节点的选中操作,从所述无障碍化页面对应的无障碍脚本中获取所述元素节点的播读信息,具体包括:
响应针对所述最高节点级别的元素节点的选中操作,根据所述选中操作指示的选择顺序以及所述最高节点级别对应的列表中的元素节点的排序,从所述最高节点级别对应的列表中确定所述选中操作对应的元素节点,获取所述选中操作对应的元素节点的播读信息。
9.根据权利要求8所述的方法,其特征在于,针对每个节点级别设置了对应的选中操作,所述响应针对当前显示的无障碍化页面上的元素节点的选中操作,从所述无障碍化页面对应的无障碍脚本中获取所述元素节点的播读信息,还包括:
若当前响应的选中操作为针对除最高节点级别外的任一节点级别的选中操作,且上次响应的选中操作和当前响应的选中操作对应不同的节点级别,则根据当前响应的选中操作指示的选择顺序以及上次响应的选中操作对应的元素节点对应的列表中的元素节点的排序,从上次响应的选中操作对应的元素节点对应的列表中确定出当前响应的选中操作对应的元素节点,获取当前响应的选中操作对应的元素节点的播读信息;
若当前响应的选中操作为针对除最高节点级别外的任一节点级别的选中操作,且上次响应的选中操作和当前响应的选中操作对应相同的节点级别,则根据当前响应的选中操作指示的选择顺序以及上次响应的选中操作对应的元素节点所在的列表中的元素节点的排序,从上次响应的选中操作对应的元素节点所在的列表中确定出当前响应的选中操作对应的元素节点,获取当前响应的选中操作对应的元素节点的播读信息。
10.根据权利要求1所述的方法,其特征在于,所述无障碍脚本中,针对每个元素节点还设置有用于指示是否播读的播读属性;
所述从所述无障碍化页面对应的无障碍脚本中获取所述元素节点的播读信息,包括:
从所述无障碍化页面对应的无障碍脚本中获取播读属性为可播读的元素节点的播读信息。
11.根据权利要求10所述的方法,其特征在于,还包括:
若所述无障碍化页面中的元素节点的操作属性从可操作变更为不可操作,在所述无障碍脚本中将对应元素节点的播读属性从可播读更新为不播读。
12.根据权利要求11所述的方法,其特征在于,所述从所述无障碍化页面对应的无障碍脚本中获取播读属性为可播读的元素节点的播读信息之前,还包括:
根据所述无障碍化页面的播读配置参数,确定所述无障碍化页面不需要播读不能操作的元素节点。
13.一种页面播读的控制装置,其特征在于,包括:
信息读取模块,用于响应针对当前显示的无障碍化页面上需要无障碍化的元素节点的选中操作,从所述无障碍化页面对应的无障碍脚本中获取所述元素节点的播读信息,所述无障碍脚本存储有所述无障碍化页面中需要无障碍化的元素节点的播读信息;
通讯模块,用户将所述播读信息发送给播读进程,以使所述播读进程对所述播读信息进行播读。
14.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至12任一项所述方法的步骤。
15.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,该计算机程序指令被处理器执行时实现权利要求1至12任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910298127.9A CN109947388B (zh) | 2019-04-15 | 2019-04-15 | 页面播读的控制方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910298127.9A CN109947388B (zh) | 2019-04-15 | 2019-04-15 | 页面播读的控制方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109947388A true CN109947388A (zh) | 2019-06-28 |
CN109947388B CN109947388B (zh) | 2020-10-02 |
Family
ID=67015139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910298127.9A Active CN109947388B (zh) | 2019-04-15 | 2019-04-15 | 页面播读的控制方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109947388B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112306469A (zh) * | 2019-08-21 | 2021-02-02 | 北京字节跳动网络技术有限公司 | 一种无障碍组件构建方法、装置、设备及存储介质 |
CN112905078A (zh) * | 2021-05-06 | 2021-06-04 | 浙江口碑网络技术有限公司 | 页面元素处理方法、装置及电子设备 |
CN113190323A (zh) * | 2021-06-02 | 2021-07-30 | 口碑(上海)信息技术有限公司 | 一种信息播放方法、装置、电子设备及存储介质 |
CN113450762A (zh) * | 2021-06-23 | 2021-09-28 | Oppo广东移动通信有限公司 | 文字朗读方法、装置、终端及存储介质 |
CN114461172A (zh) * | 2022-02-09 | 2022-05-10 | 中国工商银行股份有限公司 | 无障碍读屏方法及装置 |
CN114610436A (zh) * | 2022-05-09 | 2022-06-10 | 阿里巴巴(中国)有限公司 | 一种可视化导航方法及装置 |
CN115373649A (zh) * | 2022-07-26 | 2022-11-22 | 哈尔滨亿时代数码科技开发有限公司 | 动态互联网内容无障碍改造方法及装置及网站内容无障碍改造方法 |
WO2023093327A1 (zh) * | 2021-11-26 | 2023-06-01 | 腾讯科技(深圳)有限公司 | 目标程序的测试方法、装置、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1783212A (zh) * | 2004-10-29 | 2006-06-07 | 微软公司 | 转换文本为语音的系统和方法 |
US8166400B2 (en) * | 2009-04-08 | 2012-04-24 | International Business Machines Corporation | Notifying blind users of live region updates |
CN104503779A (zh) * | 2014-12-09 | 2015-04-08 | 北京奇虎科技有限公司 | 一种运行应用程序的方法和装置 |
US9225729B1 (en) * | 2014-01-21 | 2015-12-29 | Shape Security, Inc. | Blind hash compression |
US9268753B2 (en) * | 2011-10-24 | 2016-02-23 | Apollo Education Group, Inc. | Automated addition of accessiblity features to documents |
CN106055721A (zh) * | 2016-07-15 | 2016-10-26 | 深圳市联谛信息无障碍有限责任公司 | 一种网页无障碍处理方法及相关设备 |
CN108460035A (zh) * | 2017-02-17 | 2018-08-28 | 阿里巴巴集团控股有限公司 | 一种无障碍功能状态的获取以及页面处理的方法及装置 |
-
2019
- 2019-04-15 CN CN201910298127.9A patent/CN109947388B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1783212A (zh) * | 2004-10-29 | 2006-06-07 | 微软公司 | 转换文本为语音的系统和方法 |
US8166400B2 (en) * | 2009-04-08 | 2012-04-24 | International Business Machines Corporation | Notifying blind users of live region updates |
US9268753B2 (en) * | 2011-10-24 | 2016-02-23 | Apollo Education Group, Inc. | Automated addition of accessiblity features to documents |
US9225729B1 (en) * | 2014-01-21 | 2015-12-29 | Shape Security, Inc. | Blind hash compression |
CN104503779A (zh) * | 2014-12-09 | 2015-04-08 | 北京奇虎科技有限公司 | 一种运行应用程序的方法和装置 |
CN106055721A (zh) * | 2016-07-15 | 2016-10-26 | 深圳市联谛信息无障碍有限责任公司 | 一种网页无障碍处理方法及相关设备 |
CN108460035A (zh) * | 2017-02-17 | 2018-08-28 | 阿里巴巴集团控股有限公司 | 一种无障碍功能状态的获取以及页面处理的方法及装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112306469A (zh) * | 2019-08-21 | 2021-02-02 | 北京字节跳动网络技术有限公司 | 一种无障碍组件构建方法、装置、设备及存储介质 |
CN112905078A (zh) * | 2021-05-06 | 2021-06-04 | 浙江口碑网络技术有限公司 | 页面元素处理方法、装置及电子设备 |
CN113190323A (zh) * | 2021-06-02 | 2021-07-30 | 口碑(上海)信息技术有限公司 | 一种信息播放方法、装置、电子设备及存储介质 |
CN113450762A (zh) * | 2021-06-23 | 2021-09-28 | Oppo广东移动通信有限公司 | 文字朗读方法、装置、终端及存储介质 |
CN113450762B (zh) * | 2021-06-23 | 2024-05-14 | Oppo广东移动通信有限公司 | 文字朗读方法、装置、终端及存储介质 |
WO2023093327A1 (zh) * | 2021-11-26 | 2023-06-01 | 腾讯科技(深圳)有限公司 | 目标程序的测试方法、装置、设备及存储介质 |
CN114461172A (zh) * | 2022-02-09 | 2022-05-10 | 中国工商银行股份有限公司 | 无障碍读屏方法及装置 |
CN114610436A (zh) * | 2022-05-09 | 2022-06-10 | 阿里巴巴(中国)有限公司 | 一种可视化导航方法及装置 |
CN115373649A (zh) * | 2022-07-26 | 2022-11-22 | 哈尔滨亿时代数码科技开发有限公司 | 动态互联网内容无障碍改造方法及装置及网站内容无障碍改造方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109947388B (zh) | 2020-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109947388B (zh) | 页面播读的控制方法、装置、电子设备及存储介质 | |
JP7375186B2 (ja) | 弾幕処理方法、装置、電子機器及びプログラム | |
CN110227267B (zh) | 语音技能游戏编辑方法、装置、设备及可读存储介质 | |
US20110075818A1 (en) | Unified Interface and Routing Module for Handling Audio Input | |
CN110246499B (zh) | 家居设备的语音控制方法及装置 | |
CN111063353B (zh) | 允许自定义语音交互内容的客户端处理方法及用户终端 | |
US20120184370A1 (en) | Method and system for sharing speech recognition program profiles for an application | |
CN113253880B (zh) | 互动场景的页面的处理方法、装置及存储介质 | |
CN108376067A (zh) | 一种应用操作方法及其设备、存储介质、终端 | |
CN111142833B (zh) | 基于情景模式开发语音交互产品的方法及系统 | |
CN106792197A (zh) | 一种视频播放区域布局的切换方法及系统 | |
CN109147022A (zh) | Vr数据渲染方法和系统、计算机设备、计算机存储介质 | |
CN108415698A (zh) | 在语音对话平台的技能中添加控件的方法 | |
CN111135579A (zh) | 一种游戏软件的交互方法、装置、终端设备及存储介质 | |
CN107943771A (zh) | 响应文本的生成方法、装置、处理器、及计算机可读介质 | |
CN110660391A (zh) | 基于rpa接口实现大屏终端语音控制的定制方法及系统 | |
CN104825026A (zh) | 一种具有上网功能的水杯 | |
CN103596051A (zh) | 电视装置及其虚拟主持人显示方法 | |
CN113282268B (zh) | 音效配置方法和装置、存储介质及电子设备 | |
CN112306450A (zh) | 信息处理方法、装置 | |
CN110347454A (zh) | 应用程序主题设定方法、终端设备控制方法及装置、终端设备及计算机可读存储介质 | |
CN108446117A (zh) | 在语音对话平台的产品中配置ui的方法及系统 | |
CN108062952A (zh) | 一种语音控制方法、装置及系统 | |
US7031440B1 (en) | Interactive voice response systems with general-purpose blocks | |
CN113144606B (zh) | 虚拟对象的技能触发方法及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
OL01 | Intention to license declared | ||
OL01 | Intention to license declared |