具体实施方式
提出了接近度网络体系结构,该接近度网络体系结构使设备能够检测与其接近的其他设备并且自动地与其他设备交互以共享用户体验。在一个示例实现中,用于该体验的数据和代码被存储在云中,从而使用户能够从多个以及不同类型的设备参与该体验。
如果计算设备确实发现与其接近的其他设备,则该计算设备可自动地获得其所需的适当的软件应用。该软件应用与其他参与体验的设备同步。在一些实施例中,即使在范围内当前没有其他设备参与体验,该体验也可以在一个位置被发现。例如,纸海报的提供者要为海报(poster)附近的用户创建体验。海报仅仅是纸。但云知道海报的位置,并在它附近的任何人可以发现的位置创建了体验。
软件应用的开发者可以编程软件应用来以无限多的方式与包括多用户环境的接近度网络进行交互。此外,许多不同类型的应用可以使用接近度网络体系结构来提供许多不同类型的体验。接近度网络体系结构提供了在许多不同类型的设备上可用的体验,从而使得用户不需要总使用一种特定类型的设备,而且应用可以利用云计算的益处。
使用接近度网络体系结构的三个示例包括分布式体验,协作式体验,和主-从体验。下面将更详细地解释这三个示例中的每一个。也可使用其他类型的应用/体验。
分布式体验是其中正在执行的任务(例如,游戏、信息服务、生产力应用等)使其工作跨多个计算设备分布的体验。考虑一种扑克游戏,在这种扑克游戏中有些牌被发出来给大家看,有些牌是用户私有的。可以以跨多个设备分布的方式玩该扑克游戏。客厅的主要电视机可用于显示出发牌者和所有面朝上的牌。每一个用户可以另外地用他们的移动蜂窝电话玩牌。该移动蜂窝电话会描绘特定用户的面朝下的牌。
协作式体验是其中两个计算设备协作以执行任务的体验。考虑跨两个计算设备分布的照片编辑应用,其中每一个应用有自己的屏幕。第一设备将用于进行照片编辑。第二计算设备将提供对正在操作的照片的预览。随着在第一设备上做出的编辑,在第二计算设备的屏幕中描绘结果。
主从体验涉及一个作为主设备的计算设备,以及一个或多个出于软件应用目的作为主设备的从设备的计算设备。例如,从设备可用作主计算设备的输入设备(例如,鼠标、指针,等等)。
在另一种替换方案中,无论人/设备什么时候加入体验,体验都会派生唯一的副本。例如,考虑想要虚拟游览的博物馆。在博物馆的附近,让有移动计算设备的人开始在他们的设备上体验。但是,他们的设备在其自己的体验副本中,与其他也可以体验该游览的人断开连接。因此,那个人的设备使用了接近度网络,但是没有以协作的方式共享体验。
在涉及多个计算设备的许多体验中,一个目标就是让用户能够跨许多不同类型的设备访问内容(服务、应用、数据)。一个挑战是各设备如何加入这一多设备体验。为了解决这个问题,本文描述了接近度网络体系结构。
图1是提供了对接近度网络的一个实施例的高层描述的流程图。总之,接近度网络体系结构允许设备自动发现与该设备接近的它可以参与的所有体验。如果设备选择加入体验,则它将得到适当的应用(或其他类型的软件)以参与该体验。该二进制应用将在共享的上下文中与该体验中的所有设备同步。这使得用户能够以与其他用户同步的方式,跨许多不同的设备从云或其他地方体验内容。
图1的步骤10包括计算设备发现与该设备接近的一个或多个其他设备。这是可由计算设备自动执行的过程(例如,无需人工干预)。在其他实施例中,人可以手动地管理该发现过程。在步骤12,计算设备将确定那些被发现的设备中哪些是可被加入的体验中的一部分。步骤12可以被自动地(例如,无需人工干预)或手动地执行。在一些实施例中,计算设备将标识那些用户可通过扬声器或显示器可用的体验。步骤10和12是自动发现接近的一个或多个体验的一个示例。在步骤14,标识了可被加入的一个体验。该标识可以是基于一组规则而自动的,或者计算设备的用户可以手动地标识所报告的体验(或接近的设备)中的一个以加入。在一些实施例中,设备12将仅标识一个体验,并且在该情况下系统将自动地加入该体验或者自动地选择不加入该体验。另选地,可以给予用户加入或不加入体验的选项。
在加入新体验时,计算设备可能需要软件以参与。如上所述,许多体验需要应用软件以参与分布式多用户游戏、分布式照片编辑会话,等等。在许多情况下,软件已经被载入到计算设备上并且甚至可能是计算设备本地的。在一些实施例中,软件可能还没有被载入到计算设备上并且将需要获得软件。因此,在步骤16,计算设备自动地确定是否需要额外的代码。如果需要,则在步骤18计算设备将获得该额外的代码。所获得的代码可以是对象代码、用于解释器的其他类型的二进制可执行、源代码、或者其他类型的代码。在步骤20,使用/运行额外的代码(或者已经存储在计算设备上的代码),计算设备将在步骤14加入所选择的体验并且参与该体验。如上所述,该体验可以是各类型应用的任一种。用于建立接近度网络的技术不限于任何类型的应用或任何类型的体验。
图2是描述了用于实现接近度网络的体系结构的一个实施例的框图。其他体系结构也可用于实现接近度网络。图2示出云100,它可以是因特网、广域网、其他类型的网络、或者其他通信手段。图2还示出了其他设备。这些设备将通过云100互相通信。在一个实施例中,可使用有线技术来执行所有通信。在其他实施例中,可使用无线技术或者有线和无线技术的结合来执行通信。从一节点到另一节点的通信的准确形式不限于为了本文所描述的接近度网络的目的。
图2示出计算设备102、104和106。这些计算设备可以是任何类型的移动或非移动计算设备,包括(但不限于)台式计算机、笔记本计算机、蜂窝电话、电视机/机顶盒、视频游戏控制台、汽车、平板计算机、智能设备,等等。可用于接近度网络的计算设备不限于任何特定类型的计算设备。计算设备102、104和106中的每一个都与云100通信,以使得它们能够与众多不同实体(在一些实施例中,包括互相)通信。在一个示例中,计算设备102、104和106中的一个将接近一个或多个其他计算设备。在这一情况发生时,可执行图1的过程。注意到尽管图2示出三个计算设备(102、104和106),但是本文所述的技术可用于少于三个计算设备或多于三个计算设备的情况。不需要特定数目的计算设备。
图2还示出区域网络服务器108、体验服务器110和应用服务器112,这三个服务器都与云100通信。区域网络服务器108可以是用于实现帮助计算设备(例如,102、104和106)连接至或加入体验的服务的一个或多个计算机。区域网络服务器108的主要职责是帮助确定特定计算设备附近的所有设备、体验和朋友,以及提供对一个体验的选择以由计算设备加入。
体验服务器110可以是实现用于接近度网络的服务的一个或多个计算设备。体验服务器110担当存储了与每个活动的体验有关的全部或大部分信息的交换所。体验服务器可使用数据库或其他类型的数据存储来存储与体验有关的数据。例如,图2示出记录120,其中每个记录标识特定体验的数据。数据存储不需要有专用的格式。每个记录包括体验的标识(例如,全局唯一ID)、体验的访问控制列表、当前参与体验的设备以及存储与体验有关的状态信息的共享存储器。该共享存储器可向应用表示为跨HTTP访问的共享的、同步的、面向对象的存储器(例如,该共享存储器被表示为可使用HTTP访问和同步的共享对象集)。访问控制列表可包括指示什么类型的设备可加入体验、什么标识的设备可加入体验、什么用户身份可加入体验、以及其他访问准则的规则。为每一体验存储的设备信息可以是当前参与体验的每一设备的唯一标识的列表。在其他实施例中,体验服务器110还可存储与曾经加入体验但是现在不再涉及的设备有关的信息。共享存储器可存储与体验有关的状态信息。状态信息可包括与每一玩家有关的数据、特定变量的数据值、分数、计时信息、环境信息以及用于标识体验的当前状态的其他信息。在体验中没有更多的设备/用户时,该体验的共享存储器可被保存到云存储器132,以使得用户在稍后的时间返回的情况下可继续该体验。如上所述,体验可以是分布式游戏、使用生产力工具、播放音频/视频内容、商务,等等。用于实现接近度网络的技术不限于任何类型的体验。
可用一个或多个计算设备实现的应用服务器112可用作软件的储存库,该储存库允许每个不同类型的计算设备参与体验。如上所述,一些实施例构想了用户可跨众多不同类型的设备来访问体验。因此,需要为不同类型的设备存储不同类型的软件模块。例如,一个模块可用于蜂窝电话,另一个模块可用于机顶盒,以及第三模块可用于膝上型计算机。此外,在一些实施例中,可能有没有对应的软件模块的计算设备。在那些情况下,应用服务器112可以为任何类型的计算设备提供使用浏览器可访问的web应用。应用服务器112将具有数据存储、应用存储130,以用于存储可用于不同体验的所有各软件模块/应用。在一个实施例中,应用服务器112告诉计算设备从哪里获得用于特定体验的应用。例如,应用服务器112可向请求的计算设备发送该计算设备从哪里可获得它需要的应用的位置的URL。
在一些实施例中,创建用于计算设备102、104和106的应用的软件开发者将开发包括了与区域网络服务器108、体验服务器110以及应用存储服务器112交互所需的所有逻辑的应用。在其他实施例中,区域网络服务器108、体验服务器110以及应用服务器112的提供者将提供以软件开发工具包(SDK)的形式的库。用于计算设备102、104和106的应用的开发者将能够通过使用作为SDK的一部分的应用程序接口(API)来访问各个库。为计算设备102、104或106开发的应用将能够调用某些函数以利用接近度网络。例如,API可具有下列函数调用:发现、加入、更新、暂停、切换、以及释放。也可使用其他函数。应用可使用发现函数以发现与其接近的所有设备和体验。在接收到发现命令后,计算设备上的库将访问区域网络服务器108以标识附近的设备以及与那些附近的设备相关联的体验。在接收到要加入的一组体验选择后,加入函数可用于加入其中一个体验。更新命令可用于同步体验服务器110的相应计算设备之间的状态变量。暂停函数可用于临时地暂停特定计算设备的任务/体验。切换函数可用于切换体验。释放函数可用于离开体验。
图3是描述了图2的各组件的操作的一个实施例的流程图。在步骤200,计算设备102、104或106中的一个将进入环境。在步骤202,该计算设备将获得位置信息。这一位置信息用于确定哪些其他设备与其接近。有许多不同类型的可以用本文所述的技术使用的接近度信息。在一个示例中,计算设备将包括用于接收GPS位置信息的GPS接收器。该计算设备将使用该GPS信息以确定其位置。在另一实施例中,可以以与使用GPS技术相同的方式来使用伪卫星技术。在另一实施例中,可使用蓝牙技术。例如,计算设备可从另一设备接收蓝牙信号,并且从而标识与其接近的设备以提供相对位置信息。在另一实施例中,计算设备可搜索区域内的所有WiFi网络并且记录那些WiFI网络中每一个的信号强度。排序的信号强度列表提供了可包括位置信息的WiFi签名。该信息可用于确定计算设备相对于WiFi网络的路由器/接入点的位置。在另一实施例中,计算设备可对其周围环境拍照。可将这一照片与该环境的一组已知的照片匹配以便检测环境中的位置。与获取用于确定什么设备在接近度内的位置信息有关的另外的信息可在Krumm等人于2004年6月29日提交、2006年3月2日公布的序列号为10/880,051题为“使用无线信号强度的接近度检测”的美国专利申请2006/0046709以及在2006年6月30日提交、2007年8月30日公布的序列号为11,427,957题为“基于接收到的信号确定物理位置”的美国专利申请2007/0202887中找到,这两个申请的全部内容通过引用并入本申请。在步骤202中可由计算设备获得任何上述的位置信息(以及其他类型的位置信息)。
在步骤204,计算设备102将发送其位置信息以及计算设备102的身份信息至区域网络服务器108。对于这一示例的剩余部分,我们将假设计算设备102在步骤200进入环境并且执行本文所述的图3的各步骤。在步骤204提供的身份信息包括计算设备102的唯一标识以及计算设备102的用户的身份信息(例如,用户名、密码、真实姓名、地址,等等)。例如,用户可以已经用工作简档或个人简档登录。游戏控制台的用户可以有游戏简档。其他简档包括社交联网、即时消息收发、聊天、电子邮件等。作为步骤204的一部分,计算设备将发送身份信息或具有位置信息的简档信息的子集至区域网络服务器108.
在步骤206,区域网络服务器标识与计算设备102接近的其他计算设备。在一个实施例中,作为步骤204的一部分,计算设备愿意向区域网络服务器108发送其三维空间的位置。在该实施例中,区域网络服务器108将查找位于该三维位置的特定半径范围内的其他计算设备。在其他实施例中,计算设备102将发送相对位置信息(例如,蓝牙信息、WiFi信号强度,等等)。区域网络服务器108将接收到该信息并且确定哪些设备位于计算设备102的接近度内。在步骤208,区域网络服务器将向体验服务器110发送对位于计算设备102的接近度内的体验的请求。从区域网络服务器108到体验服务器110的请求将包括与计算设备102接近的所有设备的标识。因此,该请求将要求由区域网络服务器108标识的任何设备正在参与的所有体验。在步骤210,体验服务器110将搜索各记录120以便找出所标识的设备正在参与的所有体验。在步骤212,体验服务器110将向区域网络服务器108发送在步骤210找出的所有体验的标识。此外,体验服务器110将标识体验中涉及的所有身份、体验的访问列表信息、参与体验的设备以及共享存储器的一个或多个URL。
在步骤214,区域网络服务器108将确定从体验服务器110向它报告的哪些体验可由计算设备102访问。例如,区域网络服务器108将每一体验的访问准则与计算设备102的身份信息以及其他信息比较,以确定哪些体验的访问控制列表被满足。区域网络服务器108将标识计算设备102被允许加入的那些体验。在一些实施例中,体验服务器110将确定计算设备102被允许加入哪些体验。
在步骤216,区域网络服务器108将确定由体验服务器110报告的哪些身份是正在操作计算设备102的用户的朋友。在步骤218,区域网络服务器108将向计算设备102发送与其接近的所有体验的一个或多个标识、参与该体验并且同样与计算设备102接近的设备,以及与计算设备102接近的所有朋友。在步骤220,计算设备102将选择从区域网络服务器108向它报告的各体验中的一个。在一个实施例中,在步骤218接收到的所有体验将由计算设备102通过显示器或扬声器向用户报告。用户从而可以手动地选择加入哪些体验。在另一实施例中,计算设备102将包括用于自动选择体验的一组准则或规则。该准则可基于用户简档或其他数据。在任一情况下,在步骤220选择各体验中的一个。在步骤222,计算设备102将确定是否需要任何额外的代码。在许多情况下,体验涉及在计算设备102上运行将与该计算设备上的其他应用通信、协作或者以其他方式单独工作的应用。如果该应用代码已经存储在计算设备102上,则不需要获得新的代码。但是,如果该应用的代码还没有存储在计算设备102上,则计算设备102将需要在步骤224获得额外的代码。在步骤226,在获得额外的代码之后,如果需要,计算设备102将加入所选择的体验并且参与该体验。例如,计算设备可以运行它获得的代码以参与分布式多用户游戏、多设备生产力任务,等等。
一个实施例还可使用分层的位置检测。GPS、蜂窝三角测量、或WiFi查找被用来确定设备的大概位置。这使得系统以小至几米的范围知道计算设备在哪里。附近可以有要求计算设备接近特定物理对象的体验。例如,蓝牙技术可以被嵌入到高级数字海报中。区域网络服务器使得海报和计算设备互相知道对方。它们中的一个用蓝牙(或其他技术)扫描另一个。一旦它们使用蓝牙(或其他技术)“看见”对方,则体验变为可加入的。另一示例是可使用沿着游览隐藏在各感兴趣点的蓝牙接收器的虚拟游览体验。随着计算设备接近游览的各个点,正确的点的编程自动地播放。
标识朋友的概念可用于众多体验。例如,第一个人在一个体验中并且想要邀请附近的朋友加入(例如,开始移动电话上的游戏并且想要邀请桌子对面的朋友一起玩)。另一示例是一个人创建仅有这个人的朋友可加入的体验(例如,游乐场上的小孩在她电话上开始任何附近的朋友可发现和加入的多玩家游戏)。她的朋友加入和离开。新加入的朋友可以在她没有邀请他们(一个接着一个)的情况下加入。
图4是描述用于获得额外代码的过程的一个实施例的流程图。即,图4的过程是图3的步骤224的一个示例实现。在图4的步骤250,计算设备102向应用服务器112发送对代码的请求。该请求将指示计算设备102的设备类型以及计算设备想要加入的体验。在步骤252,应用服务器112将为适合于该特定设备类型的代码而搜索其数据存储130。如果找出该特定设备类型的代码以及体验(步骤254),则在步骤256应用存储服务器112将该代码传输至计算设备102。作为响应,计算设备102将安装接收到的代码。在步骤254,如果没有找出适合于设备类型的代码以及应用,则应用存储服务器112将获得执行相同功能的web应用(由应用存储服务器112或其他地方服务的)的URL。以这一方式,浏览器或其他装置可用来访问web服务以使得用户仍能够通过由web服务执行所需任务来参与体验。在步骤260,应用存储服务器112将发送web应用的URL至计算设备102。在一个替换方案中,应用存储服务器112的功能可由区域网络服务器108或体验服务器110执行。在另一实施例中,计算设备可要求用户通过CD-ROM、因特网下载等手动地获得代码。
图5是描述用于加入和参与体验的过程的一个实施例的流程图。即,图5的过程是图3的步骤226的一个示例实现。在步骤280,计算设备102将运行应用的可执行文件。该应用将使得计算设备102能够参与体验。在步骤282,计算设备102上运行的应用将使用从区域网络服务器108接收到的URL向体验服务器110请求状态信息。在步骤284,计算设备102上运行的应用将从体验服务器110接收状态信息。在步骤286,计算设备102上运行的应用将基于接收到的状态信息更新其状态。在步骤288,更新的应用将在计算设备102上运行。步骤288包括与计算设备102以及(可选地)其他计算设备的用户交互。随着体验/应用的状态改变,计算设备102上运行的应用将通过使用HTTP访问共享存储器向体验服务器110更新该状态信息以及从体验服务器110接收另外的更新。在运行期间,应用可与接近计算设备102的计算设备上的其他应用交互(可选)。
图2的体系结构是其中一组服务器(例如,区域网络服务器108、体验服务器110和应用存储服务器112)管理一个或多个体验的中央模型。图6是描绘了基于对等模型的接近度网络的另一实施例的另一体系结构的框图。在这一体系结构中,一个本地设备将发现附近的设备并且管理接近度网络。管理的设备将有传感器API以在它和接近的其他设备之间共享传感器数据。管理的设备可以指导其他设备输出光、噪音或其他信号以帮助检测位置和/或方向。管理员还可以指令其他设备在哪里以及如何定位它们自己。以这一方式,可基于设备彼此有多接近以及它们的方向来缩放或者以其他方式改变体验。为了实现这一点,管理设备将需要找出其他设备的属性。彼此互相接近的设备之间的通信可以是直接的或者通过云。在一组实施例中,所有内容和数据可以驻留在本地。在另一实施例中,所有或部分内容可以通过云访问。在这一实施例的一些实现中,主设备担当体验服务器。
图6示出云100以及能够通过云100通信的一组计算设备302、304和306。尽管图6示出了三个计算设备,但是可以使用多于或者少于三个计算设备。这些计算设备之一302被指定为主计算设备。图6示出通过云或者直接通过有线或无线通信装置互相通信的主计算设备、计算设备304和计算设备306。如上所述,用作主计算设备302、计算设备304和计算设备306之间的共享体验的一部分的部分或全部内容可通过在云内容提供者308处存储内容经由云来访问。在一个实施例中,云内容提供者308包括提供web应用服务或存储服务的一个或多个服务器。例如,云内容提供者308可包括载入到计算设备的应用、那些应用使用的数据、介质或其他内容。计算设备302、304和306可以是台式计算机、膝上型计算机、蜂窝电话、电视机/机顶盒、视频游戏控制台、汽车、智能设备,等等。在一个实施例中,各计算设备将包括用于感测与它们周围环境有关的信息的一个或多个传感器。传感器的示例包括图像传感器、深度照相机、话筒、触觉传感器、射频波传感器(例如,蓝牙接收器、WiFi接收器,等等)、以及已知的其他类型的传感器。
图7提供了主计算设备的一个示例。在这一示例中,主计算设备包括连接至电视机或监视器404的视频游戏控制台402。照相机系统406以及蓝牙传感器408、410、412和414被安装在电视机或监视器404上并且与视频游戏控制台402连接。照相机系统406将包括图像传感器以及深度照相机。与深度照相机有关的更多信息可以在Leyvand等人于2010年1月29日提出的题为基于视觉的身份跟踪的美国专利申请12/696,282中找到,此处全部内容通过引用并入本申请。在一些实施例中,除了图7所描绘的传感器之外的另外的传感器也可被加入游戏控制台402。在图7所描绘的实施例中,除了主计算设备之外的各计算设备将发送蓝牙信号。蓝牙接收器408、410、412和414将从任何接近的设备接收蓝牙信号。由于这四个传感器是分布的,因此它们接收到的信号将略有不同。这些不同的信号可用于三角测量(基于差异)以确定发射蓝牙信号的计算设备的位置。所确定的位置将是相对于游戏控制台402的。在其他实施例中,主计算设备302可使用WiFi信号强度以确定这一接近的设备。在其他实施例中,设备可使用基于GPS的位置计算以确定接近的设备。在另一实施例中,设备可以输出可由主计算设备使用的线性调频脉冲(RF、音频等)以标识与其接近的计算设备。图7仅是主计算设备302的一个示例,并且还可以用本文所述的技术使用其他实施例。
图8是描述了操作图6的各组件以实现本文所述的接近度网络的过程的一个实施例的流程图。在图8的步骤502,其他计算设备中的一个(例如,计算设备304、306等)将进入与主计算设备302相同的环境。在步骤504,主计算设备302接收与其他计算设备有关的传感器数据。例如,主计算设备302可以从蓝牙接收器、WiFi接收器、图像照相机、深度照相机、话筒等接收信息。传感器数据将警告主计算设备302存在其他计算机设备。在一些替代方案中,计算设备将跨以太网、WiFi或其他通信装置接收基本的发现消息。例如,无线游戏控制器可以向游戏控制台唤起它的存在。在步骤506,响应于从传感器数据被警告存在其他计算设备,主计算设备302将建立与其他计算设备的通信。计算设备之间的通信可以通过云100、通过云内容提供者308、和/或直接通过本领域已知的有线或无线通信装置。
在一个实施例中,主计算设备302将包括传感器API,它允许其他计算设备发送传感器数据至主计算设备302以及从主计算设备302接收传感器数据。例如,如果其他计算设备包括WiFi接收器、GPS接收器、视频传感器等,则来自这些传感器的信息可通过传感器API提供给主计算设备302。此外,其他计算设备可以通过传感器API向主计算设备302指示它们的位置(例如,GPS导出的位置)。因此,在步骤508,其他计算设备将通过传感器API向主计算设备302传输现有的传感器信息(如果存在)。在步骤510,主计算设备302将观察其他计算设备,并且在步骤512,主计算设备302将使用步骤510的观察来确定与其他计算设备有关的另外的位置和/或方向信息。以下讨论与步骤510和512有关的更多信息。
在步骤514,主计算设备302将向其他计算设备请求身份信息,其中主计算设备从其他计算设备接收传感器数据。这允许了主计算设备302标识计算设备的用户的朋友以及确定访问控制决策。在步骤516,其他计算设备将发送那些计算设备的用户的身份信息至主计算设备302。在步骤518,主计算设备302将确定哪一体验对其他计算设备可用。例如,主计算设备可以仅有当前正在执行的一个体验。因此,步骤518将简单地确定与主计算设备302接近的其他计算设备是否通过了该体验的访问准则。如果多个体验同时运行,则主计算设备302将确定被检测到与主计算设备302接近的计算设备是否有对任何体验的访问权限。在步骤520,主计算设备302将通知其他一个或多个计算设备任何该计算设备的用户有体验的访问权限的可用体验。
其他计算设备将选择加入的体验(如果存在选择)并且通知主计算设备302这一选择。例如,可向用户提供选择(体验之间的选择或加入单个体验的选择)并且用户可手动地选择。另选地,其他计算设备可具有用于自动选择的一组规则或准则。在步骤524,其他计算设备将确定是否需要额外的代码以加入体验。如果需要额外的代码,则在步骤526其他计算设备将获得额外的代码。在获得额外的代码之后,或者如果不需要额外的代码,在步骤528其他计算设备将加入和参与选择和体验。
在步骤526获得的代码可以通过执行图4的步骤过程来实现。在一个实施例中,其他计算设备将访问如图2中的应用存储服务器。在另一实施例中,图4的过程将用于从云内容提供者获得额外的代码。在其他实施例中,图4的过程可由从主计算设备302获得代码的其他计算设备执行。
图9是描述了主计算设备302观察其他计算设备以便使用那些观察确定另外的位置和/或方向信息的过程的一个实施例的流程图。因此,图9的过程是图8的步骤510和512的一个示例实现。在图9的步骤602,主计算设备302请求与其他计算设备的显示屏的物理属性有关的信息。例如,主计算设备将对显示的分辨率、亮度以及显示的技术感兴趣。作为步骤602的一部分,其他计算机将提供该信息。
在步骤604,主计算设备302将请求其他计算设备以在其屏幕上显示图像。主计算机将向其他计算机提供该图像。在步骤606,其他计算机将在其屏幕上显示它被请求的图像。在步骤608,主计算机将使用照相机(例如,图7的照相机系统406)感测静止的照片。在步骤610,主计算设备302将为了它请求其他计算机显示的图片而搜索照片。在一个实施例中,主计算设备302将请求其他计算设备显示非常独特的图像并且将在从照相机406接收的文件中查找该独特图像。如果找到该图像(步骤612),则主计算设备302将通过图像的大小以及在照片中找到图像的方向来推断位置和方向。
在推断位置和方向之后,或者如果在步骤612没有找到图像,则在步骤616主计算设备302将请求其他计算设备播放特定的音频流。在步骤618,其他计算设备将播放该请求的音频。在步骤620,主计算设备将感测音频。在步骤622,主计算设备将确定它感知的音频是否是它请求其他计算设备播放的音频。如果是的话,则在步骤624主计算设备302可以推断位置信息。本领域有用于基于音频信号的音量来确定对象之间距离的已知技术。在一些实施例中,音调或频率还可用于确定主计算设备和其他计算设备之间的距离。
在步骤624推断位置信息之后,或者如果在步骤622没有听到正确的声音,则在步骤626主计算设备302将请求其他计算设备发射RF信号。该RF信号可以是蓝牙信号、WiFi信号或其他类型的信号。在步骤628,其他计算设备将发射RF信号。在步骤630,主计算设备302将检测其周围的RF信号。在步骤632,主计算设备将确定它检测到的RF信号是否是它请求其他计算设备发射的RF信号。如果是的话,则主计算设备302将从检测到的RF信号推断位置信息。有用于基于接收到的RF信号的强度和幅度来确定距离的已知技术。在步骤634推断位置信息之后,或者如果没有检测到RF信号,则主计算设备302将使用推断的位置信息和方向信息来更新它已经有的位置或方向信息。
在共享经验是分布式扑克牌游戏的示例中,主计算设备302可能想要在用户的蜂窝电话显示该用户私有的牌之前知道用户蜂窝电话的方向。如果用户的蜂窝电话被定向为其他用户可以看见它(包括主计算设备302),则主计算设备302将请求用户(通过用户蜂窝电话上的消息)在主计算设备302发送用户私有的牌之前关掉和隐藏蜂窝电话的显示。
在一些实施例中,可由一定量的接近度验证来控制参与体验。例如,如果主计算设备不能验证其他计算设备在包容线区内则不允许计算设备加入体验。在一个示例实现中,包容线区是对体验有效的2维或3维空间的定义,并且可由主设备验证包容线区域内特定计算设备的存在。
图10描绘了用于实现图2和图6的任何设备的示例性计算系统710。图10的计算系统710可用于执行图1、图3-5和图8-9所描述的功能。计算机710的各组件可包括但不限于,处理单元720(可以执行本文所述的各过程的一个或多个处理器)、系统存储器730(可以存储编程该一个或多个处理器以执行本文所述的各过程的代码),以及将包括系统存储器的各系统组件与处理单元720耦合的系统总线721。系统总线721可以是几种类型的总线结构中的任何一种,包括存储器总线或存储控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。作为示例而非限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线、也称为夹层(Mezzanine)总线的外围组件互连(PCI)总线、以及PCI Express。
计算系统710通常包括各种计算机可读介质。计算机可读介质可以是可由计算系统710访问的任何可用介质,并且包括易失性和非易失性介质、可移动和不可移动介质,包括RAM、ROM、EEPROM、闪存或其他存储器技术,CD-ROM、数字多功能盘(DVD)或其他光盘存储,磁带盒、磁带、磁盘存储或其他磁存储设备,或可以用来存储所需信息并且可由计算系统710访问的任何其他介质。
系统存储器730包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)731和随机存取存储器(RAM)732。基本输入/输出系统733(BIOS)包括如在启动时帮助在计算机710内的元件之间传输信息的基本例程,它通常储存在ROM 731中。RAM 732通常包含处理单元720可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例而非限制,图10示出了操作系统734、应用程序735、其他程序模块736和程序数据737。
计算机710还可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图10示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器740,从可移动、非易失性磁盘752中读取或向其写入的磁盘驱动器351,以及从诸如CD ROM或其他光学介质等可移动、非易失性光盘756中读取或向其写入的光盘驱动器755。可以在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器741通常通过诸如接口740等不可移动存储器接口连接至系统总线721,并且磁盘驱动器751和光盘驱动器755通常由诸如接口750等可移动存储器接口连接至系统总线721。
上文讨论并在图10中示出的驱动器及其相关联的计算机存储介质为计算机710提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。例如,在图10中,硬盘驱动器741被示为存储操作系统344、应用程序745、其他程序模块746和程序数据747。注意,这些组件可以与操作系统734、应用程序735、其他程序模块736和程序数据737相同,也可以与它们不同。在此给操作系统744、应用程序745、其他程序模块746、以及程序数据747提供了不同的编号,以说明至少它们是不同的副本。用户可以通过诸如键盘762和定点设备761(通常被称为鼠标、轨迹球或触摸板)之类的输入设备向计算机中输入命令和信息。其他输入设备(未示出)可以包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、蓝牙收发机、WiFi收发机、GPS接收器等等。这些和其他输入设备通常通过耦合至系统总线的用户输入接口760连接至处理单元720,但也可以由其他接口和总线结构,诸如并行端口、游戏端口或通用串行总线(USB)来连接。监视器791或其他类型的显示设备也通过接口,诸如视频接口790,连接至系统总线721。除了监视器之外,计算机还可以包括可以通过外围接口795连接的诸如打印机796、扬声器797和传感器799之类的其他外围设备。传感器799可以是上文所述的任何传感器,包括蓝牙接收器(或收发机)、话筒、静止照相机、视频照相机、深度照相机、GPS接收器、WiFi收发机,等等。
计算机710可以使用到诸如远程计算机780之类的一个或多个远程计算机的逻辑连接在联网环境中操作。远程计算机780可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点,并且通常包括上面相对于计算设备710所描述的许多或所有元件,但在图10中只示出存储器存储设备781。图10中所示的逻辑连接包括局域网(LAN)771和广域网(WAN)773,但也可以包括其他网络。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN联网环境中使用时,计算机710通过网络接口或适配器770连接至LAN 771。当在WAN联网环境中使用时,计算机710通常包括调制解调器772或用于通过诸如因特网等WAN 773建立通信的其他装置。调制解调器772可以是内置或外置的,它可以经由用户输入接口760或其他适当的机制连接至系统总线721。在联网环境中,相对于计算机710所描述的程序模块或其部分可被存储在远程存储器存储设备中。作为示例而非限制,图10示出了远程应用程序785驻留在存储器设备781上。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其他手段。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。本发明的范围旨在由所附权利要求书来定义。