首页> 中国专利> 用于在网络化协作工作区中通过web套接字连接进行桌面共享的方法,装置和计算机可读介质

用于在网络化协作工作区中通过web套接字连接进行桌面共享的方法,装置和计算机可读介质

摘要

一种用于在网络化协作工作区中的web套接字连接上进行桌面共享的方法,系统和计算机可读介质,包括:通过web套接字连接发送托管在服务器上并且可由多个计算设备上的多个参与者访问的协作工作区的表示,接收在协作工作区内共享所述本地计算设备的本地桌面的至少一部分的请求以及对协作工作区的表示内的区域的选择,生成流对象,所述流对象被配置为输出本地计算设备的本地桌面的至少一部分的视频流以及通过所述web套接字连接向服务器发送一个或多个命令,所述一个或多个命令包括流对象和与所选区域相对应的信息,并且被配置为使服务器将流对象插入到所选区域处的协作工作区中。

著录项

  • 公开/公告号CN112204512A

    专利类型发明专利

  • 公开/公告日2021-01-08

    原文格式PDF

  • 申请/专利权人 利玛格有限公司;

    申请/专利号CN201980036854.6

  • 申请日2019-05-30

  • 分类号G06F3/0484(20060101);H04L29/08(20060101);G06F9/54(20060101);

  • 代理机构31300 上海华诚知识产权代理有限公司;

  • 代理人肖华

  • 地址 英国曼彻斯特

  • 入库时间 2023-06-19 09:29:07

说明书

背景技术

在操作系统内执行的操作系统和应用经常利用外部硬件设备来允许用户向程序提供输入并向用户提供输出。外部硬件设备的常见示例包括键盘,计算机鼠标,麦克风和外部扬声器。这些外部硬件设备通过使用驱动程序与操作系统接口,所述驱动程序是被配置为在特定硬件设备所使用的硬件命令与操作系统之间进行接口的专用软件程序。

应用有时将被设计成与某些硬件设备接口。例如,可以将语音转文本字处理应用设计成与包括麦克风的音频耳机接口。在这种情况下,应用必须被专门配置为接收语音命令,执行语音识别,将识别的单词转换为文本内容,并将文本内容输出到文档中。该功能通常将体现在应用的应用程序接口(API)中,API是各种软件组件之间的一组定义的通信方法。在语音识别应用的示例中,API可以包括应用和驱动程序上的软件之间的接口,该驱动程序负责与硬件设备(麦克风)本身进行接口连接。

利用专用硬件设备的现有软件的一个问题是,应用或操作系统软件本身必须被定制和专门设计,以便使用硬件设备。这种定制意味着硬件设备不能超出应用为其定义的范围,并且不能用于被设计用于的特定应用之外的环境。例如,语音到文本字处理应用的用户不能使用语音命令来操纵操作系统内的其它应用或其它组件,除非这些其它应用或操作系统被专门设计成可使用通过麦克风接收语音命令。

图1示出了利用耦合的硬件设备进行用户输入的系统的现有体系结构的示例。图1的操作系统100A包括执行应用101A和102A,它们中的每一个分别具有它们自己的API,101B和102B。操作系统100A还具有其自己的API 100B,以及被配置为与硬件设备100D,101D和102D接口的专用驱动程序100C,101C和102C。

如图1所示,应用API 101B被配置为与驱动程序101C接口,驱动程序101C与硬件设备101D接口。类似地,应用API 102B被配置为与驱动程序102C接口,驱动程序102C与硬件设备102D接口。在操作系统级,操作系统API 100B被配置为与驱动程序100C接口,驱动程序100C与硬件设备100D接口。

图1所示的系统的体系结构限制了用户利用某些应用或操作系统环境之外的硬件设备的能力。例如,用户不能利用硬件设备101D向应用102A提供输入,并且不能利用硬件设备102D向应用101A或操作系统100A提供输入。

因此,考虑到在多个软件环境中使用的硬件设备,需要对硬件-软件接口进行改进。

附图说明

图1示出了利用耦合的硬件设备进行用户输入的系统的现有体系结构的示例。

图2示出了根据示例性实施例的利用通用硬件-软件接口的系统的体系结构。

图3示出了根据示例性实施例的用于实现通用硬件-软件接口的流程图。

图4示出了根据示例性实施例的用于当由一个或多个硬件设备捕获的信息包括一个或多个图像时,至少部分地基于由通信地耦合到系统的一个或多个硬件设备捕获的信息来确定用户输入的流程图。

图5A示出了根据示例性实施例的对象识别的示例。

图5B示出了根据示例性实施例的确定输入位置坐标的示例。

图6示出了根据示例性实施例的用于在所捕获的信息是声音信息时至少部分地基于由通信地耦合到系统的一个或多个硬件设备所捕获的信息来确定用户输入的流程图。

图7示出了根据示例性实施例的可以是透明层的一部分的工具界面。

图8示出了可以是根据示例性实施例的系统的一部分的触控笔的示例。

图9示出了根据示例性实施例的用于识别对应于用户输入的上下文的流程图。

图10示出了根据示例性实施例使用输入坐标来确定上下文的示例。

图11示出了根据示例性实施例的用于将用户输入转换为透明层命令的流程图。

图12A示出了根据示例性实施例在切换选择模式时接收输入坐标的示例。

图12B示出了根据示例性实施例在切换指向模式时接收输入坐标的示例。

图12C示出了根据示例性实施例在切换绘制模式时接收输入坐标的示例。

图13示出了根据示例性实施例的基于在输入语音数据中标识的一个或多个单词而确定的透明层命令的示例。

图14示出了根据示例性实施例的基于在输入语音数据中标识的一个或多个单词而确定的透明层命令的另一示例。

图15示出了根据示例性实施例在透明层上执行一个或多个透明层命令的流程图。

图16示出了根据示例性实施例的用于添加对应于用户输入的新命令的示例界面。

图17示出了根据示例性实施例的绘图界面和绘图模式的各种组件和选项。

图18示出了根据示例性实施例的用于摄像机硬件设备的校准和设置界面,所述摄像机硬件设备用于识别对象并且允许用户使用触摸和手势来提供输入。

图19示出了根据示例性实施例的允许用户定制界面的各个方面,切换输入模式以及进行其它改变的一般设置界面。

图20示出了根据示例性实施例的用于在网络化协作工作区中通过web套接字连接进行桌面共享的流程图。

图21A示出了根据示例性实施例的用于主机和发送协作工作区的网络体系结构。

图21B示出了根据示例性实施例的用于将编辑传播到网络内的协作工作区的过程。

图22示出了根据示例性实施例的协作工作区的多个表示。

图23A示出了根据示例性实施例的在接收请求和区域选择之前本地计算设备的用户界面(桌面)的示例。

图23B示出了根据示例性实施例在接收到请求之后并且在选择区域之前的本地计算设备的用户界面(桌面)的示例。

图24A至24C说明根据示范性实施例的源选择过程的实例。

图25示出了根据示例性实施例的用于生成被配置为输出本地计算设备的本地桌面的至少一部分的视频流的流对象的流程图。

图26示出了根据示例性实施例的从本地计算设备发送命令并传播流对象的过程。

图27示出了根据示例性实施例的在服务器将流对象嵌入协作工作区之后的本地计算设备的接口的示例。

图28示出了根据示例性实施例的用于经由来自本地计算设备的嵌入式流对象来控制桌面或桌面的一部分的流程图。

图29A-29C示出了根据示例性实施例经由来自本地计算设备的嵌入式流对象来控制桌面或桌面的一部分的示例。

图30示出了根据示例性实施例的用于经由来自远程计算设备的嵌入式流对象来控制桌面或桌面的一部分的流程图。

图31A-31C示出了根据示例性实施例经由来自远程计算设备的嵌入式流对象来控制桌面或桌面的一部分的示例。

图32示出了被配置为执行所公开的方法的示例性计算环境。

具体实施方式

虽然本文通过实例和实施例来描述方法,装置和计算机可读媒体,但所属领域的技术人员认识到用于实施通用硬件-软件接口的方法,装置和计算机可读媒体不限于所描述的实施例或图式。应该理解的是,附图和描述不打算限于所公开的特定形式。相反,本发明旨在覆盖落入所附权利要求的精神和范围内的所有修改,等同物和替换。本文所用的任何标题仅用于组织目的,并不意味着限制说明书或权利要求书的范围。如本文所用,词语“可以”以许可的意义(即,具有潜能的含义)而不是强制的意义(即,必须的含义)使用。类似地,词语"包括","包含"和"包括了"是指包括但不限于。

申请人发明了一种方法,装置和计算机可读介质,其解决了与用于硬件设备的先前硬件-软件接口相关联的问题。特别地,申请人已经开发了一种通用硬件-软件接口,其允许用户在各种软件环境中利用通信耦合的硬件设备。所公开的实现消除了对通过使用专用虚拟驱动程序和相应的透明层来定制设计为与特定硬件设备接口的应用或操作系统的需要,如下面更详细描述的。

图2示出了根据示例性实施例的利用通用硬件-软件接口的系统的体系结构。如图2所示,操作系统200A包括发送虚拟驱动程序204的透明层203。如将在下面更详细地解释的,透明层203是被配置为在虚拟驱动程序与操作系统和/或在操作系统上执行的应用之间进行接口的API。在该示例中,透明层203连接应用201A的虚拟驱动程序204和API 201B,应用202A的API 202B以及操作系统200A的操作系统API 200B。

透明层203可以是在操作系统上运行的软件进程的一部分,并且可以具有其自己的用户界面(UI)元素,包括叠加在底层用户界面上的透明UI和/或用户能够与之交互的可视UI元素。

虚拟驱动程序204被配置为分别与硬件设备206A和206B接口的仿真驱动程序205A和205B。虚拟驱动程序可以接收用户输入,该用户输入指示虚拟驱动程序在哪个虚拟驱动程序上来仿真,例如以语音命令,在用户界面上做出的选择和/或由用户在耦合的web相机之前做出的姿势的形式。例如,每个连接的硬件设备可以在"监听"模式下操作,并且虚拟驱动程序204中的每个仿真驱动程序可以被配置为检测初始化信号,该初始化信号用作将虚拟驱动程序切换到特定仿真模式的信号。例如,陈述"开始语音命令"的用户可以激活对应于麦克风的驱动程序以接收新的语音命令。类似地,给出某种手势的用户可以激活对应于web相机的驱动程序以接收手势输入或触摸输入。

虚拟驱动程序还可经配置以与本机驱动程序(例如本机驱动程序205C)接口,本机驱动程序本身与硬件设备206C通信。在一个示例中,硬件设备206C可以是标准输入设备,诸如键盘或鼠标,其由操作系统本地支持。

图2所示的系统允许实现通用硬件-软件接口,其中用户可以在各种环境中使用任何耦合的硬件设备,诸如特定应用或操作系统,而不需要定制应用或操作系统来与硬件设备接口。

例如,硬件设备206A可以捕获随后由仿真驱动程序205A的虚拟驱动程序204接收的信息。虚拟驱动程序204可以基于所捕获的信息来确定用户输入。例如,如果该信息是移动其手的用户的一系列图像,则虚拟驾驶员可以确定用户已经执行了手势。

基于所标识的上下文(例如特定应用或操作系统),用户输入可被转换为透明层命令,并被发送到透明层203用于执行。透明层命令可以在所标识的上下文中包括本机命令。例如,如果所标识的上下文是应用201A,则本机命令将是与应用201A的应用API 201B兼容的格式。然后,透明层命令的执行可被配置为使得在所标识的上下文中执行一个或多个本机命令。这是通过透明层203与在操作系统200A以及操作系统API 200B上执行的应用的每个API接口来实现的。例如,如果本机命令是操作系统命令,例如启动新程序的命令,则透明层203可以将该本机命令提供给操作系统API 200B以供执行。

如图2所示,在所示的所有组件之间存在双向通信。这意味着,例如,在透明层203中执行透明层命令可以导致将信息发送到虚拟驱动程序204并发送到所连接的硬件设备之一。例如,在语音命令被识别为输入,被转换为包括本地命令的透明层命令,并且由透明层执行(导致在所识别的上下文中执行本地命令)之后,信号可以从透明层被发送到扬声器(经由虚拟驱动程序),以发送声音输出"命令已接收"。

当然,图2所示的体系结构仅用于解释的目的,并且应当理解,执行的应用的数量,连接的硬件设备的数量和类型,驱动程序的数量以及仿真驱动程序可以变化。

图3示出了根据示例性实施例的用于实现通用硬件-软件接口的流程图。

在步骤301,至少部分地基于由通信地耦合到系统的一个或多个硬件设备捕获的信息来确定用户输入。本文所用的系统可以指执行该方法的步骤的一个或多个计算设备,包括执行该方法的步骤的一个或多个处理器和一个或多个存储器的装置,或任何其它计算系统。

用户输入可以由在系统上执行的虚拟驱动程序来确定。如前所述,虚拟驱动程序可以在仿真其它硬件驱动程序的仿真模式下操作,从而从硬件设备接收所捕获的信息,或者可以可选地从被配置为与特定硬件设备接口的一个或多个其它硬件驱动程序接收所捕获的信息。

可以使用各种硬件设备,例如照相机,摄像机,麦克风,具有双向通信的耳机,鼠标,触摸板,跟踪板,控制器,游戏板,操纵杆,触摸屏,包括加速度计和/或倾斜传感器的动作捕获设备,遥控器,触控笔或这些设备的任意组合。当然,该硬件设备列表仅作为示例提供,并且可以利用可用于检测语音,图像,视频或触摸信息的任何硬件设备。

硬件设备和系统之间的通信耦合可以采用多种形式。例如,硬件设备可以通过无线网络,蓝牙协议,射频,红外信号和/或通过物理连接(例如通用串行总线(USB)连接)与系统通信。通信还可以包括无线和有线通信。例如,硬件设备可以包括两个组件,其中一个无线地(例如通过蓝牙)向第二组件发送信号,第二组件本身通过有线连接(例如USB)连接到系统。可以根据本文所述的系统来利用各种通信技术,并且这些示例不旨在是限制性的。

由一个或多个硬件设备捕获的信息可以是任何类型的信息,例如包括一个或多个图像的图像信息,视频帧,声音信息和/或触摸信息。所捕获的信息可以是任何适当的格式,例如用于声音信息的.wav或.mp3文件,用于图像的.jpeg文件,用于触摸信息的数字坐标等。

这里描述的技术可以允许任何显示设备在任何上下文中有效地用作"触摸"屏幕设备,即使显示设备不包括任何硬件来检测触摸信号或基于触摸的手势。这将在下面更详细地描述,并且可以通过分析由照相机或摄像机捕获的图像来实现。

图4示出了当由一个或多个硬件设备捕获的信息包括一个或多个图像时,至少部分地基于由通信地耦合到系统的一个或多个硬件设备捕获的信息来确定用户输入的流程图。

在步骤401,接收一个或多个图像。这些图像可以由诸如照相机或摄像机之类的硬件设备捕获,并且可以由虚拟驱动程序接收,如前所述。

在步骤402,识别一个或多个图像中的对象。对象可以是例如手,手指或用户的其它身体部分。对象也可以是专用设备,例如触控笔或笔,或专用硬件设备,例如运动跟踪触控笔/遥控器,其通信地耦合到系统并且包含加速度计和/或倾斜传感器。可以由虚拟驱动程序执行对象识别,该对象识别可以基于较早的训练,例如通过使用对象运行的校准例程。

图5A示出了根据示例性实施例的对象识别的示例。如图5A所示,图像501包括已经被识别为对象502的用户的手。识别算法当然可以被配置为识别不同的对象,例如手指。

回到图4,在步骤403,确定识别对象的一个或多个方向和一个或多个位置。这可以通过多种方式来实现。如果对象不是硬件设备而是身体部分,例如手或手指,则可以使用照相机的已知位置作为参考点将对象映射到三维坐标系中,以确定对象的三维坐标以及相对于X,Y和Z轴的各种角度。如果对象是硬件设备并且包括运动跟踪硬件,例如加速度计和/或倾斜传感器,则图像信息可以与由加速度计和/或倾斜传感器指示的信息结合使用,以确定对象的位置和方向。

在步骤404,至少部分地基于所识别对象的一个或多个方位和一个或多个位置来确定用户输入。这可以包括至少部分地基于所述一个或多个方位和所述一个或多个位置来确定所述透明层的透明用户界面(UI)上的位置坐标。透明UI是透明层的一部分,并且被叠加在对应于操作系统和/或在操作系统上执行的任何应用的底层UI上。

图5B示出了当对象是用户的手指时该步骤的示例。如图5B所示,显示设备503包括底层UI 506和叠加在底层UI 506上的透明UI 507。为了清楚起见,透明UI 507用点阴影示出,但是应当理解,在实践中,透明UI是用户不可见的透明层。另外,透明UI 507被示出为略小于底层UI 506,但是应当理解,在实践中,透明UI将覆盖与底层UI相同的屏幕区域。

如图5B所示,对象(用户的手指)的位置和方向信息被用于将线投射到显示设备503的平面上并确定交点505。由照相机504捕获的图像信息和在照相机下面的显示设备503的已知位置可以用于帮助该投影。如图5B所示,用户输入被确定为交点505处的输入坐标。

如下面将进一步讨论的,基于该输入生成的实际透明层命令可以基于用户设置和/或所标识的上下文。例如,命令可以是指示应该选择和/或打开点505的坐标处的对象的触摸命令。该命令还可以是指示指针(例如鼠标指针)应该被移动到点505的坐标的指向命令。另外,该命令可以是编辑命令,其修改位置处的图形输出(例如注释界面或绘制元素)。

尽管图5B将识别对象502显示为与显示设备503相距某一距离,但是无论距离如何,都可以检测触摸输入。例如,如果用户要物理地触摸显示设备503,则上述技术仍将确定输入坐标。在这种情况下,物体502和交点之间的投影线将恰好较短。

当然,触摸输入不是可以从捕获的图像确定的唯一类型的用户输入。至少部分地基于所识别对象的一个或多个方向和一个或多个位置来确定用户输入的步骤可以包括确定手势输入。特别地,可以分析所识别的对象在多个图像上的位置和方向,以确定相应的手势,例如轻扫手势,缩小手势和/或任何已知的或定制的手势。用户可以校准虚拟驱动程序以识别被映射到那些环境内的特定环境和命令的定制手势。例如,用户可以创建映射到操作系统上下文的定制手势,并导致启动特定应用的本地操作系统命令的执行。

如前所述,在图3的步骤301中由一个或多个硬件设备捕获的信息还可以包括由麦克风捕获的声音信息。图6示出了当所捕获的信息是声音信息时,至少部分地基于通信地耦合到系统的一个或多个硬件设备所捕获的信息来确定用户输入的流程图。如下所述,对声音信息执行语音识别以识别对应于用户输入的一个或多个词。

在步骤601,接收声音数据。如上所述,声音数据可以由诸如麦克风的硬件设备捕获并由虚拟驱动程序接收。在步骤602,可以将接收到的声音数据与声音词典进行比较。声音字典可以包括一个或多个识别的单词的声音签名,例如命令单词或命令修饰符。在步骤603,基于比较将声音数据中的一个或多个单词识别为用户输入。然后可以将所识别的一个或多个字转换为透明层命令,并将其传递到透明层。

如前所述,由虚拟驱动程序仿真的驱动程序,用户输入的预期类型和基于用户输入生成的命令可以至少部分地基于一个或多个设置或先前用户输入来确定。

图7示出了工具界面701,其也可以是透明层的一部分。与透明UI不同,工具界面701对于用户是可见的,并且可以用于在改变虚拟驱动程序的仿真模式的不同选项,基于用户输入生成的本机命令之间进行选择,或者执行附加功能。

按钮701A允许用户选择绘图工具的类型,该绘图工具用于在用户输入坐标(例如根据用户用手或触控笔/遥控器触摸屏幕进行调整的坐标)时以图形方式修改用户界面。各种绘画工具可以包括不同的刷子,颜色,笔,荧光笔等。这些工具可以导致不同风格,厚度,颜色等的图形改变。

当接收到输入坐标作为用户输入时,按钮701B允许用户在选择,指向或绘图模式之间切换。在选择模式中,输入坐标可以被处理为"触摸",并且导致在输入坐标处选择或打开对象。在指向模式中,坐标可以被处理为指针(例如鼠标指针)位置,从而有效地允许用户模拟鼠标。在绘图模式中,坐标可以被处理为改变用户界面的图形输出以在用户界面上显示绘图或书写的外观的位置。改变的性质可以取决于所选的绘图工具,如参考按钮701A所讨论的。按钮701B还可以警告虚拟驱动程序期望图像输入和/或运动输入(如果使用运动跟踪设备)并相应地仿真适当的驱动程序。

按钮701C警告虚拟驱动程序期望语音命令。这可以使虚拟驱动程序仿真对应于耦合麦克风的驱动程序以接收语音输入并解析语音输入,如关于图6所描述的。

按钮701D打开启动器应用,该应用可以是透明层的一部分,并且可以用于启动操作系统内的应用或者启动应用内的特定命令。启动器还可用于定制透明层中的选项,例如定制语音命令,定制手势,用于与用户输入相关联的应用的定制本机命令和/或校准硬件设备和用户输入(例如语音校准,动作捕获设备校准和/或对象识别校准)。

按钮701E可用于捕获用户界面的屏幕截图并将屏幕截图作为图像导出。这可以与按钮701B的绘图模式和701A的绘图工具结合使用。在用户已经标记了特定的用户界面之后,所标记的版本可以作为图像导出。

按钮701F还允许进行图像编辑,并且可以用于改变用户在用户界面上创建的图像的颜色或图像的各方面。类似于按钮701B的绘制模式,该按钮改变输入坐标处的图像改变的性质。

按钮701G取消用户界面上的绘图。选择该按钮可以去除用户界面上的所有图形标记,并在用户创建绘图之前将底层UI复位到其所处的状态。

按钮701H可用于启动允许用户在虚拟白板上使用绘图模式创建绘图或书写的白板应用。

按钮701I可用于将文本注释添加到对象,诸如在操作系统UI或应用UI中示出的对象。文本注释可以从语音信号中解释或由用户使用键盘键入。

按钮701J可用于打开或关闭工具界面701。当关闭时,工具界面可以被最小化或完全从底层用户界面移除。

如前所述,触控笔或远程硬件设备可以与本系统一起使用,并与其它硬件设备(例如照相机或摄像机)结合使用。图8示出了可以与系统一起使用的触控笔801的示例。触控笔801可以与硬件接收机802通信,例如通过蓝牙通信。硬件接收器可以例如经由USB802B连接到计算机系统,并且来自触控笔的经由硬件接收器传递到计算机系统的信号可以用于控制菜单803并与之交互,菜单803类似于图7中所示的工具界面。

如图8所示,触控笔801可以包括物理按钮801A。这些物理按钮801可用于接通触控笔,导航菜单803并进行选择。另外,触控笔801可以包括由照相机在图像中捕获并由虚拟驱动程序识别的独特尖端801B。这可以允许触控笔801在处于绘制模式时用于绘制和编辑。触控笔801还可以包括运动跟踪硬件,例如加速计和/或倾斜传感器,以帮助在触控笔用于提供输入坐标或姿势时进行位置检测。另外,硬件接收器802可以包括校准按钮802A,当其被按下时,可以在用户界面中启动校准实用程序。这允许校准触针。

回到图3,在步骤302,标识与用户输入相对应的上下文。所标识的上下文包括操作系统或在操作系统上执行的应用中的一个。

图9示出了根据示例性实施例的用于识别对应于用户输入的上下文的流程图。如图9所示,操作系统数据901,应用数据902和用户输入数据903都可以用于确定上下文904。

操作系统数据901可以包括例如关于操作系统中的活动窗口的信息。例如,如果活动窗口是计算器窗口,则可以将上下文确定为计算器应用。类似地,如果活动窗口是Microsoft Word窗口,则可以将上下文确定为Microsoft Word应用。另一方面,如果活动窗口是文件夹,则活动上下文可以被确定为操作系统。操作系统数据还可以包括附加信息,诸如哪些应用当前正在执行,最后启动的应用,以及可以用于确定上下文的任何其他操作系统信息。

应用数据902可以包括例如关于正在执行的一个或多个应用的信息和/或将特定应用映射到某些类型的用户输入的信息。例如,第一应用可以被映射到语音输入,使得每当接收到语音命令时,上下文被自动确定为第一应用。在另一示例中,特定的手势可以与第二应用相关联,从而当接收到该手势作为输入时,启动或关闭第二应用,或者执行第二应用内的一些动作。

用户输入903还可以用于以多种方式确定上下文。如上所述,某些类型的用户输入可以被映射到某些应用。在上述示例中,语音输入与第一应用的上下文相关联。另外,用户输入的属性也可用于确定上下文。可以将手势或动作映射到应用或操作系统。语音命令中的特定单词也可以被映射到应用或操作系统。输入坐标也可用于确定上下文。例如,可以确定输入坐标位置处的用户界面中的窗口,并且可以将对应于该窗口的应用确定为上下文。

图10示出了使用输入坐标来确定上下文的示例。如图10所示,显示设备1001正在显示用户界面1002。还示出了叠加在下面的用户界面1003上的照相机1004和透明层1003。用户利用触控笔1000指向用户界面1002中的位置1005。由于位置1005位于与应用1相对应的应用窗口内,因此可以将应用1确定为用户输入的上下文,这与应用2,应用3或操作系统相反。

回到图3,在步骤303,至少部分地基于所识别的上下文,将用户输入转换为一个或多个透明层命令。如前所述,透明层包括配置为在虚拟驱动程序和操作系统之间接口的应用程序接口(API)和/或在操作系统上执行的应用。

图11示出了用于将用户输入转换为透明层命令的流程图。如图11的步骤1104所示,可以至少部分地基于所标识的上下文1102和用户输入1103来确定透明层命令。透明层命令可以包括被配置为在一个或多个对应的上下文中执行的一个或多个本机命令。透明层命令还可以包括要发送到虚拟驱动程序和硬件设备的响应输出。

所标识的上下文1102可用于确定应当将哪个透明层命令映射到用户输入。例如,如果所标识的上下文是"操作系统",则可以将轻扫手势输入映射到透明层命令,该命令导致用户界面在操作系统内滚动通过当前打开的窗口(通过最小化一个打开的窗口和最大化下一个打开的窗口)。或者,如果所识别的上下文是"web浏览器应用",则可将相同的轻扫手势输入映射到透明层命令,所述透明层命令导致网页滚动。

用户输入1103还确定透明层命令,因为用户输入具体地映射到一个或多个上下文内的某些本机命令,并且这些本机命令是透明层命令的一部分。例如,语音命令"打开电子邮件"可以被映射到特定操作系统本地命令以启动电子邮件应用Outlook。当接收到包括所识别的单词"打开电子邮件"的语音输入时,这导致确定包括发起Outlook的本地命令的透明层命令。

如图11所示,透明层命令也可以基于一个或多个用户设置1101和API库1104来确定。API库1104可用于查找对应于所标识的上下文和特定用户输入的本机命令。在轻扫姿势和web浏览器应用上下文的示例中,可以向对应于web浏览器应用的API库查询适当的API调用以引起网页的滚动。或者,API库1104可被省略,且本机命令可被映射到特定用户输入和所识别的上下文。

在用户输入被确定为输入坐标的情况下,透明层命令至少部分地基于输入位置坐标和所识别的上下文来确定。在这种情况下,透明层命令可以包括所标识的上下文中的至少一个本机命令,该至少一个本机命令被配置为在底层UI中的相应位置坐标处执行动作。

当存在映射到特定上下文和用户输入的多于一个的可能动作时,设置1101可用于确定相应的透明层命令。例如,图7的按钮701B允许用户在输入坐标作为用户输入被接收时在指向或绘制模式之间进行选择。该设置可用于确定透明层命令,并通过扩展来确定执行哪个本机命令以及执行哪个动作。在这种情况下,可能的本机命令可以包括:选择命令,被配置为选择与底层UI中的相应位置坐标相关联的对象;指针命令,被配置为将指针移动到底层UI中的相应位置坐标;以及图像命令,被配置为改变底层UI中的相应位置坐标处的显示输出。

图12A示出了当切换选择模式时接收输入坐标的示例。如图12A所示,用户在显示设备1201上的操作系统UI 1202(具有叠加的透明UI 1203)处指向触控笔1200。与前面的例子类似,照相机1204可以用于确定触控笔1200的位置和方向信息以及输入坐标。由于选择模式被切换并且触控笔1200指向操作系统UI 1202内的文件夹1205,所以所确定的透明层命令可以包括本地操作系统命令,以选择与输入坐标(在本例中是文件夹1205)相关联的对象。在另一个例子中,如果窗口位于输入坐标处,这将导致整个窗口的选择。

图12B示出了当切换指向模式时接收输入坐标的示例。在这种情况下,所确定的透明层命令可以包括本地操作系统命令,以将鼠标指针1206移动到输入坐标的位置。

图12C示出了当切换绘图模式并且用户已经在多个输入坐标上扫过触控笔1200时接收输入坐标的示例。在这种情况下,所确定的透明层命令可以包括本机操作系统命令,以改变在每个输入坐标的位置处的显示输出,从而在用户界面1202上产生用户画线1207。在绘图模式中产生的修改的图形输出可以作为透明层1203的一部分存储,例如作为与输入坐标的路径相关的元数据。然后,用户可以选择将改变的显示输出作为图像导出的选项。

在用户输入被标识为手势的情况下,至少部分地基于所标识的上下文将用户输入转换为一个或多个透明层命令可以包括至少部分地基于所标识的手势和所标识的上下文来确定透明层命令。透明层命令可以包括所标识的上下文中的至少一个本机命令,所述至少一个本机命令被配置为执行与所标识的上下文中的所标识的手势相关联的动作。上面讨论了关于轻扫手势和web浏览器应用上下文的这种示例,所述轻扫手势和web浏览器应用上下文导致被配置为在web浏览器中执行滚动动作的本机命令。

在用户输入被标识为一个或多个词(例如通过使用语音识别)的情况下,至少部分地基于所标识的,将用户输入转换为一个或多个透明层命令可以包括至少部分地基于所标识的一个或多个单词和所标识的上下文来确定透明层命令。透明层命令可包括所识别的上下文中的至少一个本机命令,所述至少一个本机命令经配置以执行与所识别的上下文中的所识别的一个或一个以上字相关联的动作。

图13示出了基于在输入语音数据中标识的一个或多个字而确定的透明层命令1300的示例。所识别的单词1301包括短语"白板"或"空白页"中的一个。透明层命令1300还包括命令的描述1302和响应指令1303,响应指令1303是透明层在执行透明层命令时向虚拟驱动程序和硬件输出设备发送的输出指令。此外,透明层命令1300包括用于调用白板功能的实际本地命令1304。

图14示出了根据示例性实施例的基于在输入语音数据中标识的一个或多个单词而确定的透明层命令1400的另一示例。在该示例中,一个或多个单词是"打开电子邮件"。如图14所示,透明层命令1400包括本机命令"OUTLOOK.EXE",它是运行启动Outlook应用的特定可执行文件的指令。透明层命令1400还包括语音响应"电子邮件已打开",其将响应于接收语音命令而被输出。

回到图3,在步骤304,在透明层上执行一个或多个透明层命令。一个或多个透明层命令的执行被配置为执行所标识的上下文中的一个或多个本机命令。

图15示出了根据示例性实施例在透明层上执行一个或多个透明层命令的流程图。在步骤1501,识别透明层命令中的至少一个本地命令。例如,可以将本机命令指定为透明层命令结构内的本机命令,以允许识别。

在步骤1502,在所标识的上下文中执行至少一个本机命令。该步骤可以包括经由为该上下文标识的API将该至少一个本机命令传递到所标识的上下文,并且在所标识的上下文内执行该本机命令。例如,如果所标识的上下文是操作系统,则可将本机命令传递到操作系统以经由操作系统API执行。另外,如果所识别的上下文是应用,则可将本机命令传递到应用以经由应用API执行。

可选地,在步骤1503,可以向硬件设备发送响应。如前所述,该响应可以从透明层路由到虚拟驱动程序并路由到硬件设备。

附图说明16-19示出了本文所公开的系统的附加特征。图16示出了根据示例性实施例的用于添加对应于用户输入的新命令的示例界面。接口1600中的仪表板包括应用1601的图标,其已经被添加并且可以使用预定的用户输入和硬件设备(例如,语音命令)启动。仪表板还可以显示特定于应用并映射到某些用户输入的其它命令。选择添加按钮1602打开添加命令菜单1603。此菜单允许用户在以下选项之间进行选择:项目类型:要添加到底栏菜单上的固定项目/要添加到拖动菜单中的正常项目;图标:选择图像图标;背景:选择背景图标颜色;颜色:选择图标颜色;名称:设置新项目名称;语音命令:设置语音激活命令以打开新应用;反馈响应:设置应用语音响应反馈;命令:选择要启动的应用类型或自定义命令类型(例如,启动应用命令,在应用命令中执行操作,关闭应用命令等);进程开始:如果启动新的进程或应用,则启动进程或应用的名称;以及参数:要传递到新过程或应用中的任何参数。

图17示出了根据示例性实施例的绘图界面1700和绘图模式的各种组件和选项。图18示出了用于摄像机硬件设备的校准和设置接口1800,所述摄像机硬件设备用于识别对象并允许用户使用触摸和手势提供输入。图19示出了一般设置界面1900,其允许用户定制界面的各个方面,切换输入模式以及进行其它改变。如界面1900所示,用户还可以访问设置页面来校准和调整硬件触控笔(称为"魔术笔")的设置。

在此公开的系统可以在多个联网的计算设备上实现,并且在进行联网的协作会话中使用。例如,先前描述的白板功能可以是多个计算设备上的多个用户之间的共享白板。

然而,现有白板或其它共享协作空间的一个问题是,不存在与远程计算设备交互或共享桌面屏幕而不中断或中断协作会话的简单方式。例如,如果协作工作区中的参与者希望与其他参与者共享显示,则要求所有参与者最小化或关闭协作会话,执行屏幕共享应用,并加入屏幕共享会议。在共享协作会话期间,这经常会中断协作空间旨在促进的工作流和共享头脑风暴会话。

除了先前描述的用于实现通用硬件-软件接口的方法和系统之外,申请人还发明了允许在网络化协作工作区中通过web套接字连接进行桌面共享的方法,装置和计算机可读介质。

图20示出了根据示例性实施例的用于在网络化协作工作区中通过web套接字连接进行桌面共享的流程图。图20所示的所有步骤可以在本地计算设备上执行,例如连接到服务器的客户端设备,并且不需要多个计算设备。所公开的过程也可以通过连接到服务器的多个设备来实现。

在步骤2001,在本地计算设备的用户接口上发送托管在服务器上的协作工作区的表示。协作工作区可由多个计算设备上的多个参与者通过web套接字连接来访问,所述web套接字连接包括本地计算设备处的本地参与者和远程计算设备处的一个或多个远程参与者。如这里所使用的,远程计算设备和远程参与者指的是除本地参与者和本地计算设备之外的计算设备和参与者。远程计算设备通过诸如广域网(WAN)的网络与本地设备分离。

图21A示出了根据示例性实施例的用于主机和发送协作工作区的网络体系结构。如图21A所示,服务器2100连接到计算设备2101A-2101F。服务器2100和计算设备2101A-2101F可以经由允许计算设备2101A-2101F(客户端)和服务器2100之间的双向通信的网络连接(例如web套接字连接)来连接。如图21A所示,计算设备可以是任何类型的计算设备,例如膝上型计算机,台式计算机,智能电话或其它移动设备。

协作工作区例如可以是数字白板,其被配置为通过web套接字连接将任何编辑从多个参与者中的任何参与者传播到其它参与者。图21B示出了根据示例性实施例的用于将编辑传播到网络内的协作工作区的过程。如图21B所示,如果计算设备2101B处的用户对协作工作区进行编辑或更改,则将该编辑或更改2102B发送到服务器2100,在服务器2100处,该编辑或更改2102B用于更新工作区的托管版本。然后由服务器2100将编辑或变更作为更新2102A,2102C,2102D,2102E和2102F传播到其它连接的计算设备2101A,2101C,2101D,2101E和2101F。

协作工作区的每个表示可以是为本地参与者定制的协作工作区的版本。例如,如上所述,协作工作区的每个表示可以包括对应于连接到服务器的一个或多个远程计算设备的一个或多个远程参与者对象。

图22示出了根据示例性实施例的协作工作区的多个表示。如图22所示,服务器2200托管协作工作区2201。服务器上托管的协作工作区的版本被传播到连接的设备,如前所述。图22还示出了三个连接用户,即用户1,用户2和用户3的协作工作区的表示。每个表示可以任选地针对本地参与者(针对在每个位置处的本地计算设备)定制。

回到图20,在步骤2002,由本地计算设备接收在协作工作区内共享本地计算设备的本地桌面的至少一部分的请求以及在协作工作区的表示内对区域的选择。

图23A-23B示出了根据示例性实施例的在协作工作区内接收共享本地计算设备的本地桌面的至少一部分的请求以及在协作工作区的表示内选择区域的步骤的示例。

图23A示出了在接收请求和区域选择之前本地计算设备的用户界面(桌面)的示例。如图23A所示,用户界面2301包括协作应用2302,其本地显示托管在服务器上的协作工作区2303的表示,以及单独的显示应用2308(例如PowerpointTM)和单独的文档编辑应用(例如WordTM)。在本地计算设备上执行的所有用户应用被示为操作系统("OS")的任务栏2306中的选项卡,除了OS菜单按钮之外,还显示与OS相关的菜单的。

协作应用2302可以包括协作工作区2303的表示,协作工作区2303包含本地参与者和任何其他参与者以及工具栏2304的所有编辑和贡献。工具栏2304可以包括用于与协作工作区的表示交互或配置协作工作区的表示的各种编辑工具,设置,命令和选项。例如,工具栏2304可以包括编辑工具以绘制协作工作区2303的表示,其中通过web套接字连接将编辑传播到服务器和其它连接的计算设备。

工具栏2304还包括屏幕共享按钮2305,其在被选择时使本地计算设备接收在协作工作区内共享本地计算设备的本地桌面的至少一部分的请求。因此,用户可以通过选择屏幕共享按钮2305来启动在协作工作区内的屏幕共享。

图23B示出了在接收到请求之后并且在选择区域之前的本地计算设备的用户界面(桌面)的示例。如图23B所示,屏幕共享按钮2305的选择可以导致在协作工作区2303的表示内出现区域窗口2309。窗口2309确定用于本地桌面(或本地桌面的一部分)的屏幕共享的结果输出区域,并且可以由用户在大小,形状,方向,位置等方面移动和/或定制。一旦用户为窗口2309选择了位置/大小/形状,用户就可以通过某种输入(例如按下定点设备,重新选择按钮2305或某种其它输入)来完成选择。然后,包括协作工作区内的相关参数(大小,形状,方向等)的所选区域可以由本地计算设备接收。可选地,可以将该区域设置为某一默认值,包括默认大小,位置和方向,并且如果用户希望偏离该区域,则可以由用户进一步配置该区域。

当然,图23A-23B中所示的过程仅是接收在协作工作区内共享本地计算设备的本地桌面的至少一部分的请求以及对协作工作区的表示内的区域的选择的一个示例。该步骤可以以多种方式实现。例如,屏幕共享按钮2305可以被拖入协作工作区2303而不是被选择。屏幕共享请求也可以由用户使用一些输入命令发起,例如键盘命令或菜单或子菜单内的选择,其可以被协作应用识别为共享屏幕的请求。在协作工作区内启动屏幕共享的请求也可以在已经启动单独的屏幕共享会话之后启动。例如,用户可以将任务栏选项卡,图标或屏幕共享窗口拖到协作工作区内的位置,从而使计算设备接收协作工作区内的区域的请求和选择。

接收共享本地计算设备的本地桌面的至少一部分的请求以及在协作工作区的表示内对区域的选择的步骤可以包括子步骤,该子步骤允许用户选择用于屏幕共享的源,诸如是共享它们的整个桌面,它们的桌面内的一个或多个窗口,还是与在它们的本地计算设备上运行的一个或多个应用相关联的输出。这些子步骤可以包括在用户界面内发送源选择界面,源选择界面被配置为接收对本地桌面的至少一部分的选择,以及在源选择界面内接收对本地桌面的至少一部分的选择。

图24A至24C说明根据示范性实施例的源选择过程的实例。图24A示出了在用户选择任何屏幕共享命令或按钮之前的本地计算设备的用户界面(桌面)2406。数字2401-2408表示与上面讨论的图23A中的数字2301-2308相同的部件。

图24B示出了在用户选择了屏幕共享按钮2405之后的用户界面2406。如图24B所示,源选择接口2409可以在协作工作区2403内或协作应用2404内发送,其允许用户选择他们想要共享他们的整个桌面还是他们的桌面的一部分,以及他们想要共享他们的桌面的哪一部分。源选择接口可以列出运行在本地计算设备上的所有当前活动的应用,以及任何窗口(例如对应于OS的窗口或由应用创建的窗口),并且允许用户在共享整个本地桌面,共享本地桌面内的一个或多个窗口,或者共享对应于在本地计算设备上执行的一个或多个应用的一个或多个接口之间进行选择。例如,如果用户选择要共享的应用,则可以共享与该应用相关联的所有接口(例如窗口,提示,显示等)。如果用户选择要共享的单个窗口,则只有该窗口将被共享。另外,如果用户选择共享他们的整个桌面,则整个桌面的内容可以与其他参与者共享。

图24C示出了在用户选择了选择界面2409内的"文档编辑应用"之后的界面2401。该选择将指定文档编辑应用作为屏幕共享流的源,这意味着协作工作区中的其他参与者将能够查看与在本地计算设备上执行的文档编辑应用相对应的界面。该选择可以被存储在存储器中和/或被传递到用于生成捕获桌面的相关部分的流对象的应用或程序,这将在下面进一步讨论。

上述源选择步骤和关于图24A-24C的源选择步骤可以作为关于图23A-23B讨论的区域的选择的一部分,之前或之后执行。例如,在用户选择屏幕共享窗口的区域之后,系统可以显示源选择界面。或者,可以在选择区域之前显示源选择界面。源选择过程也可以在整个过程中的后续步骤中执行,例如当生成流对象时。

源选择过程也可以被省略(默认共享整个桌面)和/或可以以其它方式执行。例如,不是显示源选择界面,而是可以显示提示,该提示指示用户选择他们想要共享的所有活动窗口,或者输入命令以共享整个桌面。许多变化是可能的,并且这些实施例不是限制性的。

关于步骤2002以及图23A-23B和24A-24C描述的输入可以通过任何类型的定点设备接收,例如鼠标,触摸屏或触控笔。涉及虚拟驱动程序和/或透明层的先前描述的技术可用于检测输入。例如,输入可以是用户的指向手势。另外,上述动作,例如拖放动作,选择,取消选择,或其它输入或输入序列,也可以使用涉及虚拟驱动程序和/或透明层的先前描述的技术来输入。

回到图20,在步骤2003,生成被配置为输出本地计算设备的本地桌面的至少一部分的视频流的流对象。流对象可以是媒体流,例如视频流,其被配置为捕获本地桌面的至少一部分的流。

如前所述,可以通过在本地计算设备上执行的本地协作应用在本地计算设备上发送托管在服务器上的协作工作区的表示。该协作应用可以是例如web应用,并且与本地计算设备上的屏幕捕获程序通信和接口。屏幕捕获程序是被配置为生成桌面的至少一部分的流的程序。协作应用可以经由应用程序接口(API)与屏幕捕获程序接口。另外,协作应用可以经由透明层与屏幕捕获程序接口,透明层本身与运行在本地计算设备上的多个应用接口。用于生成媒体流的屏幕捕获程序功能还可以被集成到协作应用中,使得协作应用可以简单地调用相关例程或过程来实例化流对象。

图25示出了根据示例性实施例的用于生成被配置为输出本地计算设备的本地桌面的至少一部分的视频流的流对象的流程图。

在步骤2501,本地协作应用经由本地协作应用与屏幕捕获程序之间的应用程序接口(API)将对源标识符的请求发送到在本地计算设备上执行的屏幕捕获程序。如前所述,该API可以是透明层本身。该请求可以包括附加属性,诸如屏幕共享流(诸如特定应用或窗口)的所选源。或者,源选择过程可以在请求被提交或省略而不是默认源(例如整个桌面)之后执行。源标识符是将要创建的媒体流的句柄或地址,并允许应用访问媒体流的输出以及所得到的屏幕共享。

在步骤2502,屏幕捕获程序启动本地计算设备的本地桌面的至少一部分的流,该流具有对应的源标识符。当将源参数提供给屏幕捕获程序时,屏幕捕获程序可以仅使用所标识的组件(例如特定应用或窗口)来启动流。否则,屏幕捕获程序可以通过默认方式启动整个本地桌面的流,或者如前所述向用户显示源选择选项。启动的流是周期性地捕获桌面的至少一部分的快照的屏幕捕获序列(例如每秒30次)。可以使用源标识符来访问该流,如上所述,该源标识符是允许程序访问该流的句柄。

在步骤2503,屏幕捕获程序将源标识符发送到本地协作应用。在步骤2504,本地协作应用至少部分地基于源标识符生成流对象。除了源标识符之外,本地协作应用可以可选地利用较早提供的信息,例如用户指定的区域,来创建流对象。流对象是媒体流和具有定义格式的相应输出接口。所定义的格式可以可选地基于用户输入,例如所选择的区域。流对象是媒体流对象,其与来自参与者的相机的视频流相兼容并且被配置为嵌入在协作工作区内。

屏幕捕获程序是被配置为生成本地桌面的流或本地桌面的一部分的流或被集成到本地协作应用中并且被配置为生成本地桌面的流或本地桌面的一部分的组件的程序。例如,屏幕捕获程序可以是web浏览器或浏览器引擎组件,其是用于web实时通信(WebRTC)流的基础或端点。以下部分提供了当屏幕捕获程序是铬时生成流对象的步骤的示例性实现。

可以通过MediaDevices.getUserMedia()函数界面访问谷歌浏览器(Chrome)中的屏幕捕获功能。可以调用gUM函数一次来检索用户音频/视频流,并且第二次调用gUM函数来获得屏幕流。

在Chrome中,可以通过利用web应用中的Chrome扩展(例如协作应用的一个可能的实现)来启用使用屏幕捕获功能的许可。扩展使用函数

chrome.desktopCapture.chooseDesktopMedia()返回SourceID。然后,SourceID可以被用作gUM函数中的参数,以检索相应的流。

用于屏幕共享的扩展可以包括在协作应用的上下文中运行的内容脚本和在单独的扩展上下文中运行的后台脚本。内容脚本可以通过将消息发送到窗口或经由文档对象模型(DOM)操作与协作应用通信,而后台脚本不能。后台脚本可以访问所有Chrome扩展API,但内容脚本不能。内容脚本和后台脚本可以通过函数chrome.runtime.connect()相互通信。给定该体系结构,生成被配置为输出本地计算设备的本地桌面的至少一部分的视频流的流对象的过程可以由以下执行:

(1)协作应用向内容脚本发送对屏幕共享源标识符的请求;

(2)内容脚本将请求传递到后台脚本;

(3)后台脚本调用函数chrome.desktopCapture.chooseDesktopMedia(),并将源标识符返回给内容脚本。

(4)内容脚本将其返回到协作应用,该协作应用最终调用具有源标识符的getUserMedia函数作为约束/参数之一。

对于Chrome中的gUM函数,视频流的约束可以包括{chromeMediaSource:'desktop';maxWidth:1920;maxHeight:1080;maxFrameRate:10;minAspectRatio:1.77;chromeMediaSourceId:sourceId}或{maxWidth:1920;maxHeight:1080;maxFrameRate:10;minAspectRatio:1.77;chromeMediaSourceId:sourceId}。

共享gUM调用的屏幕返回一个mediaStream,它可以作为WebRTC mediaStream在对等体连接上共享。

当然,使用Chrome浏览器作为屏幕捕获程序的上述实现仅作为示例提供,并且可以使用支持屏幕捕获功能的其他程序或浏览器(例如火狐浏览器Firefox)或单独的和独立的屏幕捕获程序来执行生成流对象的步骤。

回到图20,在步骤2004,本地计算设备通过web套接字连接向服务器发送一个或多个命令。一个或多个命令可以包括流对象和对应于所选区域的信息,并且被配置为使服务器至少部分地基于所选区域将流对象插入到协作工作区中。

例如,如果用户先前选择了协作工作区的右下角中的圆形区域作为屏幕共享的选择区域,则服务器可以将流对象插入协作工作区,使得当媒体流嵌入协作工作区时,媒体流以圆形格式显示在协作工作区的右下角中。圆的尺寸和方向可以基于所选区域的相同属性。当然,与协作工作区中的任何其它对象一样,在参与者通过与其协作工作区的表示交互而将其嵌入协作工作区中之后,可由参与者来调整或移动流对象。

可以基于先前选择的区域来确定协作工作区内的流对象的格式,所述先前选择的区域包括所选择的区域的属性,例如形状,大小和位置。这些属性可以与流对象一起发送到服务器的一个或多个命令中。然后,服务器可以基于这些属性来确定用于将流对象嵌入到协作工作区中的插入点和格式。

或者,流对象可以是基于用户先前对区域的选择而具有预定空间属性的媒体流对象。在这种情况下,当在本地计算设备处生成流对象时,可以将流对象的显示属性集成到流对象中。然后,可以将流对象(具有嵌入的空间属性)发送到服务器,该服务器基于嵌入的空间属性以适当的格式将流对象嵌入在适当的位置处的协作工作区中。

除了包括流对象本身之外,一个或多个命令可以可选地包括流对象的地址或服务器可以用来检索流对象或实例化其自身的流对象的实例的其它标识符。

服务器将流对象插入协作工作区使得流对象的表示通过web套接字连接传播到多个计算设备。因此,每个连接的计算设备将在它们各自的协作工作区的表示中具有流对象的表示。

插入的流对象被配置为接收本地计算设备的本地桌面的至少一部分的视频流,并通过web套接字连接将本地计算设备的本地桌面的至少一部分的视频流发送到多个计算设备。

如前所述,该过程包括从本地计算设备转发流信息,该本地计算设备实例化流对象(并通过流标识符被标识为媒体流的源)到服务器,然后到在协作工作区的表示中连接到服务器的多个计算设备中的每一个。因此,流对象本身可以被嵌入在服务器上的协作工作区内,并且所得到的流可以被传播到所连接的客户端。

图26示出了根据示例性实施例的从本地计算设备发送命令并传播流对象的过程。如图26所示,本地计算设备2601向服务器2600发送命令(包括流对象或对流对象的引用/指针)。然后,服务器2600将流对象插入到协作工作区中,导致具有嵌入式流对象的协作工作区被传播到所有连接的设备,包括本地计算设备2601和远程计算设备2602和2603。

图27示出了根据示例性实施例的在服务器将流对象嵌入协作工作区之后的本地计算设备的接口的示例。数字2701-2708对应于关于图23A中的数字2301-2308描述的相同部件。图27还示出了显示用户桌面的媒体流的嵌入式流对象2709。在这种情况下,假设所选择的源是整个桌面。连接到服务器的每个远程参与者将具有嵌入在它们的协作工作区的表示内的相同的流对象。如图27所示,所得到的嵌入流提供了"画中画"效果,其允许本地参与者和远程参与者在协作工作区的环境内查看共享屏幕的内容。因此,参与者可以共享相关的节目和信息,而不中断协作会话。

除了上述技术之外,申请人还发明了用于允许本地参与者和远程参与者控制在嵌入式流对象内显示的桌面或部分桌面的新技术。这种新颖的技术利用透明层并允许用户(本地和远程)有效地浏览嵌入式流对象内显示的桌面或桌面的一部分。

图28示出了根据示例性实施例的用于经由来自本地计算设备的嵌入式流对象来控制桌面或桌面的一部分的流程图。

在步骤2801,插入的流对象在本地计算设备的用户界面上的协作工作区的表示内被发送。插入的流对象与视频流的源的网络地址相关联。该关联可以由服务器以与流对象相关联的标签或元数据的形式来提供。此外,该关联可以是流对象的一部分,并且可以基于例如前面讨论的源标识符。例如,当创建流对象时,创建流对象的设备可以包括指示设备的IP地址的标签。

在步骤2802,在本地计算设备上执行的透明层检测与插入的流对象相关联的用户输入,该用户输入对应于本地桌面内的位置。如前所述,透明层包括应用程序接口(API),其被配置为与操作系统或被配置为在操作系统上执行的一个或多个应用中的一个或多个接口。透明层可以基于输入的位置(由坐标确定)和流对象的位置来检测与插入的流对象相关联的用户输入。例如,如果在鼠标点击和流对象的某个部分之间存在重叠,则该输入可以被检测为与插入的流对象相关联的用户输入。

基于输入在插入的流对象内的位置,用户输入还可以被映射到本地桌面内的特定位置。再次,可以存储指示与本地桌面的不同部分相关联的插入的流对象内的区域或坐标的地图,并且可以将该位置映射到本地桌面的相应部分。例如,插入的流对象的子区域可以与占据本地桌面中的相应区域的特定应用相关联,或者可以与本地桌面中的相应坐标相关联。

映射过程可以利用缩放机制或过程,该缩放机制或过程检测输入在插入的流对象内的相对位置,并将该相对位置映射到由流对象正在流送的桌面(或桌面的一部分)内的绝对位置。

另外,如前所述,输入可以来自诸如鼠标的定点设备,或者经由其它输入装置,诸如依赖于虚拟驱动程序和透明层的输入机构。

在步骤2804,在本地计算设备上执行的透明层确定与插入的流对象相关联的网络地址对应于本地计算设备的网络地址。这可以例如通过将提供输入的设备的IP地址与与流对象相关联的IP地址进行比较来确定是否存在匹配来确定。

在步骤2805,基于与插入的流对象相关联的网络地址对应于提供输入的计算设备的网络地址的确定,透明层将一个或多个第二命令发送到操作系统或被配置为在操作系统上执行的一个或多个应用中的一个或多个,所述一个或多个第二命令被配置为在本地桌面内的位置处执行用户输入。

如前所述,透明层可以与OS或在OS上运行的应用接口。因此,插入的流对象内的任何输入可以被映射到本地桌面内的相应位置,并且命令可以被发送(取决于相关的上下文,如先前所讨论的)到适当的应用或到OS,以在本地桌面内的相应位置处执行输入。

图29A-29C示出了根据示例性实施例经由来自本地计算设备的嵌入式流对象来控制桌面或桌面的一部分的示例。

如图29A所示,本地用户界面(桌面)2901包括显示协作工作区的表示的协作应用2902。该表示包括插入/嵌入的流对象2903,该流对象2903正在流播本地桌面。本地用户界面2901还包括任务栏2906,包括OS菜单按钮2905。如图所示,鼠标指针在插入的流对象2903内的按钮2904上,该按钮对应于本地桌面内的OS菜单按钮2905。

图29B示出用户在流对象2903内的按钮2904的位置处点击的结果。作为由透明层检测到的该输入的结果,输入在流对象2903内的位置被映射到桌面2901内的相应位置。由于对应的位置是OS菜单按钮2905,该输入导致透明层向OS发送命令以激活OS菜单按钮2905。桌面2901中的这种改变本身是由流对象捕获的,该流对象示出了在被激活的插入的流对象内的按钮2904。

图29C示出了在输入被发送到本地桌面之后的接口2901和插入的流对象2903。如图29C所示,OS菜单被打开并且包括可选指示符2907的列表。这种改变因此被插入的流对象2903捕获,流对象2903本身显示按钮2904的相应打开,包括可选择指示符2908的列表。

如上所示,透明层可以有效地用于通过嵌入的流对象来控制本地桌面。这有效地向参与协作会话的用户提供远程控制接口,该远程控制接口允许用户停留在协作会话内,并且同时导航他们的桌面或他们与其他参与者共享的桌面内的应用。

本系统还可以用于允许远程参与者控制正在共享的桌面或桌面的一部分。这种功能具有很大的实用性,因为它允许远程参与者访问经由协作工作区内插入的流对象共享的其它桌面和应用。

图30示出了根据示例性实施例的用于经由来自远程计算设备的嵌入式流对象来控制桌面或桌面的一部分的流程图。

在步骤3001,在远程计算设备的用户界面上,发送在协作工作区的表示内插入的流对象。插入的流对象与视频流的源的网络地址相关联。该关联可以由服务器以与流对象相关联的标签或元数据的形式来提供。此外,该关联可以是流对象的一部分,并且可以基于例如前面讨论的源标识符。例如,当创建流对象时,创建流对象的设备可以包括指示设备的IP地址的标签。

在步骤3002,在远程计算设备上执行的透明层检测与插入的流对象相关联的用户输入,该用户输入对应于本地桌面内的位置。如前所述,透明层被配置为与操作系统或被配置为在操作系统上执行的一个或多个应用中的一个或多个接口的应用程序接口(API)。透明层可以基于输入的位置(由坐标确定)和流对象的位置来检测与插入的流对象相关联的用户输入。例如,如果在鼠标点击和流对象的某个部分之间存在重叠,则该输入可以被检测为与插入的流对象相关联的用户输入。

基于输入在插入的流对象内的位置,用户输入还可以被映射到本地桌面内的特定位置。再次,可以存储指示与本地桌面的不同部分相关联的插入的流对象内的区域或坐标的映射,并且可以将该位置映射到本地桌面的相应部分。例如,插入的流对象的子区域可以与占据本地桌面中的相应区域的特定应用相关联,或者可以与本地桌面中的相应坐标相关联。

映射过程可以利用缩放机制或过程,该缩放机制或过程检测输入在插入的流对象内的相对位置,并将该相对位置映射到由流对象正在流送的桌面(或桌面的一部分)内的绝对位置。

另外,如前所述,输入可以来自诸如鼠标的定点设备,或者经由其它输入装置,诸如依赖于虚拟驱动程序和透明层的输入机构。

在步骤3004,在远程计算设备上执行的透明层确定与插入的流对象相关联的网络地址不对应于远程计算设备的网络地址。这可以例如通过将提供输入的设备(远程计算设备)的IP地址与与流对象相关联的IP地址进行比较以确定是否存在匹配来确定。

在步骤3005,基于与插入的流对象相关联的网络地址不对应于提供输入的计算设备的网络地址的确定,透明层通过web套接字连接向本地计算设备发送一个或多个第二命令,所述一个或多个第二命令被配置为使得在本地计算设备上执行的本地透明层在本地桌面内的位置处执行用户输入。

一个或多个第二命令可以通过服务器和web套接字连接从远程计算设备路由到本地计算设备。特别地,可以将一个或多个第二命令发送到具有目的地地址作为本地计算设备的IP地址的服务器,然后由服务器将其路由到本地计算设备。

所述一个或多个第二命令可经配置以致使所述本地计算装置处的所述本地透明层将本地命令发送到经配置以在所述本地操作系统上执行的所述本地操作系统或一个或一个以上本地应用中的一个或一个以上,所述一个或一个以上本地命令经配置以在所述本地桌面内的所述位置处执行用户输入。

如前所述,透明层可以与OS或在OS上运行的应用接口。因此,可以将插入的流对象内的任何输入映射到本地桌面内的相应位置,并且可以将命令从本地透明层(取决于如前所述的相关上下文)发送到适当的应用或本地计算设备上的OS,以在本地桌面内的相应位置处执行输入。

图31A-31C示出了根据示例性实施例经由来自远程计算设备的嵌入式流对象来控制桌面或桌面的一部分的示例。

如图31A所示,远程用户界面(桌面)3101包括显示协作工作区的表示的协作应用3102。该表示包括正在对本地桌面进行流播的插入/嵌入的流播对象3103(如这里所使用的,"本地"是指实例化该流播对象并共享其桌面或其桌面的一部分的设备)。远程用户界面3101还包括对应于在远程桌面上运行的web浏览器应用的任务栏和窗口。如图所示,鼠标指针在插入的流对象3103内的按钮3104上,按钮3104对应于正在流送的本地桌面内的OS菜单按钮。

图31B示出用户在流对象3103内的按钮3104的位置处点击的结果。作为由远程透明层检测到的该输入的结果,输入在流对象3103内的位置被映射到正被流送的本地桌面内的相应位置。然后,远程透明层向本地计算设备上的本地透明层发送命令,以在本地桌面内的相应位置处引起输入。由于对应的位置是本地桌面的OS菜单按钮,该输入导致远程透明层向本地透明层发送命令,本地透明层本身向本地OS发送命令以激活本地桌面的OS菜单按钮。本地桌面中的这种改变由流对象3103捕获,流对象3103示出正在被激活的插入的流对象内的按钮3104。注意,远程桌面3101不受该输入(除了对流对象3103的更新之外)的影响,因为插入的流对象不是流远程桌面,而是与本地计算设备相关联的不同桌面。

图31C示出了在输入被发送到本地桌面之后的接口3101和插入的流对象3103。在图31C所示的时刻,正在流播的本地桌面中的本地OS菜单被打开,并且包括可选指示符的列表。这种改变因此被插入的流对象3103捕获,流对象3103本身显示按钮3104的相应开口,以包括可选指示符的列表。

如上所示,透明层可以用于通过嵌入的流对象来控制远程桌面。这有效地向参与协作会话的用户提供远程控制接口,该远程控制接口允许用户停留在协作会话内并且同时导航协作工作区内的其它参与者的桌面或应用。例如,如果两个参与者正在向一组其他参与者显示显示,则第一显示参与者可以在其桌面上共享显示应用,并解释与协作工作区中的流对象共享的第一组幻灯片。然后,第一显示参与者可以向第二显示参与者"屈服"对显示应用的控制,第二显示参与者可以在第一显示参与者的桌面上远程控制显示应用。

可选地,远程控制功能可以包括许可,认证,或允许每个参与者配置其他参与者是否可以通过流对象来远程控制它们的共享桌面以及哪些参与者可以远程控制它们的共享桌面的一些其他访问控制机制。例如,每个用户可以存储指示他们是允许他们的本地桌面还是他们的本地桌面的一部分由其他参与者控制的偏好。这些偏好可以被存储在每个计算设备处(并且可以被透明层访问并由透明层使用以允许或阻止远程控制输入),或者可以被存储在服务器处并由服务器使用以允许或阻止计算设备之间的远程控制输入。不管这些访问控制机制如何被存储,它们都可以被用于确定远程参与者是否可以经由插入的流对象向另一个参与者的桌面提供输入。

上述技术中的一个或多个可以在一个或多个计算机系统中实现或涉及一个或多个计算机系统。图32示出了专用计算环境3200的示例。计算环境3200不旨在暗示关于所描述的实施例的使用范围或功能的任何限制。

参照图32,计算环境3200包括至少一个处理单元3210和存储器3220。处理单元3210执行计算机可执行指令,并且可以是真实或虚拟处理器。在多处理系统中,多个处理单元执行计算机可执行指令以增加处理能力。存储器3220可以是易失性存储器(例如,寄存器,高速缓存,RAM),非易失性存储器(例如,ROM,EEPROM,闪存等),或两者的某种组合。存储器3220可以存储实现所述技术的软件3280。

计算环境可以具有附加特征。例如,计算环境3200包括存储器3240,一个或多个输入设备3250,一个或多个输出设备3260以及一个或多个通信连接3290。诸如总线,控制器或网络的互连机构3270将计算环境3200的组件互连。通常,操作系统软件或固件(未示出)为在计算环境3200中执行的其它软件提供操作环境,并协调计算环境3200的组件的活动。

存储器3240可以是可移动的或不可移动的,并且包括磁盘,磁带或盒式磁带,CD-ROM,CD-RW,DVD或可用于存储信息并且可在计算环境3200内访问的任何其它介质。存储器3240可以存储用于软件3280的指令。

输入设备3250可以是触摸输入设备,诸如键盘,鼠标,笔,跟踪球,触摸屏,或游戏控制器,语音输入设备,扫描设备,数字照相机,遥控器,或向计算环境3200提供输入的另一设备。输出设备3260可以是显示器,电视,监视器,打印机,扬声器或提供来自计算环境3200的输出的另一设备。

通信连接3290使得能够通过通信介质与另一计算实体进行通信。通信介质发送诸如计算机可执行指令,音频或视频信息之类的信息,或调制数据信号中的其它数据。调制数据信号是一种信号,其特征中的一个或多个以这样的方式被设置或改变,即在信号中编码信息。作为示例而非限制,通信介质包括用电,光,RF,红外,声学或其它载波实现的有线或无线技术。

可以在计算机可读介质的上下文中描述实现。计算机可读介质是可以在计算环境内访问的任何可用介质。作为示例而非限制,在计算环境3200内,计算机可读介质包括存储器3220,存储器3240,通信介质以及上述任何一个的组合。

当然,为了便于识别,图32将计算环境3200,显示设备3260和输入设备3250示为单独的设备。计算环境3200,显示设备3260和输入设备3250可以是单独的设备(例如,通过电线连接到监视器和鼠标的个人计算机),可以集成在单个设备(例如,具有触摸显示器的移动设备,例如智能电话或平板电脑)或设备的任何组合(例如,可操作地耦合到触摸屏显示设备的计算设备。多个计算设备连接到单个显示设备和输入设备等。计算环境3200可以是机顶盒,个人计算机,或一个或多个服务器,例如联网服务器群,集群服务器环境,或计算设备的云网络。

已经参照所描述的实施例描述和说明了本发明的原理,将认识到,在不脱离这些原理的情况下,所描述的实施例可以在布置和细节上进行修改。在软件中示出的所述实施例的元件可以在硬件中实现,反之亦然。

考虑到可以应用本发明的原理的许多可能的实施例,我们要求保护作为本发明的所有这样的实施例,这些实施例可以在所附权利要求及其等同物的范围和精神内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号