用于支持多设备协作的框架的制作方法

文档序号:6349086阅读:137来源:国知局
专利名称:用于支持多设备协作的框架的制作方法
技术领域
在一个实施例中,本公开涉及一种用于支持多设备协作的框架。计算机程序列表本专利文档公开的一部分包含了受版权保护的材料。版权所有者不反对任何人传真复制如在专利商标局的专利文件或记录中出现的本专利文档或专利公开,但在其他方面保留所有版权权利。申请人:由此提交了作为附着于此的附录A包含的计算机程序列表。
背景技术
诸如电子设备、计算系统、便携设备以及手持设备之类的不同设备具有软件游戏应用。这些设备可以通过相互联网来实现多玩家游戏体验。一种在先的游戏设备提供了内置麦克风并支持无线IEEE 802. 11 (Wi-Fi)标准, 由此允许玩家彼此进行短距离交互(10-30米,取决于条件)或者与WiFi连接服务联机。这种游戏设备允许在两个玩家之间共享游戏。但是,这种游戏设备需要在共享游戏之前或者在共享游戏信息之前在设备之间建立网络连接。

发明内容
本公开的至少某些实施例包括一个或多个应用编程接口,其中所述接口处于软件与一个或多个软件应用交互的环境中。不同的函数调用或消息经由所述软件与软件应用之间的应用编程接口传送。举例来说,应用编程接口可以用于传送支持多设备协作(例如音乐创作、文档创建、多玩家游戏)以及语音聊天操作的函数调用。本公开的至少某些实施例包括一种通过应用编程接口(API)来执行操作的方法。 该方法包括通过传送函数调用来创建会话对象,以便在例如两个设备之间建立通信。该函数调用可以规定会话对象模式、服务类型以及服务名称。该方法还可以包括通告服务类型和服务名称。该服务名称可以包括截短的名称、唯一标识以及软件应用的服务状态。服务类型和服务名称可以是在两个设备之间建立通信信道之前被通告的,由此,另一个用户可以从服务类型或服务名称中确定是否建立通信信道。
本公开的至少一些实施例包括一种通过应用编程接口(API)来进行操作,以便允许在两个设备之间进行语音聊天连同这两个设备上的其他通信或游戏服务的方法。该方法包括在第一设备与第二设备之间建立第一连接,其中所述第一连接与软件应用相关联。 该方法可以包括确定是否可以使用语音聊天软件在第一设备与第二设备之间建立第二连接,以便在第一与第二设备之间提供语音聊天服务。该方法可以包括如果第二连接失败, 则传送第一函数调用来请求将第一连接用于语音聊天。在某些实施例中,这些方法涉及的设备数量可以大于两个。此外,在这里还描述了执行一种或多种前述方法的不同设备,以及在由处理系统运行时促使该处理系统执行这些方法的机器可读媒体。此外,在这里还描述了其他的方法、设备以及机器可读媒体。


本公开是参考附图来举例描述的,在附图中图1示出的是根据本公开的一个实施例来支持移动设备中的多设备协作的框架;图2是根据本公开的实施例来支持移动设备中的多设备协作的方法的流程图;图3是根据本发明一个实施例来支持移动设备中的多设备协作的方法的流程图;图4是用于在本公开的一个实施例中通过应用编程接口(API)进行操作来建立协作应用和语音聊天的方法的流程图;图5示出的是根据本公开的一个实施例来实施协作应用和语音聊天的网络的图示;图6示出的是根据本公开的一个实施例的具有回声抑制器的处理系统;图7是根据本公开的一个实施例的设备的透视图8显示的是包含无线通信能力的无线设备的实施例;以及图9显示的是根据本公开的一个实施例的设备的另一个示例。
具体实施例方式本公开的不同实施例和方面是参考下文论述的细节来描述的,并且在附图中示出了上述不同实施例。以下描述和附图对本公开进行了例证,并且不应被解释成是对本公开进行限制。为了全面理解本公开的不同实施例,在这里描述了众多具体细节。然而为了简明论述本公开的实施例,在某些实例中并未描述众所周知或常规的细节。在这里描述了用于提供多设备协作的方法和设备。在一个实施例中,一种用于在第一与第二设备之间提供多设备协作的方法包括传送初始化函数调用来创建会话对象。 该函数调用规定了会话对象模式、服务类型以及服务名称。该会话对象可以包括用于发现第二设备、与第二设备相连以及在相连的第一与第二设备之间提供数据传输的函数。服务名称可以包括截短的名称,唯一标识以及与第一设备相关联的协作软件应用的服务状态。 该方法可以包括检测网络,以及经由网络来通告服务类型和服务名称。服务类型和服务名称可以在建立第一与第二设备之间的连接之前被通告。在一个实施例中,会话对象提供了特征,以使用户可以检测网络连接(例如 Bluetooth、WiFi、蜂窝),通过浏览该网络中的其他设备来获取服务列表,并且与常规方法
6相反,用户可以在连接到其他设备之前确定这些设备上的协作服务(例如音乐创作、文档创建、游戏应用)以及这其中的每一个协作服务的服务状态(例如繁忙或可用)。与在识别协作应用之前首先需要连接的常规系统相比,这样做可以更容易地发现别的设备上的协作应用。本公开的至少某些实施例包括一个或多个应用编程接口,这些应用编程接口处于协作套件软件与软件应用进行交互的环境中。该协作套件软件可以支持游戏环境,所述游戏环境则仅仅是一个例示环境,并且其他的环境可以使用本发明的一个或多个实施例;其他环境可以包括协作文档创建或协作音乐创作等等。不同的函数调用或消息是使用借助了应用编程接口(API)的协作套件软件而经由协作套件软件与一个或多个软件应用之间的应用编程接口传送的。传送函数调用或消息可以包括发布、发起、调用、接收或响应函数调用或消息。应用编程接口可以用于传送函数调用,以便为具有显示区域的设备实施协作 (例如游戏、文档创建、音乐创作等等)联网、服务发现以及语音聊天操作。API还可以实施具有参数、变量或指针的函数。API可以接收所公开的参数或其他参数组合。除了所公开的 API之外,其他API可以单独或组合执行与所公开的API相类似的功能。显示区域是一种窗口形式。窗口则是一个显示区域,该显示区域未必具有边界,并且可以是显示器的整个显示区域或面积。在一些实施例中,显示区域可以具有至少一个窗口和/或至少一个视图(例如web、文本或图像内容)。窗口可以具有至少一个视图。所公开的方法、系统和设备可以结合显示区域、窗口和/或视图来实施。本公开的至少某些实施例可以是数字媒体播放器的一部分,例如便携式音乐播放器和/或视频媒体播放器,其中所述播放器可以包括用于呈现媒体的媒体处理系统,用于存储媒体的存储设备,并且还可以包括与天线系统以及媒体处理系统相耦合的射频(RF) 收发信机(例如用于蜂窝电话的RF收发信机)。在某些实施例中,存储在远程存储设备上的媒体可以通过RF收发信机而被传送到媒体播放器。举例来说,该媒体可以是音乐或其他音频、静止图片或运动图片中的一种或多种。便携式媒体播放器可以包括媒体选择设备,例如来自加利福尼亚州Cupertino, Apple Computer, Inc.的iPod 或者iPod NanO 媒体播放器上的点击轮输入设备,触摸屏输入设备,按钮设备,可移动指示输入设备或其他输入设备。媒体选择设备可以用于选择存储在存储设备和/或远程存储设备上的媒体。在至少某些实施例中,便携式媒体播放器可以包括与媒体处理系统相耦合的显示设备,以便显示通过输入设备选择并被呈现的媒体的标题或其他指示符,其中所述媒体要么是通过扬声器或耳机呈现的,要么是在显示设备上呈现的,要么是同时在显示设备和扬声器或耳机上呈现的。在一些实施例中,显示设备和输入设备是集成的,而在其他实施例中,显示设备可以输入设备是分离的设备。这里描述的本公开的实施例可以是其他类型的数据处理系统的一部分,其中举例来说,所述数据处理系统可以是娱乐系统或个人数字助理(PDA),通用计算机系统,专用计算机系统,处于另一个设备内部的嵌入式设备,不包含媒体播放器的蜂窝电话,多点触摸平板设备,其他的多点触摸设备,或是组合了这些设备的各方面或功能的设备(例如与PDA相结合的媒体播放器,如iPod ,娱乐系统,以及一个设备中的蜂窝电话,iPhone )。在本公开中,电子设备和消费类设备是设备的类型。在一些实施例中,平台提供了不同的协作,语音聊天,服务发现以及联网操作。该平台包括硬件部件和操作系统。所述硬件部件可以包括耦合到输入面板的处理单元以及耦合到处理器的存储器。所述操作系统则包括一个或多个程序,这些程序被存储在存储器中, 并且被配置成由处理单元运行。一个或多个程序可以包括不同的指令,用于通过应用编程接口来传送函数调用或消息,以便执行不同的协作,语音聊天,服务发现以及联网操作。在一些实施例中,该平台包括一个含有软件代码库的框架。该框架与平台的程序进行交互,以便提供用于执行不同游戏、协作、语音聊天、服务发现以及联网操作的应用编程接口(API)。该框架还可以包括存储在单个目录中的相关联的资源(例如图像、文本等
寸J οAPI是一个由计算机系统或程序库为了支持来自软件应用的服务请求而提供的源代码接口。API是依照可以在构建应用时解释或编译的编程语言规定的,而不是如何将数据安排在存储器中的显性低级描述。提供该API所描述的功能性的软件则被称为是API的实施方式。服务发现是由广播所提供的服务的网络(例如个人区域网,局域网,广域网)的设备执行的。一种可用以执行服务发现的协议是可以从Apple Inc得到的Bonjour。其他服务发现协议同样是可以使用的。在2009年3月16日提交的名为“SERVICE DISCOVERY FUNCTIONALITY UTILIZING PERSONAL AREA NETWORK PROTOCOLS” 的美国专禾丨 J 申请 12/405,130中更详细地描述了服务发现协议,其中该申请在这里全部引入作为参考。服务发现将得到经由私域网而未必是提供服务的物理设备可用的服务的指示。举个例子,无线设备可以在bluetooth连接上使用DNS格式的数据,以便确定从范围以内的其他Bluetooth设备可用的服务。其他的格式和协议组合同样可以采用相似的方式来提供服务发现。通过广播可用的服务以及接收来自其他设备的广播消息,网络的设备可以编译经由网络可用的服务的列表。私域网的每一个设备都可以生成从本地和远程设备可用的自己的服务列表。在一个实施例中,该列表可以基于后续接收的广播而被动态更新。举个例子,如果设备从网络中移除(例如设备离开具有WiFi无线覆盖的区域),那么可以从列表中移除该设备提供的服务。另举一例,如果在网络中添加设备(例如设备进入具有WiFi无线覆盖的区域),那么可以响应于广播服务可用性消息而在列表中添加新设备提供的服务。在一个实施例中,服务发现信息可以使用DNS或mDNS格式来传送。换言之,广播的某些部分可以采用DNS或mDNS格式。作为一个示例,在符合Bluetooth的无线连接上, 在Bonjour格式的分组中可以传送具有与广播设备提供的服务相关联的信息的DNS格式的字段。其他的格式-协议组合同样是可以使用的。因此,在接收设备没有与提供服务的设备相连的情况下,服务可用性信息可以供接收设备使用。相比于需要连接用于发现,这样做可以提供能在设备之间共享服务的更有效和/或更安全的环境。所提供的服务可以是范围广泛的服务,这其中包括但不局限于打印服务、局域网 (LAN)接入服务、广域网(WAN)网络服务、蜂窝电话服务、数据存储服务、应用服务(例如媒体回放、游戏、协作文档创建服务、记录)。发现和访问其他服务的处理也可以采用相同的方式来支持和/或提供。可用服务列表可被呈现给本地设备的用户。作为替换,本地设备可以被配置成实施对某些服务可用性条件做出响应的默认操作。在一个实施例中,可用服务列表可以通过显示器之类的接口呈现给本地设备的用户。用户能够选择其中一个可用协作服务(例如音乐创作、扑克、曲棍球、其他游戏)。在一个实施例中,如果没有选择服务,则可以更新可用服务列表。图1示出的是根据本公开的一个实施例而在移动设备中支持多设备协作的框架。 如本文中的其他位置所述,多玩家游戏仅仅是本发明的一个或多个实施例的一个例示环境或使用。框架10包括用于在框架10与软件应用(例如软件应用1和软件应用2)之间提供接口的API 20(例如游戏选取器API,游戏连接API,语音聊天API,以及协作套件会话 API)。举个例子,游戏开发人员可以编写一个或多个游戏应用(例如软件应用1和软件应用2)的软件代码来调用这些API20。游戏连接API使用了 UI (用户界面)30、服务发现协议40 (例如来自Cupertino, CA的Apple Inc.的Bonjour网络服务)、套接字50以及一个或多个网络协议70(例如Bluetooth、WiFi、蜂窝)来提供连接功能。套接字50是一个软件构造,它允许两个进程与网络地址和端口进行通信。语音聊天API提供了语音聊天功能,以便将语音聊天集成到软件应用(例如游戏应用)中。语音聊天引擎60被优化成同时支持高质量游戏音频以及语音聊天。核心音频部件62包括回声抑制器64。关于回声抑制器的一个示例是结合图6来描述的。图2是根据本公开的实施例来支持移动设备中的多设备协作的方法的流程图。 应用编程接口是在一个具有如下框架的环境中工作的,在所述框架中,软件(例如可以提供一个或多个API的协作套件软件)与一个或多个协作软件应用(例如游戏、音乐) 进行交互。在一个实施例中,协作套件软件为协作应用提供了支持。用于提供协作的方法100包括从游戏应用向协作套件软件传送一个初始化函数调用(例如附录A中的 initffithSessionID),以便创建一个管理对等体网络之间的连接的协作套件会话对象。该协作套件会话对象可以包括发现可用对等体、与这些可用对等体相连以及在相连的对等体之间提供数据传输的函数。在方框102,该函数调用规定服务类型(例如sessionID)、服务名称以及会话模式。关于服务类型(sessionID)的示例可以包括国际象棋、扑克、其他游戏、音乐创作等等。在一个实施例中,应用的所有实例都必须具有相同的会话ID,以便能够加入协作。具有预定数量字符(例如63个字符)的服务名称可以包括截短的名称(例如 J’ s chess之类的displayName),用于标识应用的具体实例的唯一 ID,以及服务状态信息 (例如应用繁忙,应用可用于协作)。在一个实施例中,会话模式可以是服务器、客户机或对等模式。在下文中将会描述关于不同会话模式的更多细节。接下来,在方框104,方法100可以包括检测可用网络(例如Bluetooth、WiFi、蜂窝)。该方法100可以包括在方框106,通过从协作应用向会话对象传送函数调用(例如设置可用状态)来设置协作应用的服务状态(例如繁忙状态,可用状态)。接下来,方法100 可以包括通过为在方框106通告了服务的特定服务模式(例如服务器或对等模式)通告服务类型(例如sessionID)以及服务名称来执行会话发现。在一个实施例中,所通告的是与设备相关联的服务列表。举例来说,这些服务(例如游戏)用Bonjour网络服务来通告, 其中所述服务允许设备使用该服务来向网络上的其他设备通告其能力。服务列表可以包括一个或多个协作应用。如上所述,服务名称可以包括截短的名称,唯一标识以及服务状态。服务状态可以指示繁忙或是可用于协作。在一个实施例中,繁忙状态表明规定繁忙状态的软件应用不会参与到与具有相同软件应用的另一个设备的协作应用中;另一方面,可用状态表明一个设备上的协作软件应用(例如扑克游戏)可以参与到与另一个设备上的另一个软件应用(例如扑克游戏)进行的多玩家游戏中。作为选择,状态可以包括预定玩家集合(例如扑克玩家群组)的群组ID。服务类型(例如sessionID)标识的是协作应用希望如何依照一个或多个协议来进行通信。如果协作开发人员使用一服务类型,那么它可以被散列,以便减小其文件大小。在一个实施例中,服务信息被包含在了具有属性信息的文本记录中。举个例子,文本记录可以包括名称(例如扑克)以及该名称的子字段(例如Aces high poker)。通告文本记录,使得用户能够浏览服务并且确定有10个人正在打扑克,以及这其中有5个人正在玩Aces high poker。然后,如果用户希望,他可以使用Aces high poker游戏的群组ID和 /或通过与正在玩Aces high poker游戏的人进行联系来连接到Aces high poker游戏。在一个实施例中,本发明为用户提供了如下能力形成网络连接(例如 BluetootKWiFi、蜂窝),浏览该网络中的其他设备,以及与常规方法相反,在连接到其他设备之前确定这些设备上的游戏(或其他服务)以及其中每一个游戏的服务状态(例如繁忙或可用)。与在识别可用游戏之前先要具有连接的常规系统相比,这种处理可以更容易地发现别的设备上的别的可用游戏。在一个实施例中,会话模式可以是服务器、客户机或对等模式。处于服务器模式的移动设备向其他设备通告其域名、服务类型以及服务名称。处于客户机模式的移动设备浏览或搜索其他设备以及相关联的发现信息,例如这些其他服务的域名、服务类型以及服务名称。处于对等模式的移动设备则可以向其他设备通告其域名、服务类型以及服务名称。此外,处于对等模式的移动设备还可以浏览或搜索其他设备以及相关联的发现信息,例如这些其他服务的域名、服务类型以及服务名称。在对等模式中,通告和浏览处理可以采用循环方式在不同的时间进行。例如,在通告过程中,设备有可能无法对来自别的设备的连接请求做出响应。在浏览过程中,设备有可能无法同时通告服务。作为替换,设备有可能能够同时浏览和通告。在本公开的某些实施例中,传送一个或多个调度的处理是发布、初始化、调用或接收一个或多个调用的处理中的任何一个。图2的上述操作可以检测网络,并且可以在建立设备之间的无线连接之前,通过在设备之间发现或通告服务来执行服务发现。该无线连接可以是不同类型的网络(例如 Bluetooth、WiFi、蜂窝)的一部分。图3是用于根据本公开的一个实施例来支持移动设备中的多设备协作的方法的流程图。方法200包括在方框202,接收用户输入以发起协作应用。该用户输入可以采用输入按键、按钮、滚轮、触摸(例如附着于显示设备的多点触摸输入面板上的触摸)或是与设备交互的其他手段的形式。该方法200还包括在方框204,响应于接收到从协作应用经由API到达协作套件软件的初始化函数调用(例如附录A中的initWithkssionID),创建协作套件会话对象。该函数调用可以规定服务类型(例如sessionID)、服务名称(例如截短的名称、唯一 ID和服务状态)以及会话模式(例如客户机、服务器或对等)。接下来,方法200可以包括在方框205,检测可用网络(例如BluetootKWiFi、蜂窝)。该方法200可以包括在方框206,从协作应用向协作套件会话对象传送一组可用呼叫(例如附录A中的setAvailable)。该组可用呼叫设置协作应用的可用状态(例如繁忙, 可用于服务)。如果协作应用在协作套件会话对象上将该组可用状态参数设置成“是”,那么协作应用具有用于协作的可用服务状态,并且方法200还包括在方框207确定会话模式。 该会话模式可以基于规定了会话模式的函数调用来确定。如果会话模式是服务器或对等, 那么方法200还包括在方框210,通过通告服务类型(例如sessionID)和服务名称(例如截断名称、唯一 ID、服务状态)来执行服务发现。在一个实施例中,所通告的是与设备相关联的服务列表。该服务列表可以包括一个或多个协作应用(或其他应用,例如协作文档创建等等)。方法200还包括在方框214,从会话对象向协作应用传送一个函数调用(例如会话的确接收到了连接请求),以便指示接收到了来自其他设备的引入连接请求。该方法200 可以包括在判定框216,确定是否接受该引入连接请求。举个例子,设备用户有可能确定是否接受来自别的设备的引入连接请求。该方法200可以包括如果在判定框216接受引入连接请求,那么在方框218,在设备之间建立通信信道(例如无线连接)。函数调用被从会话对象传送到协作应用,以便指示接受该连接请求。接下来,该方法可以包括在方框220, 确定会话模式。如果确定的是服务器模式,则方法200返回到方框210的通告操作。在一个实施例中,如果所确定的是对等模式,那么在方框222,方法200可选地停止浏览(例如方框224),并且返回到方框210的通告操作。举个例子,除了在方框218中在对等体之间建立的协作连接之外,由于存在网络约束,两个对等体之间的Bluetooth连接未必会很方便地允许浏览。在另一个实施例中,除了对等体之间的协作连接之外,两个对等体之间的WiFi连接未必会很便利地允许浏览。如果在方框216中没有接受引入连接请求,那么该方法包括在方框217,拒绝该连接请求。举个例子,用户选择有可能是拒绝输入连接请求,或者协作应用的繁忙状态有可能会自动拒绝该请求。然后,该方法200返回到方框210的通告操作。在一个实施例中,与繁忙或不可用状态相比,接受连接请求具有更高的优先级。举个例子,对等体有可能会具有繁忙或不可用状态。但是,如果对等体接受来自移动设备的连接请求,那么即使对等体的协作应用具有繁忙状态,连接也会被建立。回到方框207,如果确定会话模式是客户机或对等,那么方法200还包括在方框 224,浏览该协作应用的对等服务。方法200可以包括在判定框226,确定对等体或服务器是否可用。该方法200还包括如果对等体或服务器之一可用,则在方框2 中与可用的对等体或服务器进行连接。在方框226,会话对象可以向协作应用传送一个表明对等体或服务器是否可用的函数调用(例如会话对等体/服务器的确改变状态)。在判定框226,如果对等体或服务器都不可用,则方法200返回到方框224的浏览操作。方法200可以包括在方框228,从会话对象向协作应用传送一个函数调用(例如带有超时的对等体/服务器连接),以便指示在预定时段以内连接到来自设备的对等体或服务器。方法200可以包括在判定框230,在预定时段以内确定是否接受连接请求。该方法200可以包括在判定框230,如果接受引入连接请求,则在方框232,在设备之间建立通信信道(例如无线连接)。函数调用会被从会话对象传送到协作应用,以便指示接受该连接请求。接下来,该方法可以包括在方框234,确定会话模式。如果所确定的是客户机模式, 则方法200可选地停止浏览,并且在方框238,对等体会与协作应用协作。
在一个实施例中,如果在方框234确定的是对等模式,那么在方框236,方法200可选地停止浏览(例如方框224),并且对等体与协作应用协作。举个例子,除了在对等体之间的协作连接之外,由于网络约束,两个对等体之间的Bluetooth连接未必会很方便地允许浏览。在另一个实施例中,除了对等体之间的协作连接之外,两个对等体之间的WiFi连接未必会很便利地允许浏览。在一个实施例中,对于对等模式,方框224的浏览和方框210的通告可以同时发生。在方框232,第一对等体可以浏览第二对等体,并且在对等设备之间建立通信信道。同时,在方框214,第一对等体可以通告服务,并且接收来自第三对等体的引入请求。在方框 218,在第一与第三对等设备之间可以建立通信信道。回到方框206,如果协作应用将该组可用参数设置成“否”,那么协作应用具有不可用或繁忙状态。方法200可以包括在判定框240中确定会话模式。接下来,方法200可以包括如果所确定的是服务器或对等模式,则在方框244中不通告服务类型和服务名称。方法200可以包括如果所确定的是客户机或对等模式,则在方框M2中不进行浏览。在一些实施例中,协作套件会话对象(例如游戏套件会话对象)可以包括用于发现协作服务(例如游戏服务)的服务发现协议40,以及用于建立网络连接的套接字50。 该套接字50可以获取软件应用的设备和端口的网络地址。通过实施网络地址转换(NAT) 技术或对等体中继,可以在设备之间形成连接。一个或多个网络协议70 (例如Bluetooth、 WiFi、蜂窝)在设备之间提供数据传输机制。在一个实施例中,该数据传输机制包括两种模式可靠和不可靠。可靠模式被用于重要的信息,例如游戏玩家达到新的竞技等级或者游戏玩家即将死亡。不可靠模式则用于不重要的信息,例如游戏玩家的当前位置。图4是用于在本公开的一个实施例中通过应用编程接口(API)建立语音聊天的方法的流程图。该方法是在具有这样一个框架的环境中工作的,在该框架中,协作套件软件与第一设备上的一个或多个软件应用(例如协作应用、游戏应用)进行交互,并且协作套件软件还与第二设备上的一个或多个软件应用进行交互。方法400可以包括在方框402,在与软件应用相关联的第一设备与第二设备之间建立直接(例如点对点)或间接(例如经由服务器、路由器或网关)的第一网络连接。在一个实施例中,协作套件软件为第一与第二设备之间的多设备协作提供支持。方法400可以包括在方框404,确定是否可以在第一设备与第二设备之间建立第二连接,以便在第一与第二设备之间提供语音聊天服务。该语音聊天服务可以是协作套件软件的一部分。方法400可以包括如果第二连接失败,则在方框 406,从第一设备的语音聊天服务向第一设备的软件应用传送一个函数调用(例如附录A中的sendRealTimeData),以便将第一连接用于语音聊天。方法400可以包括在方框408,从软件应用向语音聊天服务传送函数调用(例如附录A中的dicKtartwithParticipantID, didNotStartwithParticipantID),以便指示是否开始了语音聊天。方法400可以包括如果成功建立了第二连接,则在方框410,在第一设备与第二设备之间经由第二连接来建立语音聊天。在一个实施例中,协作应用经由第一连接来传送数据和音频分组,同时经由第二连接来传送语音聊天服务。语音聊天可以经由WiFi连接来路由,以免阻塞Bluetooth协作连接。作为替换,协作的第一连接以及语音聊天的第二连接可以经由相同的网络进行。图5示出的是根据本公开的一个实施例来提供多设备协作(例如音乐创作、文档创建、游戏应用等等)以及语音聊天的网络图示。网络500经由链路502和504来连接设备510和550,或者经由点对点连接506来连接设备。在一个实施例中,点对点连接506连接第一和第二设备。这些设备的用户则与协作应用520、560(例如文档创建、音乐创作、曲棍球、扑克等等)进行协作。具有协作套件API 的协作套件软件530和570分别用于在设备之间建立连接506。该协作套件API可以在不同类型的连接(例如BluetootKWiFi、蜂窝)之间进行选择。协作套件API可以将大量的分组聚合成数量较少的大型分组。与此相反,根据网络协议连接的需求,协作套件API也可以将大型分组分成多个较小的分组。传送数据和音频分组的协作应用可以与语音聊天连接同时进行。语音聊天可以经由WiFi连接来路由,以免阻塞Bluetooth连接。作为替换,协作连接和语音聊天连接可以经由相同的网络进行。在一个实施例中,在设备510的用户A与设备550的用户B之间存在协作(例如用户A和B正在玩的游戏)的同时,用户A希望与用户B建立语音聊天。作为协作套件软件540 —部分的语音聊天服务接入连接506,以便向软件应用560(例如游戏应用)发送语音聊天邀请,所述软件应用则将该邀请传递到用户B的协作套件软件570的语音聊天服务。 B的语音聊天服务可以向软件应用560告知其接收到了该邀请。接下来,B的语音聊天服务将会接受该邀请。A和B的语音聊天服务交换标识信息(例如participantID)以及连接数据(例如网络地址和端口),以便将其用于使用语音聊天协议的通信。接下来,在用户A与 B的语音聊天服务之间可以建立点对点连接508。在一些实施例中,在用户A与B的语音聊天服务之间不能建立点对点连接508。在这种情况下,语音聊天服务A向软件应用520(例如游戏应用)发送函数调用(例如附录A 中的sendRealTimeData to ParticipantID_B),或者语音聊天服务B向软件应用560发送函数调用(例如sendRealTimeData to ParticipantID_A)。该函数调用指示由于连接508 失败而在用户A与B之间使用连接506来建立语音聊天的请求。在一个实施例中,形成从用户A到用户B的间接连接,以便运行游戏应用。具有一个或多个服务器和/或路由器的网络500使用链路502和504来连接设备。除了使用间接连接来发送语音消息之外,语音聊天可以采用如上所述的方式经由连接508来建立。如果不能在用户A与B的语音聊天服务之间建立点对点连接508,那么语音聊天服务A可以向游戏应用530发送函数调用,或者语音聊天服务B向游戏应用560发送函数调用。该函数调用指示由于连接508失败而在用户A与B之间使用间接连接来建立语音聊天的请求。在某些实施例中,用户A和B可以建立用于运行游戏应用的连接。用户A或用户 B可以与不同的用户(例如用户C,用户D)相连,并且与该用户建立语音聊天。图6示出的是根据本公开的一个实施例的具有回声抑制器的处理系统。该处理系统600与协作应用(例如音乐创作,游戏应用)相关联,并且包括具有采样率Gr的音频信号660,音频输入/输出单元610 (例如扬声器输出,麦克风输出),语音输入信号640以及语音输出信号650。处理系统600还包括回声抑制器620以及采样率转换器630、632和634。处理系统600被设计成以很高的采样率(例如44kHz)来为关联于设备的本地协作应用产生高质量的音频信号。该处理系统600还可以为与协作音频同时进行的语音聊天提供回声抑制。举个例子,用户A和B有可能一起玩游戏以及进行语音聊天。作为替换,用户A和B有可能一起玩游戏,并且同时用户A还与用户C进行语音聊天。
声学回声有可能是因为立体声双声道音频信号622的输出(例如扬声器)以及I/ 0单元610的单声道语音信号612的输入(例如麦克风)而出现的。ES 620接收一个包含音频信号660和语音输出信号650的参考信号670,其中该信号是经由网络接口 690而从远端用户接收的。ES 620还经由I/O单元610接收来自设备本地用户的语音输入信号612。 该语音输入信号612包括回声分量。ES 620使用时域和频域变换及处理技术来消除回声分量,并且产生具有减少和/或消除的回声分量的语音输入信号640。该语音输入信号640 可以经由网络接口 690而被发送到远端用户。ES 620的处理技术不同于已知的处理技术。ES 620的独特实施方式在于频谱互相关函数估计。对于已知的处理技术,这种相关是为每一个频段计算的。相比之下,ES 620 在一个经过心理声学加权的标尺上计算相关的。这将会导致计算较少的值,以节约处理资源,并且允许抑制器更好地与人耳感知相适应。在一个实施例中,参考信号670的频域表示与语音输入信号612的频域表示之间的频谱互相关是作为这两个信号的复数值点积计算的。与评估整个频率范围上的单个总和不同,频谱互相关是在非重叠频段上评估的。波段边界与代表频率的心理声学标尺的Bark 标尺是相符的。该标尺的范围是从1到对,并且对应于前M个临界听觉波段。这会为每一个波段产生一个代表了用于该波段的互相关的单个复数值。通过执行该处理,系统隐性顾及了人类听觉系统的心理声学属性,同时还显著减少了将被进一步处理的信息量。在一些实施例中,第一用户与第二用户正在玩多玩家游戏。每一个用户都具有用于玩游戏以及语音聊天的手持设备。游戏音频信号660可以具有采样率Gr (例如大约 44. IKHz),而语音输出和输入信号650和640则具有较低的采样率Vr (例如大约8KHz)。SRC 634将采样率为Vr的语音信号转换成与游戏音频信号660合并的Gr信号。SRC 632则将 Gr参考信号转换成ES 620接收的Vr信号。以较低的语音采样速率工作的ES 620消除回声分量,并且产生具有减小和/或最小化的回声分量以及采样率为Vr (例如大约SKHz的采样率)的语音输入信号640。ES 620以较低的采样率(例如8KHz)工作,以便消除回声分量,同时节约了用于以较高的采样率(例如44. IKHz)来产生高质量游戏音频的处理资源。 游戏音频和语音信号可以以任何采样率来处理,而不需要是整因子(integral divisor)。语音信号的采样率是以关于语音聊天的网络约束为基础来确定的,同时,语音信号660的采样率是以处理系统600以及本地设备的硬件约束为基础来确定和优化的。在一个实施例中,游戏音频信号被以高采样率处理的任意高质量音频信号(例如音乐库音频信号)所取代。在一个替换实施例中,语音聊天的采样率(例如12KHz、8KHz、 11. 025KHz、8KHz、ll. 025KHz)分别是游戏音频采样率(例如 48ΚΗζ、48ΚΗζ、44. 1ΚΗζ、32ΚΗζ、 22. 05KHz)的整因子。在一些实施例中,本公开的方法、系统和设备可以在不同的设备中,其中所述设备包括电子设备、消费类设备、数据处理设备、台式计算机、便携计算机、无线设备、蜂窝设备、 平板设备、手持设备、多点触摸设备、多点触摸数据处理设备、这些设备的任何组合或是其他类似的设备。图7-9示出了这其中的少量设备的示例。图7显示的是根据本公开一个实施例的设备四50。该设备四50可以包括壳体四52、显示/输入设备四讨、扬声器四56、麦克风四58以及可选地天线四60 (它可以在壳体外部被看到,或者可以隐藏在壳体内部)。设备四50还可以包括邻近度传感器四62和加速度计四64。设备四50可以是蜂窝电话,集成了 PDA和蜂窝电话的设备,集成了媒体播放器和蜂窝电话的设备,或是同时作为娱乐系统(例如用于运行游戏)和蜂窝电话的设备, 或者设备四50也可以是这里描述的其他类型的设备。在一个特定实施例中,设备四50可以包括蜂窝电话和媒体播放器以及PDA,并且所有这些全都包含在壳体四52的内部。设备四50可以具有一个形状因子,其中该形状因子小到足以适合正常成年人的手掌,并且轻到足以被成年人用一只手握持。应该预料到的是,术语“便携”意味着该设备很容易被握在成年人的手里(一只或两只);举例来说,膝上计算机、iPhone以及iPod都是便携设备。在本公开的某些实施例中,设备四50可以用于实施本公开中论述的至少一些方法。图8显示的是包含了无线通信能力的无线设备的一个实施例。无线设备3100可以包括天线系统3101。无线设备3100还可以包括与天线系统3101相耦合的数字和/或模拟射频(RF)收发信机3102,以便通过天线系统3101来传送和/或接收语音、数字数据和/ 或媒体信号。无线设备3100还可以包括数字处理系统3103,用于控制数字RF收发信机以及管理语音、数字数据和/或媒体信号。数字处理系统3103可以是通用处理设备,例如微处理器或控制器。数字处理系统3103还可以是专用处理设备,例如ASIC(专用集成电路)、 FPGA(现场可编程门阵列)或DSP(数字信号处理器)。数字处理系统3103还可以包括本领域已知的其他设备,以便与无线设备3100的其他元件对接。例如,数字处理系统3103可以包括模数和数模转换器,以便与无线设备3100的其他元件对接。数字处理系统3103可以包括媒体处理系统3109,该系统还可以包括用于管理音频数据文件之类的媒体的通用或专用处理设备。无线设备3100还可以包括与数字处理系统耦合的存储设备3104,以便为无线设备3100存储数据和/或操作程序。举例来说,存储设备3104可以是任何类型的固态或磁性记忆设备。存储设备3104可以是或者包括机器可读介质。无线设备3100还可以包括与数字处理系统3103耦合的一个或多个输入设备 3105,以便接受用户输入(例如电话号码,姓名,地址,媒体选择等等)。举例来说,输入设备 3105可以是数字键盘、触摸板、触摸屏、与显示设备组合的指示设备或类似输入设备中的一种或多种。无线设备3100还可以包括与数字处理系统3103耦合的至少一个显示设备3106, 以便显示经由输入设备3105选择的诸如消息、电话呼叫信息、联系人信息、图片、电影和/ 或媒体的标题或其他指示符之类的信息。举例来说,显示设备3106可以是LCD显示设备。 在一个实施例中,显示设备3106和输入设备3105可以集成在同一个设备(其示例可以是触摸屏LCD,例如与LCD显示设备之类的显示设备相集成的多点触摸输入面板)中。该显示设备3106可以包括背光3106A,用于在某些环境中照亮该显示设备3106。应该预料到的是,无线设备3100可以包括多个显示器。无线设备3100还可以包括用于为系统部件提供操作电力的电池3107,所述系统部件包括数字RF收发信3102,数字处理系统3103,存储设备3104,输入设备3105,麦克风 3105A,音频变换器3108,媒体处理系统3109,(多个)传感器3110,以及显示设备3106。举例来说,电池3107可以是可再充电或不可再充电的锂电池或镍氢电池。无线设备3100还可以包括具有(多个)扬声器的音频变换器3108,以及至少一个麦克风3105A。在本公开的某些实施例中,无线设备3100可以用于实施本公开中论述的至少一些方法。图9显示的是根据本公开实施例的设备的另一个示例。该设备3200可以包括微处理器3202之类的处理器,和存储器3204,并且它们彼此是通过总线3206耦合的。设备 3200可以可选地包括与微处理器3202耦合的高速缓存3208。该设备可以可选地包括存储设备3240,其中举例来说,所述存储设备3240可以是任何类型固态或磁性记忆设备。存储设备3240可以是或者包括机器可读介质。该设备还可以可选地包括通过总线3206耦合到其他部件的显示器控制器和显示设备3210。一个或多个输入/输出控制器3212也耦合到总线3206,以便为输入/输出设备3214提供接口,以及为感测用户活动的一个或多个传感器3216提供接口。总线3206可以包括彼此通过本领域众所周知的桥接器、控制器和/或适配器相连的一个或多个总线。 输入/输出设备3214可以包括数字键盘、键盘或是光标控制设备,例如触摸输入面板。此外,输入/输出设备3214可以包括用于有线网络或无线网络(例如RF收发信机)的网络接口。传感器3216可以是这里描述的任一传感器,其示例包括邻近度传感器或环境光传感器。在设备3200的至少某些实施方式中,微处理器3202可以接收来自一个或多个传感器 3216的数据,并且可以采用这里描述的方式来执行数据分析。在本公开的某些实施例中,设备3200、设备3100或是设备3100与3200的组合可以用于实施本公开中论述的至少某些方法。
具体实施方式
的一些部分是依照算法给出的,其中所述算法包含了作用于计算机存储器内部存储的数据的操作。算法通常是一个导致产生预期结果的自洽操作序列。这些操作通常需要或者调用了关于物理参量的物理操纵。通常而非必要的是,这些参量采用了能被存储、传送、合并、比较以及以其他方式操纵的电或磁信号的形式。目前已被多次证明, 出于普通使用方面的原因,较为便利的是在原则上将这些信号称为比特、值、元素、符号、字符、项、数字等等。然而应该记住的是,这其中的所有术语以及类似的术语都是与恰当的物理参量相关联的,并且仅仅是适用于这些参量的便利标签。除非以可以从以下论述中明显看出的别的方式特别声明,否则应该了解,在本说明书中,使用了诸如“处理”、“运算”、“计算”、“确定” 或“显示”等术语的论述可以是指数据处理系统或是类似电子设备的操作和处理,其中所述数据处理系统或类似电子设备操纵那些在系统寄存器和存储器内部以物理(电子)参量形式表示的数据,并且将其转换成在系统存储器、寄存器或其他这样的信息存储、传输或显示设备内部以类似方式呈现为物理参量的其他数据。本公开可以涉及一种用于执行这里描述的一个或多个操作的设备。该设备可以是为所需要的用途特别构造的,或者它也可以包括由保存在计算机中的计算机程序有选择地激活或重新配置的通用计算机。此类计算机程序可以保存在机器(例如计算机)可读的存储介质中,例如但不局限于包括软盘、光盘、CD-ROM和磁光盘在内的任何类型的磁盘,只读存储器(ROM),随机存取存储器(RAM),可擦写可编程ROM(EPROM),电可擦写可编程 ROM(EEPROM),闪存,磁卡或光卡,或是适于存储电子指令的任何类型的媒体,并且这其中的每一种存储介质都耦合到总线。机器可读介质包括任何用于以机器(例如计算机)可读的形式存储或传送信息的机制。例如,机器使用机器可读媒体来存储和传递(在内部以及在网络上与其他设备一起) 代码和数据,其中所述机器可读媒体可以是机器存储媒体(例如磁盘;光盘;随机存取存储器;只读存储器;闪存设备;相位变换存储器)。 在以上说明书中参考具体的例示实施例而对本公开进行了描述。很明显,在不脱离后续权利要求阐述的较为广泛的实质和范围的情况下,针对本公开的众多修改都是可行的。相应地,说明书和附图应该被视为是说明性而不是限制性的。
权利要求
1.在一个框架中,第一设备的软件充当了其他软件的接口而在第一设备与第二设备之间建立连接,每一个设备都具有软件并且通过在设备之间传送函数调用来建立连接,一种通过应用编程接口(API)进行操作的方法,包括传送初始化函数调用以创建会话对象,该函数调用规定了会话对象的模式、服务类型以及服务名称,其中会话对象包括用于发现第二设备、与第二设备连接以及在相连的第一与第二设备之间提供数据传输的函数,其中所述服务名称包括与第一设备相关联的软件应用的截短的名称、唯一标识以及服务状态。
2.根据权利要求1所述的方法,还包括 检测网络;以及经由网络来通告所述服务类型和所述服务名称。
3.根据权利要求1所述的方法,还包括在第一与第二设备之间建立连接,其中服务类型和服务名称是在建立第一与第二设备之间的所述连接之前被通告的。
4.根据权利要求1所述的方法,还包括通过传送一组可用函数调用来设置所述服务状态。
5.根据权利要求4所述的方法,其中所述服务状态指示所述软件应用是繁忙还是可用。
6.一种存储可执行程序指令的机器可读介质,其中所述可执行程序指令在被运行时促使处理系统执行一种方法,包括传送初始化函数调用以创建会话对象,所述函数调用规定了会话对象的模式,服务类型以及服务名称,其中会话对象包括用于发现第二设备、与第二设备连接以及在相连的第一与第二设备之间提供数据传输的函数,其中所述服务名称包括与第一设备相关联的软件应用的截短的名称、唯一标识以及服务状态。
7.根据权利要求6所述的介质,该方法还包括 检测网络;以及经由网络来通告所述服务类型和所述服务名称。
8.根据权利要求6所述的介质,该方法还包括在第一与第二设备之间建立连接,其中所述服务类型和所述服务名称是在建立第一与第二设备之间的连接之前被通告的。
9.根据权利要求6所述的介质,该方法还包括传送一组可用函数调用来设置所述服务状态。
10.根据权利要求9所述的介质,其中所述服务状态指示所述软件应用是繁忙还是可用。
11.在一个框架中,第一设备的软件充当了其他软件的接口而在第一设备与第二设备之间建立第一连接,每一个设备都具有软件并且在设备之间传送函数调用以建立第一连接,一种通过应用编程接口(API)进行操作的方法,包括在第一设备与第二设备之间建立第一连接,其中所述第一连接与软件应用相关联; 确定是否可以使用语音聊天软件而在第一设备与第二设备之间建立第二连接,以便在第一设备与第二设备之间提供语音聊天服务;以及如果第二连接失败,则传送第一函数调用来请求将所述第一连接用于语音聊天。
12.根据权利要求11所述的方法,还包括通过传送第二函数调用来指示是否已通过第一连接启动了语音聊天。
13.根据权利要求11所述的方法,还包括如果成功建立第二连接,则通过所述第二连接在第一设备与第二设备之间建立语音聊天。
14.根据权利要求13所述的方法,其中建立第二连接还包括使用所述第一连接从第一设备的第一语音聊天服务向第二设备的第二语音聊天服务发送语音聊天邀请;以及在所述语音聊天邀请被接受之后,在第一与第二语音聊天服务之间交换用于通信的标识信息和连接数据。
15.根据权利要求14所述的方法,其中第一连接传送与软件应用相关联的数据和音频分组,同时,第一或第二连接在第一与第二语音聊天服务之间提供语音聊天。
16.一种存储可执行程序指令的机器可读介质,其中所述可执行程序指令在被运行时促使处理系统执行一种方法,该方法包括在第一设备与第二设备之间建立第一连接,其中所述第一连接与软件应用相关联; 确定是否能够在第一设备与第二设备之间建立第二连接,以便在第一设备与第二设备之间提供语音聊天服务;以及如果第二连接失败,则传送第一函数调用来请求将第一连接用于语音聊天。
17.根据权利要求16所述的介质,该方法还包括传送第二函数调用来指示是否已通过第一连接启动了语音聊天。
18.根据权利要求16所述的介质,该方法还包括如果成功建立第二连接,则通过所述第二连接在第一设备与第二设备之间建立语音聊天。
19.根据权利要求16所述的介质,其中建立第二连接还包括使用第一连接从第一设备的第一语音聊天服务向第二设备的第二语音聊天服务发送语音聊天邀请;以及在所述语音聊天邀请被接受之后,在第一与第二语音聊天服务之间交换用于通信的标识信息和连接数据。
20.根据权利要求16所述的介质,其中第一连接传送与软件应用相关联的数据和音频分组,同时,第一或第二连接在第一与第二语音聊天服务之间提供语音聊天。
21.一种具有回声抑制的无线设备,该无线设备包括具有回声抑制器的处理系统,其中所述回声抑制器在第一采样速率上工作,以便提供回声抑制;与处理系统耦合的输入/输出(I/O)单元;以及与处理系统耦合的网络接口,所述处理系统向I/O单元发送音频输出信号,其中所述音频输出信号具有第二采样率并且与无线设备本地的软件应用相关联,I/O单元接收第一语音输入信号,并且将具有回声分量的所述第一语音输入信号发送到回声抑制器,所述回声抑制器消除第一语音输入信号的回声分量,并且产生具有第一采样速率的第二语音信号,其中第二采样速率至少是第一采样速率的两倍。
22.根据权利要求21所述的无线设备,其中处理系统还包括用于运行与回声抑制器相关联的指令的一个或多个处理器,所述指令在一个心理声学加权的标尺范围上计算所估计的频谱互相关函数,以便提供回声抑制。1
23.根据权利要求21所述的无线设备,其中第一采样率是第二采样率的非整因子。1
24.在一个环境中,一个设备的软件充当了供其他软件加入与多个设备中的至少一个相关联的协作服务的接口,每一个设备都具有软件,并且通过在设备之间传送函数调用来启用协作服务,一种通过应用编程接口(API)进行操作的方法,包括在所述设备与其他设备之间没有建立无线连接的情况下,获取包含了与其他设备相关联的协作服务的服务列表;以及控制与所述设备的协作服务相关联的可用状态,其中所述可用状态指示所述协作服务是否可用于与具有所述协作服务的一个或多个其他设备协作。
25.根据权利要求M所述的方法,还包括如果参与协作的每一个设备具有相关联的可用状态,则在所述设备与一个或多个其他设备之间建立无线连接,以便允许参与所述协作服务。
26.根据权利要求M所述的方法,还包括检测无线网络;以及通过通告包含了与所述设备相关联的协作服务的服务列表来执行服务发现。
全文摘要
本发明描述了一种用于提供多设备协作的框架。在一个实施例中,一种用于在第一与第二设备之间提供多设备协作的方法可以包括创建初始化函数调用来创建会话对象。该函数调用规定了会话对象的模式、服务类型以及服务名称。会话对象可以包括用于发现第二设备、与第二设备相连以及在相连的第一与第二设备之间提供数据传输的函数。服务名称可以包括与第一设备相关联的软件应用的截短的名称、唯一标识以及服务状态。该方法可以包括检测网络以及经由网络来通告服务类型和服务名称。服务类型和服务名称可以在建立第一与第二设备之间的连接之前被通告。
文档编号G06F9/46GK102422268SQ201080019808
公开日2012年4月18日 申请日期2010年3月15日 优先权日2009年3月16日
发明者B·S·图格, E·阿拉曼彻, J·J·本纳特, J·S·阿布安, J·诺米勒, M·波罗戈夫, W·斯图尔特, 小R·加西亚 申请人:苹果公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1