支持智能用户界面交互的制作方法

文档序号:6443408阅读:293来源:国知局
专利名称:支持智能用户界面交互的制作方法
支持智能用户界面交互
背景技术
在某些情况下,应用规定了该应用如何对用户输入或命令做出反应。具体地说,应用可以指定应用能够识别的输入的类型,以及对应用接收到的输入的可接受类型做出响应所采取的动作。除了其它考虑事项之外,可以根据以安装应用为目标的装置,定制由应用识别的输入的类型以及响应于输入所采取的动作。因为装置的输入机制和其它方面可能是多种多样的,所以应用开发商可以发行同一应用的多种版本,其中根据装置的能力、命令格式等,为特定的装置定制应用的版本。另一方面,为了在任何能够访问因特网或其它网络的装置上执行,会定制网页应用。这样,网页应用一般情况下被设计成用来在不同的装置间提供一致的感觉。除了增加可用于访问的网页应用的数量之外,随着时间过去开发出了各种各样的新的输入装置和/或机制。由于这些装置的硬件和/或软件的限制,这些输入装置中的一些得不到网页应用的支持和/或不允许用户访问网页应用。这样,在某些装置上,某些网页应用的功能可能是不可用的。正是针对这些和其它的考虑,才给出了在此所做的公开。

发明内容
在此描述了支持智能型用户界面(“UI”)交互的概念和技术。按照在此公开的概念和技术,应用被配置为用来公布可由应用识别的命令和/或命令格式,或者被其它装置、节点或其它实体来加以分析,以确定这一信息。在访问应用期间,可以在客户端上呈现可用的命令,以告知用户可用于与应用相接口的命令。可以用表明如何使用客户端的用户界面和/ 或输入装置来执行可用命令的信息来呈现命令。当从客户端接收到输入时,可以将该输入与可用命令进行比较,以确定输入是否与可用命令匹配。如果是,那么可以实现该命令。如果不是,那么可以取回并分析与客户相关的情境数据、偏好和/或其它数据,以确定客户在提交输入时的意图。可以使用该意图来识别打算的命令并将输入修改为与打算的命令相匹配。将经过修改的输入传送给应用,并且如果需要的话,可以继续应用的执行。按照一个方面,服务器计算机作为主机提供或运行应用。服务器计算机还可以作为主机提供描述由应用识别的命令和命令格式的命令数据。服务器计算机与界面管理器进行通信。界面管理器运行覆盖物(overlay)模块,该覆盖物模块被配置为用来生成在客户端上呈现的UI覆盖物,以提供应用识别的命令的指示。界面管理器还运行被配置为用来使由客户端生成的输入与可以基于与客户端相关联的命令数据、输入、情境数据和/或偏好的可用命令、操作保持一致的命令模块。按照另一个方面,界面管理器接收与客户端相关联的输入。如果可用的话,界面管理器分析与客户端相关联的命令数据、情境数据和/或偏好。界面管理器根据某些、全部或不根据可用数据,确定从客户端接收到的输入所打算的一个或多个命令。界面管理器生成与打算的命令相对应的经过修改的输入并且将经过修改的输入传送给应用。在有些情况下,如果超过一个命令与输入匹配,那么界面管理就会与客户端进行交互,以确定哪个命令是想要的,并且将表明从客户端接收到的选择的信息传送给应用。如果需要的话,覆盖物模块可以生成额外的覆盖物来获得这一选择。按照各种不同的实施方式,客户端被配置为用来运行传统的操作系统,并且在其它实施例中,客户端被配置为用来运行基于网页的操作系统。这样,客户端可以运行操作系统或被配置为用于访问基于网页的或其它远程运行的应用和服务来在客户端装置处提供具体功能的其它的基本程序。客户端因此可以通过简单的操作系统或者与标准网页浏览器可比较的应用来提供各种不同应用和服务。应当意识到,前面介绍的主题可以被实现为计算机控制的设备、计算机处理、计算系统或者实现为诸如计算机可读存储介质之类的制品。通过阅读下面的具体实施方式
并且查阅相关联的附图,这些和各种不同的其它特征将会变得显而易见。本发明内容部分是为了引入下面将会在具体实施方式
中进一步介绍的简单形式的概念选择而提供的。发明内容部分并非打算用来识别所要求保护的主题的关键特征或者基本特征,也不是打算使用这个发明内容部分来限制所要求保护的主题的范围。而且,所要求保护的主题并不局限于解决本公开任何部分中提到的任何或全部缺点的实现方式。


图1是图解说明用于在此公开的各种实施例的示范性操作环境的系统图。图2是表示按照示范性实施例的用于发现应用命令的方法的各方面的流程图。图3是表示按照示范性实施例的用于支持智能用户界面交互的方法的各方面的流程图。图4A-4C是表示按照各种不同的实施例的支持智能UI交互的示范性用户界面的各方面的用户界面示意图。图5是图解说明用于能够实现在此给出的实施例的各方面的计算系统的示范性计算机硬件和软件体系结构的计算机体系结构示意图。
具体实施例方式下面的具体实施方式
部分的重点放在支持智能UI交互的概念和技术上。按照在此描述的概念和技术,可以将应用配置为用来公布可由应用识别和/或预期的命令、命令的类型和/或命令格式。附加地或者替换地,可由各种不同的装置、节点、软件和/或其它实体来分析这些应用,以确定可识别的和/或预期的命。在访问应用时,可以在客户端处呈现描述可用命令的数据,以指明可用于与应用相接口的命令。可以用表明如何使用客户端的用户界面和/或输入装置执行可用命令的信息、可以顾及表明装置如何配置的情境信息的指示、表明过去如何使用装置的偏好、优选界面方法或装置等等来呈现命令。当从客户端接收到输入时,可以将该输入与可用命令进行比较,以确定输入是否与可用命令匹配。如果是,那么可以执行该命令。如果不是,那么可以取回并分析与客户端相关的情境数据、偏好和/或其它数据,以确定客户在提交该输入时的意图。这样,可以考虑与装置是如何配置的有关的信息、与装置相关联的使用历史、用户偏好等等,来确定意图,并且可以利用该意图来识别打算的命令和/或修改输入以匹配打算的命令。将经过修改的输入传送到应用,并且可以继续应用的运行。
虽然在此描述的主题是在与操作系统和应用程序在计算机系统上的运行相结合地运行的程序模块的一般情境下给出的,但是本领域技术人员将会意识到,也可以与其它类型的程序模块相组合地执行其它实现方式。一般来说,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构以及其它类型的结构。而且,本领域的技术人员将会意识到,这里描述的主题可以用其它的计算机系统配置来实施,包括掌上型装置、多处理器系统、基于微处理器的或可编程的消费类电子产品、微型计算机、大型计算机寸寸。“应用”这个词及其变体在这里用来指代用来向用户提供功能的计算机可执行文件。按照各种不同的实施例,应用可以由例如计算机、智能电话之类的装置来执行。此外,计算机、智能电话或其它装置可以运行网页浏览器或操作系统,该网页浏览器或操作系统配置为用来访问远程运行的应用和/或诸如基于网页的服务这样的服务和/或其它远程运行的应用、网页、社交网络服务等等。在某些实施例中,应用、网页和/或社交网络服务是由远程和本地运行相结合来提供的,例如,由Java脚本、DHTML、AJAX、. ASP等等的运行来提供。 按照其它的实施例,应用包括构建为访问远程或本地数据的运行时间应用。这些运行时间应用可以使用位于华盛顿州Redmond市的微软公司出品的SILVERLIGHT系列产品、位于加利福尼亚州San Jose市的Adobe Systems公司出品的A^和FLASH系列产品和/或其它产品和技术来构建。对于说明书和权利要求来说,词组“网页应用”及其变体用于指代配置为用来全部或部分地在网页服务器和客户端上运行的应用。网页应用可以包括多层应用,多层应用包括,但不局限于,用于存储和/或供应由多层应用使用的数据的数据层、用于执行提供应用的功能的指令的逻辑层和用于呈现和显示应用输出和/或与应用交互的界面的表现层。应当理解,这里给出的各层的名称都是示范性的,不应被看作是任何方面的限制。在下面的详细说明书中,参考了构成说明书一部分的附图,并且在这些附图中,以说明性的具体实施例或实例的方式示出。现在参照这些附图,将会给出支持智能UI交互的计算系统、计算机可读存储介质和计算机实现的方法的各个方面,其中,在全部数幅图中, 类似的附图标记代表类似的元件。现在参照图1,将会描述在此给出的各种不同实施例的一种操作环境100的各个方面。图1中所示的操作环境100包括在网络104上操作或者与网络104通信的服务器计算机102。按照各种不同的实施例,服务器计算机102的功能是由在因特网上操作或与因特网通信的网页服务器提供的,不过并非必须是这样的情形。服务器计算机102被配置为用来执行或存储应用106,以作为主机提供和/或供应网页、文档、文件、多媒体和/或其它内容,和/或作为主机提供、执行和/或供应其它内容、软件和/或服务。虽然这里有时将服务器计算机102描述为运行应用106以提供与应用106相关联的功能的应用服务器,但是应当理解,这并非必须是这种情况。在某些实施例中,例如,服务器计算机102运行应用106来提供网页服务器功能,例如通过响应于针对内容的一个或多个请求对针对该内容的请求做出响应,执行从装置或实体接收的查询等等。在其它实施例中,服务器计算机102存储应用106并且允许其它装置和/或网络节点访问、下载和/或运行该应用106。因此应该理解,服务器计算机102和应用106可以被用于提供各种不同的功能,包括但不限于,与应用服务器和/或数据服务器相关联的功能。此外,尽管图1中没有示出,但是应当理解,服务器计算机102可以与数据库、存储器和 /或其它数据存储装置通信和/或包括数据库、存储器和/或其它数据存储装置,以访问、修改、运行和/或存储与服务器计算机102和/或应用106相关联的数据。按照各种不同的实施例,与应用106相关的数据是通过运行应用106来生成的。类似地,如前面所提到的,服务器计算机102可以通过运行应用106来作为主机提供或供应与诸如网页、服务、文档、文件、图像、多媒体、软件、其他内容之类的内容相对应的数据到与服务器计算机102相连的装置。在这些和其它实施例中,可以使得由服务器计算机102生成、 作为主机提供和/或供应的数据由与服务器计算机102相连的一个或多个装置利用、被传送到与服务器计算机102相连的一个或多个装置和/或由与服务器计算机102相连的一个或多个装置接收。这些装置可以被配置为用来显示或呈现数据,以显示与应用106相关联的内容和/或输出、观看诸如音频或视频文件之类的文件、观看图像、呈现网页或其它内容寸寸。应当理解,在数据与应用106相关联的情况下,可以在服务器计算机102上运行应用106,并且可以在远离服务器计算机102的装置上呈现和显示与应用106相关联的输出。 在其它实施例中,应用106是部分地由服务器计算机102运行并且部分地由远离服务器计算机102的诸如计算机、服务器之类的装置运行的,以提供与应用106相关联的功能。这样, 虽然将应用106说明为是由服务器计算机102作为主机提供的,但是应当理解,应用组分可以同时由一个或多个装置运行,例如,以提供多层应用。按照各种不同的实现方式,应用106和/或由服务器计算机102运行、供应和/或作为主机提供的其它内容响应于从与服务器计算机102连接的装置或其它实体接收到的命令或者根据从与服务器计算机102连接的装置或其它实体接收到的命令进行交互。例如,应用106可以被配置为用来对特定的命令或特定类型的命令做出响应。例如在网页的情况下,命令可以包括选择一个或多个到内容的链接,链接的选择被应用106解释为访问与链接相关联的内容的命令。在诸如游戏之类的网页应用的情况下,命令可以包括移动屏幕上的对象的命令、导航游戏环境的命令、诸如文本输入或点击鼠标按纽这样的键盘或鼠标输入、轨迹球或触笔装置的移动、语音命令和/或各种不同的其它输入或命令,就象通常理解的那样。按照在此公开的各种不同的实施例,描述应用106做出响应的命令的数据可以用命令数据108来定义。在某些实施例中,命令数据108是由应用开发者或其它实体生成或创建的,并且可以被存储在服务器计算机102处。命令数据108可以被用于描述可由应用 106解释的命令、命令的描述、应用106响应于命令所采取的动作、输入命令的预期输入装置等等。可以在服务器计算机102生成和存储命令数据108以备使用,和/或命令数据108 可以基于应用106如何工作和/或如何受到控制的发现结果,并且如此一来,可以由与服务器计算机102通信的装置或其它实体发现,下面将对此做出更加详细的解释。命令数据108可以由一个或多个搜索引擎(未示出)和/或其它实体搜索和/或加上索引,并且可以被用于各种不同的目的。如在此更加详细解释的,命令数据108可以被用于向用户或其它实体呈现可用的命令、用于通知装置如何与应用106通信、用于跟踪与应用106相关联的用户量度(metrics)等。可以将可用于与应用106交互的命令呈现给用户或其它实体。附加地或者替换地,可以考虑用户或其它实体使用的装置的与应用106进行交互的能力,其可以是与用户或其它实体相关联的偏好。这些和/或其它的或额外的信息可以被用于确定装置或其它实体能够生成什么输入或什么类型的输入和/或将命令数据 108映射到一个或多个命令、手势、输入或可以由用户或其它实体生成的其它交互。在此将会更加详细地描述这些和其它的实施例。在某些实施例中,操作环境100包括在网络104上操作的或与网络104通信的界面管理器110。界面管理器110配置为用来提供在此描述的支持智能UI交互的功能。具体地说,按照各种不同的实现方式,界面管理器110被配置为用来生成、获得、存储和/或修改命令数据108,用来接收和/或修改在与应用106交互的装置或其它实体处生成的输入, 用来生成在该装置或其它实体处显示的用户界面,以识别可用于与应用106进行交互的命令,用来存储命令数据108或由所述装置或其它实体生成的输入和对命令数据108或由所述装置或其它实体生成的输入应用用户化和/或个性化,以及用来提供额外的或替换的功能。在所示的实施例中,界面管理器110被配置为用来执行覆盖物模块112、命令模块114 以及其它应用和模块(未示出),以提供与界面管理器110相关联的这些和其它功能。界面管理器110可以运行覆盖物模块112来生成一个或多个UI覆盖物116。在此将会更加详细地描述,具体参见图4A-4C,UI覆盖物116可以由在网络104上操作或与网络104通信的装置或其它实体(比如客户端108)显示。可以在客户端118处显示UI覆盖物116来向客户端118的用户提供除了别的信息之外的、与应用106预期的命令或命令类型有关的信息。UI覆盖物116还能够提供与由客户端118生成的用来与应用106进行交互的一个或多个输入120有关的信息。例如,输入120可以对应于这样的数据在将该数据提交到应用106时,该数据将会向应用106表明由应用106预期的命令当中的一个或多个命令的选择。在某些实施例中,用于生成UI或UI覆盖物116的数据是由覆盖物模块112生成的,并且被提供给客户端118来在客户端118处呈现和/或显示。按照各种不同的实施例,覆盖物模块112此外还被配置为用来获得或分析由客户端118生成和/或可由界面管理器110发现的情境数据122。情境数据122可以包括描述与客户端118相关联的一个或多个输入装置、由客户端118执行的软件类型或版本、客户端 118的能力、在客户端118上执行的处理、客户端118访问过或者正在访问的应用106和/ 或其它资源等等的数据。此外,情境数据122可以指明与客户端118相关联的一个或多个输入/输出装置或界面,等等。除了或者取代使情境数据122可用或者发送情境数据122,可以在界面管理器110 和/或在与界面管理器110通信的数据存储装置处生成和存储与客户端118相关联的偏好 124。可以单独考虑或者与情境数据122 —起考虑偏好124,以确定命令、命令类型和/或用于在客户端118处生成命令或命令类型的界面装置。这样,界面管理器110可以考虑偏好 IM来预期将会如何生成与客户端118相关联的输入120,预期在与应用106进行交互的时候在客户端118处将会生成或感测什么类型的手势、语音命令、移动、动作等,以及预期其它。例如,界面管理器110可以至少部分地基于偏好IM确定经由客户端118与画图程序应用进行交互的用户很有可能在客户端118处使用多接触界面与应用106进行交互。这个例子是说明性的,并且不应被看作是任何方面的限制。命令模块114被配置为用来使与应用106相关联的命令数据108与客户端118生成的输入120相一致。例如,命令数据108可以规定应用106被配置为用来与鼠标移动和/或在客户端118处经由鼠标(比如点击、滚轮移动等)输入的命令交互。在与应用106交互期间,不同于应用106预期的鼠标命令和/或除了应用106预期的鼠标命令之外,客户端118可以生成与经由触摸屏、触笔、多触摸界面、语音命令、墨迹作画、按键和/或其它输入机构输入的命令相对应的输入120。命令模块114被配置为用来基于情境数据122、偏好 124和/或确定与输入120相关联的意图和/或可能意图,将客户端118处生成的输入120 映射为预期的输入。在某种实施例中,命令模块114生成经过修改的输入126并且将该经过修改的输入1 提交给应用106。应当意识到,经过修改的输入1 可以对应于应用106预期的命令。这样,命令模块114就被配置为用来接收或截取由客户端118生成的输入120,以将输入120修改成与应用106预期的输入相匹配,并且用来将经过修改的输入1 提交给应用 106,从而使得客户端118能够经由输入120与应用106进行交互,即使输入120与应用106 预期的命令或输入完全不同。应当意识到,上面的例子是说明性的,并且命令模块114可以被配置为用来使输入120的附加的或替换的形式与应用106预期的输入相一致。按照某些实施例,界面管理器110还被配置为用来跟踪客户端118对应用106的使用,并且用来机器学习客户端118如何与应用106进行交互。这样,界面管理器110可以被配置为用来基于客户端118与应用106之间的交互来生成偏好124。在其它实施例中,界面管理器110被配置为用来经由客户端118向用户呈现机器学习环境,从而与客户端118 相关联的用户能够经由引导指令和/或专用命令和修改,来生成偏好124。在界面管理器 110被配置为用来支持跟踪客户端118与应用106之间的交互的实施例中,如果希望的话, 用户可以在任何时候选择进入和/或选择退出在此描述的跟踪功能和/或规定或限制由界面管理器110跟踪的活动的类型,以解决意识到的安全和/或隐私问题。按照各种不同的实施例,客户端118的功能是由个人计算机(“PC”)提供的,比如台式、平板型、膝上型或上网本计算机系统。客户端118的功能也可以由其它类型的计算系统提供,包括但不限于,服务器计算机、手持计算机、嵌入式计算机系统、个人数字助理、移动电话、智能电话、机顶盒(“STB”)、游戏装置和/或其它计算装置。虽然图1中没有示出, 但是应当理解,客户端118可以经由一个或多个直接链路、间接链路和/或经由网络104与界面管理器110进行通信。客户端118被配置为用来运行操作系统1 和应用程序130。操作系统128是用于控制客户端118的操作的计算机程序,并且应用程序130是被配置为用来在操作系统 128之上运行以提供与客户端118相关联的各种功能的可执行程序。按照各种不同的实施例,客户端118运行的操作系统128是诸如由位于华盛顿州Redmond市的微软公司出品的 WINDOWS系列操作系统这样的本机操作系统和/或基于网页的操作系统。这样,将会理解的是,按照各种不同的实施例,客户端118可以被配置为或装配为用来在客户端侧运行传统的本机应用和/或程序,和/或用来访问诸如应用106这样的应用,应用106可以包括远程运行的应用,比如网页应用和/或其它远程应用。类似地,应当理解,客户端118能够运行基于网页的操作系统和/或应用,以及本机操作系统和/或应用,并且应当理解,这一功能可以但是并非必需是可通过各种不同的启动方式来进入的。另外,客户端118可以被配置为用来接收和呈现由诸如应用106这样的应用生成的数据。客户端118还可以被配置为用来接收和呈现与包括但不局限于UI覆盖物116的界面管理器110相关联的数据或者由包括但不局限于UI覆盖物116的界面管理器110生成的数据。在某些实施例中,客户端118被配置为用来生成情境数据122并且用来使得情境数据122可由界面管理器110使用。此外,客户端118可以生成与打算用于应用106的输入相对应的输入120,如前面所提到的。客户端118可以被配置为用来访问远程运行的应用和/或用于运行本地代码,比如脚本、本地搜索等。这样,客户端118可以被配置为用来访问或利用基于云技术、基于网页和/或其它远程运行的应用,和/或用来呈现由应用106、界面管理器110生成的数据和 /或与网页、服务、文件和/或其它内容相关联的数据。应用程序130可以包括可由客户端118运行的用来访问和/或呈现诸如网页之类的内容的程序,用于访问、运行和/或呈现与各种不同的本机和/或基于网页的应用相关联的数据的程序,和/或用于访问、运行和/或呈现与各种不同的服务相关联的数据的程序。在其它实施例中,应用程序130包括配置为用来经由公共的或私人的应用程序设计接口(“API”)和/或公共的或私人的网络连接访问基于网页的或远程的资源和/或应用的独立或运行时间应用。因此,应用程序130可以包括用于提供或呈现与本地运行的和/或远程运行的应用相关联的数据的本机的和/或基于网页的应用。虽然图1中没有示出,但是应当理解,客户端118可以经由直接链路、数据流水线和/或经由诸如网络104这样的一个或多个网络或网络连接与服务器计算机102和界面管理器110进行通信。此外,虽然图1图示了一个服务器计算机102、一个网络104、一个界面管理器110和一个客户端118,但是应当理解,操作环境100可以包括多个服务器计算机 102、多个网络104、多个界面管理器110和/或多个客户端118。因此,应当将图示的实施例理解为是示范性的,并且不应将其看作是任何方面的限制。现在转到图2,将会详细描述发现应用命令的方法200的各个方面。应当理解,这里公开的方法的操作并非必需是以任何特定的顺序来给出的,并且按照替换的顺序进行的部分或全部操作的性能是可能的并且是可以预期的。为了方便描述和说明,这些操作是以所演示的顺序给出的。可以增加、省略和/或同时进行这些操作,而不会背离所附权利要求的范围。还应该理解,所图解说明的方法可以在任何时候结束,不必整体执行。这里公开的方法的某些或全部操作和/或实质上等价的操作可以通过运行计算机存储介质上包含的计算机可读指令来进行,如前面所定义的那样。说明书和权利要求书中使用的术语“计算机可读指令”及其变体在这里广义地用于包含例程、应用、应用模块、程序模块、程序、组分、数据结构、算法等等。计算机可读指令可以在各种不同的系统配置上实现,包括单处理器或多处理器系统、微型计算机、大型计算机、个人计算机、手持计算装置、基于微处理器的、可编程消费电子产品以及它们的组合等等。这样,应当意识到,这里描述的逻辑操作是这样实现的(1)作为一系列计算机实现的动作或者计算系统上运行的程序模块和/或(2)作为计算系统内的互相连接的机器逻辑电路或电路模块。实现方式是取决于计算系统的性能和其它要求的选择问题。由此,这里描述的逻辑操作被各不相同地称为状态操作、结构装置、动作或模块。这些操作、结构装置、动作和模块可以用软件、固件、专用数字逻辑和它们的任意组合来实现。为了图解说明和描述本发明的概念,这里公开的方法200被描述为是由界面管理器110通过运行一个或多个模块和/或应用来执行的,比如运行覆盖物模块112和/或命令模块114。应当理解,该实施例是示范性的,不应被看作是任何方面的限制。其它装置和 /或应用可以被配置为用来按照这里公开的那样发现应用命令,而不会背离权利要求的范围。该方法从操作202开始,其中界面管理器110检测客户端118对应用106的访问。 按照各种不同的实施例,界面管理器110通过前面参照图1描述的界面管理器110的跟踪功能来识别对应用106的访问。附加地或替换地,界面管理器110可以被配置为用来支持客户端118与应用106之间的穿过通信。更加具体地讲,界面管理器110可以本身插入在客户端118和应用106之间和/或客户端118可以通过界面管理器110访问应用106。在这些和其它实现方式中,与应用106相关联的输出可以在客户端118处得到接收和呈现之前穿过界面管理器110,并且在客户端118处生成的输入120可以在应用106处得到接收之前穿过界面管理器110。将会意识到,在某些实施例中,可以在客户端118处运行一个或多个应用程序130,和/或由远离客户端118运行的和/或部分在客户端118处且部分在远程系统处运行的另一个应用106,来提供界面管理器110的功能。在这些和其它的可预见的实施例中,界面管理器110可以检测客户端118与应用106之间的交互。从操作202,方法200继续进行到操作204,其中界面管理器110确定与应用106 有关的命令数据108是否可用。如前面针对图1解释的,命令数据108可以由应用开发者或其它经过授权的实体(比如与服务器计算机102和/或其它实体相关联的管理员)生成。 附加地或替换地,可以通过应用106的数据挖掘、通过跟踪客户端118与应用106之间的活动和/或通过其它方法和机制,由界面管理器110确定和/或生成命令数据108。应当意识到,在某些实施例中,命令数据108是由界面管理器110至少部分地基于随同与应用106相对应的代码一起公开或开放的标签或其它指示符来确定的。这样,应当理解,就操作202而言,界面管理器110可以确定命令数据108是否已经在以前的任何时候被公开、被索引和/ 或由界面管理器110生成。如果界面管理器110在操作204中确定命令数据108不可用,那么方法200继续进行到操作206,其中界面管理器110对应用106进行分析,以确定可用于与应用106交互的命令。按照各种不同的实施例,操作206包括该界面管理器110访问或分析与应用106对应的可执行代码,以确认可由应用106识别的命令。在其它实施例中,界面管理器110分析应用106和/或与应用106 —起公开的信息,比如标签或其它指示符,以确认可由应用106 识别和/或可由应用106执行的命令。按照各种不同的实施例,应用106支持并且可由应用程序106理解的命令数据108 和/或命令是用专用术语描述的。例如,命令数据108可以包括可由应用106接收的专用命令。在其它实施例中,命令数据108描述可由应用106接收的命令或输入的种类或类型。 在另外的实施例中,命令数据108描述可用于生成可由应用106识别的输入的输入装置或输入装置的类型。这样,例如,命令数据108可以表明应用106被配置为用来接收字母数字输入和/或表明可由应用106识别的特殊字符串来触发特定的活动。这些例子是说明性的并且不应被看作是任何方面的限制。从操作206,或者如果界面管理器110在操作204中确定命令数据108可用,方法 200继续进行到操作208,其中界面管理器110在客户端118处给出可用的命令。在此将会更加详细地解释,具体参见图4A-4C,可以通过UI、UI覆盖物116和/或通过其它方法将可用的命令提供给客户端118。而且,应当理解,界面管理器110可以向客户端118发送表示可用命令的数据,但是在别的方面却不能参与到在客户端118处表示可用命令中。从操作 208,方法200继续进行到操作210。方法200在操作210处结束。现在转到图3,将会详细描述按照示范性实施例的支持智能UI交互的方法300。为了图解说明而不是限定,将方法300描述为是由界面管理器110执行的。应当理解,这一实施例是示范性的,不应被看作是任何方面的限制。其它装置和/或应用可以被配置为用来按照这里公开的那样执行针对方法300公开的操作,而不会背离权利要求的范围。方法300从操作302开始,其中界面管理器110接收来自客户端118的输入120。 界面管理器110可以被配置为用来支持客户端118与应用106之间的通信。例如,客户端 118可以运行应用106和/或接收与应用106相关联的数据,用于通过界面管理器110在客户端118处呈现。类似地,可以将由客户端118生成的输入120通过界面管理器110传送给应用106。在其它实施例中,如前面解释的那样,界面管理器110由客户端118执行或者由客户端118访问,并且因此可以被配置为用来在将输入120传送给应用106之前修改输入120。这些例子是说明性的,并且可以预见到从客户端118接收输入120的其它方法,这里为了简洁就不再给出了。从操作302,方法300继续进行到操作304,其中输入管理器110取回与应用106 相对应的命令数据。如前面针对图1-2解释的,界面管理器110可以存储命令数据108、从服务器计算机102获得命令数据、在客户端118和应用106之间进行交互期间确定命令数据108,和/或执行数据挖掘来识别和/或生成命令数据108。从操作304,方法300继续进行到操作306,其中界面管理器器110确定从客户端 118接收到的输入120是否与应用106所支持的命令相匹配。例如,如果命令数据108表明客户端118可以通过与字母‘m’对应的按键输入来与应用106交互,并且输入120对应于按键‘m’,那么界面管理器110可以确定从客户端118接收到的输入120与应用106所支持的命令相匹配。如果命令数据108表明客户端118可以通过按键输入来与应用106交互, 但是输入120对应于多触摸命令,那么界面管理器110可以确定输入120并不与所支持的命令相匹配。这样,应当理解,界面管理器110不仅能够分析所接收的特定输入120,而且还能够分析用于生成和/或提交输入120的界面装置。这些例子是说明性的,并且不应被看作是任何方面的限制。如果界面管理器110在操作306中确定输入120并不与应用106所支持的命令匹配,那么方法300继续进行到操作308,其中输入管理器110取回与客户端118相关联的情境数据122和/或与客户端118相关联的偏好124。情境数据122可以表明与客户端118 相关联的能力、与客户端118相关联的可用输入装置等等。偏好IM可以包括由于与执行特定动作的优选手势、移动、动作等等相对应而已经由界面管理器110学习过或者已经提交到界面管理器110的一个或多个手势、移动、动作等等。如这里所提到的,偏好IM可以是根据所跟踪的客户端118与应用106之间的活动和/或利用诸如“范例(wizards)”之类的用户化或个性化程序来规定用户希望如何与客户端118和/或应用106进行交互而生成的。这样,将会意识到,偏好1 可以专用于客户端118的用户、专用于客户端118、专用于应用106和/或通用于该用户、客户端118、应用106等等。
从操作308,方法300继续进行到操作310,其中输入管理器110基于所接收到的输入120、命令数据108和如界面管理器110确定的客户端118的用户的可能意图来确定打算的输入。如果需要的话,客户端118的用户的可能意图可以由界面管理器110基于情境数据122、输入120、命令数据108和/或偏好124的分析来确定。在某些实施例中,界面管理器110通过与用户进行交互来确定客户端118用户的可能意图,下面在图4C中给出了这种方案的示范性实施例。可以基于将特定活动、手势、移动等映射为已知命令的模型来确定打算的输入。例如,某些多触摸手势可以被确定为是直观的和/或可以获得普遍接受。例如轻叩在触摸或多触摸领域当中被公认为一般来说等效于在与进行轻叩的点相对应的点上的鼠标点击。这样,如果界面管理器Iio捕获到轻叩作为输入120,那么界面管理器110可以确定与鼠标点击相应的动作是用户的意图。这个例子是说明性的,并且不应被看作是任何方面的限制。应当理解,通过跟踪客户端118和应用106之间的活动,以及其它装置与其它应用之间的活动,界面管理器110可以基于所输入的命令、针对用户输入的含义对用户进行的提示的响应、多次重复的命令等等来开发出行为模型。此外,应当理解,如果需要的话,这些模型可以由搜索引擎(未示出)和/或其它装置来开发,并且可由界面管理器110使用。从操作310,方法300继续进行到操作312,其中输入管理器110生成经过修改的输入126。出于种种原因,经过修改的输入126对应于应用106预期的、但没有在客户端 118处输入的输入或命令,。在一个可预见的例子中,应用106预期与针对特定动作的左光标对应的按键命令。然而,客户端118生成的输入120对应于向右横扫(swipe)或者在触摸界面中心左侧的部分上轻叩。可替换地,输入120可以包括语音命令“向左”、可以被与客户端118相关联的加速计或陀螺仪感测到的客户端118向左的倾斜,等等。在这些和其它的示范性实施例中,界面管理器110可以确定打算的输入对应于由应用106预期的输入,在这个例子中,是左光标。这样,界面管理器可以生成与预期的输入相对应的经过修改的输入 126。在上述例子中,界面管理器110生成左光标按键并且将经过修改的输入1 提交到应用 106。从操作312,或者如果界面管理器110在操作306中确定输入与所支持的命令相相配,方法300继续进行到操作314,其中界面管理器110向应用106提供输入。如前面所解释的,提供给应用106的输入可以包括输入120本身(如果输入120与所支持的命令相匹配的话)或者经过修改的输入126 (如果输入120不与所支持的命令匹配的话)。从操作314, 方法300继续进行操作316。方法300在操作316处结束。现在转到图4A,将会描述表示在一个实施例中用于在客户端118处提供可用命令的用户界面(UI)的各个方面的用户界面示意图。具体地说,图4A表示按照在此给出的一种具体实现方式的由客户端118运行的一个或多个操作系统1 和/或应用程序130生成的屏幕显示400A。应当意识到,图4A中图解说明的UI示意图是示范性的。此外,应当理解,与图4A中所示的UI示意图相对应的数据可以是由界面管理器110生成的,可由客户端 118使用或者被传送到客户端118,并且由客户端118呈现,尽管不必需是这样的情况。在所示的实施例中,屏幕显示400A包括应用窗口 402A。在某些实现方式中,应用窗口 402A被显示在屏幕显示400A上显示的其它信息(未示出)之上或之后。附加地或替换地,应用窗口 402A可以填充屏幕显示400A和/或尺寸可以被调整为适合屏幕显示400A的期望部分或百分比。应当理解,所示的应用窗口 402A的图示布局、比例和内容都是示范性的,不应被看作是任何方面的限制。示范性的应用窗口 402A对应于网页浏览器的应用窗口,不过这个例子仅仅是说明性的。应当理解,应用窗口 402A可以对应于用于任何应用的应用窗口,包括诸如应用程序130这样的本机应用、网页应用、应用106和/或由操作系统1 显示或呈现的界面。在所示的实施例中,应用窗口 402A正在显示网页内容404,并且该网页内容包括超链接406A-C (下文统称或总称为“链接406”)。链接406可以对应于计算机可执行代码,它的执行会促使客户端118访问由链接 406引用的资源,这是公知的。这样,链接406可以对应于这里描述的一个或多个命令。这样,将会意识到,这里参照图4A描述的概念和技术可以应用于通过运行各种各样的本机、 基于网页的和/或混合的应用而显示的任何数量的命令。链接406包括返回到新闻页面的链接406A、观看下一条新闻项的链接406B和读取更多作为内容404显示的故事的链接 406C。应当理解,这些链接406是示范性的,不应被看作是任何方面的限制。应用窗口 402A还在显示可用命令窗口 408,这个窗口可以以各种各样的方式来给出。在所示的实施例中,可用命令窗口 408是以叠加在内容404 “前面”的不透明窗口的形式显示的。在其他的可预见的实施例中,可用命令窗口 408被停放在应用窗口 402A的侧面、 顶部或者前面,放置在工具条或状态栏中,放置在菜单中,等等。在其它的可预见的实施例中,应用窗口 402A被叠加在内容404的“前面”,但是仅仅部分透明的,从而可以同时看见内容404和可用命令窗口 408。在另外的可预见的实施例中,可用命令窗口 408被隐藏起来, 直到客户端118接收到访问可用命令窗口 408的UI控制、访问可用命令窗口 408的语音命令或者访问可用命令窗口 408的其它命令。可用命令窗口 408可以被配置为用来显示可与屏幕显示400A相结合使用的命令。 在某些实施例中,可用命令窗口 408显示用于由界面管理器110检测到的各种不同输入装置的命令。按照前面的解释,界面管理器110可以例如通过访问与客户端118相关联和/ 或由客户端118生成的情境数据122来检测可用的输入装置。在图解说明的实现方式中, 可用命令窗口 408正在显示命令的触摸界面列表410A,这个列表列出了可用于通过触摸界面与内容404或链接406进行交互的三条命令412。可用命令窗口 408还包括命令的语音命令列表410B,这个列表列出了可用于通过语音命令与内容404进行交互的三条命令412。 应当理解,这些列表是示范性的,并且取决于与客户端118相关联的能力、情境数据122、偏好IM和/或命令数据108,可以显示额外的或替换的列表。可用命令窗口 408由界面管理器110基于客户端118的能力、用户的偏好和/或应用106寻求的输入而生成,用来告知客户端118的用户该用户可用的命令。应当理解,这一实施例是示范性的,并且其它的将这一和/或其它基于命令的信息传递给用户的方法都是可行的并且是可预见的。通过对可用命令窗口 408中显示的信息进行阅览,客户端118处的用户可以确定如何通过触摸界面和/或语音命令来导航内容404,其中的一些、全部或没有一个是按照设计可由应用106支持的。在某些实施例中,链接406被设计成并且打算用来通过鼠标或其它传统输入装置来导航。如前面参照图1-3解释的,界面管理器110可以识别和解释通过一个或多个界面输入的替换命令,并且生成诸如在可用命令窗口 408中显示的信息那样的信息,以便传达给用户什么样的命令可用和/或可以调用什么样的手势、语言命令、移动等等来执行可用命令。现在转到图4B,将会描述表示在另一个实施例中用于在客户端118处提供可用命令的用户界面(UI)的各个方面的用户界面示意图。具体地说,图4B表示按照这里给出的一种具体实现方式的由客户端118运行的一个或多个操作系统1 和/或应用程序130生成的屏幕显示400B。应当意识到,图4B中图解说明的UI示意图是示范性的。如前面针对图4A所解释的,应当理解,与图4B中所示的UI示意图相对应的数据可以是由界面管理器 110生成的,可由客户端118使用或者被传送到客户端118,并且由客户端118呈现,不过并不必需是这样的情况。如前面针对图4A中的屏幕显示400A所解释的,屏幕显示400B包括应用窗口 402B,可以按照各种不同的尺寸和布局调整它的尺寸,并且并不局限于所图示的内容、尺寸或配置。应用窗口 402B包括应用窗口 402A中显示的内容404,以及应用窗口 402A中显示的链接406,不过并不必需是这样的情形。在图4B中,通过三个可用命令标注420A-C(下文中统称或总称为可用命令标注420)显示出与内容404相关联的可用命令。将会意识到,可用命令标注420的内容可以基本上类似于图4A中所示的可用命令窗口 408的内容,不过可用命令标注可以被显示在链接406处、链接406附近或者与链接406相结合地显示。应当意识到,在某些实施例中,可用命令窗口 408是在访问应用106或其它内容的时候显示的, 并且在可用命令窗口 408关闭或者在显示时间过后消失了之后,可以响应于鼠标的盘旋等等显示或维持可用命令标注420。所图示的实施例是示范性的,不应被看作是任何方面的限制。现在参照图4C,将会描述表示在另一个实施例中用于支持智能UI交互的用户界面(UI)的各个方面的用户界面示意图。具体地说,图4C表示按照这里给出的一种具体实现方式的由客户端118运行的一个或多个操作系统1 和/或应用程序130生成的屏幕显示400C。应当意识到,图4B中图解说明的UI示意图是示范性的。如前面针对附图4A-4C 所解释的,图4C中所示的UI示意图可以是由界面管理器110生成的,可由客户端118使用或者被传送到客户端118,并且由客户端118呈现,不过并不必需是这样的情况。在图4C所示的实施例中,屏幕显示400C包括应用窗口 402C,可以按照各种不同的尺寸和布局调整它的尺寸,并且并不局限于所图示的内容、尺寸或配置。应用窗口 402C包括内容430。在所示的实施例中,内容430对应于通过执行应用106而生成的输出,其中应用106提供照片观看和编辑应用。在所示的实施例中,示出了绘图路径432。应当理解,绘图路径432可以或可以不显示在屏幕显示400C上,这取决于与应用106相关联的设置、与客户端118相关联的设置和/或其它考虑。绘图路径432在各种不同的实施例中对应于针对触摸或多触摸屏上的界面对象做出的运动。例如,绘图路径432可以对应于触笔路径、手指路径等等。响应于绘图路径432的绘制,界面管理器110可以确定与绘图路径432的绘制相对应的输入120是否与应用120所支持的命令相对应,如前面参照图3的操作306所解释的那样。按照各种不同的实施例,绘图路径432对应于应用120所支持的命令,或者对应于由界面管理器110基于例如情境数据122和/或偏好IM确定的命令。在其它实施例中, 绘图路径432对应于两个或更多命令和/或被界面管理器110解释为表明用户想要针对由绘图路径432限定的区域访问一个或多个命令。附加地或替换地,绘图路径432和/或替换的绘图路径可以表明用户希望向应用106提交命令。在这些和其它实施例中,界面管理器110可以被配置为用来显示UI覆盖物116,用于响应于绘图路径432的绘制来显示可用命令标注434。可用命令标注434可以被配置为用来显示可以针对由绘图路径432限定的区域和 /或针对内容430调用的多条命令436。在所示的实施例中,可用命令标注434包括可以针对由绘图路径432限定的区域和针对内容430调用的命令436的组合。在某些实施例中, 可以为所显示的命令436编号,并且用户可以通过读出选择、按下键盘上的数字键等等来选择选项。在其它实施例中,用户在期望的命令上轻叩。其它实施例也是可行的并且是可预见的。按照这里公开的概念和技术的各种不同的实施例,客户端118可以包括多个传感器、输入装置和/或其它用于生成输入120的机构。例如,在某些实施例中,客户端118被配置为用来使用鼠标、轨迹球、触笔、键盘、触摸屏、多触摸屏、触摸或多触摸装置、墨迹作图系统、麦克风、摄影机、方位传感器、移动和加速度传感器等等中的一个或多个来生成输入 120。这样,应当理解,可以通过客户端118使用手动移动、语音命令、自由空间中的手势、改变输入装置的方位等等来生成输入120。按照某些实施例,方位感测是使用一个或多个加速计、磁强计、陀螺仪、其它传感器等等来实现的。按照各种不同的实施例,界面管理器110被配置为用来分析情境数据122和/或偏好124,以识别什么预期为是客户端118的最佳输入模式。例如,界面管理器110可以确定客户端118被配置为用来支持触摸命令和语音命令。类似地,界面管理器110可以确定与客户端118相关联的位置、与客户端118相关联的音频输入和/或可以借助情境数据122 获得的其它数据表明语音命令可能是不能实行的。例如,界面管理器110可以确定客户端 118附近的环境噪声水平高于规定的阈值,在该规定的阈值以上时,分辨语音命令就变得很困难。在这些和其它可预见的环境下,界面管理器110可以确定具体支持的输入模式(在这个例子中是语音命令)可能是不能实行的,并且在这些情况下可以识别另一种输入模式是优选的,比如触摸或多触摸命令。这个例子是说明性的,不应被看作是任何方面的限制。应当理解,这里公开的概念和技术可以被配置为用来支持输入模式的各种不同组合,如参照图4A-4C所说明的。这样,例如,界面管理器110可以被配置为用来将语音命令、 触摸命令、鼠标或键盘输入和/或其它输入120映射为应用106预期的输入。这样,界面管理器110可以被配置为用来允许用户与客户端118以各种各样的方式进行交互,这可以允许用户与客户端118以从用户的角度看来比较直观的方式进行交互。这样,用户可以不限于仅仅使用少数狭窄限定的命令,而是可以使用通过各种各样输入装置生成的各种各样的输入120。在某些情况下,与命令对应的触摸和多触摸移动、自由空间手势、方位和/或其它移动可以从类似于或等同于多个其它移动的移动开始。例如,在触摸界面上的轻叩、两次轻叩和三次轻叩全部都是从轻叩开始。这样,界面管理器110可以被配置为用来识别输入120 可能对应于多个命令,因此可能要等待命令的完成,和/或如果需要的话,可能会基于最初的移动为用户给出以同样的移动或输入开始的命令。更加具体地讲,界面管理器110可以在接收到输入120时强加一个等待时期或暂停,以允许用于输入120的时间能够在试图使输入120与应用106预期的命令相一致之前完成。其它形式的误差校正和/或错误预防也是可预见,但是这里不作详细描述。如前面所解释的,界面管理器110可以被配置为用来针对客户端118和/或针对多个装置监测应用106随时间流逝的使用情况。这样,界面管理器110可以被配置为用来确定对于应用而言随着时间的流逝和/或对于一个或者多个用户而言普遍或频繁使用的命令。界面管理器110可以在为客户端110给出可用命令的时候考虑这一信息和/或将这一使用情况报告给与应用106相关联的授权方。对于向与应用106相关联的经过授权的实体报告而言,界面管理器110可以不仅报告与应用106交互期间的输入有关的趋势,还可以报告由界面管理器110感测到的输入 120,其中输入120并不与所支持的命令相对应。这样,界面管理器110可以向应用开发者提供反馈,例如,可以增加代码来支持这些和/或其它命令的人。该反馈还可以表明用户经常试图输入得不到支持的特定命令,应用开发者可以利用信息来为该特定命令添加支持。这些例子说明的是反馈的可能用途,不应被看作是任何方面的限制。在某些实施例中,界面管理器110被配置为用来向应用开发者提供一个或多个用在应用106的开发当中的范例。这些范例可以支持以界面管理器110和/或搜索引擎(未示出)容易识别的格式生成命令数据108。这些范例还可以用于为应用开发者提供与最流行的输入装置有关的最新信息,从而可以将应用106设计成支持这些流行的装置。在某些实施例中,界面管理器110跟踪活动并且向搜索引擎(未示出)报告活动,以用于排序和/或广告的目的。在一种可预见的实施例中,应用106被基于与应用106的直观程度如何有关的客观和/或主观决定而排序。在一个实施例中,可以通过跟踪与用户访问应用106和输入与应用106预期的一个或多个命令相对应的输入120的次数相对应的数字,和/或跟踪与用户访问应用106和输入不与应用106预期的输入相对应的输入120的次数相对应的数字,来做出这样的决定。将会意识到,这些数字可以表明从用户的角度看, 应用106的直观程度如何,并且因此可以作为预期流行程度和/或质量的指标。在某些实施例中,界面管理器110被配置为用来将命令从一个应用映射到第二个应用。这样,例如,用户可以表明要将与第一个应用相关联的命令或手势应用到第二个应用。这个表明可以作为偏好1 存储起来并且如果需要的话,可以在客户端118访问第二个应用的时候应用于第二个应用。这些实施例是示范性的,不应被看作是任何方面的限制。图5图解说明用于能够运行这里描述的用于支持智能UI交互的软件组分的装置的示范性计算机体系结构500。这样,图5中图解说明的计算机体系结构500表示一种用于服务器计算机、移动电话、PDA、智能电话、服务器计算机、台式计算机、上网本计算机、平板型计算机和/或膝上型计算机的体系结构。计算机体系结构500可以用于运行这里给出的软件组分的任何方面。图5中所示的计算机体系结构500包括中央处理单元502(“CPU”)、包括随机存取存储器506 (“RAM”)和只读存储器(“ROM”)508的系统存储器504、和将存储器504与CPU 502耦合起来的系统总线510。在ROM 508中存储着基本输入/输出系统,该基本输入/输出系统包含基本例程,这些基本例程比如在启动期间帮助在计算机体系结构500内的各元件之间传递信息。计算机体系结构500此外还包括用于存储操作系统514、覆盖物模块112 和命令模块114的大容量存储装置512。虽然图5中未示出,但是如果需要的话,大容量存储装置512还可以被配置为用来存储命令数据108和/或偏好124。
大容量存储装置512通过与总线510连接的大容量存储控制器(未示出)与CPU 502连接。大容量存储装置512及其相关联的计算机可读介质为计算机体系结构500提供非易失性存储。虽然这里包含的计算机可读介质的描述指的是大容量存储装置,比如硬盘或CD-ROM驱动器,但是本领域技术人员应当意识到,计算机可读介质可以是可由计算机体系结构500访问的任何可用的计算机存储介质。举例来说,并非限定,计算机可读存储介质可以包括用于存储诸如计算机可读指令、数据结构、程序模块或其它数据之类的信息的任何方法或技术中实施的易失性和非易失性的、可移动的和不可移动的介质。例如,计算机可读介质包括,但不局限于,RAM、ROM、 EPROM、EEPR0M、闪存存储器或其它固态存储器技术、CD-ROM、数字通用盘(“DVD”)、HD-DVD, 蓝光或其它光学存储、磁盒、磁带、磁盘存储器或其它磁性存储装置或者可以用于存储期望信息并且可以由计算机体系结构500访问的任何其它介质。对于本说明书和权利要求书来说,词组“计算机可读存储介质”及其变体并不包括波、信号和/或其它瞬时的和/或无形的通信介质。按照各种不同的实施例,计算机体系结构500可以在使用通过诸如网络104这样的网络与远程计算机进行逻辑连接的联网环境中工作。计算机体系结构500可以通过与总线510相连的网路接口单元516与网络104连接。应当意识到,网络接口单元516也可以用于与其它类型的网络和远程计算机系统(例如,客户端装置118)进行连接。计算机体系结构500还可以包括输入输出控制器518,用于接收和处理来自多个其它装置的输入,包括键盘、鼠标或电子触笔(图5中未示出)。类似地,输入输出控制器518可以向显示屏幕、打印机或者其它类型的输出装置(图5中也未示出)提供输出。应当意识到,这里描述的软件组分可以在加载到CPU 502中并且运行时,将CPU 502和整个计算机体系结构500从通用计算系统转变成被定制成帮助实现这里给出的功能的专用计算系统。CPU 502可以是由任何数量的晶体管或其它分立电路元件构成的,并且可以各自或总体采取任意数量的状态。更加具体地讲,CPU 502可以响应于这里公开的软件模块内包含的可执行指令作为有限状态机工作。这些计算机可执行指令可以通过规定CPU 502如何在状态之间转变而转换CPU 502,从而转换构成CPU 502的晶体管或其它分立硬件元件。对这里给出的软件模块进行编码也可以转换这里给出的计算机可读介质的物理结构。在本说明书的不同实现方式中,物理结构的具体转换可以取决于各种因素。这些因素的例子可以包括但不局限于,用于实现计算机可读介质的技术、计算机可读介质被表征为主要的还是辅助的存储器,等等。例如,如果计算机可读介质被实现为基于半导体的存储器,那么可以通过转换半导体存储器的物理状态来将这里公开的软件编码在计算机可读介质上。例如,软件可以转换晶体管、电容器或者构成半导体存储器的其它分立电路元件的状态。该软件还可以转换这些部件的物理状态以便在其上存储数据。作为另一个例子,这里公开的计算机可读介质可以使用磁性或光学技术来实现。 在这些实现方式中,这里给出的软件可以在将软件编码到介质中的时候转换磁性或光学介质的物理状态。这些转换可以包括更改给定磁性介质内的特定位置的磁特性。这些转换也可以包括更改给定光学介质内的特定位置的物理性质或特性,以改变这些位置的光学特性。物理介质的其它转换都是可行的,而不会背离本说明书的范围和思想,前面的例子仅仅是为了有助于讨论而提供的。根据上述的说明,应当意识到,很多类型的物理转换会出现在计算机体系结构500 中,以便存储和执行这里给出的软件组分。还应意识到,计算机体系结构500可以包括其它类型的计算装置,包括手持计算机、嵌入式计算机系统、个人数字助理和本领域的技术人员公知的其它类型的计算装置。还可预见的是计算机体系结构500可以不包括图5中所示的全部部件,可以包括其它图5中没有明确示出的部件,或者可以利用完全不同于图5中所示的体系结构。基于前述,应当会意识到,这里已经公开了支持智能UI交互的技术。虽然已经用专用于计算机结构特征的语言、方法和转换动作、具体的计算机器和计算机可读介质描述了这里给出的主题,但是应当理解,所附权利要求中限定的本发明不必局限于这里描述的具体特征、动作或介质。而是,具体特征、动作和介质是以实现权利要求的实例形式公开的。前面描述的主题是仅仅以图解说明的方式给出的,不应将其看作是限制。可以对这里描述的主题进行各种不同的修改和变更,而不必遵循图解说明和描述的实例实施例和应用,并且不会背离本发明的真实思想和范围,本发明的真实思想和范围将会在所附的权利要求中提出。
权利要求
1.一种支持智能用户界面交互的计算机实现的方法,该计算机实现的方法包括执行计算机实现的操作,这些计算机实现的操作用于接收来自客户端(118)的输入(120),该输入(120)与由客户端(118)通过用户界面访问的网页应用(106)相关联;取回与网页应用(106)相关联的命令数据(108),该命令数据(108)表明由网页应用 (106)支持的一个或多个命令;确定该输入(120)是否与由网页应用(106)支持的一个或多个命令相对应;以及响应于确定该输入(120)与一个或多个命令不相对应, 确定客户端(118)打算的输入,和生成与由网页应用(106)支持的一个或多个命令相对应的经过修改的输入(120)。
2.按照权利要求1所述的方法,此外还包括响应于确定该输入与一个或多个命令不相对应,取回与客户端相关联的情境数据,该情境数据表明客户端的一个或多个能力,其中客户端的一个或多个能力包括由客户端支持的输入装置。
3.按照权利要求1所述的方法,其中命令数据是从作为主机提供网页应用的服务器计算机中获得的,该命令数据是由与网页应用相关联并且由服务器计算机作为主机提供的经过授权的实体生成的。
4.按照权利要求1所述的方法,其中生成命令数据是在确定命令数据不是由服务器计算机作为主机提供时由界面管理器生成的,其中生成命令数据包括挖掘网页应用以确定网页应用预期的输入。
5.按照权利要求2所述的方法,此外还包括响应于确定输入与一个或多个命令不相对应,取回与客户端的用户相关联的偏好,其中确定由客户端打算的输入包括分析命令数据、 情境数据和偏好以解释该输入,其中偏好包括在客户端与网页应用之间交互期间跟踪的数据,并且其中偏好包括在客户端与界面管理器之间交互期间生成的数据。
6.按照权利要求1所述的方法,其中网页应用包括配置为用来通过运行基于网页的操作系统的计算机进行访问的计算机可执行代码。
7.按照权利要求1所述的方法,其中确定输入是否与一个或多个命令相对应包括生成包括与接收到的输入相对应的一个或多个命令的指示和与一个或多个命令相对应的一个或多个用户界面控制的用户界面覆盖物,以及接收与一个或多个命令中的一个或多个相对应的用户界面控制中的一个或多个的选择,其中生成经过修改的输入包括生成与所选择的用户界面控制相对应的一个或多个命令以及将该一个或多个命令提交给网页应用。
8.按照权利要求7所述的方法,此外还包括 跟踪客户端与网页应用之间的交互;以及将所述交互报告给与网页应用相关联的至少一个经过授权的实体。
9.按照权利要求1所述的方法,此外还包括在访问网页应用时生成用户界面,该用户界面被配置为用来显示由网页应用支持的一个或多个命令和与该一个或多个命令相对应的客户端处的输入的指示。
10.一种计算机可读存储介质,具有存储于其上的计算机可读指令,所述计算机可读指令在由计算机运行时,会促使计算机执行按照权利要求1-9中任一项所述的方法。
11. 一种计算机可读存储介质,具有存储于其上的计算机可读指令,所述计算机可读指令在由计算机运行时,会促使计算机取回与由服务器计算机(102)作为主机提供的网页应用(106)相关联的命令数据 (108),命令数据(108)表明由网页应用(106)支持的一个或多个命令; 检测客户端(118)与网页应用(106)之间的交互;在客户端(118)处生成用户界面覆盖物(116),该用户界面覆盖物(116)被配置为用来显示由网页应用(106)支持的一个或多个命令(412)和与该一个或多个命令(412)相对应的客户端(118)处的输入(120)的指示(412);接收来自客户端(118)的输入(120),该输入(120)与由客户端(118)通过用户界面访问的网页应用(106)相关联;确定该输入(120)是否与由网页应用(106)支持的一个或多个命令相对应;以及响应于确定该输入(120)与一个或多个命令不相对应,取回与客户端(118)相关联的情境数据(122),该情境数据(122)表明客户端(118)的一个或多个能力,取回与客户端(118)相关联的偏好(116),至少部分地基于输入(120)、命令数据(108)、偏好(116)和情境数据(122),确定客户端(118)打算的输入,以及生成与由网页应用(106)支持的一个或多个命令相对应的经过修改的输入(1沈)。
全文摘要
在此描述了支持智能用户界面交互的概念和技术。可以公布或确定由应用接受的命令。在访问应用之前或期间,可以在客户端处呈现命令,以指明可用于与应用相接口的命令。可以用表明如何使用客户端的用户界面和/或输入装置来执行可用命令的信息来呈现命令。可以将从客户端接收到的输入与可用命令进行比较,以确定输入是否与可用命令匹配。还可以取回并分析与客户端相关的情境数据、偏好和/或其它数据,以确定客户端的意图。可以使用该意图来识别打算的命令并且将输入修改为与打算的命令相匹配。可以将经过修改的输入传送给应用。
文档编号G06F9/44GK102566925SQ20111044370
公开日2012年7月11日 申请日期2011年12月27日 优先权日2010年12月27日
发明者G.穆尔, M.B.麦克劳林, O.E.马里洛 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1