在任意时间到系统的异步交互移交的制作方法

文档序号:16049681发布日期:2018-11-24 11:10阅读:210来源:国知局

随着计算技术的进步,已经开发了用于与计算机交互的各种不同技术。然而,一些交互由计算机以可能缓慢且低效的方式管理,从而导致交互的延迟或滞后和/或计算机资源(例如,存储器、处理能力)的大量使用。



技术实现要素:

提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。

根据一个或多个方面,接收对计算设备的用户输入,该用户输入是与计算设备的用户交互的一部分。向计算设备上的应用提供用户输入的指示,并且在第一用户交互期间的任意时间从应用接收系统模块将处理用户交互的指示。响应于接收到系统模块将处理用户交互的指示,系统模块继续接收用于用户交互的用户输入,通过系统模块处理用户交互而不是应用处理用户交互来确定计算设备如何改变数据的显示,并基于系统模块对用户交互的处理来控制数据的显示。

根据一个或多个方面,应用从系统模块接收对计算设备的用户输入的指示,该用户输入是与计算设备的用户交互的一部分。应用在用户交互期间或之后的任意时间确定是将用户交互移交到系统模块还是保持处理用户交互。响应于确定将用户交互移交到系统模块,向系统模块提供系统模块将处理用户交互的指示。响应于确定保持处理用户交互,做出如何基于用户输入改变计算设备对数据的显示的确定,并且向系统模块提供如何改变数据的显示的指示。

附图简述

结合附图来描述具体实施方式。在附图中,附图标记最左边的数字标识该附图标记首次出现的附图。在说明书和附图的不同实例中使用相同的附图标记可指示相似或相同的项目。附图中所表示的各实体可指示一个或多个实体并且因而在讨论中可互换地作出对各实体的单数或复数形式的引用。

图1解说其中可使用本文讨论的在任意时间处向系统的异步交互移交的示例环境。

图2解说根据一个或多个实施例的包括应用和操作系统的示例系统。

图3和4解说使用本文讨论的技术的示例动作流。

图5a和5b是解说根据一个或多个实施例的如本文所讨论的用于在任意时间向系统异步交互移交的示例过程的流程图。

图6解说包括示例计算设备的示例系统,该示例计算设备代表可实现本文中所描述的各种技术的一个或多个系统和/或设备。

详细描述

本文讨论了在任意时间向系统的异步交互移交技术。通常,计算设备包括具有异步交互移交支持的操作系统。作为与计算设备的用户交互的一部分的用户输入由操作系统接收。用户输入可以各种方式提供,诸如笔、触控笔、手指、鼠标等,其向触摸屏或其他输入设备提供输入。用户输入是用户交互的一部分,诸如特定手势(例如,平移或滚动手势、捏合或拉伸手势、拖放手势等)。操作系统接收用户输入并确定(例如,基于屏幕或显示器上的位置)将被通知用户输入的应用。

操作系统向应用通知用户输入,并且应用确定是应用还是操作系统将处理用户交互。处理用户交互是指基于用户交互确定对数据的显示做出什么改变。例如,对于作为平移手势的用户交互,用户交互的处理是指响应于平移手势确定针对应用对数据的显示做出什么改变(例如,基于平移手势的方向)。处理用户交互可选地还指基于作为用户交互的一部分接收的用户输入来执行其他操作或功能。

对于应用处理的用户交互,用户输入继续被操作系统接收,操作系统向应用提供用户输入。应用基于用户输入确定对数据的显示做出什么改变,并向操作系统提供这些改变的指示。然后,操作系统继续适当地显示经改变的数据。

对于操作系统将处理的用户交互,应用通知操作系统处理用户交互。在用户交互的持续时间内,操作系统然后基于用户交互确定对数据的显示做出什么改变,并且不需要(并且通常不)向应用通知用户输入。因此,应用将用户交互移交到操作系统(本文也称为将用户交互移交到系统)。用户交互或用户交互处理被称为异步是因为一旦用户交互被移交到操作系统,用户交互就独立于应用正在进行什么而被处理。应用可确定在用户交互期间的任何时间或在如应用期望的用户交互结束之后将用户交互移交到操作系统。例如,在非常快速用户交互的情况下,应用可能足够慢以至于直到在完成用户交互后才做出将用户交互移交到操作系统的决定。

图1解说其中可使用本文讨论的任意时间处的到系统的异步交互移交的示例环境100。环境100包括计算设备102,该计算设备102可被具体化为任何合适的设备,诸如例如台式计算机、服务器计算机、膝上型计算机或上网本计算机、移动设备(例如,平板或大屏设备、蜂窝式或其他无线电话(例如,智能电话)、记事本计算机、移动站)、可穿戴设备(例如,眼镜、头戴式显示器、手表、手环)、娱乐设备(例如,娱乐电器、通信地耦合到显示设备的机顶盒、游戏控制台)、物联网(iot)设备(例如,具有用于允许与其他设备的通信的软件、固件和/或硬件的对象或事物)、电视机或其他显示设备、汽车计算机,等等。因此,计算设备102的范围可以是从具有充足存储器和处理器资源的全资源设备(如个人计算机、游戏控制台)到具有有限存储器和/或处理资源的低资源设备(如传统机顶盒、手持式游戏控制台)。

计算设备102包括允许各种活动和任务能够被执行的各种不同的功能。例如,计算设备102包括具有异步交互移交支持的操作系统104、多个应用106以及通信模块108。一般而言,操作系统104表示用于抽象计算设备102的诸如硬件、内核级模块和服务等各系统组件的功能。例如,操作系统104可向应用106抽象计算设备102的各组件以允许各组件与应用106之间的交互。

应用106表示用于经由计算设备102执行不同任务的功能。应用106的示例包括文字处理应用、信息收集和/或笔记记录应用、电子表格应用、web浏览器、游戏应用等等。应用106可被安装在计算设备102本地以经由本地运行时环境来执行,和/或可表示到诸如基于云的服务、web应用等远程功能的门户。因此,应用106可采取各种形式,诸如在本地执行的代码、到远程地主存的服务的门户等。

通信模块108表示用于允许计算设备102能够通过有线和/或无线连接进行通信的功能。例如,通信模块108表示用于经由各种不同有线和/或无线技术和协议进行通信的硬件和逻辑。

计算设备102还包括显示设备110和输入机构112。显示设备110一般表示用于计算设备102的视觉输出的功能。附加地,显示设备110可选地表示用于接收诸如触摸输入、笔输入等各种类型的输入的功能。输入机构112一般表示用于接收到计算设备102的输入的不同的功能。输入机构112的示例包括姿势敏感传感器和设备(例如,诸如基于触摸的传感器和移动跟踪传感器(例如,基于相机))、鼠标、键盘、触控笔、触摸板、游戏控制器、加速度计、带有伴随的语音识别软件的话筒等。输入机构112可与显示器110分开或集成在一起,集成示例包括带有集成的触摸敏感或移动敏感传感器的姿势敏感显示器。输入机构112可选地包括笔数字化仪118和/或触摸输入设备120。笔数字化仪118表示用于将到显示设备110和/或触摸输入设备120的各种类型的输入转换成可由计算设备102以各种方式使用(诸如用于生成数字墨水、平移或缩放数据的显示等)的数字数据的功能。触摸输入设备120表示用于提供与显示器110分开的触摸输入的功能。

尽管本文参考接收各种类型的输入(诸如触摸输入或笔输入)的显示设备110,但替换地,显示设备110可能不接收此类输入。相反,被实现为触摸输入设备120的分开的输入设备(例如,触摸板)可接收此类输入。附加地或替换地,显示设备110可能不接收此类输入,但笔(诸如笔122)可被实现为触摸输入设备120,并且笔提供对输入的指示而不是被显示设备110感测到的输入。

输入可由用户以各种不同方式中的任一种提供。例如,可使用包括用于与计算设备102交互的电子组件(例如,可向笔122的内部组件提供电力的电池、磁体或支持在显示设备110上方的悬停检测的其他功能性等)的有源笔来提供输入。作为另一示例,可使用没有内部电子器件的触控笔、用户的手指、鼠标、可听输入、手或其他身体部位运动(例如,使用相机和/或骨架跟踪)等来提供输入。

图2解说根据一个或多个实施例的包括应用和操作系统的示例系统200。参考图1的元件讨论图2。具有异步交互移交支持的操作系统104包括显示系统模块202和可选的一个或多个输入驱动器204。尽管被解说为操作系统104的一部分,但显示系统模块202的至少一部分和/或输入驱动器204的至少一部分可在计算设备102的其他组件或模块中实现(例如,作为基本输入/输出系统(bios)的一部分)。显示系统模块202也被称为合成模块(compositionmodule)或合成器(compositor)。

显示系统模块202包括显示管理器模块206、用户输入路由模块208和用户交互处理程序模块210。显示管理器模块206管理数据在显示器或屏幕(诸如显示器110)上的显示。将被显示的数据可由应用106确定并提供给显示系统模块202和/或可由用户交互处理程序模块210确定并提供。

用户输入路由模块208管理由显示系统模块接收的用户输入的路由。由计算设备102接收的用户输入由用户输入路由模块208分析,以确定哪个程序或应用负责处理或以其他方式响应用户交互(用户输入是用户交互的一部分)。显示系统模块202知道哪些输入位置(例如,显示器的位置)对应于哪些应用或程序。对于给定用户输入,用户输入路由模块208确定哪个应用或程序对应于用户输入的位置(例如,对用户输入执行命中测试),并将用户输入提供给相应的应用或程序。

用户输入是指表示由用户输入的数据,诸如用户触摸或选择的位置,位置被触摸或选择的时间戳(例如,允许做出由用户执行的动作或手势的确定),用于可听输入命令的音频数据等。用户交互是指操作、命令和/或功能。用户交互由一个或多个用户输入组成。例如,轻击手势(例如,触摸或点击对象)可包括单个用户输入,该单个用户输入是触摸屏或其他输入设备的用户所触摸的位置。作为另一示例,平移手势(例如,在特定方向上跨触摸屏或其他输入设备滑动手指或其他对象)可包括多个用户输入,每个用户输入是当用户在触摸屏或其他输入设备上滑动他或她的手指或其他物体时触摸屏或其他输入设备的用户所触摸的位置。在一个或多个实施例中,用户交互由三个部分组成:对象向下事件(例如,手指或其他对象触摸触摸屏或其他输入设备)、对象向上事件(例如,手指或其他对象被从触摸屏或其他输入设备抬起或以其它方式不再触摸触摸屏或其他输入设备)、以及对象移动,其是在对象向下事件和对象向上事件之间发生的对象(或由对象控制的输入设备)的移动。

各种不同用户交互中的任一种都可与本文讨论的技术一起使用。例如,用户交互可是轻击或点击操作、滚动操作、拖放操作、平移操作、捏合-拉伸操作等。

显示系统模块202向应用106提供对应于应用106的用户输入。应用106包括用户交互处理程序模块220和用户交互移交确定模块222。用户交互移交确定模块222确定对应于用户输入的用户交互以及是否将用户交互的处理移交到系统(例如,显示系统模块202)或者将对用户交互的处理保持在应用106处。用户交互移交确定模块222可使用诸如触摸手势确定技术之类的各种不同的公共和/或专有技术中的任何技术来确定用户交互。

用户交互移交确定模块222可以各种不同方式中的任何方式确定是否将对用户交互的处理移交到显示系统模块202。在一个或多个实施例中,用户交互移交确定模块222维护哪些用户交互将被移交到显示系统模块的列表或记录(和/或哪些用户交互将不被移交到显示系统模块而是由用户交互处理程序模块220处理的列表或记录)。附加地或替代地,可应用各种其他规则或标准来确定是否要将用户交互移交到显示系统模块,诸如应用106已经在执行什么当前操作或功能、用户输入的位置、用户输入的移动速度、由应用106执行的即将到来的操作或功能,等等。

在其中要将用户交互的处理维持在应用106处的情况下,用户输入继续被应用106从显示系统模块202接收,并且用户交互的处理由用户交互处理程序模块220执行。用户交互处理程序模块220基于用户输入确定对应用106所显示的数据做出什么改变,并向显示系统模块202提供该改变的指示。此指示可以是要显示的特定数据、所显示的数据中的改变,等等。显示管理器模块206继续如应用106所指示地对所显示的数据做出改变。

在其中对用户交互的处理要被移交到显示系统模块202的情况下,用户交互移交确定模块222向显示系统模块202提供用户交互正被移交到显示系统模块202的指示。在用户交互的持续时间内,用户输入路由模块208将用户输入提供给用户交互处理程序模块210而不是应用106的用户交互处理程序模块220。在用户交互的持续时间内,应用106不需要接收用户输入(通常不接收用户输入)。

用户交互处理程序模块210处理用户交互。用户交互处理程序模块210能够访问由应用106显示的数据,且因此可自行确定要对应用106显示的数据所做的改变,而不是从应用106获得这种改变的指示。例如,应用106可向显示系统模块202提供标识应用106的数据的数据容器(例如,可被显示(尽管不一定一次全部显示)的数据的屏幕)或以其他方式使该数据容器对显示系统模块202可用。因此,用户交互处理程序模块210准备好能够访问数据,以便基于用户交互确定要做出的改变。作为另一示例,应用106可向显示系统模块202提供描述由应用106设立的大面积视觉数据的数据结构或以其他方式使该数据结构对显示系统模块202可用,并且用户交互处理程序模块210可访问该数据结构以基于用户输入确定显示该视觉数据的什么部分。

用户交互处理程序模块210继续在用户交互的持续时间内处理用户交互。在用户交互完成之后,将下一用户输入(例如,下一用户交互的开始)提供给应用106,并且用户交互移交确定模块222确定是否将该下一用户交互移交到显示系统模块202或者使下一用户交互的处理由应用106的用户交互处理程序模块220来处理。在一个或多个实施例中,用户输入路由模块208维护指示针对应用106的当前用户交互是否由用户交互处理程序模块210处理的记录(例如,标志),且因此容易知道是否将用户输入路由到用户交互处理程序模块210或应用106。当针对应用106的当前用户交互完成时,可更新此记录(例如,清除标志)。可可选地为不同的用户交互维护不同的记录,因此显示系统模块202可针对一个应用106而不针对另一应用106处理当前用户交互。

用户交互的完成可以各种不同方式来确定。在一个或多个实施例中,当输入设备不再被感测为向计算设备102提供输入时(例如,用户将他或她的手指抬离触摸屏、不再感测到有源笔接近(例如,在阈值距离内)触摸屏或其他输入设备),用户交互完成。附加地或替代地,可使用其他技术来确定用户交互的完成。例如,用户交互可具有受约束或受限的量的用户输入,并且当已经接收到该量的用户输入时用户交互完成(例如,手指滑动不超过一英寸的手势,以及在用户输入指示跨触摸屏或其他输入设备的更精细滑动一英寸之后,用户交互完成)。作为另一示例,当输入设备不再被感测为向计算设备102提供输入并且用户输入的副作用已经完成时用户交互完成(例如,如果用户交互是开始列表滚动的轻弹手势,则当输入设备不再被感测为向计算设备102提供输入并且列表已停止滚动时用户交互完成)。作为又一示例,当用户交互改变时用户交互完成。例如,应用106可移交应用106期望为一种类别的用户交互(例如,滚动)的用户交互,但是用户交互实际上可能是显示系统模块202不理解的不同类别的用户交互(并因此结束显示系统模块202本认为正被输入的用户交互,因此对应用的用户输入的提供恢复)。

在一个或多个实施例中,显示系统模块202缓冲它向应用106提供的用户输入。因此,如果应用106将当前用户交互的处理移交到显示系统模块202,则显示系统模块202具有已经为当前用户交互接收的用户输入,并且可继续在给定经缓冲用户输入的情况下适当地处理用户交互。

图3解说使用本文讨论的技术的示例动作流300。流300包括由诸如触摸屏或其他输入设备、输入驱动器204等之类的硬件和/或输入驱动器302执行的动作。流300还包括由系统进程304执行的动作,诸如由显示系统模块202执行的动作。该流还包括由应用进程306(诸如应用106)执行的动作。

硬件和/或驱动器302接收用户输入312。用户输入312被提供给系统进程304,系统进程304对用户输入执行系统命中测试314。系统命中测试314确定用户输入对应于哪个应用(例如,哪个窗口被触摸或当前是活动窗口)。用户输入312被提供给应用进程306,应用进程306对用户输入执行应用命中测试316。应用命中测试316确定用户输入对应于应用用户界面的应用窗口或其他部位的哪个部分。应用进程306执行手势检测318以标识用户正在输入什么用户交互(例如,什么手势),以及是自行处理用户交互还是将用户交互的处理移交到系统进程304的确定。应用进程306还可确定它需要附加用户输入以确定是自行处理用户交互还是将用户交互的处理移交到系统进程304,这可被视为应用进程306确定自行处理用户交互。

流300假设应用进程306确定将用户交互的处理移交到系统进程304。因此,向系统进程304提供移交的指示320(例如,其可被称为捕获请求)。响应于指示320,系统进程304继续处理322用户交互。对系统进程304的此指示启动由系统进程304(例如,显示系统模块202)对用户交互的处理。

图4解说使用本文讨论的技术的示例动作流400。流400包括由硬件和/或输入驱动器302和系统进程304执行的动作。在系统进程304启动用户交互的处理之后(例如,通过图3的指示320),该输入流的大部分可被短路。如流400所示,硬件和/或驱动器302接收用户输入332,用户输入332是与用户输入312相同的用户交互的一部分。用户输入332被提供给系统进程304,系统进程304对用户输入执行系统命中测试334。系统命中测试334确定用户输入对应于哪个应用(例如,哪个窗口被触摸或当前是活动窗口)。系统命中测试334指示用户输入对应于应用306,并且系统进程304知道系统进程304正在针对应用306处理当前用户交互。系统进程304因此处理用户交互336。

因此,在将用户交互的处理移交给系统进程304之后,用户交互可完全在硬件和/或输入驱动器302和系统进程304中被处理,而无需在系统进程304到应用进程306之间进行任何上下文切换,并且无需等待应用306对用户输入做出响应。这改善了计算设备的性能,允许更快地处理用户交互并减少对计算设备中的资源使用的影响。

如从本文的讨论中可看出(例如,图3和4)的,操作系统具有系统进程(例如,称为合成服务进程),该进程知道在任何给定时间显示器上的所有内容的位置。因此,该系统进程命中测试以知道发送用户输入的位置。本文的讨论的技术允许,不是合成进程将用户输入发送到应用进程(以及应用进程做出改变并将其发送回合成进程),应用进程告诉合成进程不向应用进程发送用户输入而仅是保持用户输入并在系统进程内处理用户交互。这减少了总延迟,减少了处理器(例如,cpu)使用等等(例如,由于减少了跨进程上下文切换)。

图5a和5b是解说根据一个或多个实施例的如本文所讨论的用于在任意时间向系统异步交互移交的示例过程500的流程图。过程500可以用软件、固件、硬件、或其组合来实现。图5a和图5b的左侧解说的过程500的动作由显示系统模块执行,诸如图2的显示系统模块202或图3或图4的系统进程304。图5a和图5b的右侧解说的过程500的动作由应用执行,诸如图1或图2的应用106或图3或图4的应用进程306。过程500被示为一组动作,并且不仅限于所示出的用于执行各种动作的操作的顺序。过程500是用于实现在任意时间到系统的异步交互移交的示例过程;实现在任意时间到系统的异步交互移交的附加讨论参考不同附图被包括在本文中。

在过程500中,接收作为用户交互的一部分的用户输入(动作502)。如上所讨论的,可接收各种不同的用户交互。

向应用提供用户输入的指示(动作504)。此指示可以各种方式提供,诸如通过唤起(invoke)应用的应用编程接口(api)、调用或唤起(invoke)应用的回调函数、经由计算设备的操作系统的消息收发系统发送消息或通知等。

应用从显示系统模块接收用户输入的指示(动作506)并确定是否将用户交互移交到显示系统模块(动作508)。如上所讨论的,可以各种方式做出是否将用户交互移交到显示系统模块的确定。应用决定将哪些用户交互移交到显示系统模块,并且对于每个被移交的用户交互,应用决定移交何时发生。

在其中应用确定将用户交互移交到显示系统模块的情况下,向显示系统模块提供用户交互正被移交到显示系统模块的指示(动作510)。显示系统模块接收显示系统模块将处理用户交互的指示(动作512)并继续接收用户输入并处理用户交互(动作514)。处理用户交互包括继续接收用于用户交互的用户输入并确定如何改变数据的显示。用户输入不需要被(并且通常不被)提供给应用以用于用户交互的剩余部分。

显示系统模块继续如处理所指示地控制数据的显示(动作516)。此控制在用户交互期间继续。

返回到动作508,在其中应用确定继续处理用户交互而不是将用户交互移交到显示系统模块的情况下,应用基于用户输入确定如何控制数据的显示(图5b的动作518)。向显示系统模块提供如何控制数据的显示的指示(动作520),该显示系统模块接收指示(动作522)。显示系统模块继续如应用所指示地控制数据的显示(动作524)。例如,显示系统模块可基于从应用接收的指示来改变显示哪些数据。

返回图2,应当注意,应用106可确定在用户交互期间或之后的任何时间(在应用106期望的任何任意时间)将用户交互移交到显示系统模块202。例如,响应于当前用户交互被应用106确定,响应于用户交互的初始用户输入被应用106接收(即使用户交互尚未被确定),或者替代地在某个其它时间,应用106可确定将用户交互移交到显示系统模块202。作为另一示例,应用106可确定在用户交互已完成后将用户交互移交到显示系统模块202。如上所讨论的,显示系统模块202可缓冲它提供给应用106的用户输入,并且因此在用户交互已完成后在给定经缓冲的用户输入的情况下容易地适当地处理用户交互。

还应注意,在一个或多个实施例中,如果应用106将用户交互移交到显示系统模块202,则显示系统模块202处理整个用户交互。替代地,如果应用106将用户交互移交到显示系统模块202,应用106可确定如何控制数据的显示并针对用户交互的一部分向显示系统模块202提供如何控制数据的显示的指示并随后将用户交互移交到显示系统模块202,以便显示系统模块202处理用户交互的剩余部分。

在一个或多个实施例中,应用106将用户交互分组为两个不同类别之一:由应用106处理的一个类别,以及应用106移交到系统处理的另一类别。哪些用户交互被包括在哪些类别中可以如应用106所期望的各种不同方式来确定。例如,应用106具有定制逻辑的用户交互(例如,期望以特定方式处理,其可以不同于用于处理用户交互的传统或常规方式)被包括在应用106处理的类别中,但是应用106不具有定制逻辑的用户交互(例如,捏合-缩放手势)被包括在应用106移交到系统的类别中。

在一个或多个实施例中,应用106向显示系统模块202提供用于用户交互的各种配置参数的指示。这些配置参数可包括例如针对特定手势移动多远(例如,滚动或平移速度)。因此,对于显示系统模块202处理的每个用户交互,应用106可向显示系统模块202通知关于如何执行该用户交互的各种参数。此指示可在各种时间提供,诸如在应用106开始运行时,在应用106将用户交互的处理移交到显示系统模块时等等。这些配置参数可被提供给显示系统模块202,例如,通过应用106调用由显示系统模块202暴露的api。这些配置参数也可如应用106所期望地随时间改变。

因此,本文讨论的技术描述了系统短路输入流水线和异步处理交互的能力。这包括在输入序列中的任意点启动异步交互。系统输入处理可被用于驱动滚动或其他类型的动画。不管应用线程的速度如何,异步输入处理都允许平滑的交互。此外,通过在从输入序列的开始(例如,用户交互的开始)就启动系统交互时以及在输入序列(例如,用户交互)中的任意点启动系统交互均减小延迟,本文讨论的技术提供了性能益处。此外,因为输入由系统(例如,显示系统模块202)而不是应用进程来处理,本文讨论的技术通过减少用于处理输入(例如,用户交互)的进程之间的上下文切换提供了性能益处。

使用本文讨论的技术,应用不需要负责处理输入、检测手势、移动他们的视觉和内容、并随后将这些改变提交给系统。相反,应用进程仍将接收用户输入并接着在针对应用选择让系统合成器(例如,显示系统模块202)处理的用户交互的用户交互检测(例如,针对手势的手势检测)之后,应用可命令系统代表应用从输入序列中的任意点处开始处理输入。例如,轻击可继续由应用处理,而平移可被重定向回到合成器以处理。

在启动系统输入处理之后,输入流的大部分可被短路(例如,导致图4中所解说的流)。交互可被完全在系统中处理而无需任何上下文切换或等待应用响应。

作为示例,本文讨论的技术可用于其中应用具有用于执行拖动操作的定制逻辑的场景,但是一旦应用检测到捏合-拉伸手势,则应用就希望系统开始处理该手势。因此,应用处理拖动操作,但将捏合-拉伸手势处理移交给操作系统。

本文讨论的技术还允许输入在系统不支持自行处理当前用户交互的情况下继续流向应用。例如,轻击手势可能不需要任何系统处理,因此针对该手势的输入可流经到应用,而不会损害由系统处理的任何未来平移或捏合-拉伸交互的性能。

本文讨论的技术还允许用户交互的平滑操作。用户交互可由显示系统模块处理并且是平滑的过程,而不管应用正在执行什么其他操作,这是因为应用被短路并且不依赖于处理用户交互。

虽然本文中参考特定模块讨论了特定功能,但应注意,本文中讨论的个体模块的功能可被分成多个模块,和/或多个模块的至少一些功能可被组合在单个模块中。附加地,本文讨论的执行某一动作的特定模块包括该特定模块本身执行该动作或另选地该特定模块调用或与其他方式访问执行该动作的另一组件或模块(或与该特定模块联合执行该动作)。因而,执行某一动作的特定模块包括该特定模块本身执行该动作或由该特定模块调用或以其他方式访问的另一模块执行该动作。

图6在600概括地示出了包括示例计算设备602的示例系统,该示例系统表示可以实现本文中所描述的各种技术的一个或多个系统和/或设备。计算设备602可以是,例如,服务提供方的服务器、与客户端相关联的设备(例如,客户端设备)、片上系统、和/或任何其他合适的计算设备或计算系统。

所示的示例计算设备602包括处理系统604、一个或多个计算机可读介质606,以及相互通信地耦合的一个或多个i/o接口608。尽管没有示出,计算设备602可进一步包括系统总线或将各种组件相互耦合的其他数据和命令传输系统。系统总线可以包括不同总线结构中的任一个或其组合,诸如存储器总线或存储器控制器、外围总线、通用串行总线和/或利用各种总线体系结构中的任一种的处理器或局部总线。也构想了各种其他示例,诸如控制和数据线。

处理系统604表示使用硬件执行一个或多个操作的功能。因此,处理系统604被示为包括可被配置成处理器、功能块等的硬件元件610。这可包括在作为专用集成电路或使用一个或多个半导体构成的其他逻辑设备的硬件中的实现。硬件元件610不受形成它们的材料或者其中利用的处理机制的限制。例如,处理器可以由半导体和/或晶体管(例如,电子集成电路(ic))构成。在这一上下文中,处理器可执行指令可以是可电子地执行的指令。

计算机可读介质606被例示为包括存储器/存储612。存储器/存储612表示与一个或多个计算机可读介质相关联的存储器/存储容量。存储器/存储612可包括易失性介质(如随机存取存储器(ram))和/或非易失性介质(如只读存储器(rom)、闪存、光盘、磁盘等)。存储器/存储612可包括固定介质(例如,ram、rom、固定硬盘驱动器等)以及可移动介质(例如闪存、可移动硬盘驱动器、光盘等)。计算机可读介质606可以下面进一步描述的各种方式来配置。

一个或多个输入/输出接口608表示允许用户向计算设备602输入命令和信息的功能,并且还允许使用各种输入/输出设备向用户和/或其他组件或设备呈现信息。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如,用于语音输入)、扫描仪、触摸功能(例如,电容性的或被配置来检测物理触摸的其他传感器)、相机(例如,可采用可见或诸如红外频率的不可见波长来将不涉及触摸的移动检测为姿势),等等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡、触觉响应设备,等等。因此,计算设备602可以下面进一步描述的各种方式来配置以支持用户交互。

计算设备602还包括具有异步交互移交支持614的操作系统。具有异步交互移交支持614的操作系统提供如上所讨论的各种用户交互移交功能性。具有异步交互移交支持614的操作系统可实现例如具有图1或图2的异步交互移交支持的操作系统104。

本文可以在软件、硬件元件或程序模块的一般上下文中描述各种技术。一般而言,此类模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元件、组件、数据结构等。本文使用的术语“模块”、“功能”和“组件”一般表示软件、固件、硬件或其组合。本文描述的技术的各特征是平台无关的,从而意味着该技术可在具有各种处理器的各种计算平台上实现。

所描述的模块和技术的实现可以被存储在某种形式的计算机可读介质上或跨某种形式的计算机可读介质传送。计算机可读介质可包括可由计算设备602访问的各种介质。作为示例而非限制,计算机可读介质可包括“计算机可读存储介质”和“计算机可读信号介质”。

“计算机可读存储介质”指相对于仅信号传输、载波或信号本身而言,启用对信息的持久存储和/或有形存储的介质和/或设备。因此,计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括以适合于存储诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路、或其他数据等的方法或技术来实现的诸如易失性和非易失性、可移动和不可移动介质和/或存储设备的硬件。该计算机可读存储介质的示例包括但不限于,ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光存储、硬盘、磁带盒、磁带、磁盘存储或其他磁存储设备、或者可适用于存储所需信息并可由计算机访问的其他存储设备、有形介质或制品。

“计算机可读信号介质”可以指被配置成诸如经由网络向计算设备602的硬件传输指令的信号承载介质。信号介质通常用诸如载波、数据信号、或其他传输机制等经调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据。信号介质还包括任何信息传送介质。术语“已调制数据信号”是指具有以在信号中编码信息的方式被设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括有线介质,诸如有线网络或直接线路连接,以及无线介质,诸如声学、rf、红外线和其他无线介质。

如先前所描述的,硬件元件610和计算机可读介质606代表以硬件形式实现的指令、模块、可编程器件逻辑和/或固定器件逻辑,其可在某些实施例中被采用来实现此处描述的技术的至少某些方面。硬件元件可包括集成电路或片上系统、应用专用集成电路(asic)、现场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld),和用硅或其他硬件设备实现的组件。在此上下文中,硬件元件可以充当处理设备,该处理设备执行由该硬件元件以及用于存储供执行的指令的硬件设备(例如前面描述的计算机可读存储介质)所体现的指令、模块和/或逻辑所定义的程序任务。

前面的组合也可被采用来实现本文所述的各种技术。相应地,软件、硬件,或模块和其他程序模块可被实现为一个或多个指令和/或在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件610实现的逻辑。计算设备602可被配置成实现对应于软件和/或硬件模块的特定指令和/或功能。因此,将模块实现为可由计算设备602执行为软件的模块可至少部分以硬件完成,例如,通过使用计算机可读存储介质和/或处理系统的硬件元件610。指令和/或功能可以是一个或多个制品(例如,一个或多个计算设备602和/或处理系统604)可执行/可操作的,以实现本文描述的技术、模块、以及示例。

如在图6中进一步例示的,示例系统600使得用于当在个人计算机(pc)、电视设备和/或移动设备上运行应用时的无缝用户体验的普遍存在的环境成为可能。服务和应用在所有三个环境中基本相似地运行,以便当使用应用、玩视频游戏、看视频等时在从一个设备转换到下一设备时得到共同的用户体验。

在示例系统600中,多个设备通过中央计算设备互连。中央计算设备对于多个设备可以是本地的,或者可以位于多个设备的远程。在一个或多个实施例中,中央计算设备可以是通过网络、互联网或其他数据通信链路连接到多个设备的一个或多个服务器计算机的云。

在一个或多个实施例中,该互连架构使得功能能够跨多个设备递送以向多个设备的用户提供共同且无缝的体验。多个设备的每一个可具有不同的物理要求和能力,且中央计算设备使用一平台来使得为设备定制且又对所有设备共同的体验能被递送到设备。在一个或多个实施例中,创建目标设备的类,且针对设备的通用类来特制体验。设备类可由设备的物理特征、用途类型或其他共同特性来定义。

在各种实现中,计算设备602可采取各种各样不同的配置,诸如用于计算机616、移动设备618和电视机620用途。这些配置中的每一个包括可具有一般不同的配置和能力的设备,并且因而计算设备602可根据不同的设备类中的一个或多个来配置。例如,计算设备602可被实现为计算机616类的设备,该类包括个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本等。

计算设备602还可被实现为移动设备618类的设备,该类包括诸如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏幕计算机等移动设备。计算设备602还可被实现为电视机620类的设备,该类包括在休闲观看环境中具有或连接到通常更大的屏幕的设备。这些设备包括电视机、机顶盒、游戏控制台等。

本文所描述的技术可由计算设备602的这些各种配置来支持,且不限于在本文描述的各具体示例。这个功能性也可被全部或部分通过分布式系统的使用(诸如如下的经由平台624通过“云”622)来实现。

云622包括和/或代表资源626的平台624。平台624抽象云622的硬件(如,服务器)和软件资源的底层功能。资源626可包括可在计算机处理在位于计算设备602远程的服务器上执行时使用的应用和/或数据。资源626也可包括在互联网上和/或通过诸如蜂窝或wi-fi网络之类的订户网络上提供的服务。

平台624可抽象资源和功能以将计算设备602与其他计算设备相连接。平台624还可用于抽象资源的缩放以向经由平台624实现的资源626所遇到的需求提供对应的缩放级别。相应地,在互联设备的实施例中,本文描述的功能性的实现可分布在系统600上。例如,该功能性可部分地在计算设备602上以及经由抽象云622的功能性的平台624来实现。

在本文的讨论中,描述了各种不同的实施例。要领会和理解,本文描述的每个实施例可以单独或与本文描述的一个或多个其他实施例结合使用。本文所讨论的技术的进一步方面涉及以下实施例中的一个或多个。

一种在计算设备的系统模块中实现的方法,所述方法包括:接收对所述计算设备的第一用户输入,所述第一用户输入是与所述计算设备的第一用户交互的一部分;向所述计算设备上的应用提供所述第一用户输入的指示;在所述第一用户交互期间的任意时间从所述应用接收所述系统模块将处理所述第一用户交互的指示;以及响应于所述系统模块将处理所述第一用户交互的所述指示的接收:继续接收针对所述第一用户交互的用户输入;通过所述系统模块处理所述第一用户交互而不是所述应用处理所述第一用户交互,确定所述计算设备如何改变数据的显示;以及基于所述系统模块对所述第一用户交互的处理来控制数据的显示。

作为以上所描述的方法中的任一者的替换或补充,以下任一者或其组合:所述系统模块在所述第一用户交互的持续时间内继续处理所述第一用户交互;所述方法还包括接收对所述计算设备的第二用户输入,所述第二用户输入是与所述计算设备的第二用户交互的一部分,向所述应用提供所述第二用户输入的指示,从所述应用接收如由所述应用确定的如何针对所述第二用户交互控制数据的显示的指示,以及基于从所述应用接收的如何控制数据的显示的指示来控制数据的显示;所述系统模块处理针对第一用户交互类别中的每一用户交互的用户交互,而所述应用处理针对第二用户交互类别中的每一用户交互的用户交互;所述应用确定哪些用户交互被包括在所述第一用户交互类别中以及哪些用户交互被包括在所述第二用户交互类别中;所述系统模块处理所述第一用户交互而无需执行到所述应用的进程的上下文切换以从所述应用获得如何处理所述第一用户交互的指示;所述第一用户交互包括对象向下事件、对象向上事件和在所述对象向下事件和所述对象向上事件之间发生的对象移动;所述方法还包括缓冲所述第一用户输入,以及所述确定如何改变数据的显示包括至少部分地基于经缓冲的用户输入确定如何改变数据的显示。

一种在计算设备的应用中实现的方法,所述方法包括:从系统模块接收对所述计算设备的用户输入的指示,所述用户输入是与所述计算设备的用户交互的一部分;在所述用户交互期间或之后的任意时间确定是将所述用户交互移交到所述系统模块还是保持处理所述用户交互;响应于确定将所述用户交互移交到所述系统模块,向所述系统模块提供所述系统模块将处理所述用户交互的指示;以及响应于确定保持处理所述用户交互:基于所述用户输入确定如何改变所述计算设备对数据的显示;以及向所述系统模块提供如何改变数据的显示的指示。

作为上述方法中的任一者的替代或补充,以下任一者或其组合:所述方法还包括:响应于向所述系统模块提供所述系统模块将处理所述用户交互的指示,针对所述用户交互不接收来自所述系统模块的用户输入的进一步指示;所述方法还包括在所述用户交互完成之后,从所述系统模块接收对所述计算设备的用户输入的指示,所述用户交互是与所述计算设备的附加用户交互的一部分,在所述附加用户交互期间的任意时间确定是将所述附加用户交互移交到所述系统模块还是保持处理所述附加用户交互,响应于确定将所述附加用户交互移交到所述系统模块,向所述系统模块提供所述系统模块将处理所述附加用户交互的指示,以及响应于确定保持处理所述附加用户交互基于作为所述附加用户交互的一部分的用户输入确定如何改变所述计算设备对数据的显示,以及向所述系统模块提供如何改变数据的显示的指示;所述应用响应于所述用户交互被包括在第一用户交互类别中而确定将所述用户交互移交到所述系统模块,并且所述应用响应于所述用户交互被包括在第二用户交互类别中而确定保持处理所述用户交互;所述用户交互包括对象向下事件、对象向上事件和在所述对象向下事件和所述对象向上事件之间发生的对象移动。

一种计算设备,包括:处理器;计算机可读存储介质,其上存储有操作系统的多个指令,所述多个指令响应于由所述处理器执行使得所述处理器:接收对所述计算设备的第一用户输入,所述第一用户输入是与所述计算设备的第一用户交互的一部分;向所述计算设备上的应用提供所述第一用户输入的指示;在所述用户交互期间或之后的任意点从所述应用接收所述操作系统将处理所述第一用户交互的指示;以及响应于所述操作系统将处理所述第一用户交互的所述指示的接收:通过所述操作系统处理所述第一用户交互而不是所述应用处理所述第一用户交互,确定所述计算设备如何改变数据的显示;以及基于所述操作系统对所述第一用户交互的处理来控制数据的显示。

作为上述计算设备中的任一者的替换或补充,以下任一者或其组合:所述操作系统在所述第一用户交互的持续时间内继续处理所述第一用户交互;所述操作系统处理针对第一用户交互类别中的每一用户交互的用户交互,而所述应用处理针对第二用户交互类别中的每一用户交互的用户交互;所述应用确定哪些用户交互被包括在所述第一用户交互类别中以及哪些用户交互被包括在所述第二用户交互类别中。所述操作系统处理所述第一用户交互而无需执行到所述应用的进程的上下文切换以从所述应用获得如何处理所述第一用户交互的指示;所述第一用户交互包括对象向下事件、对象向上事件和在所述对象向下事件和所述对象向上事件之间发生的对象移动;所述多个指令进一步使得所述处理器缓冲所述第一用户输入,以及至少部分地基于经缓冲的用户输入确定如何改变数据的显示。

尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特定特征或动作。更确切而言,以上所描述的具体特征和动作是作为实现权利要求的示例形式公开的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1