可实例化的手势对象的制作方法

文档序号:6533495阅读:125来源:国知局
可实例化的手势对象的制作方法
【专利摘要】可实例化的手势对象技术被描述,在所述可实例化的手势对象技术中本机手势功能性使用基于脚本的识别接口被抽象(abstract)给应用。手势对象可以在使用动态脚本语言所编程的应用的指示下针对不同的交互上下文被实例化。手势对象能够被配置成对手势识别和对应识别的手势适用于的内容的目标元素指定要考虑的特定触摸接触和/或其它输入。在创建之后,手势对象代表应用管理手势处理操作,包括:用本机手势系统来创建识别器;馈送输入数据以用于处理;以及将原始手势数据变换成适于应用和/或目标元素的格式。因此,基于脚本的应用可以使用手势对象来卸下与手势识别相关联的处理任务并且利用本机手势功能性。
【专利说明】可实例化的手势对象

【背景技术】
[0001]作为用户与内容交互的方式被计算设备支持的手势的数目和类型日益增加。用户可能期望受支持的手势在用户体验中自始至终可用于各种不同的应用和内容交互。然而,传统上,受本机支持的手势功能性可能需要复杂的配置,这使对于一些开发者来说将手势并入他们的应用变得困难或成本高昂。附加地,现有系统中的本机手势功能性可能是有限的或者完全地不可用于采用动态脚本语言(诸如JavaScript和HTML)的“现代”应用和/或内容。


【发明内容】

[0002]可实例化的手势对象技术被描述,在所述可实例化的手势对象技术中本机手势功能性使用基于脚本的识别接口被抽象给应用。手势对象可以在使用动态脚本语言所编程的应用的指示下针对不同的交互上下文被实例化。手势对象能够被配置成对手势识别和对应识别的手势适用于的内容的目标元素指定要考虑的特定触摸接触和/或其它输入。在创建之后,手势对象代表应用管理手势处理操作,包括:用本机手势系统来创建识别器;馈送输入数据以用于处理;以及将原始手势数据变换成适于应用和/或目标元素的格式。因此,基于脚本的应用可以使用手势对象来卸下与手势识别相关联的处理任务并且利用本机手势功能性。
[0003]本
【发明内容】
被提供来以简化的形式引入在下面在【具体实施方式】中被进一步描述的构思的选择。本
【发明内容】
不旨在识别所要求保护的主题的关键特征或必要特征,它也不旨在被用来帮助确定所要求保护的主题的范围。

【专利附图】

【附图说明】
[0004]参考附图对具体描述进行描述。在图中,附图标记的最左边的(一个或多个)数字标识附图标记首次出现在其中的图。相同的附图标记在本描述和图中的不同实例中的使用可以指示类似的或相同的项。
[0005]图1是可操作来采用本文中所描述的可实例化的手势对象技术的示例性环境的图示。
[0006]图2描绘了场景,所述场景描绘了依照一个或多个实施例的示例性手势对象的细节。
[0007]图3描绘了其中多个手势对象被用于手势识别的示例性场景。
[0008]图4是描绘了依照一个或多个实施例的实例化手势对象的示例性过程的流程图。
[0009]图5是描绘了依照一个或多个实施例的在其中应用注册手势识别的另一示例性过程的流程图。
[0010]图6图示了能够在一个或多个实施例中被采用来实施本文中所描述的技术的方面的示例性系统的各种构件。

【具体实施方式】
[0011]概沭
传统上,由平台提供的受本机支持的手势功能性可能需要复杂的配置,这使对于一些开发者来说将手势并入他们的应用变得困难或成本高昂。附加地,现有平台中的本机手势功能性可能不可用于采用动态脚本语言(诸如JavaScript和HTML)的应用。
[0012]可实例化的手势对象技术被描述,在所述可实例化的手势对象技术中本机手势功能性使用基于脚本的识别接口被抽象给应用。手势对象可以在使用动态脚本语言所编程的应用的指示下针对不同的交互上下文被实例化。手势对象能够被配置成对手势识别和对应识别的手势适用于的内容的目标元素指定要考虑的特定触摸接触和/或其它输入。在创建之后,手势对象代表应用管理手势处理操作,包括:用本机手势系统来创建识别器;馈送输入数据以用于处理;以及将原始手势数据变换成适于应用和/或目标元素的格式。因此,基于脚本的应用可以使用手势对象来卸下与手势识别相关联的处理任务并且利用本机手势功能性。
[0013]在以下讨论中,示例性环境首先被描述,所述示例性环境可操作来采用本文中所描述的可实例化的手势对象技术。然后,示例性场景和过程被描述,所述示例性场景和过程可以在示例性环境中以及在其它环境中被采用。因此,示例性场景和过程不限于示例性环境,并且示例性环境可以并入除本文中所描述的例子之外的场景和过程。最后,示例性计算系统被描述,所述示例性计算系统能够在一个或多个实施例中被采用来实施可实例化的手势对象技术。
[0014]操作环塏
图1是可操作来采用本文中所描述的技术的示例性实施方案中的环境100的图示。所图示的环境100包括经由网络106被通信地耦合的计算设备102和web服务104。计算设备102和web服务104每个都可以通过各式各样的计算设备被实施。
[0015]例如,计算设备102可以被配置为能够通过网络106进行通信的计算机,诸如台式计算机、移动站、娱乐器具、平板电脑或平板设备、表面计算设备、被通信地耦合到显示设备的机顶盒、移动通信设备(例如,无线电话)、游戏控制台等等。计算设备102可以被配置为采用各种处理系统的任何适合的计算系统和/或设备,其的一些附加的例子关于图6的示例性系统被讨论。
[0016]计算设备102被进一步图示为包括操作系统108。一般地说,操作系统108被配置成将计算设备102的底层功能性抽象给可在计算设备102上执行的应用110。例如,操作系统108可以抽象计算设备102的处理、存储器、网络和/或显示功能性,使得应用110可以在不用知道这个底层功能性“如何”被实施的情况下被编写。应用110例如可以将要被显示设备再现和显示的数据提供给操作系统108,而不用理解这个再现将如何被执行。操作系统108可以提供应用110可以调用其来利用系统特征的各种服务、接口以及功能性。用来将各式各样的功能性提供给计算设备102的各种应用110被设想到,其包括但不限于例如用来访问和再现网页和/或其它内容的浏览器、办公生产力应用、电子邮件客户端、游戏、多媒体管理程序、设备管理软件以及社交联网应用。
[0017]操作系统108可以进一步为不同种类的应用提供服务、接口以及功能性,所述不同种类的应用包括可以使用静态地编译的语言(诸如C++、C#)编写的“旧”应用和可以使用可以在运行时被动态地编译的动态脚本语言编写的“现代”应用,所述动态脚本语言诸如JavaScript、超文本标记语言修订版5和/或级联样式表(HTML5/CSS)以及可扩展应用标记语言(XAML)。现代应用可以通过由操作系统108支持的一个或多个运行时平台来操作,所述运行时平台被配置成为对应的应用提供相应的执行环境。运行时平台为兼容应用提供共同的一组特征、例行程序以及功能,从而从应用开发卸下共同任务的编码。因此,运行时平台能够便利于在对用于应用的动态脚本的很少或没有改变的情况下和/或在没有重新编译的情况下应用到不同种类的系统的可移植性。运行时平台的例子包括例如JAVA?运行时环境(JRE)、Adobe? Flash?、Microsoft?.NET 框架、Microsoft Silverlight? 以及WinRT?。
[0018]在所描绘的例子中,计算设备102包括或者利用显示设备112,所述显示设备112可以被配置成包括触摸屏/触摸数字转换器以便使能触摸屏和手势功能性。计算设备102可以因此包括显示驱动器、手势模块114和/或可操作来提供通过显示设备112的触摸能力所使能的触摸屏和手势功能性的其它模块。因此,计算设备可以被配置成识别使对应的操作被执行的输入和手势。
[0019]例如,手势模块114可以被实施为如图1中所描绘的操作系统108的构件。手势模块114表示用于手势的支持和识别的本机功能性(例如,本机手势系统),其可以被使得经由操作系统108可被应用110访问。例如,操作系统108可以提供可操作来调用手势识别功能性的一个或多个应用编程接口(API)。特别地,手势模块114可以被配置成识别触摸输入,诸如用户的手的如在使用触摸屏功能性的计算设备102的显示设备112上或者接近于使用触摸屏功能性的计算设备102的显示设备112的手指。各种不同类型的手势可以被计算设备识别,所述手势通过例子而非限制包括,根据单个类型的输入(例如,触摸手势)被识别的手势以及牵涉多个类型的输入的手势。例如,其能够被利用来识别单手指手势和边框手势、多手指/同手手势与边框手势、和/或多手指/不同手手势与边框手势。进一步地,手势模块114可以被配置成检测和区分手势、触摸输入、基于相机的输入、触针输入以及其它不同类型的输入。而且,从不同的源获得的各种种类的输入(包括通过设备(例如,输入设备)的触摸屏、鼠标、触摸板、相机、软件或硬件键盘和/或硬件键所获得的输入)可以被相结合地使用来引起对应的设备操作。
[0020]计算设备102被进一步描绘为包括再现引擎116。再现引擎116表示计算设备102的可操作来操纵针对内容的显示的各种内容再现操作的构件。例如,再现引擎116可以处理对应的标记语言内容并且输出格式化的内容以用于显示在显示设备112上。在至少一些实施例中,再现引擎116被配置为浏览器的便利于网页和其它资源118的再现的构件,所述网页和其它资源118可以通过网络106从web服务104获得。资源118能够包括典型地由一个或多个服务提供商通过网络提供的内容和/或服务的任何适合的组合。再现引擎116还可以被实施为独立应用或操作系统构件。计算设备的浏览器和其它应用110可以调用再现引擎116来操纵针对应用的对应的内容项的再现。例如,采用动态脚本语言的各种种类的“现代”应用可以使用再现引擎116的功能性以用于处理和显示对应的页面、文档、媒体、图像、表单、用户界面和/或其它类型的应用内容。
[0021]为了实施可实例化的手势对象技术,再现引擎116可以被配置成包括或者否则利用识别接口 120。识别接口 120表示可以经由再现引擎116而被暴露给应用110以便使能与用于手势的支持和识别的本机功能性交互的功能性,所述本机功能性由手势模块114表示。传统上,手势经由手势模块114的直接配置可能是复杂的和资源密集的。而且,现有系统中的本机手势功能性可能是有限的或者完全地不可用于采用动态脚本语言的“现代”应用。因此,为了产生利用本机手势功能性的应用,应用开发者在传统上维持经由手势模块114提供的复杂配置管理选项的具体知识和/或可能不得不执行复杂的和/或静态的编程以便直接地从应用代码调用功能性。如在本文中详细地描述的,识别接口 120可以通过代表应用执行各种手势配置、处理以及处理操作来简化应用开发。因此,识别接口 120从应用卸下针对手势识别的各种处理和处理操作,这使应用开发者从不得不为这些操作编写代码和/或具有手势配置选项的具体知识中解脱。
[0022]在一个方法中,应用110可以调用识别接口 120来实例化用于各种交互的手势对象122。手势对象122然后代表应用经由手势模块114自动地操纵手势识别操作。例如,手势对象122可以被配置成代表应用与手势模块114进行通信以便为不同的交互创建适当的识别器124并且被配置成将输入数据馈送给识别器124以用于手势处理。手势对象122 —般地说是底层识别器和本机手势功能性的基于脚本的表示以及用于底层识别器和本机手势功能性的操控的接口。手势对象122和对应的识别器124可以针对每个特定交互上下文被创建。如本文中所使用的交互上下文指的是被手势模块114跟踪以用于手势识别的特定输入或一组输入(例如,触摸接触、触针输入、指针输入、相机输入等)。
[0023]识别器124是为本机手势系统创建的构件/对象,其被配置成跟踪针对不同的交互上下文的输入,将输入映射到受支持的手势的库,检测特定手势何时发生,并且针对手势识别激发(fire)适当的事件。因此,识别器124表示在系统级操纵针对在不同的上下文中的手势识别的处理的功能性。识别器124理解如何针对一组输入使用指定的系统格式和协议来调用本机手势功能性。识别器124可以被配置成检测各种受支持的手势,所述受支持的手势的例子包括但不限于轻叩、保持、旋转、定标(scale)、缩放、摇摄以及转化手势。
[0024]手势对象122代表应用便利了对由识别器124所生成的原始手势事件的处理。手势对象122可以便利于信息在由识别器使用的系统格式与可由使用动态脚本语言所编程的应用理解的基于脚本的格式之间的转化。这可以包括检测由识别器激发的事件、格式化针对特定应用的手势信息/事件、将原始手势数据变换成与交互上下文/手势对象相关联的应用和/或元素的坐标空间等等,其细节能够在以下讨论中被找到。
[0025]已经描述了示例性操作环境,现在考虑在一个或多个实施例中讨论有关可实例化的手势对象的一些示例性实施方案细节。
[0026]可实例化的丰势对象细节
为了进一步地图示,现考虑图2,其在200处一般地描绘了示例性场景,其中识别接口120被调用来实例化手势对象122以便代表应用110操纵手势识别。通过再现引擎116(或者以其它方式)针对应用所被再现的内容可以根据对应的内容模型202被表示。内容模型202是文档、页面或其它应用内容的结构的层次表示。内容模型使得消费内容的应用能够引用并且操控被包含在该内容中的各种元素204。元素204可以包括例如与内容一起被包括的图像、控件、文本、菜单、图形等等。在一个特定例子中,文档对象模型(DOM)可以被应用采用。DOM是用于表示针对浏览器(或其它应用)的页面中的元素并且与其交互的标准约定。页面的DOM能够被浏览器构建并且用来引用、修改、应用效果,和/或否则操控被包含在网页中的元素204。针对其它应用的内容也可以依照DOM被配置成表示对应的页面、文件和/或文档的元素204。其它种类的内容模型202也可以在一个或多个实施例中被采用。
[0027]如图2中所表示的,应用可以与识别接口 120交互以便指示识别接口 120为一个或多个交互上下文创建手势对象122。手势对象122然后操作来创建并且包装与计算设备102的本机手势功能性相关联的对应的识别器124。手势对象将输入数据馈送给经包装的识别器并且接收基于经由识别器和/或手势模块114所执行的处理从识别器返回的原始手势识别数据/事件。手势对象122还可以基于所对应的内容模型202被映射到特定元素204。以这种方式,应用能够显式地规定针对手势对象的手势处理的结果将适用于的元素。而且,出于手势应用的目的,应用可能能将不同项的合集规定为元素。这与传统技术不同,在所述传统技术中对单独的项使用点击测试或其它类似的选择技术被启发式地推理手势适用于的元素。
[0028]丰势对象
特别地,手势对象122在图2中被图示为包括交互输入206、目标元素208以及定制属性210,其可以被应用设置来为给定交互上下文生成对象。交互输入206(还被称为指针)是诸如触摸接触、指针定位/移动、触针输入、鼠标输入和/或针对交互上下文被跟踪的其它输入这样的输入。手势对象122可以被配置成包括一个或多个单独的输入/接触,例如,指针。手势对象可以包括来自同一输入源的相同类型的多个指针和/或来自不同输入源的不同类型的指针的组合。将输入/接触包括在手势对象122中使这些输入/接触被考虑用于手势检测。目标元素208表示在手势对象122被映射到的、内容模型202内的元素。例如,在内容的DOM表示中的元素可以被规定为针对手势对象的目标。单独的元素可以被定义为包含正被再现的用户界面、页面或文档的一个或多个单独的构件/项。为手势对象122指定目标元素208使关于手势对象122被生成的手势事件被显式地导向所指定的元素。可以为手势对象指定单个目标元素或多个目标元素以便使能各种不同的交互场景/手势。而且,因为一个或多个元素预先是已知的,所以经由手势模块114和/或识别器124获得的原始手势数据能够针对特定元素被格式化。因此,手势对象可以将格式化的手势数据供应给在应用级处具有很少或没有附加的处理的情况下可以被应用于对应的元素的应用。附加地,定制属性210可以被提供来使能手势对象行为的扩展和定制并且便利于生存期管理,其细节稍后在这个文档中被讨论。
[0029]在至少一些实施例中,手势对象122被用基于脚本的编程语言(诸如JavaScript)实施为开发者可得到的内置对象类型。手势对象122包括交互输入206和目标元素208以作为对象的属性。开发者可以对对象使用方法来设置属性并且使识别接口 120为给定交互上下文来实例化适当的对象。这些方法使得开发者/应用能够将触摸接触和/或其它输入添加到对象并且能够在DOM或另一内容模型中规定目标元素。开发者还可以经由暴露的方法以类似的方式设置定制属性210。在一个方法中,识别接口 120可以被配置为应用编程接口,所述应用编程接口暴露了用来为手势识别定义和创建手势对象122的方法。
[0030]通过例子而非限制,以下伪代码表示适合于所描述的技术的方法和手势对象的仅一个基于脚本的实施方案:
var g = new Gesture () // 创建手势对象
g.target = element//规定接收手势事件的元素 g.addPointer (pointerld) //将接触/输入添加到对象/识别器 g.removePointer (pointerld) // 移除接触 / 输入 g.stop OIl终止手势处理
按照前文,手势对象可以使用被识别接口 120支持的内置对象类型而被创建。元素和交互输入(例如,接触/输入)可以被规定为所创建的对象的属性。接触/输入可以通过移除方法而被移除,使得接触/输入不再被认为是手势处理的一部分。停止方法使能按需终止处理。停止方法从对象移除接触/输入,终止处理,激发针对手势的结束事件,并且重置对象/识别器以便为另一手势做准备。否则,对象可以持续并且依照在下面所描述的生存期管理技术自动地自身清理它。
[0031]因此,为了针对给定交互上下文启动手势事件,应用可以调用识别接口 120并且规定目标元素和一个或多个交互输入。这通过识别接口 120引起对应的手势对象122的创建。针对手势识别的大量处理然后经由手势对象122代表应用被操纵,所述针对手势识别的大量处理包括将输入数据供应给识别器、处理手势事件消息、变换原始手势数据等等。实际上,应用向识别接口 120注册以得到关于相对于选择的目标元素的特定输入/接触的手势更新(例如,交互上下文),并且然后可以仅仅等待识别接口 120返回针对交互上下文的相干信息。例如,识别接口 120可以为元素供应手势事件/数据,所述手势事件/数据已经相对于对应的元素被变换为针对应用内容的DOM中的DOM事件,或者变换为适于由应用所采用的另一内容模型的类似的事件。
[0032]考虑例子,其中用户用他们的食指的接触来选择图像并且跨越显示器拖曳图像。在初始选择图像时,应用可以操作来通过识别接口 120在图像作为目标元素208并且食指触摸作为交互输入206的情况下形成对应的手势对象122。现在,应用本身不再需要监控手指位置中的改变(例如,拖曳)或者不再需要将这样的信息供应给识别系统。替代地,在这个场景中实例化的手势对象122代表应用自动地跟踪交互输入206并且将有关接触位置中的改变的信息馈送给识别器124,所述识别器124可以检测所对应的拖曳手势。进一步地,手势对象122和/或识别接口 120同样处理由识别器124生成的手势事件消息,并且可以依照由应用所采用的内容模型将这些事件消息供应给应用。
[0033]坐标夺换
如上面简要地讨论的,手势处理的结果可以被预处理以便针对目标元素具体地变换结果。为手势对象122指定目标元素208有效地使系统元素知晓。这样,识别接口 120被配置成将手势检测结果变换成与手势所针对的元素相关联的坐标空间。典型地,手势结果可以被表达为先前的状态与新的状态之间的增量或者表达为相对于初始状态的累计值。如果针对手势的原始增量或累积数据被供应给应用,则应用必须做针对特定元素对原始增量进行变换的工作。例如,如果元素先前已被旋转,则应用必须确定如何相对于预先存在的旋转来应用手势。在不是元素知晓的传统系统中,开发者除了在他们的应用代码中操纵这些情形别无选择,这使开发复杂化。另一方面,按照本文中所描述的技术来为手势对象122显式地定义目标元素208使得识别接口 120能够跟踪元素的状态。元素状态可以基于应用的手势而被更新,并且经更新的状态被用来在为该元素定义的坐标空间中计算针对后续识别的手势(或手势改变)的增量。因此,每当手势被检测到时,可以代表应用将由手势模块114提供的原始增量信息变换成适当的坐标空间。应用因此可能能在很少或没有附加的处理的情况下直接地对所对应的元素应用结果。
[0034]在至少一些实施例中,应用还可以显式地规定手势数据被变换到的特定坐标空间。为了这样做,应用可以设置目标元素以及还设置被配置成规定坐标空间的手势对象的另一指定的和/或定制的属性,所述坐标空间可以或者可以不对应于目标元素。这使得应用能够选择坐标空间,所述坐标空间可以不同于手势事件所被激发至的目标元素的坐标空间。例如,手势数据可以被变换成页面/文档的全局坐标空间,而不是目标元素的坐标空间。更进一步地,应用能够为手势对象定义任意或全局坐标空间变换,使得对应的手势数据像在由应用选择的已定义坐标空间中那样被变换和报告。
[0035]牛存期管理
识别接口 120和手势对象122可以被进一步配置成实施受管理生存期方案,所述受管理生存期方案使能对象的再使用、保持访问/引用具有活动交互输入206的对象的能力、以及控制自动收集在适当的时间清除对象。一般地说,JavaScript和其它基于脚本的对象被创建为具有范围(例如,功能的或全局的)并且可以持续长达所关联的范围的持续时间。范围可以涉及特定功能/模块或者达页面或应用实例的生存期。对象然后可以识别它何时不再被使用并且自动地收集它本身(例如,移除它本身和/或以其它方式允许它本身被删除)。
[0036]为了防止仍然具有活动交互输入206 (例如,接触/输入)的手势对象122自动地收集/移除它们本身,针对对象的交互输入206可以被配置为钉扎(pinning)引用。只要交互输入206保持活动,钉扎引用就使对象保持活跃。即使对象的范围不再是有效的(例如,定义对象的范围的功能/模块已终止),情况也可以是这样的。针对对象的目标元素208同样可以充当使相应的对象保持活跃直到目标元素被清除为止的钉扎引用。因此,只要驱动手势的交互输入206持续,手势对象122就可以持续,并且手势事件可以继续经由手势对象122被供应。当交互输入206被移除(例如,用户从显示器移除他们的手指)时,手势对象122可以继续识别到它们不再在使用中并且自动地收集它本身。这在应用不必管理代表它本身所被创建的手势对象122的情况下发生。
[0037]为了使能在生存期期间对手势对象122的继续访问,由识别接口供应的手势事件可以包括标识并且提供对对应的手势对象的访问的信息。因此,即使对对象的引用丢失了,标识被包含在事件中的属性的对象也可以被用来访问对应的手势对象。附加地,定制属性210可以被设置成携带定制信息以及甚至功能。例如,每当事件被对象激发时调用的特定功能可以经由定制属性210被规定。在另一例子中,属性可以被配置成将当前与给定对象相关联的接触/输入的列表传达给应用。各种其它例子也被设想到。
[0038]如所提到的那样,手势对象122也可以被再使用。一旦对象被创建并且与交互输入206和目标元素208相关联,对象就可以像上面所讨论的那样持续。当与对象相关联的交互输入206是活动的时,目标元素208保持不变。附加的交互输入206可以被添加到对象。交互输入206还可以在驱动手势的接触/输入完成(例如,手指被抬起)时被显式地(使用移除方法)或自动地移除。因此,为手势对象122考虑的特定接触/输入可以在对象的生存期期间改变。一旦所有交互输入206被移除,对象就可以自动地重置。对象还可以响应于如上面所描述的显式停止而重置。随后,被应用于相同的元素的不同的交互输入206可以被添加到手势对象122以便再使用该对象。手势对象122还能够被与不同的元素相关联,只要该对象不被积极地用于不同的元素(例如,手势在进行中)。
[0039]手势对象的另一特征是应用无缝地操纵惯性处理的能力。惯性处理被用来模拟当用户界面元素通过手势被操控时的惯性以便在用户抬起他们的手指或者以其它方式结束驱动手势的输入之后提供自然的交互效果。因此,对于在用户交互结束之后的时间段,操控的元素可以自然逐渐停止,从边界弹回,继续滚动等等。惯性可以取决于触发手势的用户交互的速率(例如,用户摇摄、缩放或者旋转有多快或多慢)。惯性处理基于该速率继续持续一段时间并且然后可以逐渐停止。惯性处理可以通过在用于交互的最后接触/输入结束时设置定时器来实现。当定时器正在运行时,通过惯性处理所生成的手势事件可以继续被供应给应用,好像事件是通过直接交互生成的。通过惯性处理所生成的手势事件可以与通过直接交互所生成的手势事件被以相同的方式导向应用和/或目标元素。
[0040]应用可以被配置成检测从直接交互到惯性处理的模式改变何时发生。例如,模式标识符可以被包括在手势事件中和/或通知消息可以在针对手势的接触结束时被发送。因此,应用可以选择性地使用或者忽视通过惯性处理所被生成的手势事件。例如,应用可以简单地忽视与惯性处理相关联的事件,使得当直接用户操控结束时元素停止移动/反应。此外或替换地,应用能够调用上面所描述的停止方法“g.StopO ”来重置手势,这切断了惯性处理以及手势事件到应用的递送。
[0041]图3在300处一般地描绘了示例性交互场景,所述示例性交互场景图示了本文中所描述的可实例化的手势对象技术的附加方面。特别地,图3的场景描绘了在计算设备102的用户界面中显示的第一元素302和第二元素304的操控。在这个例子中,元素是不同车辆的图像。使用相应的字母A至D标记的多个交互输入306也被图示。在这个例子中,交互输入306对应于用户的手与显示设备112的触摸接触。对于这个场景,不同的交互上下文可以针对与用户手的每一个的交互被定义。因此,不同的手势对象122可以针对手的每一个以先前所描述的方式被实例化。
[0042]如图3中所描绘的,与用户的左手相对应的手势对象122被配置成跟踪接触A和B,并且被与作为目标元素的第一元素302相关联。与用户的右手相对应的另一手势对象122被配置成跟踪接触C和D,并且被与作为目标元素的第二元素304相关联。不同的手势对象122是同时活动的并且可以独立于彼此被管理/处理。例如,接触A和B的捏可以被识别为对第一元素302引起放大的缩放手势,而同时接触D被识别为应用于第二元素304的选择和保持手势。在这个例子中,接触C可以连同第二元素304—起被考虑,但是可以不对所识别的选择和保持手势做出贡献。
[0043]使用多个不同的手势对象122来控制不同的交互同时使能各种不同的多触摸输入和多手势场景。通过对应的手势对象122跟踪到的各种不同的上下文/手势可以是同时活动的。每个对象可以被用来跟踪一个或多个单独的接触/输入。附加地,单独的接触可以被同时添加到多个手势对象,并且因此可以被同时考虑用于多个手势的检测。
[0044]尽管与不同的元素相关联的对象在图3中被描绘,但是跟踪不同的手势的多个不同的手势对象122可以同时被与相同的元素相关联。例如,考虑图3中所描绘的双手在其中被应用于第一元素302的例子。不同的手势对象122仍然可以在这个例子中被产生。然而,在这里针对不同的对象的目标元素可以是相同的元素。不同的手势对象122可以被配置成在相同的元素上驱动不同动作。例如,左手可以执行缩放手势,而右手对相同的元素执行旋转手势。
[0045]在另一例子中,左手可以被配置成粗略地使元素旋转,而右手执行元素的精细旋转。这些不同的手势可以经由相应的手势对象122而被检测到并且同时被应用于第一元素302。通过使用一个或多个手势对象122所使能的多触摸和多手势场景的各种其它例子也被设想到,包括其中不同的输入源(例如,触摸、触针、相机、鼠标等)和/或多个输入源的组合(例如,触摸和鼠标、触针和相机、触摸和相机等)被采用的场景。
[0046]已经描述了有关可实例化的手势对象的一些细节,现考虑依照一个或多个实施例的一些示例性过程。
[0047]示例件讨稈
以下讨论描述了可以利用先前描述的系统和设备来实施的可实例化的手势对象技术。诸过程中的每一个的方面可以用硬件、固件、软件或其组合来加以实施。过程被示出为一组块,其规定由一个或多个设备执行的操作并且未必限于由相应的块示出的用于执行操作的次序。在以下讨论的部分中,可以分别对操作环境100以及图2和3的示例性场景200和300做出参考。
[0048]图4描绘了示例性过程400,其中手势对象122被采用来代表应用执行手势识别。在至少一些实施例中,过程可以被适当地配置的计算设备执行,所述计算设备诸如图1的示例性计算设备102,其包括或者否则利用实施识别接口 120的再现引擎116。
[0049]手势对象针对应用被实例化(块402)。例如,再现引擎116可以提供使得依靠再现引擎116的基于脚本的应用能够调用计算设备102和/或操作系统108的本机手势功能性的接口。该接口使得用动态脚本语言(诸如JavaScript)所编写的应用能够从应用卸下针对手势的处理。为了这样做,再现引擎116可以按应用所指示的来实例化手势对象122。手势对象122被配置成代表应用来操纵针对手势识别的操作,如先前所描述的那样。
[0050]被实例化的手势对象被与由应用规定的交互输入和目标元素相关联(块404)。例如,手势对象122的属性可以被设置为与对象相关联的指定的特定交互输入206和目标元素208,如关于图2上面所讨论的那样。添加到对象的交互输入206然后可以被一起考虑用于手势识别,并且由手势模块114识别的任何对应的手势可以被显式地导向被选择的目标元素208。不同的交互输入206可以在各种时间从对象被添加和移除,并且对象本身可以被再用于不同的交互上下文。
[0051]然后代表应用创建识别器来便利于手势识别(块406)。交互输入数据然后被馈送给识别器以用于识别处理(块408)。如先前所讨论的,识别器124是经由本机手势系统便利于手势识别的系统级对象/抽象。手势对象122可以被实施来将基于脚本的格式用于与现代应用110的交互并且每个对象可以创建采用本机系统格式来调用本机手势功能性的对应的识别器124。手势对象122然后将有关交互输入的输入数据馈送给对应的识别器以用于处理。给定针对交互上下文的一组交互输入206,识别器124通过手势模块114来管理这些输入的跟踪和手势的识别。例如,交互输入206可以被映射到由手势模块114支持的手势的库,如先前所讨论的那样。
[0052]从识别器获得指示所识别的手势的手势事件消息(块410)并且代表应用处理从识别器获得的手势事件消息中的原始手势数据(块412)。例如,响应于使用由对应的手势对象122供应的输入对手势的识别,识别器124可以发送手势事件消息以供由手势对象122接收。手势对象122可以获得对应的手势事件消息,所述对应的手势事件消息一般地包含经由本机手势系统所计算的原始手势数据。依照本文中所描述的技术,手势对象122可以引起对原始数据的处理以便针对特定目标元素和/或应用具体地对数据进行变换。例如,原始手势数据可以被以先前所讨论的方式变换成与由手势对象122定义的目标元素相对应的坐标空间。因此,应用被从不得不执行这样的计算的情况中解脱。
[0053]手势事件依照针对应用的内容模型被激发给目标元素(块414)。激发给目标元素的手势事件包含已针对应用和/或目标元素被变换的处理过的手势数据。因此,应用可以简单地将经由手势事件被传达的手势/动作应用到适当的元素。
[0054]图5描绘了示例性过程500,其中应用使用手势对象来注册交互输入以用于手势识别。在至少一些实施例中,过程可以通过图1的适当地配置的应用110来执行,所述适当地配置的应用I1被配置成调用经由计算设备的再现引擎116实施的识别接口 120。
[0055]应用可以指示为对应的内容项的所选目标元素创建手势对象以便经由基于脚本的接口来注册用于手势识别(块502)。例如,使用动态脚本语言所编程的应用可以与由用来为应用再现内容的再现引擎116所暴露的识别接口 120交互。交互可以使识别接口 120以先前所描述的方式针对给定交互上下文实例化手势对象122。为了定义交互上下文,应用可以对对象使用方法来通过设置对象的各种属性来配置对象。一般而言,这牵涉像关于图2所描述的那样规定至少交互输入206和目标元素208。应用还可以设置定制属性210来控制手势对象122的行为和/或扩展手势对象122的功能性。这样的定制的例子包括但不限于:响应于特定手势触发调用的功能;指定适用于上下文和/或可以被忽视的特定种类的手势;返回有关手势和/或用来计算手势的输入的规定的数据/属性;提供配置参数和门限来控制手势等等。
[0056]手势事件然后被获得,所述手势事件在目标元素上被激发并且指示基于与目标元素的用户交互所识别的手势(块504)以及手势事件被应用于目标元素以便依照所识别的手势来操控目标元素的显示(块506)。如先前所提到的那样,手势对象122使得应用110能够卸下用于处理手势的许多工作负荷。因此,在按照块502指示对象的创建之后,应用自动地开始获得针对对应的交互上下文的手势事件。这可以在不用应用执行附加的工作来识别手势的情况下发生。应用可以简单地并入处理机(handler)来侦听或者以其它方式获得手势事件并且将它们应用于适当的元素。而且,由激发到元素的手势事件描述的手势数据可以被预先处理,使得手势数据具有可被应用理解的脚本格式并且已经针对对应的目标元素被变换。
[0057]已经考虑了示例性过程,现在考虑能够在一个或多个实施例中被采用来实施本文中所描述的可实例化的手势对象技术的方面的示例性系统。
[0058]示例件系统
图6在600处一般地图不了不例性系统,其包括表不可以实施本文中所描述的各种技术的一个或多个计算系统和/或设备的示例性计算设备602。计算设备602可以例如是服务提供商的服务器、与客户端相关联的设备(例如,客户端设备)、片上系统和/或任何其它适合的计算设备或计算系统。
[0059]示例性计算设备602包括可以并入一个或多个处理器或处理设备的处理系统604、可以包括一个或多个存储器和/或存储装置构件608的一个或多个计算机可读媒体606、以及用于输入/输出(I/O)设备的一个或多个输入/输出(I/O)接口 610。计算机可读媒体606和/或一个或多个I/O设备可以被包括作为计算设备602的一部分,或者替换地可以被耦合到计算设备602。如所图示的,处理系统604还可以包括一个或多个硬件元件612,其表示用来以硬件实施本文中所描述的过程和技术的至少一些方面的功能性。尽管未示出,但是计算设备602可以进一步包括一个接另一个地耦合各种构件的系统总线或数据转移系统。系统总线能够包括不同总线结构中的任何一个或组合,所述总线结构诸如存储器总线或存储器控制器、外围总线、通用串行总线和/或利用各种总线架构中的任一个的处理器或局部总线。
[0060]处理系统604、处理器以及硬件元件612不受它们根据其被形成的材料或者在其中被采用的处理机制的限制。例如,处理器可以包括(一个或多个)半导体和/或晶体管(例如,电子集成电路(1C))。在这样的上下文中,处理器可执行指令可以是电子地可执行的指令。存储器/存储装置构件608表示与一个或多个计算机可读媒体相关联的存储器/存储装置能力。存储器/存储装置构件608可以包括易失性媒体(诸如随机存取存储器(RAM))和/或非易失性媒体(诸如只读存储器(ROM)、闪速存储器、光盘、磁盘等等)。存储器/存储装置构件608可以包括固定媒体(例如,RAM、ROM、固定硬盘驱动器等)以及可拆卸媒体(例如,闪速存储器驱动器、可拆卸硬盘驱动器、光盘等等)。
[0061](一个或多个)输入/输出接口610允许用户使用各种输入/输出设备将命令和信息送入计算设备602,并且同样允许信息被呈现给用户和/或其它构件或设备。输入设备的例子包括键盘、光标控制设备(例如,鼠标)、用于音频/语音输入的话筒、扫描器、相机等等。输出设备的例子包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡等等。
[0062]各种技术在本文中可以在软件、硬件或程序模块的一般上下文中被描述。一般地,这样的模块包括执行特定任务或者实施特定抽象数据类型的例行程序、程序、对象、元件、构件、数据结构等等。如本文中所使用的术语“模块”、“功能性”以及“构件” 一般地表示软件、固件、硬件或其组合。本文中所描述的技术的特征是平台无关的,意味着技术可以被实施在具有各种处理系统、硬件元件、计算机可读媒体和/或存储器/存储装置构件的各种商业计算平台上。
[0063]所描述的模块和技术的实施方案可以被存储在某种形式的计算机可读媒体上或者跨越某种形式的计算机可读媒体被传送。计算机可读媒体可以包括可以被计算设备访问的各种可用的介质或媒体。通过例子而非限制,计算机可读媒体可以包括“计算机可读存储媒体”和“通信媒体”。
[0064]与仅仅信号传输、载波或信号本身不同,“计算机可读存储媒体”可以指的是使能信息的持久性和/或非暂时性存储的媒体和/或设备。因此,计算机可读存储媒体指的是非信号承载媒体。计算机可读存储媒体包括以适用于信息的存储的方法或技术实施的易失性和非易失性、可移除和非可移除媒体和/或存储设备,所述信息诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其它数据。计算机可读存储媒体的例子可以包括但不限于RAM、ROM、EEPR0M、闪速存储器或其它存储器技术、CD-ROM、数字通用盘(DVD)或其它光学存储装置、硬盘、磁盒、磁带、磁盘存储装置或其它磁存储设备,或适合于存储所期望的信息并且可以被计算机访问的其它存储设备、有形媒体或制品。
[0065]“通信媒体”可以指的是被配置成诸如经由网络将指令传送到计算设备的硬件的信号承载介质。通信媒体典型地可以将计算机可读指令、数据结构、程序模块或其它数据具体化在已调制数据信号中,所述已调制数据信号诸如载波、数据信号或其它传输机制。通信媒体还包括任何的信息递送媒体。术语“已调制数据信号”意指这样的信号,所述信号使其特性中的一个或多个以这样的方式被设置或改变以便将信息编码在所述信号中。通过例子而非限制,通信媒体包括诸如有线网络或直接有线连接这样的有线媒体,以及诸如声学、RF、红外线这样的无线媒体和其它无线媒体。
[0066]硬件元件612表示以硬件形式实施的指令、模块、可编程器件逻辑和/或固定器件逻辑,其可以在一些实施例中被采用来实施所描述的技术的至少一些方面。硬件元件可以包括集成电路或片上系统、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)等等的构件。在这个上下文中,硬件元件可以作为处理设备来操作,所述处理设备执行通过由硬件元件所具体化的指令、模块和/或逻辑而定义的程序任务。
[0067]上述的组合还可以被采用来实施本文中所描述的各种技术和模块。因此,软件、硬件或程序模块(包括手势模块114、再现引擎116、识别接口 120、应用110、操作系统108以及其它程序模块)可以被实施为在某种形式的计算机可读媒体上和/或由一个或多个硬件元件610所具体化的一个或多个指令和/或逻辑。计算设备602可以被配置成实施与软件和/或硬件模块相对应的特定指令和/或功能。指令和/或功能可能可由一个或多个制品(例如,一个或多个计算设备602和/或处理系统604)执行/操作来实施针对本文所描述的技术、模块以及示例性过程。
[0068]如图6中进一步图示的,示例性系统600当在个人计算机(PC)、电视设备和/或移动设备上运行应用时使能用于无缝用户体验的普遍存在的环境。服务和应用在所有三个环境中基本上类似地运行以在利用应用、玩视频游戏、观看视频等等的同时从一个设备转移到下一个时得到共同用户体验。
[0069]在示例性系统600中,多个设备通过中央计算设备被互连。中央计算设备可以为多个设备本地的或者可以远离多个设备被定位。在一个实施例中,中央计算设备可以是一个或多个服务器计算机的云,所述一个或多个服务器计算机通过网络、因特网或其它数据通信链路被连接到多个设备。在一个实施例中,这个互连架构使得功能性跨越多个设备被递送以便将共同且无缝的体验提供给多个设备的用户。多个设备中的每一个都可以具有不同的物理要求和能力,并且中央计算设备使用平台来使得能够将既为设备定制的且又为所有设备所共同的体验递送给设备。在一个实施例中,目标设备的类被创建并且为设备的通用类定制体验。设备的类可以由设备的物理特征、使用的类型或其它共同特性来定义。
[0070]在各种实施方案中,诸如针对计算机614、移动616以及电视618用途,计算设备602可以采取各种不同的配置。这些配置中的每一个都包括可以具有大体上不同的构造和能力的设备,并且因此计算设备602可以根据不同的设备类中的一个或多个被配置。例如,计算设备602可以被实施为设备的计算机614类,其包括个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本等等。
[0071]计算设备602还可以被实施为设备的移动616类,其包括移动设备,所述移动设备诸如移动电话、便携式音乐播放机、便携式游戏设备、平板计算机、多屏幕计算机等等。计算设备602还可以被实施为设备的电视618类,其包括具有或者连接到临时观看环境中的通常较大的屏幕的设备。这些设备包括电视、机顶盒、游戏控制台等等。本文中描述的技术可以被这些计算设备602的各种配置支持,并且不限于本文中所描述的技术的特定例子。这通过将识别接口 120包括在计算设备602上来图示。识别接口 120和/或其它应用/模块的功能性还可以全部或者部分地通过使用分布式系统(诸如经由平台622在“云”620上)被实施。
[0072]云620包括和/或表示针对资源624的平台622。平台622抽象云620的硬件(例如,服务器)和软件资源的底层功能性。资源624可以包括当计算机处理被在远离计算设备602的服务器上执行时能够被利用的应用和/或数据。资源624还能够包括通过因特网和/或通过订户网络(诸如蜂窝或W1-Fi网络)所提供的服务。
[0073]平台622可以抽象使计算设备602与其它计算设备连接的资源和功能。平台622还可以用来抽象资源的比例(scaling)以便将对应级别的规模提供给遇到的对于经由平台622被实施的资源624的需求。因此,在互连的设备实施例中,本文中所描述的功能性的实施方案可以遍及系统600被分布。例如,功能性可以部分地在计算设备602上以及经由抽象云620的功能性的平台622被实施。
[0074]结论
尽管已经用特定于结构特征和/或方法动作的语言描述了本发明,但是应当理解,在所附权利要求中定义的本发明未必限于所描述的特定特征或动作。相反地,特定特征和动作作为实施所要求保护的发明的示例性形式被公开。
【权利要求】
1.一种方法,包括: 针对应用实例化手势对象以便通过由计算设备提供的本机手势功能性来操纵针对应用的手势识别; 使手势对象与由应用规定的交互输入和目标元素相关联; 代表应用创建识别器以便通过由计算设备提供的本机手势功能性来便利于手势识别; 将针对交互输入的交互输入数据馈送给识别器以便使能基于交互输入数据对手势的识别; 从识别器获得指示所识别的手势的手势事件消息; 代表应用处理由手势事件消息描述的原始手势数据;以及 依照针对应用的内容模型将具有处理过的手势数据的手势事件激发到所关联的目标元素。
2.如权利要求1中所描述的方法,其中手势对象是由计算设备提供的底层本机手势功能性的基于脚本的抽象。
3.如权利要求1中所描述的方法,其中应用使用动态脚本语言被编程。
4.如权利要求1中所描述的方法,其中所述方法经由再现引擎所暴露的接口而被执行,所述再现引擎被应用采用来为应用再现内容。
5.如权利要求1中所描述的方法,其中交互输入包括被应用于与计算设备相关联的触摸屏的触摸接触。
6.如权利要求1中所描述的方法,其中处理包括将原始手势数据变换为由应用规定的坐标空间。
7.如权利要求1中所描述的方法,其中识别器被配置成跟踪由手势对象指定的交互输入并且将交互输入映射到受支持的手势的库以便识别特定手势何时发生。
8.如权利要求1中所描述的方法,其中手势对象被配置成在由识别器所使用的系统格式与可被应用理解的基于脚本的格式之间转化针对所识别的手势的数据。
9.如权利要求1中所描述的方法,其中交互输入被配置为对手势对象的钉扎引用,只要交互输入保持活动,所述钉扎引用就阻止手势对象收集它本身。
10.如权利要求1中所描述的方法,其中激发到目标元素的手势事件包含标识手势对象的信息以便在对手势对象的引用丢失时使得能够继续访问手势对象。
【文档编号】G06F9/44GK104246659SQ201380018255
【公开日】2014年12月24日 申请日期:2013年3月15日 优先权日:2012年3月31日
【发明者】S. 罗西 J., E. 罗杰斯 J., A. 拉科夫 M., 拉马纳桑 R., H. 赖特 S., 钱迪拉姆 C. 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1