CN108337909A - 用于提供交互式流传输媒体的系统和方法 - Google Patents

用于提供交互式流传输媒体的系统和方法 Download PDF

Info

Publication number
CN108337909A
CN108337909A CN201780003445.7A CN201780003445A CN108337909A CN 108337909 A CN108337909 A CN 108337909A CN 201780003445 A CN201780003445 A CN 201780003445A CN 108337909 A CN108337909 A CN 108337909A
Authority
CN
China
Prior art keywords
client device
implementations
application
client
host server
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.)
Pending
Application number
CN201780003445.7A
Other languages
English (en)
Inventor
T.托克索兹
T.普赖斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of CN108337909A publication Critical patent/CN108337909A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

一种客户端系统在应用的执行环境内呈现经由网络从远程主机服务器接收的与该应用不同的第三方媒体流。客户端系统检测第三方媒体流的呈现期间的交互事件,并且向远程主机服务器发送检测到的交互事件的描述。应用可在呈现之前被预提示,例如为了最小化启动时间。在一些实现方式中,建立边带消息信道以促进客户端系统与远程主机服务器之间的通信。

Description

用于提供交互式流传输媒体的系统和方法
相关申请
本申请要求2016年11月14日递交的标题为“Systems and Methods forProviding Interactive Streaming Media”的专利合作条约申请第PCT/US2016/061924号的权益和优先权,这里通过引用并入该申请的全部内容。
背景技术
包括诸如“智能”电话和平板设备的移动设备的计算设备执行可包括用于呈现经由网络接收的内容的功能的应用。在一些情况中,应用不选择要接收的内容也不控制接收到的内容的来源;相反,应用是用于呈现内容的管道(conduit)。接收到的内容可以是简单的,诸如文本或二维图像的呈现,或者接收到的内容可以是更复杂的,诸如多媒体内容或交互式内容的呈现。这种更复杂的内容的呈现可受到某些技术约束的限制。
发明内容
在一些实现方式中,主机服务器经由网络向客户端设备提供用于在客户端设备处执行的第一应用的执行环境内在客户端设备处呈现的媒体流。远程主机服务器在仿真环境(例如,虚拟或模拟环境)中为客户端设备执行第二应用,并且从第二应用向客户端设备提供输出作为用于呈现的媒体流。在一些实现方式中,媒体流是响应于来自于客户端设备的请求被提供到客户端设备的。在一些实现方式中,媒体流在客户端设备处被呈现在交互界面中。在这种实现方式中,客户端设备检测媒体流的呈现期间的交互事件,并且向远程主机服务器传送检测到的交互事件的描述。例如,没有限制地,交互事件可包括:按钮利用;触摸屏接触(“轻叩”);设备移动或运动,设备移动或运动的方向、速度或强度的改变,或者设备取向(例如,旋转偏航、俯仰或翻滚)的改变;图像或光传感器检测到的光的增大或减小;声音检测;等等。主机服务器从客户端设备接收检测到的交互事件的描述并且在仿真环境中为第二应用重创建相应的交互事件。
客户端设备与主机服务器之间的通信可被描述为两个单向信道。从主机服务器向客户端设备提供媒体流的第一信道和从客户端设备向主机服务器提供交互事件描述的第二信道。在一些实现方式中,在客户端设备和主机服务器之间建立额外的通信信道。额外的通信信道是使得主机服务器处的仿真环境能够与客户端设备更密切相似的边带信道。在这种实现方式中,(在仿真环境中执行的)第二应用可通过边带信道向客户端设备发送消息。另外,在一些这样的实现方式中,第二应用随后可经由边带信道接收来自客户端设备的响应。例如,可以使得第二应用能够对客户端设备上的配置或设置管理器请求状态或约束信息(例如,以判定是否存在第二应用应当遵守的家长约束)并且从客户端设备上的配置或设置管理器接收响应。作为另一示例,可以使得第二应用能够请求对客户端设备上的传感器(例如,客户端设备上的麦克风或图像传感器)的访问并且作为响应接收对传感器的授权访问。
在一些实现方式中,主机服务器在从客户端设备接收呈现第二应用的请求前准备向客户端设备提供来自第二应用的输出。主机服务器通过为客户端设备建立模拟环境、执行第二应用并且在提示点(cue point)暂停第二应用的执行来提供来自第二应用的输出。在一些实现方式中,主机服务器通过暂停仿真环境本身来暂停第二应用的执行。然后,响应于接收到呈现第二应用的请求,主机服务器恢复第二应用的执行(例如,通过恢复仿真环境)并且着手向客户端设备提供来自预提示(pre-cue)的第二应用的输出作为用于呈现的媒体流。在一些实现方式中,提示点是响应于检测到第二应用的特性而确定的,所述特性例如是第二应用在等待用户输入。在一些实现方式中,提示点是在暂停第二应用的执行之前,例如在预定限度的执行时间之后确定的。预定限度的执行时间可例如通过对于多个过去呈现测量第二应用的某个过去呈现和与第二应用的相应过去呈现的相应初始用户交互之间的典型(例如,平均值)延迟来确定。
附图说明
通过参考接下来结合附图理解的详细描述,本公开的上述和相关对象、特征和优点将被更充分理解,附图中:
图1是网络环境中的示例预览系统的图;
图2A、图2B、图2C和图2D是显示在预览呈现会话中呈现演示应用的应用的不同阶段的示例设备的图示;
图3是示例交互式预览会话的流程图;
图4是图示出在示例交互式预览会话期间客户端设备上的示例数据流的图;
图5是图示出在示例交互式预览会话期间主机服务器上的示例数据流的图;
图6是在客户端设备处提供预览会话的方法的示例实现方式的流程图;
图7是预提示应用以用于提供预览会话的方法的示例实现方式的流程图;
图8是识别预提示应用以用于提供预览会话的提示点的方法的示例实现方式的流程图;
图9是识别依应用而定的基于执行时间的提示点的客观方法的示例实现方式的流程图,其中在该提示点预提示应用以用于提供预览会话;并且
图10是适用于所描述的各种实现方式的计算系统的框图。
为了清晰起见,可能不会在每一幅图中都标注每一个组件。附图并不打算按比例绘制。在各幅图中相似的参考标号和命名指示相似的元素。
具体实施方式
图1是网络环境100中的示例预览系统的图。客户端设备的用户可在不将应用安装在客户端设备的情况下预览应用。不是将应用安装在客户端设备上,而是在远离客户端设备的主机服务器上执行应用。这个主机服务器随后通过经由网络向客户端设备传送应用的媒体流来向客户端设备提供预览会话。用于托管这样的预览会话的示例环境在图1中示出。
概览图1,图示的网络环境100包括网络110、示例客户端设备120以及若干个服务器和提供对数据存储设备156的访问的数据管理器150,所述若干个服务器包括应用后端服务器130、预览分发服务器140、预览主机服务器170。在客户端设备120上执行的应用可以是与应用特定后端服务器130交换数据的联网的应用。客户端设备120上的应用或者应用后端服务器130可间或请求在客户端设备120上呈现,例如请求来自预览分发服务器140的预览。在一些情况中,内容可以是源自第三方的内容,第三方诸如要预览的应用的开发者或者广告主。分发服务器140选择用于呈现的内容,例如交互式应用或游戏的演示,并且客户端设备120连接到内容主机。对于交互式应用或游戏,内容主机是代表客户端设备120在仿真执行环境中执行托管应用的预览主机服务器170,例如,其中托管应用是要演示的应用或游戏的实例。视听媒体流被从预览主机服务器170发送到客户端设备120以便呈现。如果客户端设备120的用户与呈现的媒体流交互,则交互数据被发送回预览主机服务器170,然后在这里在仿真执行环境中重创建该交互。例如,在一些实现方式中,仿真执行环境是虚拟机,该虚拟机被配置成使得来自虚拟机的视听输出在媒体流中被发送并且交互数据被用于在虚拟机处重创建交互输入。预览主机服务器170和预览分发服务器140可利用由数据管理器150管理并被存储在数据存储设备156中的数据。
仍参考图1,更详细地说,网络110启用客户端设备120与服务器,例如应用后端服务器130、预览分发服务器140和预览主机服务器170之间的通信。在一些实现方式中,数据作为数据封包的流(例如,以根据开放系统互连(Open Systems Interconnection,OSI)层的数据封包的形式)从源节点通过网络110流动到目的地节点。封包的流可使用例如分层在诸如因特网协议(IP)(例如,IPv4或IPv6)的OSI层-3网络协议之上的经由网络110传送的OSI层-4传输协议,诸如用户数据报协议(User Datagram Protocol,UDP)、传送控制协议(Transmission Control Protocol,TCP)或者流控制传送协议(Stream ControlTransmission Protocol,SCTP)。网络110由链接在一起以形成参与设备之间的一个或多个通信路径的各种网络设备组成。每个联网的设备包括至少一个网络接口,用于接收和/或发送通常作为一个或多个数据封包的数据。例示性网络110是因特网;然而,也可使用其他网络。网络110可由多个连接的子网络组成。网络110可以是局域网(local-area network,LAN)(诸如公司内联网)、城域网(metropolitan area network,MAN)、广域网(wide areanetwork,WAN)、互联网(诸如因特网)或者对等网络(例如自组织WiFi对等网络)。网络110中的设备之间的数据链路可以是有线链路(例如,光纤、网格、同轴、双绞线(诸如Cat-5或Cat-6)等等)和/或无线链路(例如,无线电、卫星、微波等等)的任何组合。网络110可包括用于移动通信设备的承载网络,例如实现诸如以下无线通信协议的网络:全球移动通信系统(Global System for Mobile Communications,GSM)、码分多址(Code Division MultipleAccess,CDMA)、时分同步码分多址(Time Division Synchronous Code DivisionMultiple Access,TD-SCDMA)、长期演进(Long-Term Evolution,LTE)或者任何其他这种协议,包括但不限于所谓的第三代“3G”、第四代“4G”和第五代“5G”协议。网络可包括短程无线链路,例如经由Wi-Fi、蓝牙或ZIGBEE,有时称为个人区域网络(personal area network,PAN)或网格网络。网络110可以是公共网络、私有网络或者公共和私有网络的组合。网络110可以是任何类型和/或形式的数据网络和/或通信网络。
示例客户端设备120是执行应用、向用户呈现输出并且从用户接收输入的计算系统或者基于处理器的设备。客户端设备120能够经由网络110与服务器130、140和170交换信息。客户端设备120可以是任何种类的计算设备,例如包括桌面型计算机、膝上型或笔记本计算机、诸如平板或电子板、个人数字助理或智能电话的移动设备、视频游戏设备、电视或电视辅助盒(也称为“机顶盒”)、信息亭、托管虚拟桌面或者任何其他这种能够经由网络110交换信息的设备。在一些实现方式中,客户端设备120包括一个或多个用于促进数据输入和数据呈现的硬件元件,例如键盘、显示器、触摸屏、麦克风、扬声器和/或触觉反馈设备。在一些实现方式中,客户端设备120包括按钮,例如功能特定按钮(例如,音频设备音量控制,诸如音量增大、音量减小、静音等等)和/或功能未知按钮(例如,可在软件级别指派特定功能的“软”按钮)。在一些实现方式中,客户端设备120包括能够检测客户端设备120本身的运动的传感器,例如加速度计、陀螺仪或倾斜传感器。加速度计可以是单轴或多轴加速度计。在一些实现方式中,客户端设备120是利用专用逻辑电路实现的,例如专用集成电路(application specific integrated circuit,ASIC)。在一些实现方式中,客户端设备120是利用包括至少一个处理器(或微处理器)核的片上系统(system on a chip,SoC)半导体设备实现的。在一些实现方式中,客户端设备120是利用通用计算处理器实现的。下文更详细描述的图4是图示出在示例交互式预览会话期间客户端设备上的示例数据流的图。图4中所示的客户端设备420是适合用作图1中所示的客户端设备120的客户端设备的示例。下文更详细描述的图10图示了在一些配置中适合用作客户端设备120的计算设备。
在一些实现方式中,客户端设备120运行管理客户端设备120上的软件应用的执行的操作系统,包括能够呈现来自预览主机服务器170的媒体流的一个或多个软件应用。在一些实现方式中,操作系统是与客户端设备120一起提供的。在一些实现方式中,客户端设备120执行能够接收根据诸如超文本传送协议(Hypertext Transfer Protocol,HTTP)和传输层安全性加密HTTP(HTTP encrypted by Transport Layer Security,HTTPS)的超文本应用协议的套组格式化的数据的浏览器应用(例如,web浏览器)。在一些这样的实现方式中,浏览器以一个或多个网页的形式促进与数据虚拟化平台130的交互。在一些实现方式中,浏览器应用是与客户端设备120一起提供的。在一些实现方式中,客户端设备120执行定制应用,例如与应用后端服务器130交互的游戏或其他应用。定制应用与应用后端服务器130之间的交互可使用诸如HTTP和HTTPS的标准协议,或者可使用专用协议,例如在诸如UDP、TCP或SCTP的传输层协议上实现的定制应用层协议。在一些实现方式中,客户端设备120包括用于获得和/或在客户端设备120上安装定制应用的工具。在一些实现方式中,客户端设备120与之通信的服务器中的一个或多个支持定制指令集合,例如应用编程接口(applicationprogramming interface,API),并且在客户端设备120上执行的定制应用实现该API。应用可利用例如提供给应用的开发者的库或软件开发工具包(software development kit,SDK)来实现API。
客户端设备120与诸如应用后端服务器130、预览分发服务器140和预览主机服务器170的各种服务器通信(或交换数据)。在一些实现方式中,这些服务器中的一个或多个是利用专用逻辑电路例如专用集成电路(ASIC)实现的。在一些实现方式中,客户端设备120是利用包括至少一个处理器(或微处理器)核的片上系统(SoC)半导体设备实现的。在一些实现方式中,这些服务器中的一个或多个是利用通用计算处理器实现的。下文更详细描述的图10图示了一种计算设备,其在一些配置中适合用作应用后端服务器130、预览分发服务器140和/或预览主机服务器170。
在图1中,应用后端服务器130向在客户端设备120上执行的应用提供后端支持。在一些实现方式中,应用后端服务器130运行从客户端设备120接收数据并且向客户端设备120发送数据的服务。例如,在客户端设备120上执行的应用可以是游戏,例如多玩家游戏,其中不同玩家的游戏数据由应用后端服务器130存储;在客户端设备120上执行的应用可以是实用工具(utility),其中用于该应用的一些功能由应用后端服务器130提供;或者任何其他种类的将后端服务器130用于支持的用户交互应用。在一些实现方式中,在远离客户端设备120处存储数据允许了多个用户或用户设备之间的异步交互,并且为在客户端设备120故障的情况下的恢复提供了一种渠道。
在一些实现方式中,预览分发服务器140接收提供特定内容的请求,并且响应于该请求,指引客户端设备120从预览主机服务器170获得该内容。在一些实现方式中,预览分发服务器140是广告网络服务器。在一些实现方式中,预览分发服务器140运行识别用于在客户端设备120上呈现的内容(例如,第三方内容)的服务。在一些实现方式中,在客户端设备120上执行的应用生成对预览分发服务器140的请求,并且预览分发服务器140随后利用内容选择来作出响应。内容本身可从预览分发服务器140或从预览主机服务器170供应,或者从另一服务器(未图示)供应,诸如内容存储服务器或者分布在内容递送网络(contentdelivery network,CDN)中的服务器。例如,如果选择的内容是交互式预览,则交互式预览由预览主机服务器170供应。
在一些实现方式中,预览分发服务器140是广告网络服务器。广告网络提供广告投放服务。应用开发者可使用广告网络在应用内投放广告并且从广告主接收对通过广告网络投放的广告的报酬。在一些广告网络中,广告主为呈现事件(称为“曝光”(impression))付费。在一些广告网络中,广告主在广告的接收者选择(例如,点击或轻叩)广告并且被带到诸如登录页面或应用商店的交易界面时付费。这些选择事件(例如,点击或轻叩)被称为“点进”(click through)事件。在一些广告网络中,广告主对于曝光和点进事件支付不同的金额;在一些情况下,对于曝光根本不付费。在一些广告网络中,广告主仅在广告的接收者与广告互动(engage)时才为曝光付费。在一些实现方式中,为了鼓励互动,终端用户被提供了用观看广告或与广告互动来换取奖励的机会。这被称为“奖励式广告”(rewarded ad)。例如,奖励式广告可在游戏应用中被呈现,使得游戏玩家可通过观看奖励式广告或与奖励式广告互动赚取“游戏内”奖励。玩家的游戏内奖励可例如是游戏内货币、额外的玩家“生命”、从游戏内终止事件中恢复、额外的游戏时间,等等。在一些实现方式中,奖励式广告是从广告网络服务器(例如,预览主机服务器170)流传输的可播放应用。在一些实现方式中,可播放应用是可用于安装的全特征应用的功能性演示版本。在一些实现方式中,奖励式广告播放预定秒数(预览呈现会话分配时间),在此期间终端用户被期望与呈现的广告互动,例如玩样本游戏几秒种。在一些实现方式中,奖励式广告是在第一应用的情境内被呈现的,并且第一应用有效地将界面控制传送到正被呈现的演示应用。
数据管理器150提供数据存储和管理服务,将数据存留在存储器156中。存储器156可利用一个或多个数据存储设备来实现。数据存储设备可以是适用于存储计算机可读数据的任何存储器设备。数据存储设备可包括具有固定存储的设备或者用于读取可移除存储介质的设备。示例包括所有形式的非易失性存储器、介质和存储器设备、半导体存储器设备(例如,EPROM、EEPROM、SDRAM和闪存设备)、磁盘、磁光盘和光盘(例如,CD ROM、DVD-ROM或蓝光盘)。适当的数据存储设备的示例实现方式包括存储区域网络(storage area network,SAN)、网络附接存储(network attached storage,NAS)和冗余存储阵列。
数据管理器150控制对存储器156的访问。在一些实现方式中,数据管理器150托管查询引擎。在一些实现方式中,数据管理器150托管关系数据库,例如利用关系数据库管理系统(Relational Database Management System,RDBMS)。在一些实现方式中,数据管理器150将存储器156中的数据作为文件来管理,例如XML文件。在一些实现方式中,数据管理器150利用证书或账户管理实用工具来调控对数据或特征的访问。在一些这样的实现方式中,证书或账户信息被数据管理器150存储在存储器156中。
数据库或者更具体而言数据库管理系统(database management system,DBMS)根据数据库定义(例如,数据库模式)来组织数据。在基本的关系数据库中,DBMS在表格状数据结构中维护数据。每个表格具有列,每一列对应于条目类型、分类或用途。例如,表格可具有用于数值数据的列、用于文本数据(例如,数值数据的描述)的列、用于日期数据的列,等等。在关系数据库中,表格中的列中的每个条目也在将该条目与来自该表格中的其他列的条目关联起来的行中。在一些情况中,条目将把来自一个表格的行与另一表格中的一行或多行关联起来。在一些DBMS实现方式中,被称为“视图”的虚拟表格表示从一个或多个表格拉出的数据,就好像它也是表格一样(也就是说,视图在数据库客户端或用户看来就好像它是表格一样,但不一定是这样存储的)。也可使用其他类型的数据库管理系统,包括各种类型的关系数据库、面向对象数据库、面向文档数据库、XML数据库、NoSQL数据库,等等。许多这些数据库类型使用表格或类似表格的结构,以类似于上文参考关系数据库描述的方式。数据库的客户端或用户可利用数据库指令,例如诸如结构化查询语言(Structured QueryLanguage,SQL)的数据库查询语言中的查询,来向数据库添加数据、修改数据库中的数据或者从数据库取回数据。一个或多个数据库指令可被一起分组成数据库事务。传统上,数据库提供事务原子性、一致性、隔离和耐久性。这些属性被称为首字母缩略词“ACID”。在一些实现方式中,数据管理器150提供具有所有ACID属性的知识库。然而,在一些实现方式中,数据管理器150不提供所有的ACID属性。
在一些实现方式中,服务器130、140和170中的一个或多个与数据管理器150通信,例如经由直接链路或网络110。在一些实现方式中,服务器130、140和170中的一个或多个利用采取诸如以下的形式化查询语言的查询来从数据管理器150获得数据:结构化查询语言(Structured Query Language,SQL)、超文本结构化查询语言(Hyper Text StructuredQuery Language,HTSQL)、情境化查询语言(Contextual Query Language,CQL)、数据挖掘扩展(Data Mining Extensions,DMX)或XML查询(XML Query,XQuery)。在一些实现方式中,服务器130、140和170中的一个或多个利用诸如以下的进程间通信架构从数据管理器150获得数据:公共对象请求代理架构(Common Object Request Broker Architecture,CORBA)、远程过程调用(Remote Procedure Calls,RPC)、对象链接和嵌入(Object Linking andEmbedding,OLE)、组件对象模型(Component Object Model,COM)或者分布式组件对象模型(Distributed Component Object Model,DCOM)。在一些实现方式中,服务器130、140和170中的一个或多个利用自然语言或语义查询从数据管理器150获得数据。在一些实现方式中,服务器130、140和170中的一个或多个利用诸如可视化API查询语言的定制查询语言的查询从数据管理器150获得数据。
预览主机服务器170向客户端设备120提供第三方内容。在一些实现方式中,预览主机服务器170运行媒体流传输服务,该服务经由网络110将媒体流传输到客户端设备120。在一些实现方式中,媒体流是利用诸如UDP、TCP或SCTP的标准协议来传送的。在一些实现方式中,媒体流是利用定制协议来传送的。在一些实现方式中,媒体流是单向的,从而客户端设备120可接收媒体流,但没有办法对媒体流的内容作出响应。在一些实现方式中,媒体流是交互式的,从而客户端设备120具有对媒体流的内容作出响应的手段,例如,使得媒体流的内容的源能够对交互作出响应。例如,在一些实现方式中,预览主机服务器170接收来自客户端设备120的用于修改媒体流内容的指令并且预览主机服务器170根据接收到的指令修改或更新流内容。
在一些实现方式中,预览主机服务器170运行客户端设备120的仿真版本。例如,在一些实现方式中,预览主机服务器170是运行来自客户端设备120的映像(image)的虚拟机的管理程序(hypervisor)。虚拟机是客户端设备120的虚拟化版本,即客户端设备120的仿真。在一些实现方式中,预览主机服务器170为客户端设备120执行模拟器,提供模拟的客户端设备120作为客户端设备的仿真。在一些实现方式中,预览主机服务器170是客户端仿真服务器。
在一些实现方式中,运行客户端设备120的仿真版本的预览主机服务器170从该仿真生成媒体流,例如为仿真的设备流传输来自音频输出缓冲器和图形显示缓冲器的视听媒体复合物。媒体流被预览主机服务器170传送到客户端设备120,在这里其可被客户端设备120呈现。客户端设备120的用户可与客户端设备120交互,例如在媒体流中呈现的元素上点击或轻叩。这些交互在客户端设备120处被捕捉并且被传送到预览主机服务器170,在这里它们被预览主机服务器170重创建以用于客户端设备120的仿真版本。以这种方式,客户端设备120的用户具有与客户端设备120的仿真版本交互的体验,就好像该交互是与实际的客户端设备120的交互那样。应用可被安装在客户端设备120的仿真版本上,并且用户可与该应用交互,而无需该应用被安装在实际客户端设备120上。
在一些实现方式中,客户端设备120的仿真版本是从客户端映像例如虚拟机映像或者要仿真的客户端的数据集文档配置和存储器状态仿真的。在一些实现方式中,客户端设备120的仿真版本是从通用客户端设备120的库存映像仿真的。在一些实现方式中,客户端设备120的仿真版本是从具有与特定客户端设备120共同的一些属性的一般化客户端设备120的库存映像仿真的。例如,客户端设备120和仿真版本可运行相同的操作系统版本,可具有匹配的显示大小或显示质量水平,和/或可具有等同的计算机处理器和/或存储器参数。通过具有共同的属性,与安装在仿真设备上的应用交互的用户体验将紧密匹配与安装在客户端设备120上的应用交互的用户体验。然而,当应用被安装在仿真设备上并且执行时,其并不需要已被安装在客户端设备120上。在一些实现方式中,预览会话开始于为仿真选择与将要呈现预览会话的客户端设备120最佳匹配(或者具有与其类似的属性)的客户端映像。
在一些实现方式中,如下文更详细描述的,预览主机服务器170具有客户端设备120的仿真(例如,虚拟化)版本的暂停实例,并且在被请求时恢复(resume)客户端设备120的仿真实例。仿真的客户端设备的暂停的实例包括预览应用的安装的实例。例如,暂停的实例可通过在仿真客户端设备中执行预览应用并且在提示点暂停仿真来创建。在一些实现方式中,提示点是利用下文参考图8描述的方法800的实现方式来识别的。当预览主机服务器170被请求提供来自预览应用的媒体流时,预览主机服务器170恢复客户端设备的暂停的实例并且从提示点恢复预览应用的执行。在一些实现方式中,预览主机服务器170维护虚拟化客户端设备的多个暂停的实例,其中每一个对应于客户端设备特性或属性的不同排列。在这种实现方式中,预览主机服务器170选择具有与将要接收流的客户端设备120的特性或属性最紧密对准的特性或属性的虚拟化客户端设备的暂停的实例。预览主机服务器170随后恢复所选择的暂停的实例以在预览会话中提供媒体流。
在一些实现方式中,客户端设备120执行预览呈现界面,该界面从预览主机服务器170接收媒体流并且将其呈现在客户端设备120处,例如在预览会话中呈现。呈现媒体流可包括呈现媒体流的视觉部分、呈现媒体流的音频部分或者呈现媒体流的视觉和音频部分两者。在一些实现方式中,媒体流包括力反馈数据并且客户端设备120在呈现媒体流的同时呈现力反馈数据,例如通过振动客户端设备120或者利用内置到客户端设备120中的其他触觉反馈设备。
在一些实现方式中,由客户端设备120执行的预览呈现界面捕捉用户交互事件数据。交互事件数据可包括例如鼠标点击、触摸屏轻叩、按钮按压、传感器促动(actuation)以及(由例如内置到客户端设备120中的加速度计、陀螺仪、倾斜传感器或其他运动传感器测量的)客户端设备120的运动。预览呈现界面捕捉这个交互数据并且将代表捕捉的交互的数据传送到预览主机服务器170。在一些实现方式中,预览呈现界面通过对传感器输入界面库挂钩(hooking)来捕捉交互数据。在一些实现方式中,预览呈现界面提供用于在预览主机服务器170和客户端设备120之间交换消息的边带通信信道。
客户端设备120可执行包括对从预览主机服务器170接收的内容的呈现的第一应用。第一应用随后可加载预览呈现界面并且在用于第一应用的应用程序情境内将其呈现给用户。在一些实现方式中,第一应用不具有对指向预览呈现界面的交互输入的访问权限。
图2A、图2B、图2C和图2D是示例触摸屏设备200的图示,其显示了游戏对在预览呈现会话中与演示应用互动的玩家进行奖励的不同阶段。虽然被示为游戏,但在许多实现方式中,应用的任一者或两者可以是任何类型或形式的应用,包括电子数据表应用、数据库应用、字处理应用、银行实用工具应用、社交网络应用、教育应用或者任何其他这种应用。概括而言,参考图2A中所示的示例,触摸屏设备200在屏幕205上显示示例应用图形用户界面(graphical user interface,GUI)210。应用GUI 210是用于这样的游戏的:在该游戏中,玩家(触摸屏设备200的用户)通过与另一应用的演示(即,演示游戏)互动来赚取游戏机会。当玩家耗尽了游戏机会(例如,生命、回合等等)的库存时,玩家被呈现用于演示游戏的预览呈现会话。在预览呈现会话结束之后,基于玩家与其他应用互动,玩家被奖励以额外的游戏机会(游戏次数)。图2B是过渡屏幕230的图示,其可在预览呈现会话开始时呈现,例如当玩家耗尽了游戏机会的库存时。图2C是在预览呈现会话期间为演示游戏显示GUI 240的示例触摸屏设备200的图示。图2D是在预览呈现会话之后呈现的奖励消息260的图示,例如响应于玩家已与演示游戏互动。
更详细地参考图2A,触摸屏设备200是客户端设备120的示例,其中用户通过轻叩、擦过或者以其他方式触摸触摸屏设备200上的屏幕205来与触摸屏设备200交互。在图2A中,屏幕205正在为第一游戏显示示例应用GUI210。图示的示例游戏在用户需要赚取更多游戏机会之前,允许该用户具有有限数目的游戏次数。在这个示例中,第一游戏托管着预览呈现会话,在其中用户可演示另一应用(演示游戏)以便赚取第一游戏中的更多游戏机会。
图2B是过渡屏幕230的图示,其可在预览呈现会话开始时呈现,例如当玩家耗尽了游戏机会的库存时。如图2B中所描绘,触摸屏设备200呈现过渡屏幕230,其具有说明用户应当与另一应用——演示游戏——交互以便获得第一应用内的额外游戏次数的消息框。过渡屏幕230表明,可在预览呈现会话期间玩演示游戏,而无需将演示游戏安装在触摸屏设备200上。可玩的演示游戏在预览呈现会话中以不要求本地设备上的安装的方式被从远程服务器提供到本地设备。例如,参考图1,预览主机服务器170可支持与客户端设备120上的应用的交互,而无需将应用安装在客户端设备120上。
在图2B中所描绘的示例中,过渡屏幕230包括指示正在加载演示游戏的视觉元素235。在一些实现方式中,视觉元素235是动画图形,例如沙漏或风车。在一些实现方式中,视觉元素235响应于从演示游戏接收的指示符而被更新。在一些实现方式中,演示游戏被预提示并且是从预提示状态提供的,例如利用下文参考图7描述的方法700。从预提示状态提供演示游戏(或者任何预览应用)可减少过渡屏幕230中示出的加载时间的量。在一些实现方式中,预提示可消除加载时间并且过渡屏幕230可被跳过或省略。
图2C是在预览呈现会话期间为演示游戏显示GUI 240的示例触摸屏设备200的图示。图2C中所示的GUI 240是可玩的演示游戏的示例启动屏幕(splash screen)。消息栏250被示出在启动屏幕上方,指示用于演示游戏的预览呈现会话是时间受限的预览。也示出了退出按钮255。在一些实现方式中,预览呈现会话具有预定的时间限度。然而,在一些这样的实现方式中,用户可被允许在预定的时间逝去之前离开或退出预览呈现会话,例如通过点击或选择退出按钮255。在一些实现方式中,退出按钮255在预览呈现会话的初始时段期间未被示出(或者被禁用),然后在初始时段之后被示出(或启用)。在一些实现方式中,初始时段是用于预览呈现会话的预定时间的百分比。在一些实现方式中,初始时段是固定长度的时间,例如15秒。在一些实现方式中,初始时段在演示游戏完成加载的固定长度的时间之后结束。
在一些实现方式中,指示演示游戏正在加载的视觉元素235(在图2B中示出)被显示在来自演示游戏本身的启动屏幕上,取代过渡屏幕230。在一些实现方式中,不使用过渡屏幕230。取而代之,示出引入演示游戏的启动屏幕并且显示出表明演示游戏“可玩”的消息。
当演示游戏已加载时,其可呈现用于用户互动的界面。例如,如图2C中所示,演示游戏可呈现“开始”按钮245。在一些实现方式中,演示游戏可呈现控制界面、玩游戏的指令或者表明游戏准备好用户交互的一些其他指示符。用户随后可与演示游戏互动,例如在“开始”按钮245上轻叩、轻叩演示游戏的可玩元素、移动触摸屏设备200以促动内部运动传感器,等等。如上所述,游戏的可玩元素的位置,诸如按钮245,可能是主机应用、设备的操作系统或者客户端代理未知或不可得的。检测与这种元素的交互可经由本文论述的间接系统和方法来执行。在一些实现方式中,当预览呈现会话时间结束时,或者当用户选择退出按钮255时,主机应用接收关于用户是否与演示游戏互动的指示符。
图2D是在预览呈现会话之后呈现的奖励消息260的图示,例如响应于玩家已与演示游戏互动。在图2D中,显示第一游戏GUI 210,其中具有说明响应于用户在预览呈现会话期间与演示游戏互动而提供的奖励的消息框260。
图3是用于示例交互式预览会话的流程图300。图2A、图2B、图2C和图2D中的图示是关于这种预览会话的一个示例的,并且在接下来对图3的描述中被称为示例。然而,这些图示只是示例应用在客户端设备上执行、呈现奖励机会、呈现交互式第三方内容和呈现奖励的示例。这些示例并不意味是限制性的。
概括参考图3,在整个流程图300中,用户可与客户端设备(例如,图1中所示的客户端设备120)上呈现的应用交互。存在第一应用,其可在客户端设备本地执行,以及第二应用,其可在第一应用的情境内呈现,但可在远程执行,例如在(如图1所示的)预览主机服务器170上执行。在流程图300中,在阶段310,客户端设备向用户提供第一应用。在阶段320,客户端设备请求第二应用的呈现,例如向预览分发服务器140(如图1中所示)发送请求。在阶段330,客户端设备在第一应用内的交互式预览会话中呈现第二应用。在阶段340,客户端设备检测与第二应用的用户交互。在阶段350,客户端设备向主机服务器提供交互描述,例如向预览主机服务器170(如图1中所示)发送在阶段340检测到的交互的描述。在阶段360,客户端设备判定预览会话是否已终止。在阶段370,判定预览会话结束了的客户端设备返回到第一应用。在一些实现方式中,在预览会话期间,第一应用不接收任何交互输入,因为所有这种交互数据实际上都在阶段350中被重定向到主机服务器。在一些实现方式中,在阶段370中返回到第一应用后,客户端设备向第一应用提供关于预览会话的反馈或分析。
更详细地参考图3,在阶段310,客户端设备向用户提供第一应用。第一应用被客户端设备在执行环境中执行。执行环境可包括例如操作系统和操作系统提供的任何动态加载库。在一些实现方式中,执行环境包括设备驱动器、传感器管理器等等。在一些实现方式中,执行环境包括操作系统内核,其中内核包括设备驱动器。在一些实现方式中,执行环境包括硬件抽象层。第一应用可以是软件实用工具、社交媒体应用、游戏或者任何其他可在客户端设备上执行的应用。用户与客户端设备上的界面交互以与第一应用交互。例如,用户可通过物理地触摸客户端设备上的触摸屏来与第一应用交互(例如,如上文参考图2A中所示的触摸屏设备200上的示例图形用户界面210所述)。在一些实现方式中,用户可通过在屏幕上轻叩、按压客户端设备上的按钮、通过移动或摇晃客户端设备(促动设备运动传感器)或者通过向客户端设备上的麦克风说话来与第一应用交互。在一些实现方式中,客户端设备包括相机并且用户经由相机与第一应用交互。
在阶段320,客户端设备请求第二应用的呈现,例如向预览分发服务器140(如图1中所示)发送请求。在一些实现方式中,对第二应用的呈现的请求包括指示请求方设备也就是客户端设备120的特性的数据。例如,请求可指示客户端设备120的品牌和型号,指示操作系统构建或版本,指示诸如屏幕大小、处理器芯片集、可用存储器的物理属性,等等。在一些实现方式中,对第二应用的呈现的请求指定第二应用。在一些实现方式中,对第二应用的呈现的请求是对任何任意第二应用的请求。例如,请求可被从客户端设备120传送到负责选择要被递送到客户端设备120的内容的预览分发服务器140。预览分发服务器140随后可为预览会话识别特定应用。在一些实现方式中,预览分发服务器140使得用于第二应用的预览会话内容被例如从预览主机服务器170递送到客户端设备120。在一些实现方式中,预览分发服务器140向客户端设备120提供预览会话请求数据,并且客户端设备120请求来自预览主机服务器170的用于第二应用的预览会话内容的递送。在一些实现方式中,该请求被嵌入在统一请求定位符(uniform request locator,URL)中。例如,在一些实现方式中,预览分发服务器140向客户端设备120提供URL并且客户端设备120尝试从提供的URL取回数据,实际上是请求预览会话内容。在一些实现方式中,请求是根据定制请求协议来格式化的,例如包括加密签名和/或加密请求识别符的协议。
在阶段330,客户端设备在第一应用内的交互式预览会话中呈现第二应用。交互式预览呈现会话是用户与第三方内容(即,第二应用)互动的机会。例如,第二应用可被呈现为第一应用中的奖励机会,给予用户通过观看第三方内容或与第三方内容互动(例如,预览另一应用)来赚取某种东西(激励)的机会。激励可以是第一应用本身内的奖励,或者可以是对应用外的某种东西的访问权限。例如,如果应用是游戏,则激励可以是游戏内的额外的“游戏次数”或“生命”、对额外的游戏内资源、级别或特征的访问权限、授予额外的游戏内货币或信用、额外的玩游戏时间、时间延迟的游戏内元素的加速,等等。如果应用是实用工具,例如照片编辑程序或呈现实用工具,则激励可以是对额外的工具、滤镜、定制图形、剪贴画、“贴纸”等等的访问权限。一些应用可依赖于后端服务器,例如图1中所示的应用后端服务器130,并且激励可与后端服务器上的资源利用捆绑。例如,应用可包括在后端服务器上执行的功能,并且用户可基于与第三方内容的互动而被奖励对后端功能的访问权限。作为另一示例,应用可允许利用后端服务器存储数据并且激励可以是额外的数据存储空间。在一些实现方式中,激励是应用外的。在一些实现方式中,激励是在餐馆、零售商店、游乐园、影院、表演场地、设备租赁地点、服务提供商等等处可兑现的优惠券或票券。在一些实现方式中,激励是抽奖或抽彩的入口。激励可以是应用用来奖励用户与第三方内容互动的任何东西。
在一些实现方式中,应用通过经由对应用编程接口(API)的函数调用实例化交互式预览呈现会话来向用户呈现第三方内容。在一些实现方式中,应用通过利用在软件开发者工具包(SDK)中提供的实用工具实例化交互式预览呈现会话来向用户呈现第三方内容。在一些实现方式中,应用通过经由对动态加载库(dynamic load library,DLL)的函数调用实例化交互式预览呈现会话来向用户呈现第三方内容。在一些实现方式中,第二应用是在由第一应用制定框架的显示窗口内呈现的。例如,在图2B中,过渡屏幕230被示为呈现在由第一应用制定框架的显示窗口中。在一些实现方式中,这个窗口被用于呈现第二应用。当在这种窗口内呈现时,第二应用明显是在第一应用的情境内呈现的。窗口的更小显示空间也可减小呈现设备之间变动(也就是说,显示器的框架部分在具有不同屏幕大小或分辨率的设备之间可能是变化的,同时允许窗口本身具有更一致的大小和分辨率)。在一些实现方式中,第二应用是利用整个屏幕呈现的。例如,在图2C中,示出的图形用户界面(GUI)240是使用例示性触摸屏设备200上的整个屏幕205的用于可玩演示游戏的示例启动屏幕,其中具有退出按钮255的消息栏250被层叠在GUI 240上。当利用整个屏幕205呈现时,第二应用是按与用户将第二应用安装在客户端设备上的情况下用户将会观看到的方式相同的方式呈现的。也就是说,通过使用整个屏幕205,用户接收与让第二应用在本地运行相似的预览体验。
在阶段340,客户端设备检测与第二应用的用户交互。从用户的角度来看,在客户端设备处呈现的第二应用是交互式的。用户可与第二应用呈现的任何界面互动,例如通过在触摸敏感屏幕上显示的虚拟按钮上轻叩。在一些实现方式中,用户可通过按压或促动客户端设备上的物理按钮来与第二应用交互。在一些实现方式中,用户可通过旋转、倾斜、摇晃或以其他方式物理地移动客户端设备来与第二应用交互。一般而言,用户可用来与本地安装的应用交互的任何交互模式都可用于与第二应用交互,即使第二应用未被安装在本地。这些交互发生在本地设备处,其中每个交互事件被本地设备上的一个或多个传感器接收到并且被执行环境所处理。例如,如果用户旋转客户端设备,则这个活动被运动传感器(例如,加速度计、陀螺仪或倾斜开关)检测到并且在执行环境中被设备驱动器或传感器管理器处理。客户端设备将检测到的运动转化成软件事件或信号,该软件事件或信号随后被报告给第一应用或者报告给第二应用。在一些实现方式中,第二应用在预览主机服务器170上的仿真环境例如虚拟机中执行,并且客户端设备将交互事件描述发送到预览主机服务器170,在这里其被提供给第二应用。从传感器到应用的数据流在下文参考图4更详细论述。
在阶段350,响应于在阶段340中检测到交互,客户端设备向主机服务器提供交互描述。例如,在一些实现方式中,客户端设备把在阶段340检测到的交互的描述经由网络110(如图1中所示)发送到预览主机服务器170。描述向主机服务器提供充分的信息来在主机服务器处重创建交互,例如作为到第二应用的输入。在一些实现方式中,客户端设备捕捉、钩住或拦截来自客户端设备上的输入传感器(例如,触摸屏、加速度计、倾斜传感器、按钮、麦克风或光传感器)的信号并且将捕捉、钩住或拦截的信号传送到主机服务器。在一些实现方式中,发送到主机服务器的信息被打包在数据结构中。例如,客户端设备可在数据结构中包括额外的情境信息,例如指示何时检测到交互的时间值。在一些实现方式中,交互描述(或者包括交互描述的数据结构)在客户端设备处被压缩,并且客户端设备通过向主机服务器传送压缩的信息来向主机服务器提供交互描述。
在阶段360,客户端设备判定预览会话是否已终止。预览会话可例如在预定长度的时间已逝去时、在第二应用终止时或者在客户端设备请求提早终止(例如,作为用户选择退出按钮的结果)时终止。在一些实现方式中,客户端设备从主机服务器接收指示预览会话已终止的信号。在一些实现方式中,客户端设备生成并向主机服务器发送指示预览会话已终止的信号。
在阶段370,判定预览会话结束了的客户端设备返回到第一应用。在一些实现方式中,在预览会话期间,第一应用不接收任何交互输入,因为所有这种交互数据实际上都在阶段350中被重定向到主机服务器。在一些实现方式中,在阶段370中返回到第一应用后,客户端设备向第一应用提供关于预览会话的反馈或分析。
在一些实现方式中,分析器向在阶段340检测到的交互应用交互试探。交互试探把表示在预览呈现会话期间发生的交互事件的数据集合转换成客户端设备120的用户与媒体流互动了的可能性。试探可用于判定用户在预览呈现会话期间是与客户端设备互动了还是忽略了客户端设备。例如,如果客户端设备120被放下,客户端设备120的正面屏朝下,或者如果设备音频重放在预览呈现会话期间被设置为静音,则这些可以是用户没有与内容互动的强有力的指示符。类似地,客户端设备的小运动可指示出用户在预览呈现会话期间继续握持着设备,这可暗示着更高的互动可能性。在一些实现方式中,试探考虑到了屏幕在预览呈现会话期间是否改变了显示状态。例如,如果屏幕显示等待用户输入的菜单选项,并且没有变化,则这可指示用户没有与内容互动。在一些实现方式中,试探考虑到了退出按钮(例如,退出按钮255)是否被使用来提早终止预览呈现会话(然而,提早终止并不一定意味着用户没有互动——用户可能在分配的时间段逝去之前完成了与第三方内容的互动)。作为另一示例,如果设备音频重放的音量被增大或者未静音,则这些事件可指示用户在预览呈现会话期间与第三方内容互动了。在一些实现方式中,当客户端设备在阶段370返回到第一应用时,客户端设备基于交互试探的评估向第一应用提供信息。例如,在一些实现方式中,客户端设备向第一应用提供与用户在状态330中与在交互式预览会话中呈现的内容互动了(或没有互动)的概率或可能性相对应的值。
图4是图示出示例交互式预览会话期间示例客户端设备420(例如,客户端设备120)上的示例数据流的图400。在图400中,示例客户端设备420执行在呈现对象470中提供预览会话的软件应用430,例如如上文参考图3所述。呈现对象470经由网络110从远程主机服务器(例如预览主机服务器170,如图1中所示)接收媒体流434。呈现对象470通过向远程主机服务器(即,预览主机服务器170)传送物理事件的描述436来促进交互式预览会话。示例客户端设备420利用设备接口422和传感器426检测物理事件。在一些实现方式中,设备接口422可要求某种形式的用户动作来接收输入,而传感器426在检测当前设备状况时可更被动,而不考虑(或者不要求)用户动作。在一些实现方式中,如图4中所描绘,应用栈440传达来自设备接口422和传感器426的信息。例如,在一些实现方式中,应用栈440包括内核级驱动器442和硬件抽象层444(HAL 444)。内核级驱动器442从设备接口422和/或传感器426接收表示物理事件的数据,并且内核级驱动器442将该数据传递到HAL 444。图示的应用栈440还包括运行时层446,其在HAL 444上执行来支持操作框架448。运行时层446使用HAL 444来用统一执行平台呈现应用(例如,软件应用430),而不管不同硬件平台之间的微小差别。操作框架448提供进程管理器、实用工具、库和应用(例如,软件应用430)使用的其他资源。例如,在一些实现方式中,应用栈440包括用于与预览主机服务器170交换消息468的消息传递服务460。在一些实现方式中,呈现对象470使用来自应用栈440的资源。在一些实现方式中,消息传递服务被包含到软件应用430中。图示的示例架构和数据流并不意味是限制性的;替换的设备设计以其他方式将数据从传感器和输入机制传递到软件和/或远程服务器,例如利用不同的架构。
示例客户端设备420是接收输入并且执行软件应用的计算系统,或者说基于处理器的设备。示例客户端设备420可以是任何能够如描述那样运作的设备,并且可例如是上文参考图1描述的客户端设备120。在一些实现方式中,示例客户端设备420包括一个或多个用于促进数据输入和数据呈现的硬件设备接口422,例如键盘、显示器、触摸屏、麦克风、扬声器等等。在一些实现方式中,设备接口422包括专用按钮,诸如音量按钮。在一些实现方式中,设备接口422包括“软”按钮,诸如具有软件可指派用途和任务的物理按钮以及显示在触摸屏上的按钮。在一些实现方式中,示例客户端设备420包括能够被动地检测物理事件的一个或多个传感器426,例如运动传感器(诸如单轴或多轴加速度计、倾斜传感器和陀螺仪)、指纹传感器、光传感器、图像传感器(例如,相机)、温度传感器、湿度传感器等等。在一些情况中,传感器426可用作设备接口422,诸如当用户旋转420客户端设备420以引起软件响应时。设备接口422和传感器426可各自是任何能够将物理事件转换成电子信号的设备。在一些实现方式中,示例客户端设备420是利用专用逻辑电路实现的,例如专用集成电路(ASIC)。在一些实现方式中,客户端设备120是利用包括至少一个处理器(或微处理器)核的片上系统(SoC)半导体设备实现的。在一些实现方式中,示例客户端设备420是利用通用处理器实现的。下文更详细描述的图10图示了在一些配置中适合用作示例客户端设备420的计算设备。
示例客户端设备420运行包括一个或多个内核级驱动器442的操作系统内核。每个内核级驱动器442把从相应设备接口422或传感器426接收的输入信号转换成数据表示。在一些实现方式中,内核级驱动器442被编译到操作系统内核中。在一些实现方式中,内核级驱动器442被动态加载到内核中,例如在启动或引导阶段期间。在一些实现方式中,操作系统内核是LINUX的版本。在一些实现方式中,操作系统内核提供核心系统功能,诸如线程管理和一些存储器管理。在一些实现方式中,操作系统内核使用中断处理程序(interrupthandler)来处理来自内核级驱动器442的信号。
硬件抽象层(HAL)444是允许相同的运行时层446和操作框架448在不同类型的下层物理硬件上运作的抽象层。HAL 444把可由内核级驱动器442的硬件特定版本生成的不同数据表示转换成统一数据表示。在一些实现方式中,HAL 444包括事件处理程序。在一些实现方式中,HAL 444包括事件监视器。在一些实现方式中,HAL 444包括事件处理程序,其中事件处理程序包括事件监视器。
运行时层446在HAL 444上执行以针对在示例客户端设备420上执行的应用支持操作框架448。在一些实现方式中,运行时层446对于安装的应用来说看起来像操作系统(而不是先前描述的较低级别的操作系统内核)。在一些这样的实现方式中,运行时层446为隔离的应用执行提供一个或多个虚拟机。在一些实现方式中,运行时层446是字节代码处理虚拟机,诸如Java虚拟机(Java Virtual Machine,JVM)。
操作框架448提供进程管理器、实用工具、库和应用(例如,软件应用430)使用的其他资源。在一些实现方式中,操作框架448负责管理软件安装、用户账户、安全性、认证等等。在一些实现方式中,操作框架448包括事件处理程序。在一些实现方式中,操作框架448包括事件监视器。在一些实现方式中,操作框架448包括事件处理程序,其中事件处理程序包括事件监视器。
当设备接口422或传感器426经历或检测到物理事件时,表示该事件的数据被传递到相应的内核级驱动器442。此数据随后经过内核级驱动器442、HAL 444、运行时层446和操作框架448流动到软件应用430。在一些实现方式中,内核级驱动器442利用一个格式或数据表示表示事件数据,并且HAL444将它们转换成更一般化的输入类型或传感器类型值。例如,输入可以是电压电平,并且内核级驱动器442可将电压电平报告为传感器特定值。HAL444可接收传感器特定值并且将其转换成更一般化的传感器类型值。操作框架448促进这些值到软件应用470的交换。在一些实现方式中,在预览会话期间,软件应用430将所有这种输入转移到呈现对象470。呈现对象470随后可将检测到的物理事件的描述436传送到远程主机服务器(即,预览主机服务器170)。
在一些实现方式中,应用栈440包括用于与预览主机服务器170交换消息468的消息传递服务460。在一些这样的实现方式中,在预览主机服务器170上的仿真环境中执行的访客应用可向示例客户端设备传送被消息传递服务460接收和处理的消息468。例如,在一些实现方式中,预览主机服务器170向访客应用提供用于访问示例客户端设备420的接口(例如,API)。到该接口的消息随后被传送到示例客户端设备420,在这里消息传递服务460可处理它们,然后在必要时发送答复消息468。在一些实现方式中,响应于服务器生成的消息468,存在于示例客户端设备420上的消息传递服务460直接与操作框架448和运行时层446交互,从而促进从访客应用与示例客户端设备420的直接通信,而不通过呈现媒体流434的软件应用430返回。
在一些实现方式中,控制器应用(诸如消息传递服务460、向消息传递服务460提供接口的应用或者包含消息传递服务460的应用)既在示例客户端设备420上也在仿真环境(例如,虚拟机或模拟器)中执行,在该仿真环境中访客应用在预览主机服务器170处被执行。例如来自访客应用的对仿真环境中的控制器应用的查询被转发到示例客户端设备420控制器应用的实例,在这里其随后可在客户端环境中被处理,反之亦然。在一些实现方式中,应用判定消息传递服务可用,并且由此推导出应用正在演示模式中被执行。
消息传递服务460的实现方式的一种示例头部是:
service StreamingService
{
void setOnMessageListener(IMessageListener);
void sendMessage(Message);
}
在一些实现方式中,传送到客户端设备的消息是对客户端设备访问的访问请求。在一些实现方式中,传送到客户端设备的消息是对于访问客户端设备上的系统配置数据的访问请求。在一些实现方式中,传送到客户端设备的消息是对于访问客户端设备上的音频传感器的访问请求。在一些实现方式中,传送到客户端设备的消息是对于访问客户端设备上的图像传感器的访问请求。在一些实现方式中,传送到客户端设备的消息是对于访问客户端设备上的生物计量传感器的访问请求。在一些实现方式中,传送到客户端设备的消息是对于访问客户端设备上的发光二极管的访问请求。在一些实现方式中,传送到客户端设备的消息是对于访问客户端设备上的家长控制设置的访问请求。在一些实现方式中,传送到客户端设备的消息是对于访问客户端设备上的文件系统的访问请求。在一些实现方式中,传送到客户端设备的消息是对于访问客户端设备的特征的访问请求。
软件应用430在图4中被示为在应用栈440顶上执行的不同软件包。在一些实现方式中,软件应用430可被集成到应用栈440中,例如作为操作框架448的一部分。软件应用430可与示例客户端设备420打包在一起,或者可被分开安装,例如作为第三方应用。软件应用430可以是游戏、实用工具、工具或者示例客户端设备420可执行的任何其他软件。
在一些实现方式中,软件应用430包括呈现对象470,用于呈现来自远程主机服务器(例如,来自预览主机服务器170)的内容。在一些实现方式中,软件应用430链接到由应用栈440提供的呈现对象470,例如作为操作框架448的一部分。呈现对象470经由网络110从预览主机服务器170接收媒体流434并且通过将物理事件的描述436传送到预览主机服务器170来促进交互式预览会话。呈现对象470通过应用栈440接收来自内核级驱动器442的数据并且将接收到的数据打包成交互事件的描述。呈现对象470随后将描述436经由网络110传送到预览主机服务器170。例如,在一些实现方式中,呈现对象470发送检测到的交互的描述436,其向预览主机服务器170提供充分的信息来重创建该交互,例如作为到预览主机服务器170上的托管的环境中的第二应用的输入。在一些实现方式中,示例客户端设备420捕捉、钩住或拦截来自示例客户端设备420上的设备接口422和传感器426的信号并且呈现对象470将捕捉、钩住或拦截的信号的原始值(作为物理事件的描述436)传送到预览主机服务器170。在一些实现方式中,传送到预览主机服务器170的信息被打包在数据结构中。例如,呈现对象470可在数据结构中包括额外的情境信息,例如指示何时检测到交互的时间值。在一些实现方式中,呈现对象470压缩交互描述(或者包括交互描述的数据结构)并且通过将压缩的信息传送到主机服务器来将交互描述436传送到主机服务器。
图5是图示出在示例交互式预览会话期间主机服务器570上的示例数据流的图500。在图5的描述中,客户端设备120的仿真是按照虚拟化来图示的;但这并不意味是限制性的,在一些实现方式中可以使用另一种仿真方法,诸如模拟。在图500中,示例主机服务器570(例如,预览主机服务器170)执行托管应用530,托管应用530在预览会话中被提供给客户端设备120,例如如上文参考图3所述。在一些实现方式中,主机服务器570是客户端仿真服务器。托管应用530在虚拟客户端设备实例520上执行,虚拟客户端设备实例520是由虚拟化控制器580托管的客户端设备120的虚拟化版本。虚拟化控制器580为虚拟客户端设备实例520仿真媒体输出设备(例如,显示屏、扬声器、触觉反馈等等),并且包括虚拟客户端接口540,该虚拟客户端接口540把从虚拟客户端设备实例520输出的媒体的媒体流434经由网络110传送到客户端设备120。虚拟客户端接口540从客户端设备120接收由客户端设备120检测到的物理事件的描述436。虚拟客户端接口540把接收到的事件描述转换成输入数据,虚拟化控制器580随后使用该输入数据来为虚拟客户端设备实例520仿真事件。在一些实现方式中,虚拟化控制器580在主机平台577上运行,主机平台577处理主机服务器570上的低级别资源分配。在一些实现方式中,主机服务器570虚拟化多种类型的设备,例如利用由数据管理器150存储的设备映像。在一些实现方式中,虚拟客户端设备实例520向托管应用530提供用于与客户端设备120交换消息468的消息传递服务560。在一些实现方式中,消息传递服务560拦截来自托管应用530的消息,诸如进程间请求和/或到虚拟客户端设备实例520的应用栈的请求,并且将拦截的消息传送到客户端设备120上的相应消息传递服务。图示的示例架构和数据流并不意味是限制性的;替换实现方式可使用不同的架构。
示例主机服务器570(例如,预览主机服务器170)是托管着虚拟客户端设备实例520的计算设备。在一些实现方式中,示例主机服务器570使用管理程序架构来托管虚拟客户端设备实例520。在一些实现方式中,示例主机服务器570使用模拟软件来托管虚拟客户端设备实例520。在一些实现方式中,示例主机服务器570仿真应用栈440(在图4中示出)以为托管应用530提供执行情境,其中执行情境是虚拟客户端设备实例520的替代。下文更详细描述的图10图示了在一些配置中适合用作示例主机服务器570的计算设备。
在一些实现方式中,主机服务器570执行主机平台577以管理托管虚拟客户端设备实例520。主机平台577处理主机服务器570上的较低级别资源分配,例如加载虚拟化控制器580,提供对存储器和计算处理器的访问,等等。在一些实现方式中,主机服务器570虚拟化或模拟多种类型的设备,例如利用由数据管理器150存储的设备映像。主机平台577处理从数据管理器150取回设备映像所需的低级别任务。
在一些实现方式中,在没有与相应客户端设备120的交互的情况下,在虚拟客户端设备实例520上执行托管应用530。例如,托管应用530可被加载并执行直到提示点,在这里应用的执行随后被暂停并且应用的状态(例如,存储器和执行栈)被捕捉并记录,例如记录到数据管理器150。在一些实现方式中,提示点是利用下文参考图8描述的方法800的实现方式来识别的。为了多功能性,相同的托管应用530可在多种虚拟化设备上执行,这些虚拟化设备例如具有不同的属性,诸如不同的屏幕大小、不同的处理器速度和/或不同的存储器分配。托管应用530的每个这种实例可被执行直到提示点,并且相应的虚拟化设备的映像与暂停的托管应用一起可被例如数据管理器150存储。当向客户端设备120提供预览会话时,主机平台577取回与客户端设备120的特性紧密匹配的虚拟化设备的映像,并且在其上恢复暂停的托管应用。这种实现方式的示例在下文更详细描述。
主机服务器570(例如,预览主机服务器170)包括托管着客户端设备120的虚拟化(或模拟)实例的虚拟化控制器580。在一些实现方式中,虚拟化控制器580是用于客户端设备120的虚拟机主机(例如,硬件管理程序、软件虚拟机主机或者任何其他形式的虚拟机主机)并且托管虚拟客户端设备实例520作为客户端设备120的虚拟化实例。在一些实现方式中,虚拟化控制器580是用于客户端设备120的软件模拟器并且托管虚拟客户端设备实例520作为客户端设备120的模拟实例。在一些实现方式中,示例主机服务器570仿真应用栈440(在图4中示出)以为托管应用530提供执行情境,其中执行情境是虚拟客户端设备实例520的替代。例如,在一些实现方式中,虚拟化控制器580提供与图4中所示的HAL 444相对应的虚拟化硬件抽象层(HAL)的实例,并且托管应用530被主机服务器570在虚拟化HAL顶上的应用栈上执行。
虚拟化控制器580为虚拟客户端设备实例520仿真媒体输出设备(例如,显示屏、扬声器、触觉反馈等等)。例如,在一些实现方式中,虚拟化控制器580可提供图形驱动器,该图形驱动器在虚拟客户端设备实例520看来好像是图形输出设备,但实际上只将图形指令记录到图形缓冲区(例如,环形缓冲区)。这个缓冲区随后可被传送到客户端设备120。在一些实现方式中,虚拟化控制器580包括虚拟客户端接口540,该虚拟客户端接口540把从虚拟客户端设备实例520输出的媒体的媒体流434经由网络110传送到客户端设备120,例如利用图形缓冲区传送。虚拟客户端接口540从客户端设备120接收由客户端设备120检测到的物理事件的描述436。虚拟客户端接口540把接收到的事件描述转换成输入数据,虚拟化控制器580随后使用该输入数据来为虚拟客户端设备实例520仿真事件。例如,在一些实现方式中,虚拟客户端接口540包括设备驱动器,该设备驱动器在虚拟客户端设备实例520看来像是输入设备;虚拟客户端接口540基于从客户端设备120接收的物理事件的描述436来仿真该输入设备。
在一些实现方式中,虚拟客户端设备实例520托管着用于与客户端设备120交换消息468的消息传递服务560。在一些实现方式中,消息传递服务560拦截来自托管应用530的消息,诸如进程间请求和/或到虚拟客户端设备520的应用栈的请求,并且将拦截的消息传送到客户端设备120上的相应消息传递服务。在一些实现方式中,消息传递服务560接收来自客户端设备120的消息并且将接收到的消息提供到托管应用530。在一些实现方式中,消息传递服务560是由虚拟化控制器580提供的。
托管应用530是在虚拟客户端设备实例520上执行的软件应用。在一些实现方式中,托管应用530是可在没有任何改变的情况下安装在客户端设备120上的应用。在一些实现方式中,托管应用530基于其是被安装在虚拟客户端设备实例520上还是安装在实际客户端设备120上来更改执行行为。例如,在一些实现方式中,响应于检测到消息传递服务560的存在,托管应用530更改执行行为以使用消息传递服务560。在一些实现方式中,托管应用530在于主机服务器570处的虚拟客户端设备实例520上执行的同时在客户端设备120处被呈现,就好像在客户端设备120处本地执行那样。
图6是在客户端设备120处提供预览会话的方法600的示例实现方式的流程图。概览方法600,在阶段610,客户端设备120在执行环境中执行应用。在阶段620,客户端设备120为另一应用发起预览会话。在一些实现方式中,预览会话是在与该应用相同的执行环境内提供的。在阶段630,客户端设备120在执行环境内呈现从远程主机服务器570接收的媒体流434。在一些实现方式中,远程主机服务器570和客户端设备120为边带通信建立用于交换消息468的边信道(即,用于传送媒体流434和由客户端设备120检测到的物理事件的描述436的信道之外的通信)。在这种实现方式中,在阶段640,客户端设备120接收来自远程主机服务器570的边带消息,并且在阶段645,客户端设备120向远程主机服务器570发送响应。在阶段650,客户端设备120检测交互事件,并且在阶段655,客户端设备120向远程主机服务器570传送检测到的交互事件的描述436。在阶段660,如果媒体流尚未终止,则方法600返回到阶段630并且继续呈现。否则,如果在阶段660,媒体流已终止,则在阶段670,客户端设备120将执行控制返回到第一应用。也就是说,预览会话结束。
更详细地参考图6,在阶段610,客户端设备120在执行环境中执行应用。例如,参考图4,在一些实现方式中,客户端设备(例如,图1中的客户端设备120或图4中的客户端设备420)在应用栈440上执行软件应用430。在一些实现方式中,应用是安装在客户端设备上的第三方应用。在一些实现方式中,应用与客户端设备原生提供的软件组件是包括在一起的。在阶段610,例如响应于来自用户的应用启动请求,在客户端设备120上执行应用。应用在客户端设备上执行并且到达执行点,在该执行点处要提供预览会话。在一些实现方式中,应用请求预览会话。在一些实现方式中,应用呈现内容并且内容包括触发对预览会话的请求的元素。例如,在一些实现方式中,应用呈现经由网络接收的内容,诸如网页、电子文档、视频或多媒体呈现、游戏等等。在一些实现方式中,当要提供预览会话时,应用切换到呈现模式或者启动呈现对象470。
在阶段620,客户端设备120为另一应用发起预览会话。在一些实现方式中,发起预览会话包括向预览分发服务器140发送为预览会话识别内容的请求。在一些实现方式中,预览会话开始于对预览主机服务器170的提供内容的请求。在一些实现方式中,该请求识别要提供的内容。客户端设备120准备呈现所请求的内容。例如,在一些实现方式中,当要提供预览会话时,应用切换到呈现模式或者启动呈现对象470。在一些实现方式中,客户端设备120实例化消息传递服务460。例如,在一些实现方式中,客户端设备120启动在预定的端口号上侦听传入消息的服务,并且提供应用接口,应用430可使用该接口来经由消息传递服务发送和取回消息。在一些实现方式中,客户端设备120接收来自预览主机服务器170的发起数据以发起预览会话。例如,在一些实现方式中,客户端设备120接收用于预览会话的会话识别符。
在阶段630,客户端设备120在执行环境内呈现从远程主机服务器570接收的媒体流434。在一些实现方式中,媒体流434包括视频图像数据。在一些实现方式中,媒体流434包括音频数据。在一些实现方式中,媒体流434包括触觉反馈数据。在一些实现方式中,媒体流434是根据诸如以下的运动图片专家组(Moving Picture Experts Group,MPEG)标准来格式化或编码的:MPEG-4、基于超文本传输协议的MPEG动态自适应流传输(MPEG DynamicAdaptive Streaming over the HyperText Transport Protocol,MPEG-DASH)或者MPEG传输流(MPEG transport stream,MPEG-TS)。在一些实现方式中,媒体流434是根据不同的标准来格式化或编码的。在一些实现方式中,媒体流434是根据定制的格式化或编码方案来格式化或编码的。
在一些实现方式中,远程主机服务器570和客户端设备120为边带通信(即,用于传送媒体流434和由客户端设备120检测到的物理事件的描述436的信道之外的通信)建立用于交换消息468的边信道。在这种实现方式中,在阶段640,客户端设备120从远程主机服务器570接收边带消息。
在一些实现方式中,在阶段640传送到客户端设备120的消息是对于客户端设备访问的访问请求。在一些实现方式中,在阶段640传送到客户端设备120的消息是对于访问客户端设备上的系统配置数据的访问请求。在一些实现方式中,在阶段640传送到客户端设备120的消息是对于访问客户端设备上的音频传感器的访问请求。在一些实现方式中,在阶段640传送到客户端设备120的消息是对于访问客户端设备上的图像传感器的访问请求。在一些实现方式中,在阶段640传送到客户端设备120的消息是对于访问客户端设备上的生物计量传感器的访问请求。在一些实现方式中,在阶段640传送到客户端设备120的消息是对于访问客户端设备上的发光二极管的访问请求。在一些实现方式中,在阶段640传送到客户端设备120的消息是对于访问客户端设备上的家长控制设置的访问请求。在一些实现方式中,在阶段640传送到客户端设备120的消息是对于访问客户端设备上的文件系统的访问请求。在一些实现方式中,在阶段640传送到客户端设备120的消息是对于访问客户端设备的特征的访问请求。
在阶段645,客户端设备120向远程主机服务器570发送对在阶段640中发送的消息的响应。在一些实现方式中,该响应包括在该消息中请求的信息。在一些实现方式中,在阶段645中发送的响应是消息流或一系列消息。例如,在一些实现方式中,该请求可以是对于访问客户端设备传感器(例如,麦克风、图像传感器、相机等等)的请求,并且阶段645中的响应是一系列带有来自客户端设备传感器的数据的数据消息。在一些实现方式中,托管应用使用从这些边带消息接收的数据来生成媒体流。例如,应用可以是允许编辑从客户端设备上的相机拍摄的图片的图像编辑器。
在一些实现方式中,阶段640处的访问请求使得客户端设备120从用户获得额外授权。例如,在一些实现方式中,使得客户端设备120显示授权屏幕,处理授权,并且响应于经处理的授权,在阶段645中将访问准予指示符提供回给主机服务器。授权屏幕征求用户输入来对访问请求授权。在一些实现方式中,授权屏幕包括用户可以选择来提供授权的软按钮。在一些实现方式中,完成授权要求安全密钥,诸如pin号码或者生物计量屏幕(例如,拇指纹或虹膜扫描)。客户端设备120处理用户输入以判定请求是否被授权。在一些实现方式中,如果在阶段610中执行的应用(主机应用)具有授权,则在预览会话中呈现的远程应用被自动授予相同的授权。在一些实现方式中,即使主机应用具有授权,远程应用也不被自动授予授权。例如,主机应用可具有对访问内置到客户端设备中的图像传感器或相机设备的授权;在一些实现方式中,这个授权移转到远程应用,而在一些实现方式中,这个授权不移转到远程应用。从而,在一些实现方式中,远程应用需要与主机应用分开地获得授权。远程应用可利用在阶段640由客户端设备接收到的边带消息来完成这一点。
在一些实现方式中,阶段640处的访问请求是对于访问客户端设备120上的配置数据、用户设置、应用商店或某种其他特征的请求,在客户端设备120处管理用户管理用户访问限制。访问请求可用于判定用户是否被禁止接收某种内容,例如由于家长设置或者年龄限制。
在阶段650,客户端设备120检测交互事件,并且在阶段655,客户端设备120向远程主机服务器570传送检测到的交互事件的描述436。在一些实现方式中,客户端设备120上的事件处理程序检测交互事件。在客户端设备120在阶段630中呈现接收的媒体流的同时,客户端设备上的事件处理程序检测交互事件,例如用户尝试与客户端设备120交互。在一些实现方式中,交互事件是触觉输入事件,诸如屏幕轻叩、按钮按压、按钮释放或者鼠标点击。在一些实现方式中,交互事件是客户端设备120的配置的改变,例如设备音频音量设置的增大、减小或静音。在一些实现方式中,交互事件是屏幕锁定事件或封壳关闭事件。在一些实现方式中,交互事件是由客户端设备120上的运动传感器检测到的设备运动事件。例如,客户端设备120可包括加速度计、陀螺仪、倾斜传感器或者任何其他类型的运动传感器。事件处理程序检测该输入,例如触觉输入或设备运动,并且将其作为交互事件来处理。在一些实现方式中,单独的事件监视器钩住或拦截交互事件。在一些实现方式中,事件处理程序包括事件监视器。
在阶段655,客户端设备120将检测到的交互事件的描述436传送给远程主机服务器570。在一些实现方式中,客户端设备120传送表示检测到的交互的数据。在一些实现方式中,客户端设备120传送包括表示交互的特性的数据的数据结构。例如,如果交互是屏幕轻叩,则数据结构可包括指示轻叩的屏幕坐标、轻叩的时间长度、轻叩期间施加的压力、轻叩几何结构的测量等等的字段。在一些实现方式中,客户端设备120将内部数据表示包括在传送的数据中。例如,如果设备驱动器以特定格式报告交互事件,则客户端设备120以特定格式将报告传送到远程主机服务器570。客户端设备120以使得远程主机服务器570能够重创建交互事件的方式将检测到的交互事件的描述436传送到远程主机服务器570。
在阶段660,如果媒体流尚未终止,则方法600返回到阶段630并且继续呈现。预览会话可例如在预定长度的时间已逝去时、在第二应用终止时或者在客户端设备请求提早终止(例如,作为用户选择退出按钮的结果)时终止。在一些实现方式中,客户端设备从主机服务器接收指示预览会话已终止的信号。在一些实现方式中,客户端设备生成并向主机服务器发送指示预览会话已终止的信号。
如果在阶段660媒体流已终止,则在阶段670,客户端设备120将执行控制返回到第一应用。也就是说,预览会话结束。在一些实现方式中,客户端设备为预览会话保留的任何存储器被释放。
图7是预提示应用以用于提供预览会话的方法700的示例实现方式的流程图。概览方法700,在阶段710,主机服务器570启动客户端设备仿真实例,并且在阶段720,在客户端设备仿真实例中执行托管应用。在阶段730,主机服务器570在提示点暂停托管应用的执行,并且在阶段740,暂停客户端设备仿真实例。在一些实现方式中,提示点是利用下文参考图8描述的方法800的实现方式来识别的。然后,在阶段750,主机服务器570接收向客户端设备提供托管应用的预览会话的请求。在阶段760,主机服务器570判定暂停的客户端设备仿真实例符合客户端设备的设备简档。在阶段770,主机服务器570重启动暂停的客户端设备仿真实例,并且在阶段780,主机服务器570从提示点(在这里其已在先前在阶段730中被暂停)恢复托管应用的执行。然后,在阶段790,主机服务器570将请求的预览会话提供给客户端设备120(响应于在阶段750中接收到的请求)。
更详细地参考图7,在阶段710,主机服务器570启动客户端设备仿真实例。在一些实现方式中,主机服务器570运行客户端设备120的仿真版本。例如,在一些实现方式中,主机服务器570是运行来自客户端设备120的映像的虚拟机的管理程序。虚拟机是客户端设备120的虚拟化版本,即客户端设备120的仿真。在一些实现方式中,主机服务器570为客户端设备120执行模拟器,提供模拟的客户端设备120作为客户端设备的仿真。在一些实现方式中,主机服务器570从由数据管理器150存储的数据(例如,来自虚拟机映像)启动设备仿真实例。
在阶段720,主机服务器570在客户端设备仿真实例中执行托管应用。在一些实现方式中,主机服务器570从由数据管理器150存储的数据安装托管应用。在一些实现方式中,托管应用被安装在阶段710中用于启动客户端设备仿真的机器映像中。在阶段720,主机服务器570执行托管应用并且针对提示点监视执行。
在阶段730,主机服务器570在提示点暂停托管应用的执行。在一些实现方式中,提示点是利用下文参考图8描述的方法800的实现方式来识别的。例如,应用可被执行直到应用为用户交互作好准备为止。如下文更详细描述的,这可在用户选项被托管应用初次呈现时检测到。在一些实现方式中,提示点是应用已被执行的时间长度或限度。在将应用执行了指定限度的时间(在阶段720)之后,则在阶段730,主机服务器570暂停执行。在一些实现方式中,主机服务器570通过向托管应用发送信号或中断(例如,请求应用中止)来暂停托管应用的执行。在一些实现方式中,托管应用在提示点处于稳定状态中,等待着用户输入。在一些实现方式中,主机服务器570在提示点为托管应用生成存储器利用和执行栈的记录,其中生成的记录以后可用于将应用还原到相同的执行状态。在一些实现方式中,阶段730被跳过,并且当主机服务器570判定托管应用已到达提示点时,则继续到阶段740并且暂停客户端设备仿真实例。
在阶段740,主机服务器570暂停客户端设备仿真实例。在一些实现方式中,主机服务器570将客户端设备仿真实例置于暂停状态(例如,睡眠或休眠模式)中并且捕捉客户端设备仿真实例的存储器状态。在一些实现方式中,捕捉存储器状态包括为客户端设备仿真实例捕捉缓存和系统存储器的状态。捕捉的存储器可包括例如处理器寄存器中的数据、指令执行栈中的数据、来自缓存的数据,等等。在一些实现方式中,主机服务器570在存储器捕捉之前将客户端设备仿真实例置于稳定状态中。主机服务器570随后存储捕捉的存储器状态,例如利用数据管理器150来存储。
在一些实现方式中,客户端设备仿真(例如,虚拟客户端设备实例520)在启动时打开流传输会话。客户端设备仿真被配置为在启动时自动执行托管应用530并且将托管应用530运行预定限度的时间。预定的时间限度可以是提示点、从过去呈现起测量的典型延迟时间、从典型测量的延迟时间的偏移量、配置的时间长度或者某种其他时间限度。在一些实现方式中,客户端设备仿真随后捕捉从托管应用530输出的图形的截屏并且使用图像识别、光学字符识别、机器学习技术、计算机视觉、模式识别等等来识别截屏中呈现的交互式元素。在一些实现方式中,主机服务器570收集交互事件数据中的轻叩坐标并且确定最常轻叩的屏幕位置。主机服务器570随后在识别的交互式元素上或者在识别的最常轻叩位置处为客户端设备仿真仿真轻叩。仿真的轻叩(或点击)是与托管应用530的仿真交互。主机服务器570随后暂停客户端设备仿真的执行并且保存暂停的仿真的映像以供将来使用,例如保存在数据管理器150处。
在阶段750,主机服务器570接收向客户端设备提供托管应用的预览会话的请求。在阶段740和阶段750之间可存在很大的时间间隔。在一些实现方式中,主机服务器570可执行阶段710、720、730和740的多次迭代,创建并存储多个存储器状态捕捉,例如针对不同的托管应用和/或不同客户端设备的仿真,其中每一者具有其自己的与设备特定特性相关联的设备简档,所述特性诸如屏幕大小、芯片集、存储器分配、操作系统、可用外设等等。在阶段750,主机服务器570接收向客户端设备提供托管应用的预览会话的请求。在一些实现方式中,接收到的请求包括指定或识别要预览的托管应用的信息。在一些实现方式中,接收到的请求包括指定或识别客户端设备的一个或多个特性的信息。在一些实现方式中,主机服务器570从客户端设备接收识别设备特定简档的信息。
在阶段760,主机服务器570判定暂停的客户端设备仿真实例符合客户端设备的设备简档。在一些实现方式中,主机服务器570基于指定或识别的特性向发出请求的客户端设备指派设备简档。设备简档描述客户端设备的特征和属性。主机服务器570向客户端设备指派与客户端设备最佳对应的简档。在一些实现方式中,主机服务器570从客户端设备接收识别特定设备简档的信息。在阶段760,主机服务器570识别符合发出请求的客户端设备的特性的暂停的客户端设备仿真实例。
在阶段770,主机服务器570重启动暂停的客户端设备仿真实例。也就是说,在阶段760中判定在阶段750中暂停的客户端设备仿真实例符合发出请求的客户端设备的特性后,在阶段770,主机服务器570重启动暂停的客户端设备仿真实例(或者恢复其执行)。在一些实现方式中,主机服务器570从数据管理器150取回表示暂停的客户端设备仿真实例的数据并且从取回的数据重启动暂停的客户端设备仿真实例。在一些实现方式中,主机服务器570从睡眠或休眠状态恢复暂停的客户端设备仿真实例的执行。
在阶段780,主机服务器570从先前已在阶段730中暂停它的提示点起恢复托管应用的执行,在托管应用与客户端设备仿真实例被分开暂停的实现方式中,主机服务器570还原暂停的托管应用。托管应用在阶段730在提示点被暂停,因此在阶段780其可从提示点起被恢复。托管应用实际上被预提示到提示点,并且在阶段780准备好恢复。
在阶段790,主机服务器570将请求的预览会话提供给客户端设备120(响应于在阶段750中接收到的请求)。来自预提示的托管应用的恢复的执行的输出被主机服务器570经由网络110传送到客户端设备120。例如,在一些实现方式中,托管应用生成输出数据到音频和/或视频图形缓冲区并且主机服务器570传送缓冲区的内容的媒体流。在一些实现方式中,虚拟客户端接口540将媒体内容流传输到客户端设备120并且从客户端设备120接收描述交互事件的数据。虚拟客户端接口540在客户端设备仿真实例处为托管应用重创建交互事件。在一些实现方式中,主机服务器570利用上文参考图6描述的方法600来提供预览会话。
图8是识别提示点的方法800的示例实现方式的流程图,在该提示点处预提示应用以用于提供预览会话。一般而言,在大多数实现方式中,优选的提示点是应用执行期间应用准备好用户交互的第一个时刻。在一些实现方式中,使用替换的提示点,例如介绍性呈现被完全提示并且准备好呈现给用户的点。概览方法800,在阶段810,主机服务器570监视来自在客户端设备仿真实例上执行的托管应用的输出。在阶段820,主机服务器570判定托管应用已到达提示点。图8图示了四个示例判定分支822、824、826和828,在下文中更详细描述它们。这些示例判定分支可单独实现或者按任何组合或顺序实现,并且是作为示例提供的。可以使用其他判定分支,并且图示的四个并不意味是限制性的。继续方法800的概览,在阶段830,主机服务器570在判定的提示点暂停应用的执行,并且在阶段840,主机服务器570为暂停的托管应用保存暂停执行状态信息。例如,主机服务器570可将暂停执行状态信息传送到数据存储系统150。
更详细地参考图8,在阶段810,主机服务器570监视来自在客户端设备仿真实例上执行的托管应用的输出。
在阶段820,主机服务器570判定托管应用已到达提示点。图8图示了四个示例判定分支822、824、826和828,它们可被单独实现或者按任何组合或顺序实现。概括而言,四个示例是:基于判定托管应用是否在呈现识别的用户输入选项的分支822;基于判定托管应用是否在呈现静态屏幕的分支824;基于判定托管应用是否在呈现稳定屏幕(例如,循环动画)的分支826;以及基于判定托管应用是否执行了预定限度的时间的分支828。这些是示例,可以使用其他判定分支,并且图示的四个并不意味是限制性的。
许多判定分支策略使用屏幕捕捉的分析。在一些实现方式中,主机服务器570周期性地捕捉从托管应用输出的图形的图像(“屏幕捕捉”)并且分析屏幕捕捉。在一些实现方式中,屏幕捕捉表示如果显示屏幕存在则其看起来会是什么样,例如基于客户端设备仿真实例的图形缓冲区。也就是说,屏幕捕捉不要求实际屏幕或呈现界面。在一些实现方式中,屏幕捕捉是屏幕的压缩图像。在一些实现方式中,屏幕捕捉是表示屏幕状态的屏幕的子集的采样。在一些实现方式中,屏幕捕捉以诸如JPEG、GIF、BMP、PNG或TIFF图像文件格式的图像文件格式被保持在存储器中。在一些实现方式中,与屏幕的状态相对应的数据是针对显示像素的子集的像素状态的采样。采样可以是被选择为整体屏幕显示的代表性子集的特定像素。在一些实现方式中,客户端设备上的事件处理程序(或事件监视器)周期性地执行屏幕捕捉。像素的状态信息可包括例如颜色值、色调、对比度、亮度、饱和度等等。颜色值可以是红-绿-蓝(RGB)值、青-品红-黄-关键(CMYK)值、基于色度的值“YCbCr”或“Y'CbCr”值、PANTONE值或者使用任何其他颜色值方案的颜色值。采样中使用的像素的集合是像素的预定集合。在一些实现方式中,像素的集合最初是随机选择的,但在托管应用的整个分析中使用相同的像素集合。屏幕捕捉可表示应用加载屏幕、视频或媒体呈现、图形用户界面(GUI)或者托管应用可呈现的任何其他东西。
利用阶段820处的分支822,主机服务器570基于判定托管应用是否在呈现识别的用户输入选项来判定托管应用已到达提示点。在一些实现方式中,主机服务器570周期性地捕捉屏幕捕捉并且分析屏幕捕捉以寻找识别的用户输入选项。在一些实现方式中,主机服务器570在屏幕捕捉上使用光学字符识别(optical character recognition,OCR)技术来识别诸如“开始”、“启动”、“播放”、“进入”等等的软按钮标签。例如,图2C中所示的示例启动屏幕GUI240包括“开始”按钮245,并且按钮245中的标签(内容是“开始”)可经由OCR被识别为用户输入选项。在一些实现方式中,主机服务器570使用图像识别、光学字符识别、机器学习技术、计算机视觉、模式识别等等来识别图像或图标,诸如向右的三角或箭头。在一些实现方式中,主机服务器570维护常见用户输入选项的目录并且分析来自托管应用的输出以寻找符合来自该目录的常见用户输入选项的图像元素。在一些实现方式中,利用阶段820处的分支822,当主机服务器570判定托管应用在呈现识别的用户输入选项时,主机服务器570判定托管应用到达了提示点。
利用阶段820处的分支824,主机服务器570基于判定托管应用是否在呈现静态屏幕来判定托管应用已到达提示点。在一些实现方式中,主机服务器570周期性地捕捉屏幕捕捉的序列并且分析屏幕捕捉的序列以判定在屏幕捕捉之间是否存在任何差别。如果在阈值长度的时间中在屏幕捕捉之间不存在差别,则主机服务器570判定托管应用在呈现静态屏幕。在一些实现方式中,如果屏幕捕捉之间的差别的程度低于阈值量(例如,在屏幕捕捉之间少于1%的呈现在改变),则主机服务器570判定托管应用在呈现静态屏幕。在一些实现方式中,主机服务器570区分空白屏幕和静态屏幕。如果屏幕捕捉在颜色、饱和度、亮度或者某种其他特性上实际上是统一的,则主机服务器570可将其分类为空白屏幕。在一些实现方式中,主机服务器570为了认可屏幕捕捉为静态屏幕要求屏幕捕捉中的最小特性差异。在一些实现方式中,利用阶段820处的分支824,当主机服务器570判定托管应用在呈现静态屏幕时,主机服务器570判定托管应用到达了提示点。
利用阶段820处的分支826,主机服务器570基于判定托管应用是否在呈现稳定屏幕(例如,循环动画)来判定托管应用已到达提示点。在一些实现方式中,主机服务器570周期性地捕捉屏幕捕捉的序列并且分析屏幕捕捉的序列以判定是否存在屏幕捕捉或屏幕捕捉序列的重复。如果在阈值长度的时间中存在重复的序列,则主机服务器570判定托管应用在呈现循环。如果循环持续,例如持续阈值长度的时间或阈值次数的重复,则主机服务器570判定其是稳定屏幕。在一些实现方式中,利用阶段820处的分支826,当主机服务器570判定托管应用在呈现稳定屏幕时,主机服务器570判定托管应用到达了提示点。在一些这样的实现方式中,主机服务器570识别稳定屏幕存在的第一点(例如,动画循环的开头),并且提示点是所识别的第一点。在一些这样的实现方式中,主机服务器570识别稳定屏幕的呈现期间的任何点(例如,呈现被判定为循环的时间点),并且提示点是所识别的点。
利用阶段820处的分支828,主机服务器570基于判定托管应用是否执行了预定限度的时间来判定托管应用已到达提示点。在一些实现方式中,主机服务器570将托管应用执行数秒(或分数秒)并且在预定限度的时间之后继续到阶段830以暂停应用的执行。在一些实现方式中,预定限度的时间是固定的。在一些实现方式中,预定限度的时间是可配置的。在一些实现方式中,预定限度的时间是依应用而定的。例如,托管应用的源(例如,应用作者、厂商、分发者等等)可提供估计的加载延迟时间或“加载时间”来用作提示点。在一些实现方式中,预定限度的时间是通过实验确定的。例如,如下文参考图9所述,在一些实现方式中,托管应用被呈现给数个客户端设备120并且主机服务器570对于每个呈现测量从初始呈现到第一次交互的时间长度。这些测量随后被用于识别典型延迟时间,该延迟时间随后可用作提示点的时间限度。在一些这样的实现方式中,该过程是迭代的。也就是说,可以为先前暂停的应用的呈现收集测量,从而可随着时间的流逝自动改善提示点的精确度。在一些实现方式中,利用阶段820处的分支828,当主机服务器570判定托管应用已执行了预定限度的时间时,主机服务器570判定托管应用到达了提示点。
继续方法800的细节,在阶段830,主机服务器570在所判定的提示点暂停应用的执行。如上所述,参考图7中的阶段730和阶段740,主机服务器570在提示点为客户端设备仿真和在客户端设备仿真上托管应用捕捉表示存储器状态的数据。例如,在一些实现方式中,主机服务器570将客户端设备仿真置于休眠状态中或睡眠状态中,并且记录休眠或睡眠状态中的仿真的映像。
在阶段840,主机服务器570为暂停的托管应用保存暂停的执行状态信息。例如,主机服务器570可将暂停的执行状态信息传送到数据存储系统150。
图9是识别依应用而定的基于执行时间的提示点的客观方法900的示例实现方式的流程图,其中在该提示点预提示应用以用于提供预览会话。方法900是关于可能的许多采样实例之中的单个样本的。每个采样实例可对表示用户何时与如本文所述提供的内容第一次互动的开始统计数据的集合作出贡献。概览方法900,在阶段910,主机服务器570接收向客户端设备120提供托管应用的预览会话的请求。在阶段920,主机服务器570在客户端设备仿真实例上执行托管应用并且开始向客户端设备120提供预览会话。在阶段930,主机服务器570从客户端设备120接收交互事件的通知。在阶段940,主机服务器570识别从执行开始到在阶段930中接收通知为止逝去的时间量。在阶段950,主机服务器570更新开始统计数据,并且在阶段960,主机服务器570继续提供预览会话直到终止。
更详细地参考图9,在阶段910,主机服务器570接收向客户端设备120提供托管应用的预览会话的请求。在一些实现方式中,接收到的请求包括指定或识别要预览的托管应用的信息。在一些实现方式中,接收到的请求包括指定或识别客户端设备的一个或多个特性的信息。在一些实现方式中,主机服务器570从客户端设备接收识别设备特定简档的信息。
在阶段920,主机服务器570在客户端设备仿真实例上执行托管应用并且开始向客户端设备120提供预览会话。在一些实现方式中,主机服务器570例如基于客户端设备简档选择具有与客户端设备的特性相似的特性的客户端设备仿真实例。在一些实现方式中,主机服务器570从初始的“新鲜”状态执行托管应用进入客户端设备仿真实例中,例如从托管应用的干净安装执行。在一些实现方式中,主机服务器570从预提示的暂停状态执行托管应用。在一些这样的实现方式中,主机服务器570识别对于预提示的暂停状态逝去的执行时间,即,在被暂停之前应用执行的时间限度。主机服务器570在预览会话中将应用提供给客户端设备,例如如上文参考图6所述。
在阶段930,主机服务器570从客户端设备120接收交互事件的通知。例如,如上文参考图6的阶段655所述,在一些实现方式中,客户端设备120向主机服务器570传送检测到的交互事件的描述436。在一些实现方式中,客户端设备120传送表示检测到的交互的数据。在一些实现方式中,客户端设备120传送包括表示交互的特性的数据的数据结构。在一些实现方式中,客户端设备120将内部数据表示包括在传送的数据中。客户端设备120的用户尝试与应用交互的第一时间可指示应用准备好交互的第一时间。从而,在一些实现方式中,第一交互被用于测量从应用的执行开始到当应用准备好用户交互的时间长度。
在阶段940,主机服务器570识别从执行开始到在阶段930中接收通知逝去的时间量。在一些实现方式中,执行的开始对应于从在客户端设备仿真实例上初始新鲜安装应用起执行托管应用的开始。在一些实现方式中,阶段920从部分执行的暂停状态恢复托管应用。在一些这样的实现方式中,从执行的开始逝去的时间量包括在被暂停之前应用执行的时间量。
在阶段950,主机服务器570更新开始统计数据。在一些实现方式中,开始统计数据是时间长度的集合,从该集合可计算平均时间长度。例如,在一些实现方式中,时间长度的集合是观察到的时间长度和观察到每个时间长度的次数的表格。从时间长度的集合可计算均值、中值、模、截尾均值或其他统计概括。在一些实现方式中,开始统计数据是一对计数器,一个计数器用于测量的数目(n),另一计数器用于测量的滑动平均(d)。新的测量(x)以(ng+x)/(n+1)的形式被添加到滑动平均(d)。
在一些实现方式中,开始统计数据包括交互时的屏幕显示的图像表示(截屏)。主机服务器570在交互时捕捉图像并且利用该图像更新开始统计数据。在一些实现方式中,如果交互事件的定时在先前测量的范围或集群内,主机服务器570才记录截屏。也就是说,仅当测量有用的可能性达到充分阈值时才记录图像。在一些实现方式中,该范围是在第一交互事件的平均时间之前和之后的固定秒数的时间窗口。在一些实现方式中,如果该定时在先前观察到的第一交互的第一阈值百分位之上、第二阈值百分位之下或者在第一和第二百分位之间,则记录图像。例如,在一些实现方式中,如果该定时在第80百分位的定时的5秒内,则记录图像。在一些实现方式中,例如利用图像识别、光学字符识别、机器学习技术、计算机视觉、模式识别等等来分析图像以识别诸如开始按钮的交互式元素。在一些实现方式中,主机服务器570记录与触摸交互事件相对应的显示坐标、触摸交互事件相对于呈现的定时以及与触摸事件相对应的显示的截屏。在一些实现方式中,主机服务器570在开始统计数据中包括与交互事件是响应于交互元素的呈现的可能性相对应的得分。也就是说,该得分指示交互事件有多大的可能性是对应于应用准备好交互,例如基于主机服务器570是否识别了交互式元素。在一些实现方式中,主机服务器570进一步评估交互事件是否处于与识别的交互式元素相对应的坐标处。在一些实现方式中,该得分是用于交互式元素的机器识别的置信值。
应用在一些客户端设备仿真上加载所花的时间可能比其他客户端设备仿真上更长,例如作为屏幕大小、处理器属性、存储器分配等等的函数。在一些实现方式中,为特定的客户端设备仿真实例保持开始统计数据。
在阶段960,主机服务器570继续提供预览会话直到终止为止。在一些实现方式中,主机服务器570只为第一个检测到的交互更新统计数据。在此之后,基本上如上文参考图6所述那样提供预览会话。在一些实现方式中,主机服务器570收集额外的交互统计数据。例如,如果应用没有为交互作好准备,则交互时的第一次用户尝试可能被忽略了。从而,在一些实现方式中,主机服务器570为额外的交互收集统计数据并且将交互事件的第一集群识别为对应于应用可用性。
在一些实现方式中,主机服务器570使用由方法900收集的第一交互统计数据来识别用于预提示托管应用的提示点。在一些这样的实现方式中,主机服务器570识别从应用执行开始直到第一交互事件为止的平均时间长度。在一些实现方式中,主机服务器570从第一交互统计数据计算截尾均值,省略预定百分比的离群统计数据(outlier statistics)。在一些实现方式中,主机服务器570计算从应用执行开始直到第一交互事件的集群开始为止的时间长度。在一些实现方式中,主机服务器570识别作为测量到的到第一交互的时间长度的预定(例如,第80)百分位的时间长度。所识别的提示点是对于应用的加载延迟时间的估计,并且可用于为将来的呈现预来提示应用,例如如上文参考图7所述。
在至少一个示例实现方式中,主机服务器570提供游戏的预览会话。当游戏初次被加载时,其渲染游戏需要的各种图形,这要花时间。在游戏生成这个游戏内数据的同时,其呈现动画式的风车图形。一旦游戏准备就绪,其就呈现被标注着“现在玩游戏”的按钮和标注着“现在购买”的另一按钮所覆盖的游戏内角色的短循环视频。主机服务器570在不预提示游戏的情况下向数个客户端设备呈现此游戏,并且使用这些呈现来识别游戏加载延迟时间,例如利用上文参考图9描述的方法900。例如,主机服务器570可以确定客户端设备报告第一交互事件的时间的分布,对于第一交互事件处于该分布上的80%百分位处(给予或采取2秒的范围)的时间的事件的子集考查与游戏显示状态相对应的截屏,并且为该子集中的与标注有单词“玩游戏”(这由主机服务器570利用OCR识别)的按钮上的轻叩相对应的交互确定平均时间,同时省略与别处的轻叩相对应的交互,例如在标注“现在购买”的按钮上的轻叩。这个平均时间表示估计的游戏加载延迟时间并且可用作提示点。主机服务器570随后在没有客户端设备的情况下在虚拟机上执行游戏,并且在提示点暂停执行,例如利用上文参考图7描述的方法700。主机服务器570使用暂停的实例来响应于后续客户端请求提供游戏。如果提示点是进入游戏大约10秒,则从在提示点处暂停的实例提供游戏在每次呈现上节约了10秒。客户端设备用户通过不花费那10秒来观看风车而受益。如果预览会话是时间有限的,比如限于30秒,则这30秒可用于与游戏互动,而不是其中的三分之一被花费在等待游戏加载。
在至少一个方面中,包括存储器、网络接口和处理器的客户端仿真服务器可如所描述那样配置。具体地,在一些实现方式中,处理器被配置为执行客户端设备的仿真,并且在客户端设备的仿真中执行应用直到提示点。处理器被配置为在提示点暂停应用的执行,并且在存储器中存储在提示点暂停的处于暂停执行状态中的应用的表示。客户端仿真服务器还被配置为经由网络接口从客户端设备接收提供应用的交互式实例的请求。响应于该请求,处理器被配置为利用存储在存储器中的表示,从应用的暂停执行状态执行应用的恢复的实例,并且经由网络接口向客户端设备提供来自应用的恢复的实例的输出。
在客户端仿真服务器的一些实现方式中,提示点处于预定的执行时间长度处。在客户端仿真服务器的一些实现方式中,提示点是应用呈现用户交互选项的呈现阶段。在包括客户端仿真服务器的系统的一些实现方式中,系统还包括被配置为检测用户交互选项的呈现的仿真监视器。在一些实现方式中,仿真监视器被配置为利用光学字符识别来检测用户交互选项的呈现。在一些实现方式中,仿真监视器被配置为利用机器学习计算机视觉来检测用户交互选项的呈现。在一些实现方式中,客户端仿真服务器的处理器被配置为通过在提示点暂停客户端设备的仿真的执行来在提示点暂停应用的执行。
在至少一个方面中,描述了一种系统,其包括客户端仿真服务器并且还包括监视器,该监视器被配置为监视多个采样实例,这多个采样实例是由客户端仿真服务器提供给相应的多个不同客户端设备的,每个采样实例与初始加载状态相关联。监视器被配置为对于多个采样实例中的每一者识别从各自的初始加载状态到各自的初始用户交互的对应时间长度,并且基于所识别的时间长度为提示点确定预定的执行时间长度。在一些实现方式中,监视器包括处理器,该处理器被配置为执行指令以监视多个采样实例,识别时间长度,并且基于所识别的时间长度来确定提示点。在一些实现方式中,系统被配置为利用所识别的时间长度的算术均值来为提示点确定预定的执行时间长度。在一些实现方式中,系统被配置为利用所识别的时间长度的截尾均值来为提示点确定预定的执行时间长度。
在一些实现方式中,客户端仿真服务器的处理器被配置为经由网络接口从客户端设备接收客户端设备特性描述符。处理器被配置为为具有符合客户端设备特性描述符的特性的一般化客户端设备选择客户端仿真,并且利用用于一般化客户端设备的客户端仿真来执行客户端设备的仿真。
在至少一个方面中,描述了一种方法,其包括由包括处理器的客户端仿真系统执行客户端设备的仿真,并且由客户端仿真系统在客户端设备的仿真中执行应用直到提示点。该方法包括在提示点暂停应用的执行,并且在与客户端仿真系统相关联的存储器中存储在提示点暂停的处于暂停执行状态中的应用的表示。该方法包括经由网络从客户端设备接收提供应用的交互式实例的请求。该方法包括由客户端仿真系统响应于请求,利用存储在存储器中的表示,从应用的暂停执行状态执行应用的恢复的实例,并且经由网络向客户端设备提供来自应用的恢复的实例的输出。
在至少一个方面中,描述了一种用于包括存储器、网络接口和处理器的仿真主机服务器的系统,该处理器被配置为在客户端设备的仿真上执行应用,其中应用的执行使得仿真生成应用输出数据的媒体流。处理器被配置为经由网络接口将所生成的媒体流传送到客户端设备。处理器还被配置为向在客户端设备的仿真上执行的应用提供消息传递接口,并且经由网络接口向客户端设备传送在消息传递接口处从应用接收的第一消息。处理器被配置为经由网络接口从客户端设备接收第二消息,并且把从客户端设备接收的第二消息提供到在客户端设备的仿真上执行的应用。在一些实现方式中,从客户端设备接收的第二消息是响应于传送到客户端设备的第一消息的。在一些实现方式中,传送到客户端设备的第一消息是访问请求。在一些实现方式中,访问请求使得客户端设备显示授权屏幕,处理授权,并且响应于经处理的授权,在从客户端设备接收的第二消息中向仿真主机服务器提供访问准予指示符。
在一些实现方式中,仿真主机服务器包括被配置为提供客户端设备的仿真作为虚拟机的虚拟机主机。在一些实现方式中,客户端设备的仿真包括用于由应用生成的图像数据的图形输出缓冲区,处理器还被配置为利用来自图形输出缓冲区的数据来生成媒体流。在一些实现方式中,处理器被配置为将第一消息传送到在客户端设备处执行的控制器应用,并且从在客户端设备处执行的控制器应用接收第二消息。在一些实现方式中,从客户端设备接收的第二消息是响应于传送到客户端设备的第一消息的。在一些实现方式中,第一消息使得在客户端设备处执行的控制器应用向仿真主机服务器传送设备特定数据。例如,在一些实现方式中,第一消息包括客户端设备请求的统一资源定位符(URL),使得客户端设备传送设备特定数据。
在系统的一些实现方式中,传送到客户端设备的第一消息是对以下之一的访问请求:访问客户端设备上的系统配置数据;访问客户端设备上的音频传感器;访问客户端设备上的图像传感器;访问客户端设备上的生物计量传感器;访问客户端设备上的发光二极管;访问客户端设备上的家长控制设置;或者访问客户端设备上的文件系统。在一些实现方式中,访问请求使得客户端设备显示授权屏幕,处理授权,并且响应于经处理的授权,在从客户端设备接收的第二消息中向仿真主机服务器提供访问准予指示符。
图10是示例计算系统101的框图。根据例示性实现方式,示例计算系统101适合用于实现本文描述的计算机化的组件。概括而言,计算系统101包括用于根据指令执行动作的至少一个处理器107和用于存储指令和数据一个或多个存储器设备106或109。图示的示例计算系统101包括经由总线105与存储器106通信的一个或多个处理器107,用于连接到网络设备114(例如,用于接入网络110)的至少一个网络接口控制器112和网络接口111,以及其他组件103,例如输入/输出(I/O)组件102。一般而言,处理器107将执行从存储器(例如,缓存109或存储器106)接收的指令。例如,图示的处理器107包含缓存109或者直接连接到缓存109。在一些情况中,指令被从存储器106读取到缓存109中并且被(一个或多个)处理器107从缓存109执行。在一些实现方式中,指令被编码在未示出的只读存储器(read onlymemory,ROM)中。
更详细地说,(一个或多个)处理器107可以是任何处理指令的逻辑电路,例如从存储器106或缓存109取得的指令。计算系统101可基于任何能够如本文所述那样操作的处理器,或者处理器的集合。(一个或多个)处理器107可以是(一个或多个)单核或多核处理器。(一个或多个)处理器107可以是多个不同的处理器。例如,在一些实现方式中,通用处理器107可被一个或多个专用处理器107增强,诸如数学协处理器或图形处理器。在一些实现方式中,(一个或多个)处理器107被实现为一个或多个“芯片”上的电路。
存储器106可以是任何适用于存储计算机可读数据的设备。存储器106可以是具有固定存储的设备或者用于读取可移除存储介质的设备。示例包括所有形式的非易失性存储器、介质和存储器设备、半导体存储器设备(例如,EPROM、EEPROM、SDRAM和闪存设备)、磁盘、磁光盘和光盘(例如,CD ROM、DVD-ROM或蓝光盘)。计算系统101可具有任何数目的存储器设备106。
缓存109一般是被放置得紧邻处理器107以获得快速访问时间的某种形式的计算机存储器。在一些实现方式中,缓存109是作为处理器107的一部分或者与处理器107在相同芯片上的存储器电路。在一些实现方式中,存在多个级别的缓存109,例如L2和L3缓存层。在一些实现方式中,多个处理器117或者处理器117的多个核共享对同一缓存109的访问。
网络接口控制器112管理经由网络接口111(有时称为网络接口端口)的数据交换。网络接口控制器112处理用于网络通信的开放系统互连(Open Systems Interconnection,OSI)模型的物理和数据链路层。在一些实现方式中,网络接口控制器的任务中的一些是由(一个或多个)处理器107中的一个或多个处理的。在一些实现方式中,网络接口控制器112被包含到处理器107中,例如作为同一芯片上的电路。在一些实现方式中,计算系统101具有由单个控制器112控制的多个网络接口111。在一些实现方式中,计算系统101具有多个网络接口控制器112。在一些实现方式中,每个网络接口111是物理网络链路(例如,cat-5以太网链路)的连接点。在一些实现方式中,网络接口控制器112支持无线网络连接并且接口111是无线(例如,无线电)接收器/发送器(例如,用于IEEE 802.11协议、近场通信“NFC”、蓝牙、BLE、ZIGBEE、ANT或任何其他无线协议中的任何一者)。在一些实现方式中,网络接口控制器112实现一个或多个网络协议,诸如以太网。一般而言,计算系统101通过网络接口111经由物理或无线链路与其他计算设备交换数据。网络接口111可直接链接到另一设备或者经由中间设备链接到另一设备,中间设备例如是将计算系统101连接到数据网络110(诸如因特网)的网络设备,诸如集线器、网桥、交换机或路由器。
计算系统101可包括一个或多个输入或输出(I/O)组件102或者为其提供接口。输入设备包括——但不限于——键盘、麦克风、触摸屏、脚踏板、传感器、乐器数字接口(Musical Instrument Digital Interface,MIDI)输入设备以及诸如鼠标或轨迹球的指点设备。输出设备包括——但不限于——视频显示器、扬声器、触觉反馈设备、可刷新盲文终端、灯、诸如MIDI合成器的MIDI输出设备以及二维或三维打印机。
其他组件103可包括I/O接口、外部串行设备端口以及任何额外的协处理器。例如,计算系统101可包括用于连接输入设备、输出设备或额外的存储器设备(例如,便携式闪存驱动器或外部介质驱动器)的接口(例如,通用串行总线(universal serial bus,USB)接口)。在一些实现方式中,计算系统101包括额外的设备103,诸如协处理器。例如,数学协处理器可辅助处理器107进行高精度或复杂计算。
本说明书中描述的主题和操作的实现方式可以用数字电子电路实现,或者用具现在有形介质上的计算机软件、固件或硬件—包括本说明书中公开的结构及其结构等同物—实现,或者用它们中的一个或多个的组合来实现。本说明书中描述的主题的实现方式可实现为具现在有形介质上的一个或多个计算机程序,即计算机程序指令的一个或多个模块,其被编码在一个或多个计算机存储介质上,以供数据处理装置(包括例如处理器107)执行或者控制数据处理装置的操作。计算机存储介质可以是计算机可读存储设备、计算机可读存储基板、随机或串行访问存储器阵列或设备或者它们之中的一个或多个的组合,或者可被包括在计算机可读存储设备、计算机可读存储基板、随机或串行访问存储器阵列或设备或者它们之中的一个或多个的组合中。计算机存储介质也可以是一个或多个单独的组件或介质(例如,多个CD、盘或其他存储设备),或者可被包括在一个或多个单独的组件或介质中。计算机存储介质是有形的。计算机存储介质以非暂态形式存储数据,例如计算机可执行指令。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言来编写,所述语言包括经编译的语言、经解释的语言、声明性语言和过程式语言,并且计算机程序可按任何形式来部署,包括被部署为独立程序或被部署为模块、组件、子例程、对象或者适合用在计算环境中的其他单元。计算机程序可以但不是必须对应于文件系统中的文件。程序可被存储在保存其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本)、存储在专用于所关注程序的单个文件中或者存储在多个协调的文件中(例如,存储一个或多个模块、库、子程序或代码部分的文件)。计算机程序可被部署来在一个计算机或多个计算机上执行,所述多个计算机位于一个地点或分布在多个地点并由通信网络互连。
本说明书中描述的过程和逻辑流可通过一个或多个可编程处理器执行一个或多个计算机程序以通过对输入数据进行操作并生成输出而执行动作,从而来执行。过程和逻辑流也可由专用逻辑电路来执行,并且装置也可实现为专用逻辑电路,专用逻辑电路例如是现场可编程门阵列(field programmable gate array,FPGA)或专用集成电路(application specific integrated circuit,ASIC)。这种专用电路可被称为计算机处理器,即使其不是通用处理器。
用户可选择允许或不允许远程服务器识别和存储关于用户和/或关于用户操作的设备的信息。例如,用户可选择接收基于与用户的表观相关性选择的第三方内容。在一些实现方式中,设备识别符与客户端应用(例如,在客户端设备120上运行)的特定实例相关联。在一些实现方式中,可利用不包含关于用户的个人识别信息的随机化设备识别符(例如,cookie、设备序列号等等)来表示用户。例如,与用户的姓名、人口统计资料等等有关的信息可不被远程服务器使用,除非用户选择提供这种信息。从而,用户对于如何收集关于他或她的信息以及这种信息如何被远程服务器或其他内容源使用具有控制权。可与用户或者与表示用户的匿名化令牌相关联的一些信息可包括事件,诸如一个或多个查询、一个或多个点击、浏览器历史数据(例如,访问过的URL、查看过的URL的数目、URL访问持续时间等等),等等。
虽然本说明书包含许多具体实现细节,但这些细节不应被解释为对任何发明的范围或可请求保护的范围的限制,而是对特定发明的特定实现方式的具体特征的描述。本说明书中在分开的实现方式的上下文中描述的某些特征也可在单个实现方式中组合实现。相反,在单个实现方式的上下文中描述的各种特征也可分开地或者按任何适当的子组合在多个实现方式中实现。另外,虽然以上可将特征描述为按某些组合来动作,或者甚至最初权利要求是这样记载的,但来自要求保护的组合的一个或多个特征在一些情况下可被从该组合中删去,并且要求保护的组合可指向子组合或子组合的变体。
类似地,虽然操作在附图中是按特定顺序描绘的,但这不应当被理解为为了实现期望的结果要求这种操作按所示出的特定顺序或按先后顺序执行,或者要求所有示出的操作都被执行。在某些情况中,多任务和并行处理可能是有利的。另外,在以上描述的实现方式中各种系统组件的分离不应当被理解为在所有实现方式中都要求这种分离,并且应当理解所描述的程序组件和系统一般可被一起集成在单个软件产品中或被封装到多个软件产品中。
提及“或”可被解释为包含性的,从而利用“或”描述的任何术语可指示描述的术语的单个、多于一个和全部的任何一者。标签“第一”、“第二”、“第三”等等并不一定打算指示排序,而一般只是用于在相似或类似的项目或元素之间进行区分。
这样,已描述了主题的特定实现方式。其他实现方式在所附权利要求的范围内。在一些情况下,权利要求中记载的动作可按不同的顺序执行,而仍实现期望的结果。此外,附图中描绘的过程要实现期望的结果并非必然要求所示出的特定顺序或者先后顺序。在某些实现方式中,可使用多任务或并行处理。

Claims (18)

1.一种系统,包括:
客户端仿真服务器,其包括存储器、网络接口和处理器,
所述处理器被配置为:
执行客户端设备的仿真;
在所述客户端设备的仿真中执行应用直到提示点,其中所述提示点处于预定的执行时间长度处;
在所述提示点暂停所述应用的执行;
在所述存储器中存储在所述提示点暂停的处于暂停执行状态中的所述应用的表示;
经由所述网络接口从客户端设备接收提供所述应用的交互式实例的请求;
响应于所述请求,利用存储在所述存储器中的表示,从所述应用的暂停执行状态执行所述应用的恢复的实例;并且
经由所述网络接口向所述客户端设备提供来自所述应用的恢复的实例的输出。
2.如权利要求1所述的系统,所述系统还包括监视器,所述监视器被配置为:
监视多个采样实例,所述多个采样实例是由所述客户端仿真服务器提供给相应的多个不同客户端设备的,每个采样实例与初始加载状态相关联;
对于所述多个采样实例中的每一者识别从各自的初始加载状态到各自的初始用户交互的对应时间长度;并且
基于所识别的时间长度为所述提示点确定所述预定的执行时间长度。
3.如权利要求2所述的系统,包括利用所识别的时间长度的算术均值来为所述提示点确定所述预定的执行时间长度。
4.如权利要求2所述的系统,包括利用所识别的时间长度的截尾均值来为所述提示点确定所述预定的执行时间长度。
5.如权利要求1所述的系统,其中,所述提示点是所述应用呈现用户交互选项的呈现阶段。
6.如权利要求5所述的系统,所述系统还包括被配置为检测所述用户交互选项的呈现的仿真监视器。
7.如权利要求6所述的系统,其中,所述仿真监视器被配置为利用光学字符识别来检测所述用户交互选项的呈现。
8.如权利要求1所述的系统,所述客户端仿真服务器的处理器被配置为通过在所述提示点暂停所述客户端设备的仿真的执行来在所述提示点暂停所述应用的执行。
9.如权利要求1所述的系统,所述客户端仿真服务器的处理器被配置为:
经由所述网络接口从所述客户端设备接收客户端设备特性描述符;
为具有符合所述客户端设备特性描述符的特性的一般化客户端设备选择客户端仿真;并且
利用用于所述一般化客户端设备的客户端仿真来执行所述客户端设备的仿真。
10.一种方法,包括:
由包括处理器的客户端仿真系统执行客户端设备的仿真;
由所述客户端仿真系统在所述客户端设备的仿真中执行应用直到提示点,其中所述提示点处于预定的执行时间长度处;
在所述提示点暂停所述应用的执行;
在与所述客户端仿真系统相关联的存储器中存储在所述提示点暂停的处于暂停执行状态中的所述应用的表示;
经由网络从客户端设备接收提供所述应用的交互式实例的请求;
由所述客户端仿真系统响应于所述请求,利用存储在所述存储器中的表示,从所述应用的暂停执行状态执行所述应用的恢复的实例;并且
经由所述网络向所述客户端设备提供来自所述应用的恢复的实例的输出。
11.如权利要求10所述的方法,所述方法还包括通过以下步骤来确定所述预定的执行时间长度:
提供多个采样实例给相应的多个不同客户端设备,每个采样实例与初始加载状态相关联;
对于所述多个采样实例中的每一者识别从各自的初始加载状态到各自的初始用户交互的对应时间长度;并且
基于所识别的时间长度为所述提示点确定所述预定的执行时间长度。
12.如权利要求11所述的方法,包括利用所识别的时间长度的算术均值来为所述提示点确定所述预定的执行时间长度。
13.如权利要求11所述的方法,包括利用所识别的时间长度的截尾均值来为所述提示点确定所述预定的执行时间长度。
14.如权利要求10所述的方法,其中,所述提示点是所述应用呈现用户交互选项的呈现阶段。
15.如权利要求14所述的方法,包括检测所述用户交互选项的呈现。
16.如权利要求14所述的方法,包括利用光学字符识别来检测所述用户交互选项的呈现。
17.如权利要求10所述的方法,包括:
经由所述网络从所述客户端设备接收客户端设备特性描述符;
为具有符合接收到的客户端设备特性描述符的特性的一般化客户端设备选择客户端仿真;并且
利用用于所述一般化客户端设备的客户端仿真来执行所述客户端设备的仿真。
18.一种存储指令的非暂态计算机可读介质,所述指令使得执行所述指令的处理器使计算机执行根据权利要求10至17中的任何一项所述的方法。
CN201780003445.7A 2016-11-14 2017-11-13 用于提供交互式流传输媒体的系统和方法 Pending CN108337909A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
USPCT/US2016/061924 2016-11-14
PCT/US2016/061924 WO2018089033A1 (en) 2016-11-14 2016-11-14 Systems and methods for providing interactive streaming media
PCT/US2017/061399 WO2018089940A1 (en) 2016-11-14 2017-11-13 Systems and methods for providing interactive streaming media

Publications (1)

Publication Number Publication Date
CN108337909A true CN108337909A (zh) 2018-07-27

Family

ID=57482507

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780003445.7A Pending CN108337909A (zh) 2016-11-14 2017-11-13 用于提供交互式流传输媒体的系统和方法

Country Status (5)

Country Link
US (2) US20190079787A1 (zh)
EP (1) EP3345091B1 (zh)
KR (1) KR102040786B1 (zh)
CN (1) CN108337909A (zh)
WO (2) WO2018089033A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112867989A (zh) * 2018-09-04 2021-05-28 阿韦瓦软件有限责任公司 基于流的组成以及监视服务器系统和方法
CN113301393A (zh) * 2021-04-22 2021-08-24 深圳市鹰硕教育服务有限公司 流媒体数据的播放与互动方法、装置、系统及存储介质
CN113710340A (zh) * 2018-12-14 2021-11-26 索尼互动娱乐有限责任公司 流媒体和市场分类账中的互动对象
CN114115519A (zh) * 2020-08-28 2022-03-01 明日基金知识产权有限公司 用于在虚拟环境中递送应用程序的系统和方法
CN114836904A (zh) * 2022-04-26 2022-08-02 大连华阳新材料科技股份有限公司 自动调整成网两边均匀性系统及其调整方法

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11165842B2 (en) * 2013-10-25 2021-11-02 Louis Gurtowski Selective capture with rapid sharing of user or mixed reality actions and states using interactive virtual streaming
GB2559123A (en) * 2017-01-24 2018-08-01 Sony Interactive Entertainment Inc Interaction apparatus and method
US11310540B2 (en) * 2017-11-10 2022-04-19 Qualcomm Incorporated Interfaces between dash aware application and dash client for service interactivity support
CN111433743B (zh) * 2017-12-12 2022-05-20 荣耀终端有限公司 一种app远程控制方法及相关设备
US10708382B2 (en) * 2018-11-08 2020-07-07 Citrix Systems, Inc. Systems and methods for latency masking via prefix caching
US11947783B2 (en) * 2021-01-25 2024-04-02 Google Llc Undoing application operation(s) via user interaction(s) with an automated assistant
EP4068093A1 (en) * 2021-03-31 2022-10-05 Vodafone Group Services Limited Remote computing resource execution
US11709691B2 (en) * 2021-09-01 2023-07-25 Sap Se Software user assistance through image processing
US20230114651A1 (en) * 2021-10-07 2023-04-13 Demostack, Inc. Dynamic recorder for demonstrations of web-based software applications
US12019699B2 (en) * 2021-10-07 2024-06-25 Demostack, Inc. Visual recorder for demonstrations of web-based software applications
US11868788B2 (en) * 2021-11-04 2024-01-09 Here Global B.V. Method and apparatus for application plug-in management
CN114077375B (zh) * 2021-11-25 2023-05-05 北京字跳网络技术有限公司 目标对象的展示方法及装置、电子设备及存储介质
US20230281122A1 (en) * 2022-03-04 2023-09-07 Western Digital Technologies, Inc. Data Storage Device and Method for Host-Determined Proactive Block Clearance
US11909807B2 (en) 2022-05-18 2024-02-20 Demostack, Inc. Local recording for demonstration of web-based software applications
KR102653698B1 (ko) * 2023-10-25 2024-04-02 스마일샤크 주식회사 점자패드와 어플리케이션의 연동 범용성 확보 시스템

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101087404A (zh) * 2007-06-21 2007-12-12 腾讯科技(深圳)有限公司 一种在网络电视直播节目中插播广告的方法及系统
CN101730888A (zh) * 2007-06-08 2010-06-09 丘里奥控股公司 利用广告内容的后期捆绑的多客户端流媒体工具
CN101821726A (zh) * 2007-10-11 2010-09-01 索尼公司 管理与流传输媒体内容相对应的广告内容的系统和方法
US20100325278A1 (en) * 2009-06-22 2010-12-23 Red Hat Israel, Ltd. Methods for automatically launching a virtual machine associated with a client during startup
CN102968737A (zh) * 2012-11-27 2013-03-13 辜进荣 基于游戏的广告推送方法
CN104038473A (zh) * 2014-04-30 2014-09-10 百度在线网络技术(北京)有限公司 用于插播音频广告的方法、装置、设备和系统
US20160055017A1 (en) * 2014-08-23 2016-02-25 Vmware, Inc. Application publishing using memory state sharing

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0426736D0 (en) * 2004-12-06 2005-01-12 Omnifone Ltd MyFone
US20080318559A1 (en) * 2007-06-22 2008-12-25 Porco Gino M System and method of mobile device advertising
US20120284632A1 (en) 2011-05-06 2012-11-08 Cisco Technology, Inc. Integrated Rendering of Streaming Media in Virtualized Desktop Environment
US20120291056A1 (en) * 2011-05-11 2012-11-15 CSC Holdings, LLC Action enabled automatic content preview system and method
US10248184B2 (en) * 2011-11-09 2019-04-02 Qualcomm Incorporated Sensor API framework for cloud based applications
US9971616B2 (en) * 2013-02-26 2018-05-15 Red Hat Israel, Ltd. Virtual machine suspension
US20140366024A1 (en) * 2013-06-07 2014-12-11 American Megatrends, Inc. Methods, Devices and Computer Readable Storage Devices for Emulating a Light Sensor in a Guest Operating System from a Host Operating System
US9547607B2 (en) * 2013-06-27 2017-01-17 Microsoft Technology Licensing, Llc Brokering application access for peripheral devices
US9687745B2 (en) * 2013-08-22 2017-06-27 Riot Games, Inc. Systems and methods that enable customizable teams for multi-player online games
US9710126B2 (en) * 2013-10-17 2017-07-18 Blackberry Limited Method and apparatus for displaying a preview of an application to a user
US10747950B2 (en) * 2014-01-30 2020-08-18 Microsoft Technology Licensing, Llc Automatic insights for spreadsheets
US10693946B2 (en) * 2014-09-16 2020-06-23 Amazon Technologies, Inc. Instance backed mobile devices
US20160182954A1 (en) * 2014-12-18 2016-06-23 Rovi Guides, Inc. Methods and systems for generating a notification
US20160266915A1 (en) * 2015-03-10 2016-09-15 Giovanni Morelli Systems and Methods for Providing an Emulation of a Computer Product
WO2017011336A1 (en) * 2015-07-10 2017-01-19 E.&J. Gallo Winery System and method for dispensing a beverage
US11040281B2 (en) * 2015-09-30 2021-06-22 Sony Interactive Entertainment LLC Multi-user demo streaming service for cloud gaming
WO2017136742A1 (en) * 2016-02-04 2017-08-10 Mobile Tappestry, LLC Hydrid application system to utilize native device features of a mobile device
US20170317948A1 (en) * 2016-04-28 2017-11-02 Microsoft Technology Licensing, Llc Hosting apps with native capabilities

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101730888A (zh) * 2007-06-08 2010-06-09 丘里奥控股公司 利用广告内容的后期捆绑的多客户端流媒体工具
CN101087404A (zh) * 2007-06-21 2007-12-12 腾讯科技(深圳)有限公司 一种在网络电视直播节目中插播广告的方法及系统
CN101821726A (zh) * 2007-10-11 2010-09-01 索尼公司 管理与流传输媒体内容相对应的广告内容的系统和方法
US20100325278A1 (en) * 2009-06-22 2010-12-23 Red Hat Israel, Ltd. Methods for automatically launching a virtual machine associated with a client during startup
CN102968737A (zh) * 2012-11-27 2013-03-13 辜进荣 基于游戏的广告推送方法
CN104038473A (zh) * 2014-04-30 2014-09-10 百度在线网络技术(北京)有限公司 用于插播音频广告的方法、装置、设备和系统
US20160055017A1 (en) * 2014-08-23 2016-02-25 Vmware, Inc. Application publishing using memory state sharing

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
方迎丰,余思慧,简予繁编著: "《视频广告概论》", 30 September 2013, 武汉理工大学出版社 *
汉龙主编: "《局域网组建与维护快学教程》", 30 November 2004, 上海科学普及出版社 *
赵光辉,荀关玉,刘绍吉编著: "《网络营销原理与实务》", 31 December 2015, 北京交通大学出版社 *
魏超,陈璐颖,白雪 著: "《微博与微信》", 28 February 2015, 企鹅管理出版社 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112867989A (zh) * 2018-09-04 2021-05-28 阿韦瓦软件有限责任公司 基于流的组成以及监视服务器系统和方法
CN113710340A (zh) * 2018-12-14 2021-11-26 索尼互动娱乐有限责任公司 流媒体和市场分类账中的互动对象
CN113710340B (zh) * 2018-12-14 2024-03-15 索尼互动娱乐有限责任公司 流媒体和市场分类账中的互动对象
CN114115519A (zh) * 2020-08-28 2022-03-01 明日基金知识产权有限公司 用于在虚拟环境中递送应用程序的系统和方法
CN114115519B (zh) * 2020-08-28 2024-05-10 明日基金知识产权有限公司 用于在虚拟环境中递送应用程序的系统和方法
CN113301393A (zh) * 2021-04-22 2021-08-24 深圳市鹰硕教育服务有限公司 流媒体数据的播放与互动方法、装置、系统及存储介质
CN114836904A (zh) * 2022-04-26 2022-08-02 大连华阳新材料科技股份有限公司 自动调整成网两边均匀性系统及其调整方法
CN114836904B (zh) * 2022-04-26 2023-11-03 大连华阳新材料科技股份有限公司 自动调整成网两边均匀性系统及其调整方法

Also Published As

Publication number Publication date
EP3345091B1 (en) 2020-08-19
EP3345091A1 (en) 2018-07-11
KR102040786B1 (ko) 2019-11-06
US11068290B2 (en) 2021-07-20
US20200218554A1 (en) 2020-07-09
WO2018089940A1 (en) 2018-05-17
WO2018089033A1 (en) 2018-05-17
KR20180066897A (ko) 2018-06-19
US20190079787A1 (en) 2019-03-14

Similar Documents

Publication Publication Date Title
CN108337909A (zh) 用于提供交互式流传输媒体的系统和方法
US11064267B2 (en) Systems and methods for providing interactive streaming media
US11763343B2 (en) Systems and methods for validating interaction with third-party interactive media
US8997081B1 (en) Analytics for mobile applications
US20170243238A1 (en) Synthetic user profiles
CN103927253B (zh) 多浏览器兼容性测试方法及系统
US9218609B2 (en) Platform for providing customizable brand experiences
US8911294B2 (en) Browser based heterogenous technology ecosystem
CN108174302B (zh) 一种直播应用中活动功能玩法的更新方法及装置
CN106605218A (zh) 收集和处理与基于网络的内容的交互过程中的计算机用户数据的方法
CN106576114A (zh) 基于策略的资源管理和分配系统
WO2022057722A1 (zh) 程序试用方法、系统、装置、设备及介质
US20140310335A1 (en) Platform for creating context aware interactive experiences over a network
CN108140196A (zh) 使用客户端生成的点击标识符减少内容项交互的时延的系统和方法
CN109314802A (zh) 基于游戏内位置的游戏进行伴随应用
CN113710336B (zh) 服务器负载预测和高级性能度量
CN107402944A (zh) 用于内容项转化的归因模型
KR20200125890A (ko) 감시 하에서 인공신경망 훈련 모델을 제공하는 클라우드 기반 거래 시스템 및 그 방법
CN105468402B (zh) 用于提供启动应用的时段的方法和装置
CN115643420A (zh) 信息处理方法、装置、电子设备及存储介质
CN114092166A (zh) 信息推荐处理方法、装置、设备及计算机可读存储介质
KR20240069171A (ko) 게임 어플리케이션에서 광고를 제공하는 장치 및 방법
CN109074360A (zh) 使用多个线程减少下载电子资源的延迟
Hemström et al. A Comparison of WebVR and Native VR: Impacts on Performance and User Experience
Janne Web Design and CSS Animation

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