一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于汽车与云混合环境的动态应用执行的制作方法

2022-02-19 12:01:48 来源:中国专利 TAG:

用于汽车与云混合环境的动态应用执行
1.相关申请的交叉引用
2.本技术要求于2016年2月19日提交的美国正式申请no.15/048,385 在35 u.s.c.
§
119(e)下所规定的权益,上述申请的全部内容通过引用合并于本文中。


背景技术:
技术领域
3.本公开内容一般涉及动态地、实时地选择在头部单元上执行的应用组件,同时在分离的主机设备或云上执行所述应用的其他组件。
4.相关技术描述
5.汽车对于用户而言正在变得越来越便于操作且互动性更好。现在所制造的许多新型汽车具有用户界面,称为头部单元,用户可使用头部单元来控制汽车的各个方面,并访问各种不同的应用。例如,用户能够使用所述头部单元来切换无线电台、改变汽车车厢的温度、访问地图和全球定位系统、访问互联网、访问其他头部单元应用。但是这些应用却常常依赖于用户的移动设备上的蜂窝移动数据。正是出于这些考虑以及其他的考虑才产生了本文所描述的实施例。


技术实现要素:

6.根据本文所公开的原理,计算机应用的各种组件被动态分配,从而在所述应用运行的同时,所述组件在分立的处理设备上被执行。正在被用户用来与应用交互的设备可被认为是正在运行所述应用的设备,即使所述应用的各组件可能正在一个或多个分立的设备上执行。例如,在计算设备上运行的应用具有一些正在所述计算设备上执行的组件,而同时所述应用的其他组件可能正在另一台设备上(诸如移动设备或在云上)执行。类似地,在移动设备上运行的应用具有一些正在所述移动设备上执行的组件,而所述应用的其他组件可在云上或者甚至在另一台计算设备上被执行。
7.在所述应用运行的同时,基于与所述应用的组合执行相关联的各种特性,由每个分立的计算设备所执行的所述应用的组件可以被动态地改变,该特性可包括所述应用组件自身的特性、执行所述应用组件的计算设备的特性以及在该设备间的通信网络的特性。
8.在一些例子中,特定的被执行应用的全部或几乎全部组件是在单个设备中被执行的。在第一设备上运行的应用会得益于其的一些组件由第二计算设备执行或在云上被执行,在这种情况下,所述第二计算设备或云计算资源执行那些组件并与所述第一设备通信。当所述应用运行时,所述组件被动态分配并且基于与所述应用的执行相关联的特性,能够从一台设备被移动或者交换到另一台。
9.一组实施例旨在提供一个动态应用环境,在所述动态应用环境中,一个应用的分立的组件能够在汽车的头部单元上执行,或者被分配在远程于所述汽车的主机设备或者一个或多个其他计算设备上执行。上述远程设备的例子包括在云上的服务器、智能电话或其
他移动设备、或者是其他计算设备,所述其他计算设备能够执行应用的一部分,并使该执行与在所述头部单元或其他计算设备上执行的所述应用的另一部分的执行相协调,因而创造出一个用于执行的动态环境分配。
10.所述主机设备基于所述头部单元的各种操作特性(诸如,但不限于,使用所述头部单元的用户、应用使用情况、地理位置、消耗的电量、剩余的电池电量等)来选择哪些应用提供给所述头部单元的用户。基于当前操作特性,所述主机设备选择被选应用的哪些组件在所述头部单元执行,以及如果有组件要在各种主机设备上执行,选择哪些组件在各种主机设备上执行。所述主机设备将被选组件提供给所述头部单元以供所述头部单元执行,并且所述主机设备执行未被所述头部单元执行的其他任何组件。所述主机设备监控与所述头部单元相关联的当前操作特性,从而确定该操作特性是否已经发生变化,并且基于那些变化,调整选择哪些组件由所述头部单元执行、哪些组件由所述主机设备执行以及哪些组件由另一台计算设备执行。
11.本文中所描述的实施例提供了一种改进的用户体验,这凭借的是动态调整应用组件在哪里执行的能力。不同的应用使用计算资源和网络数据的方式不同,因而不同的用户会以不同的方式体验应用。通过动态改变不同的组件在给定时间的执行位置,能够实现对所述头部单元更好的用户体验。例如,如果一个应用完全在作为主机设备的云上执行,那么便会增加所述主机设备和所述头部单元之间所的数据传输量,这会触发所述头部单元上的应用的显示和响应的延迟,并因此影响用户对于该应用的享受程度和体验。相对的,如果所述应用完全由所述头部单元执行,由于所述头部单元的计算资源限制或约束,所述头部单元不能够支持特定类型的应用或者不能同时支持相同数量的应用,这也会减弱用户对于该应用的享受程度和体验。通过动态调整应用组件在头部单元和主机设备之间的执行,能够提升应用的运行速度,并同时将所述主机设备和所述头部单元之间的网络流量最小化。
附图说明
12.参考以下附图所描述的实施例是非限制的且非穷尽的。在附图中,除非另有说明,相同的附图编号在所有的各图形中指代相同的部件。
13.为了更好地理解本发明,会参考下文中的“具体实施方式”,并且应当结合附图对该部分内容进行阅读:
14.图1a是列举了应用执行情况的一个示例的简图,所述应用具有被分解成不同运行单元的组件;
15.图1b是列举了应用执行情况的另一个示例的简图,所述应用具有被分解成不同运行单元的组件;
16.图2a是示例了硬件组件的简图,所述硬件组件能够执行图1a和图 1b中应用的各种组件;
17.图2b示例了根据本文所描述的实施例的汽车环境的关系图,其利用远程于汽车头部单元的主机设备管理在所述头部单元上执行的应用;
18.图3a呈现了根据本文所描述的实施例的汽车系统的用例示意图,其包括用户移动设备、头部单元和各种配件;
19.图3b到图3e呈现了根据本文所描述的实施例的主机设备和头部单元的示例性系
统图;
20.图4示例了根据本文所描述的实施例的逻辑流程图,其大致说明了用于动态调整哪些应用组件在所述头部单元上执行以及哪些组件在所述主机设备上执行的总体方法;
21.图5示例了根据本文所描述的实施例的逻辑流程图,其大致说明了用于监控所述头部单元环境的操作特性以识别变化的过程,所述变化会对是否要调整哪些应用或组件在所述头部单元上执行产生影响;以及
22.图6呈现了实施本文所描述的实施例的计算系统的一种实施方式的系统图。
具体实施方式
23.结合附图,下文中所描述的内容对某些具体细节进行阐释,以便于完整地理解公开的各种实施例。然而,本领域技术人员会承认,所公开的实施例或可能和其他方法、组件、设备、材料等以各种组合的形式进行实施,且可能缺少一个或多个本文中所描述的具体细节。为了避免对描述实施例造成不必要的妨碍,在其他情况下,未说明或描述与本公开内容中环境相关联的、熟知的结构或组件,包括但不限于通信系统和网络以及汽车环境。此外,各种实施例可以是方法、系统、介质或设备。因此,各种实施例可以是全部硬件的实施例、全部软件的实施例或者软件和硬件组合的实施例。
24.贯穿本发明的说明书、权利要求和附图,除非上下文中另作明确规定,以下术语取其在本文中明确相关的含义。用语“本文”指代与本技术相关的说明书、权利要求和附图。词组“在实施例中”、“在另一实施例中”、“在各种实施例中”、“在一些实施例中”、“在其他实施例中”及其其他变形说法均指代本公开内容的一个或多个特征、结构、功能、模仿或特点,且不限于相同或不同的实施例,除非上下文中另作明确规定。如本文中所使用,用语“或”是一个包括性的“或”作用词,且等同于词组“a或b,或两者”或“a或b或c,或其任何组合”,并且带有附加元素的列表以类似方式处理。用语“基于”并非排他性的,且允许基于未描述的其他特征、功能、方面或限制,除非上下文另作明确规定。此外,贯穿本说明书中,“一个”和“所述”的含义是既包括单数也包括复数的指称。
25.图1a示出了具有分到不同运行单元、对象或特征的组件的应用10。根据应用10的这个实施例,运行单元包括视图组件12、控制器组件14和模型组件16。这是一个本领域熟知的具体的编程结构,并且经常被称作“模型

视图

控制器”(model

view

controller)架构模式或者结构模式,其首字母缩写为mvc。根据所述mvc模式,应用为多个组件,包括视图组件12,控制器组件14或者模型组件16。一个类型的组件可完全独立于其他类型的组件而被执行,并且可以使用完全不同的代码、不同的结构和不同的数据类型进行操作。
26.视图组件12包括一个或多个组件,所述一个或多个组件用于提供应用10的操作状况的视觉体现。视图组件12的代码清楚如何绘制用户界面以及如何处理与终端用户的交互。该用户界面是这个应用中具体用户了解并与之交互的部分。视图组件12经常能够单独的被调整,且不会对应用 10的其他组件产生影响。具体地,视图组件12能够针对用户界面要在其上应用的任何具体硬件设备而被调整,所述硬件设备如特定型号的智能手机,例如,苹果、基于三星安卓系统的设备;平板电脑;本地计算机等等。当有新的硬件设备可用时,可经常调整视图组件12的代码以支持不同的硬件设备。
27.模型组件16包括一个或多个组件,所述一个或多个组件封装应用10 的数据和操
作代码,并且为应用10定义用于操控和处理所述数据的逻辑和计算。模型组件16不仅提供数据的存储,而且在很多情况下还为所述应用10提供指令集。
28.控制器组件14包括一个或多个组件,所述一个或多个组件提供应用 10的逻辑和通信。控制器组件14与视图组件12和模型组件16交互。控制器组件14提供一个网桥,所述网桥将模型组件16中的数据与视图组件 12所提供的用户界面分开。根据该应用编程模式,视图组件12与在其中操作的代码绝不会直接与模型组件16交互或者交换数据。控制器组件14 具有一个界面,以向各自的视图组件12提供信息并从各自的视图组件12 接收信息。类似的,控制器组件14具有一个界面,以向各自的模型组件16 提供信息并从各自的模型组件16接收信息。
29.进一步地,应用10的不同部分可在该编程模式中的不同位置上被执行。一些部分可由一个或多个控制器组件14执行,并且在那些控制器组件 14与一个或多个各自的视图组件12或模型组件16之间交换信息。其他部分由一个或多个模型组件16执行,并且之后经过一个或多个各自的控制器组件14被传递至一个或多个各自的视图组件12,而同时一些部分在一个或多个视图组件12中被单独执行。
30.根据所述mvc模式,可独立改变视图组件12和模型组件16中的每一个,且无需担心其他组件。在一些情况下,控制器组件14可不需要被调整以响应于经调整的视图组件12或模型组件16。在其他情况下,随着各自的模型组件16或视图组件12的升级和调整,一个或多个控制器组件14 可被调整,从而匹配各自的经调整的模型组件16或视图组件12。
31.典型地,视图组件12只与控制器组件14交互而不与模型组件16交互,控制器组件14与视图组件12和模型组件16交互,模型组件16只与控制器组件14交互而不与视图组件12交互。在各种实施例中,一些组件可与同一类型的其他组件交互,从而与其他类型的其他组件交互。例如,第一控制器组件可与第一视图组件交互,还可与第二控制器组件交互,所述第二控制器组件与第二视图组件交互。如此一来,所述第一控制器组件能够通过所述第二控制器组件与所述第二视图组件间接交互,但却不能够直接与所述第二视图组件交互。尽管一些应用可能未严格地符合所述mvc 模式,但是一个应用仍可具有不同的组件,并且上述组件能够通过采用本文所描述的实施例在不同的设备上被执行。
32.图1a中所示的示例是编程模式的一个例子,所示编程模式具有能够在分立的计算设备上执行的不同的组件。现在将提供另一种编程模式作为一个进一步的例子。
33.图1b中所示出的另一种编程模式,其在概念和运行上与图1a所示的编程模式不同。如图1b的简图所示,应用18在编程模式中运行,所述编程模式包括操作组件20、视图组件26、模型组件22和事件24。事件24 在操作组件20、模型组件22和视图组件26之间交换。该具体的编程模式具有代表模型(model)、操作(operations)、视图(view)和事件(events) 的首字母缩写move。根据该特定的编程模式,所述视图组件26提供用户界面。用户能够看到并与之交互的一切均由所述视图组件26支持。这不仅提供对于用户能够理解的应用18的状态的显示,而且还以有含义的方式来提供输入的用户交互的流,从而接收来自所述用户的信息并将事件24 传输至其他组件。视图组件26将事件24发出至操作组件20或者模型组件22,并且会通过寻找来自模型组件22或操作组件20的事件24从而等待变化发生。
34.每当用户与视图组件26交互,均会发出一个事件24。通过等待事件 24并与之交互,操作组件20和模型组件22能够注意到视图与组件的交互可以耦合在一起,而不会干扰
彼此。操作组件20能够提供指令集、交换数据并且还可以基于在各种类型的组件之间被交换的事件24来分配计算能力。图1b所示的应用18是不同于图1a所示的一种编程模式,并且其被作为一个示例提供,从而说明本文中所述描述的发明实施例能够配合不同的编程模式使用。
35.现存的或者在未来会被创造并使用的编程模式会有许多不同的类型。作为示例所提供的两种不同的编程模式的实施例被用来说明,本发明实施例能够按照任何的编程模式被实施,其中所述编程模式具有的组件,且该组件能够在不同的设备上彼此独立的被执行。编程模式的各种其他示例可适用于本文中所描述的实施例,这对于本领域技术人员而言会是显而易见的,并且由于这些各种编程模式将会为本领域技术人员所知,因此本文中不会再进一步对其进行描述。
36.图2a示例了一个硬件系统15,在硬件系统15中可运行应用,诸如,图1a中的应用10或图1b中的应用18。该硬件系统15包括移动设备26、计算设备28和云资源30。应当承认的是,在一些实施例中,系统15可包括移动设备26和计算设备28,而不包括云资源30。类似地,在其他实施例中,系统15可包括计算设备28和云资源30,而不包括移动设备26。而在另外的其他实施例中,系统15可包括移动设备26和云资源30,而不包括计算设备28。
37.移动设备26包括能够执行至少部分应用的任何移动设备。移动设备 26的例子包括,但不限于,笔记本电脑、智能手机、平板电脑、智能手表、其他可穿戴式计算设备、其他智能设备或者其他手持式计算设备。如所能领会到的,所述智能设备26是由电池驱动的,并且其具有限量的电池电量。所述移动设备26还可具有有限的处理能力和存储能力。例如,其可具有单一的处理器以执行所述应用,或者其可不具有大型图形处理能力,或是不具有高速计算复杂数学方程式的能力,或者所述处理能力可被减弱以节省电池电量。
38.所述计算设备28是一个或多个分立于移动设备26的计算设备。计算设备28可以是个人计算机、另一台移动设备或者其他具有额外处理能力的来源。例如,在一些实施例中,计算设备28是汽车的头部单元,如与图 2b和图3a到图3e结合所描述的。在其他实施例中,计算设备28是移动设备26的用户的家庭计算机。计算设备28其中的一个方面在于其具有额外的电量供应,可包括被插入主电源或电源电网或者具有发电机补充电量,该发电机可以是诸如在给头部单元供电时用于给汽车电池充电的交流发电机。所以可用于计算设备28的电量可被认为是持续的且不限量的,并且计算设备28可被认为绝不会耗尽电量,至少相对于移动设备26而言。此外,计算设备28包括超越移动设备26的额外的存储能力和处理能力。例如,计算设备28可具有一个或多个先进的处理器,所述处理器具有非常强的执行复杂代码的能力,并且可具有同步执行多个进程的能力。但是计算设备28的存储能力和处理能力在一些情形下可能仍然是有限的。
39.云资源30包括一个或多个计算设备,诸如服务器计算机,其远程于移动设备26或计算设备28,并且提供或者分配处理能力与存储能力以供多个设备使用。实现与云30的交互可通过各种连接路径,诸如无线、互联网、电缆或其它传输线路。云30可被认为具有无限的计算能力、无限的存储能力以及绝不会缺乏的持续的电量,至少相对于计算设备28和移动设备26而言。
40.一个应用可以完全只位于这些设备中的一个,或者所述应用可以被分散到任何这些类型设备中的多个设备。具体地,一些应用只位于计算设备 28上。所述应用的所有组件
都存储在计算设备28上,并且只在计算设备 28内执行。类似地,一些应用只位于移动设备26上,其中所述应用的所有部分都存储在移动设备26上,并且只在移动设备26内执行。
41.在其他实施例中,计算设备28可与移动设备26交互或者与云30交互或者与上述两者交互以运行所述应用。在这种情况下,所述应用的一些代码而并非全部代码在计算设备28上执行,而剩余代码在移动设备26、云30上执行或者在移动设备26与云30之间分布。如此一来,所述应用的一些组件在计算设备28上执行,而同时所述应用的其他组件在移动设备26或云30上执行。类似地,在其他实施例中,移动设备26可与计算设备28交互或者与云30交互或者与上述两者交互以运行所述应用。在这种情况下,所述应用的一些代码而并非全部代码在移动设备26上执行,而剩余代码在计算设备28、云30上执行或者在计算设备28与云30之间分布。如此一来,所述应用的一些组件在移动设备26上执行,而同时所述应用的其他组件在计算设备28或云30上执行。
42.所述应用的不同部分或组件可被动态分配以在所述特定硬件设备中的任何一个上运行,无论是移动设备26、计算设备28或者云30,或其一些组合。在一些实施例中,这些设备中的一个可被用来将不同的应用组件分配、分发给各设备。该设备可以被当作是主机设备,并且可以监控各设备的操作特性,以及所述应用的执行情况,从而确定如何调整哪些组件在哪台设备上的执行。
43.如上所述,计算设备28、移动设备26和云30具有不同的处理能力、存储能力和电力能力。类似地,在所述设备和系统之间的网络通信的能力和带宽也会不同。例如,移动设备26和计算设备28可以通过无线局域网络(诸如,蓝牙)与彼此通信,而移动设备26和云30可以通过蜂窝移动网络与彼此通信。而计算设备28和云30彼此间的通信可以通过另一通信网络,诸如其他的蜂窝移动网络、互联网或其他网络技术通信。
44.由于存在许多不同的情形,诸如在一台设备上执行的应用的数量;网络拥塞或传输慢的次数;减弱的电量,例如电池电量不足;所述应用的使用等,因此所述处理、存储、电力和联网能力会随着时间的变化而变化。随着这些特性和能力的变化,关于组件在哪里执行的位置也会发生变化。
45.例如,可用于移动设备26的电池电量会从可用的满电状态到几乎电量用尽的状态之间不时地波动。当移动设备26的电量几乎用尽时,其内部操作会对于哪些应用或特定应用的哪些部分可在其中执行进行限制,以便节省任何剩余的电池电量,从而保持移动设备26的其他部分是活动的。在这种情况下,所述应用的部分可以从移动设备26移动到计算设备28或云 30,并在计算设备28或云30上执行。如此以来,相较于移动设备26亲自执行所述应用的该部分而言,移动设备26从执行所述应用的该部分的另一系统接收数据可以消耗更少的电力。类似地,如果移动设备26的电池正在充电,那么可将所述应用中之前被移走的那部分移回到移动设备26以由移动设备26执行。
46.在另一示例中,如果计算设备28通过蜂窝移动网络连接与云30通信,并且将要接近其每月数据套餐传输的最大限额,那么可以将在云30中执行的所述应用的一部分移回到计算设备28中。如此一来,会在计算设备 28本地进行更多的所述处理,这能够减少通过蜂窝移动网络所传输的数据量,从而努力不超过所述计算系统的数据套餐限额。类似地,可将一些所述处理移动至移动设备26,在这种情况下,移动设备26能够通过无线局域网络将数据传输至计算设备28,这样可以在仍向所述应用的至少一部分提供额外的处理能力的同
时,也能够减少通过蜂窝移动网络传输的数据量。
47.应当承认的是,运行应用的任何设备的处理、存储、电力、联网能力或其他任何操作特性发生任何的变化组合,均能够被用来确定如何动态地改变、分配、分布哪些应用组件在任何给定时间点在哪台设备上执行。
48.在现在将描述的各种实施例中将对图2a所列举的硬件针对不同的运行环境进行说明。一种可能的环境是汽车,在这种情况下,所述汽车包括作为计算设备28的头部单元,并且用户可以拥有或不拥有移动设备26。另一种可能的环境是酒店场景,在这种情况下,所述酒店包括计算设备28,并且一个或多个移动设备26由个人用户或酒店客人提供。另外可能的实施例包括船、飞机、家庭环境或其他情景,其中计算设备28、移动设备26 或云30具有单独的电源和计算资源,但是能够彼此之间交互,从而动态地改变哪个设备在执行应用的不同部分,以此向用户提供一种好像整个应用在一个被用户正在使用的单一设备上执行一样的体验。
49.图2b示例了根据本文所描述的实施例的汽车环境的关系图,其利用远程于且分立于汽车头部单元的主机设备管理在所述头部单元上执行的应用。系统100包括汽车102和主机设备124。在一些实施例中,所述系统100还包括多个移动设备114

116和远程数据服务126。
50.所述汽车102实质上是包括头部单元104的任何运载工具。尽管本说明书中主要指的是汽车,但是类似的实施例还可被用在飞行器、船只、轨道车辆和包括头部单元的其他交通工具,或者甚至是其他的非交通环境,诸如家庭、酒店或其他建筑物。
51.头部单元104是汽车中的计算设备,其向用户或所述车辆占用者提供交互式控制以及用户界面。如在本文中所用,词语“用户”和“占用者”是可以互换的,并且其指代与头部单元104或汽车102交互的任何人。头部单元104被用来访问一个或多个应用或者与一个或其他多个配件108
‑ꢀ
110交互。在一些实施例中,头部单元104是图2a中计算设备28的一种具体实施方式。在各种实施例中,头部单元104能显示配件数据,或者其能提供配件数据给其他设备,诸如移动设备114

116或其他配件。
52.在各种实施例中,头部设备104包括一个用户界面,所述用户界面使用户能够访问一个或多个应用,其也被称作头部单元应用。在一些实施例中,这些应用可以是一个或多个配件108

110。每个应用包括多个彼此交互的组件,从而共同执行所述应用的功能。在一些实施例中,所述组件的至少一个子集是可移动的,并且能在与正在执行该相同应用的其他组件的设备相分立的设备上被执行。在一些实施例中,一个或多个应用按照“模型
ꢀ‑
视图

控制器”结构被架构,诸如图1a中的应用10,具有至少一个视图组件、至少一个模型组件和至少一个控制器组件。其他应用可包括其他的架构,诸如图1b中的应用18所示的模型、操作、视图和事件结构;具有独立组件的其他类型应用;或者其他类型的不可分离式应用架构等。
53.在一些实施例中,整个应用在头部单元104上执行。在其他实施例中,所述应用组件的仅一个子集,而非全部的所述应用组件,在头部单元104 上执行,而剩余的所述应用组件在主机设备124上执行。例如,可在头部单元104上执行一个应用的视图组件,而可在头部单元104或主机设备124 或其组合上执行模型组件和控制器组件,这取决于与头部单元104相关联的当前操作特性。简要地,所述操作特性可以包括,但不限于,所述汽车的位置、所述
头部单元的当前负载、与所述头部单元交互的用户、所述用户对于多个应用的使用情况、网络连接情况、所述应用的数据使用情况或者所述头部单元的其他运行方面。应当承认的是,如果一个应用没有能够在分立的设备上执行的组件,那么所述应用可以完全在头部单元104或主机设备124上执行。
54.当当前操作特性随时间发生变化时,正在所述头部单元104上执行的所述组件集也可以改变,以响应于所述当前操作特性的变化。例如,当所述汽车被首次启动时,主机设备124确定当前操作特性的初始集合,诸如所述汽车的司机是谁等。并且基于所确认的特性,主机设备124选择一个或多个应用以提供给该司机。对于这个示例,假设所述主机设备124选择应用_a,所述应用_a具有以下组件:vc_a、vc_b、mc_a、mc_b、cc_a 和cc_b,其中所述vc组件是视图组件,所述mc组件是模型组件,而所述cc组件是控制器组件。所述主机设备124可基于所述操作特性选择 vc_a、vc_b和cc_a并将其提供给头部单元104以供所述头部单元104 执行,而mc_a、mc_b和cc_b仍然在主机设备124上并且由所述主机设备124执行。在之后的某个时间点,与头部单元104相关联的操作特性可能发生变化。响应于这一变化,主机设备124会通知头部单元104停止对cc_a的执行,而这时主机设备124便会开始执行cc_a。在这个时间点,头部单元104在执行vc_a和vc_b,而主机设备124在执行mc_a、 mc_b、cc_a和cc_b。在所述操作特性中可能发生另一种变化,主机设备124会将所述应用的所有组件提供给头部单元104以供头部单元104执行。结果是,头部单元104执行vc_a、vc_b、mc_a、mc_b、cc_a和cc_b,而主机设备124并不执行所述应用的任何组件。选择哪些组件在头部单元104上执行、哪些组件在主机设备124上执行或者甚至在另一台设备上执行,会跟随与头部单元104相关联的操作特性随时间发生的变化而实时地动态地变化。
55.主机设备124是任何的计算设备,诸如服务器计算机、云资源、智能手机或其他移动设备、或者远程于所述汽车的其他计算设备,其中主机设备能够监控与所述头部单元环境相关联的操作特性,并且动态地改变哪些应用组件在头部单元104或其他计算设备上执行。在各种实施例中,主机设备124可以是图2a中所描述的移动设备26、云资源30或其他计算设备28。如本文中所描述,未在头部单元104上执行的应用组件在主机设备 24或者由主机设备124所选择的其他一些设备上被执行。尽管将主机设备 124作为一个单一设备进行举例说明,但是实施例不受此限制。确切地说,主机设备124可以是一个或多个计算机设备,所述一个或多个计算机设备共同执行实时地动态地管理头部单元应用组件的功能。在各种实施例中,主机设备124可包括通过互联网可以使用的云计算技术。
56.远程数据服务126可包括一个或多个应用数据服务,所述一个或多个应用数据服务将数据或其他信息提供给在头部单元104或主机设备124上执行的应用或应用组件。例如,在头部单元104上执行的组件可以向远程数据服务126请求音乐数据。远程数据服务126将所请求的数据返回至头部单元104。在另一示例中,在主机设备124上执行的组件可以向远程数据服务126请求音乐数据。远程数据服务126将所请求的数据返回至主机设备124,其随即在执行所述应用中使用所述数据,或者将所述数据提供给头部单元104以供在头部单元104上执行的组件使用。远程数据服务126 的例子可包括维持地图数据、音乐或其他内容、游戏数据或者会被应用请求的其他类型信息的服务。
57.主机设备124、头部单元104和远程数据服务126通过通信网络122 与彼此通信。通信网络122被配置来耦合各种计算设备以将数据从一个或多个设备传输至一个或多个其他
设备。通信网络122包括各种可通过使用各种形式的通信技术和拓扑结构实现的无线网络,诸如,但不限于,蜂窝移动网络、网状网络或者此类网络。在各种实施例中,无论是在头部单元 104上还是在主机设备124上执行的应用组件,均可通过使用通信网络122 向远程数据服务126请求数据,并且所述远程数据服务126可以通过通信网络122向主机设备124或头部单元104提供所请求的数据。
58.头部单元104还能提供对于配件108

110的用户访问。配件108

110 可包括由所述用户可控制的任何汽车功用或设备。这些配件的例子包括,但不限于,可调式座椅、顶篷天窗、侧镜、后视镜、空调、电动车窗或者汽车102的其他可控特征。配件108

110还包括实质上向所述用户提供信息或数据的任何汽车功用或设备。这些配件的例子包括,但不限于,车速表、里程表、油压表、温度计或者向所述车辆的用户提供信息的其他汽车传感器。配件108

110进一步包括头部单元应用。这些配件的例子包括,但不限于,导航、音频及无线电控制、电视或音乐应用、环境控制应用、汽车性能或保养应用、或者其他应用。应当注意的是,有些配件只可输出数据,有些配件只可接收控制以操控所述配件,而有些配件可输入和输出数据。例如,车速表只可输出所述汽车的当前速度;电动车窗只可接收控制以将车窗向上或向下移动,但却不会返回任何信息给所述头部单元;以及所述导航系统可接收对一目的地的控制,并且还会返回一条去往所述目的地的建议行程线路。应当注意的是,这些示例是非详尽的,并且还可采用其他类型的配件。
59.头部单元104通过配件通信网络106与配件108

110通信。配件通信网络106被配置将配件108

110与头部单元104耦合以在配件108

110和头部单元104之间传输内容/数据。在设备之间所通信的信息可以包括当前配件状态或数据、配件控制数据、视频数据、声音数据、图像数据、文本数据或者其他类型的内容、数据或信息。配件通信网络106可以包括一个或多个实体网络;一个或多个无线通信网络;一个或多个应用程序界面;一个或多个其他网络,所述一个或多个能够将数据从一个配件传输至另一个配件,从一个配件传输至所述头部单元104,或从所述头部单元104传输至一个配件的其他网络;或者其组合,所述组合取决于与头部单元104 通信的配件类型。例如,配件通信网络106可包括汽车车身通信网络(诸如,有线控制器局域网)、短程无线通信网络(诸如,采用蓝牙低功耗协议的个人局域网)或者其他任何类型的网络。
60.在一些实施例中,用户可以能够利用诸如移动设备114

116等的移动设备与头部单元104或配件108

110交互。在一些实施例中,移动设备114
‑ꢀ
116可以是图2a中移动设备26的具体实施方式。移动设备114

116包括能够与汽车102的头部单元104通信的任何移动设备。移动设备114

116 被构建来向头部单元104发送内容和控制并从头部单元104接收内容和控制。移动设备114

116的例子包括,但不限于,笔记本电脑、智能手机、平板电脑、可穿戴式计算设备、其他智能设备或者其他手持式计算设备。
61.头部单元104通过移动设备通信网络120与移动设备114

116通信。移动设备通信网络120被配置来将移动设备114

116与头部单元104耦合,从而在移动设备114

116与头部单元104之间传输内容/数据。在设备之间所通信的信息可以包括当前配件状态或数据、访问配件数据的请求、控制或修改配件的请求、视频数据、声音数据、图像数据、文本数据或者其他类型的内容、数据或信息。通信网络120可以包括各种各样的短程无线通信网络,诸如采用经典蓝牙或蓝牙低功耗协议的个人局域网、ir光网络、或者网络120,以实现移动设备
114

116与头部单元104之前的通信。
62.在各种实施例中,通信网络122、移动设备通信网络120和配件通信网络106是分开的通信网络。如本文中所描述,无需利用移动设备114

116,主机设备124和头部单元104便能通过通信网络122与彼此直接通信。尽管在一些实施例中,头部单元104无法访问通信网络122,但是移动设备 116可被用作头部单元104和主机设备124或远程数据服务126之间的中介设备。在这样的实施例中,头部单元104可通过移动设备通信网络120 与移动设备116通信,并且移动设备116能够通过通信网络122与主机设备124和远程数据服务126通信。在一些其他的实施例中,主机设备124 仍然执行与对于本文中所描述的有关选择哪些组件在头部单元104上执行以及哪些组件在主机设备124上执行的相同功能,但是主机设备124可向移动设备116提供被选择以在头部单元104上执行的组件,移动设备116 会将那些组件转送给头部单元104。
63.在一些实施例中,主机设备124可以是移动设备114

116中的一个,从而使所述移动设备成为选择哪些组件在所述头部单元执行而哪些组件在所述移动电话上执行的计算设备。在其它实施例中,可在主机设备124 和移动设备116之间采用本文所描述的技术。在至少一个这样的实施例中,根据本文所描述的实施例,主机设备124可以监控与移动设备116相关联的操作特性,并且根据本文所记载的技术动态地改变哪些应用组件在移动设备116上执行,但这是相对于在移动设备116上而非头部单元104上的应用而言的。而在另外的其他实施例中,还可将本文所描述的技术用于确定哪些组件在所述头部单元、所述移动设备和所述主机设备的组合上执行。在一些实施例中,执行应用中至少一个组件的每个设备均可包括专门的应用或操作系统,以协调在分立设备上执行的组件之间的通信。
64.图3a呈现了一种汽车系统的用例示意图。所述系统包括汽车102、头部单元104和多个不同配件。所示例的配件是图2b中配件108

110的例子。所述配件包括车身配件108a

108d、娱乐信息配件110a

110f和无线配件109。
65.车身配件108a

108d是通过汽车车身通信网络218与所述头部单元104 通信的配件。汽车车身通信网络218可以是控制器局域网总线,其将车身配件108a

108d头部单元104物理连接。车身配件108a

108d的例子包括,但不限于,空调108a、可调镜108b、可调式座椅108c和顶篷天窗108d。
66.娱乐信息配件110a

110f是嵌入到头部单元104或者由头部单元104 执行的配件,诸如软件程序和功能,并且通过娱乐信息网络216与头部单元104通信。娱乐信息网络216可以是一个或多个应用程序界面,其能使头部单元104与各种娱乐信息配件110a

110f通信。娱乐信息配件110a
‑ꢀ
110f的例子包括,但不限于,无线电110a、导航110b、音频控制110c、应用110d、音乐110e和电视110f或未列举的其他应用。
67.无线配件109包括通过无线网络220(诸如,蓝牙低功耗或其他短程无线协议)与头部单元104通信的其他配件。尽管无线配件109体现在汽车102的后座,但是其具体实施方式不限于此,并且无线配件109能被放置于所述车辆的其他位置,而且能提供对其他配件的控制。
68.在各种实施例中,汽车车身通信网络218、娱乐信息网络216以及用于和无线配件109通信的无线网络220均为图1中配件通信网络106的一部分。
69.移动设备114

116能够向头部单元104提供请求以访问或控制车身配件108a

108d、娱乐信息配件110a

110f、无线配件109或其一些组合中的一个或多个。在一些实施例中,无需向头部单元104发送请求,移动设备 114

116便能接收配件数据。在这样的实施例中,头部单元104可获取从所述配件广播或所述头部单元从所述配件请求来的配件数据,并且所述配件数据通过无线网络220进行广播或传输。移动设备114

116能够从头部单元104收听到该广播数据。
70.图3b到图3e呈现了根据本文所描述的实施例的主机设备和头部单元的示例性系统图。图3b到图3e中的系统300包括主机设备124和头部单元104。主机设备124和头部单元104通过通信网络122进行通信。
71.如图3b所示出,主机设备124存储多个应用308。每个应用308包括多个组件330

332。如本文所描述,应用308可按照“视图

模型

控制器”结构被架构,具有一个或多个视图组件330、一个或多个模型组件331和一个或多个控制器组件332。然而,具体实施方式不限于按照所述“视图
‑ꢀ
模型

控制器”结构所设计的应用。确切地说,只要某些组件不受另一些组件的控制,并且可在分立设备上被执行,那就还可以利用其他的应用设计。在各种实施例中,该应用还可包括其他组件,诸如可能需要在相同设备上被执行的组件、可能需要在主机设备124上被执行的组件、或可能需要在头部单元104上被执行的组件,或其任何组合。
72.如本文中所描述,基于与头部单元104相关联的当前操作特性,主机设备124动态地确定哪些应用被提供给头部单元104以及这些应用的哪些组件在头部单元104上被执行而哪些又在主机设备124上被执行。
73.在图3c所示的例子中,第一用户320正在使用头部单元104。通过采用本文所描述的实施例,主机设备124确定供第一用户执行的应用310。在这个示例中,应用310包括应用302

304。主机设备124选择应用302
‑ꢀ
304以将其提供给头部单元104。在那些被选的应用中,主机设备124选择应用302的视图组件;应用303的视图组件、模型组件和控制器组件;和应用304的视图组件和控制器组件,并且将其提供给头部单元104。头部单元104执行这些组件中的每一个,而主机设备124执行应用302的模型组件和控制器组件和应用304的模型组件。在所列举的实施例中,在同一台设备上都有执行不同类型组件的每一种。例如,应用303的全部控制器组件均在头部单元104上执行。然而,具体实施方式不限于此,并且给定类型的一个或多个组件可由头部单元104执行,而所述给定类型的其他组件可由所述主机设备124执行,图3d中举例说明了这样的具体实施方式。
74.如本文所描述,主机设备124可识别头部单元104的当前操作特性中所发生的变化。响应于那些变化,主机设备124可改变选择哪些组件在头部单元104上执行而哪些组件在主机设备124上执行。
75.如图3d中所说明,主机设备124再次选择应用302

304并提供给头部单元104。但是由于操作特性中的变化,主机设备124将对应用302的控制器组件的执行从主机设备124移动至头部单元104,并且将应用304 的控制器组件的执行、应用303的模型组件的执行、以及应用303的一些而非全部的控制器组件的执行从头部单元104移动至主机设备124。作为结果,主机设备124选择应用302的视图组件和控制器组件、应用303的视图组件、模型组件和控制器组件的一个子集、以及应用304的视图组件,并且将这些组件提供给头部单元104。头部单元104执行这些组件中的每一个,而主机设备124执行应用302的模型组件、应用303的控制器组件的一个不同子集、以及应用304的模型组件和控制器组件。在这个示例中,应用
303的控制器组件在不同设备上执行,有的由头部单元104执行,而其他的则由主机设备124执行。
76.图3e说明了作为所述头部单元104操作特性的变化的结果,应用组件在头部单元104或主机设备124或其一些组合上执行的另一个例子。在这个例子中,头部单元104的用户从所述第一用户变成了第二用户322。通过采用本文所描述的关于用户变化的实施例,主机设备124确定供所述第一用户执行的应用312。在这个示例中,应用312包括应用303和应用 305。主机设备124选择应用303和应用305以将其提供给头部单元104。对于那些被选应用,主机设备124选择应用303的视图组件以及应用305 的视图组件、模型组件和控制器组件,并且将这些组件提供给头部单元104。头部单元104执行这些组件中的每一个,而主机设备124执行应用303的模型组件和控制器组件。
77.上述示例性汽车环境不应作限制性理解,并且也可以使用其他的操作环境应用在本文所描述的实施例中在多个计算设备之间动态地分配应用组件。同样地,上述示例中对视图、模型和控制器组件的使用不应作限制性理解,并且对于具有不同组件、且能够在分立设备上执行这些组件、并且动态的改变这些组件的执行设备的其他架构模式也可以被用在应用本文所描述的实施例的过程中。
78.现在将参考图4和图5描述对于本公开内容的某些方面的操作。在各种实施例的至少一个中,结合图4和图5所分别描述的方法400和方法 500,可由一个或多个计算设备(诸如,主机设备124、计算设备28、移动设备26或云30)实施或在所述一个或多个计算设备上被执行。
79.图4示例了根据本文所描述的实施例的逻辑流程图,其大致说明了一种综述性方法的一个实施例,所述方法用于动态调整哪些应用组件在头部单元(诸如头部单元104)上执行以及哪些组件在主机设备上执行。在“开始”框之后,方法400自框402开始,在框402中,识别与所述头部单元有关的一个或多个当前操作特性。所述操作特性包括能够影响所述头部单元如何操作或者谁在操作所述头部单元的所述头部单元的各个方面。所述操作特性的非限制性例子包括所述汽车的位置、所述头部单元的当前负载、与所述头部单元交互的用户、所述用户对于多个应用的使用、网络连接、网络拥塞或延迟、所述应用的数据使用、电量的使用或容量、或者所述头部单元或所述应用的其他操作方面。多个操作特性中的一个或多个、或者这些操作特性的一些组合,可在任何时间点被用来识别所述头部单元的当前操作特性。
80.方法400继续进行到框404,在框404中,从多个应用中选择一个或多个应用以提供给所述头部单元。在各种实施例中,在框410,当被选组件的第一个组件集被提供给的头部单元时,所述应用被提供给所述头部单元。然而,所述被选应用是当前在所述头部单元上可供所述用户使用的应用,而未选应用当前在所述头部单元上不可被所述用户使用。当前可供使用的应用是用户能够与之交互的、好像所述应用完全在所述头部单元上执行的应用。在各种实施例中,所述主机设备可以存储多个应用,但只有那些应用的一个子集可被提供给所述头部单元,并且可被所述用户在任何给定时间访问。这些可访问的应用是当前可被用户使用的应用。
81.在各种实施例中,对应用的选择基于框402中所识别的当前操作特性。例如,用户_a可以使用与用户_a的标识相关联的密钥卡来启动所述汽车。所述头部单元可以将所述标
识提供给所述主机设备。所述主机设备可以使用所述标识来选择用户_a的资料。所述资料可以表明,对于应用1、应用 2、应用3和应用4,用户_a倾向于应用2和应用4;据此,所述主机设备选择应用2和应用4以提供给所述头部单元。各种其他当前操作特性或操作特性的组合可被用来选择一个或多个应用。例如,在一些实施例中,用户可以手动选择一个或多个应用以在所述头部单元上使用或者将其从所述头部单元上移除。
82.在框406继续方法400。在框406中,选择所述被选应用的第一组件集以由所述头部单元执行。每个应用包括多个组件。在一些实施例中,可以允许一些组件在彼此分立的计算设备上执行。在其他实施例中,可以要求一些组件在同一台计算设备上。而在另外的其他实施例中,可以要求一些组件在将所述应用的最终图像提交给所述用户的计算设备上执行。在各种实施例中,所述应用可以按照“视图

模型

控制器”结构被架构,所述结构具有一个或多个视图组件、一个或多个模型组件和一个或多个控制器组件。在一些实施例中,所述被选组件包括所述被选应用的至少一个或全部视图组件中的,以及每个被选应用的全部或一些模型组件和控制器组件或者不包括每个被选应用的模型组件和控制器组件。
83.所述主机设备可以利用所述当前操作特性来确定并选择哪些组件将会由所述头部单元执行。接着前述示例,假设应用_2正是计算密集型应用,而应用4是数据密集型应用。在这种情况下,可以在所述第一个集中选择应用_4的视图组件和控制器组件以及应用2的视图组件以由所述头部单元执行,而不选择应用_4的模型组件以及应用_2的控制器组件和模型组件。如此一来,会在所述主机单元上而非在所述头部单元上执行多个计算量繁重的组件。
84.被选择执行的组件可以取决于所述当前操作特性的多个不同参数。例如,可利用多个不同阈值,基于所述主机设备和所述头部单元之间的网络带宽,从而确定选择哪些组件。例如,所述带宽越小,被选来由所述头部单元执行的组件的数量就越多,这可以在头部单元和主机设备双重执行所述被选应用的期间减少所述主机设备和所述头部单元之间传输的数据量。这些示例是非限制性的,其他值和参数可能用于选择所述第一组件集。
85.方法400继续进行到框408,在框408中,选择所述被选应用的第二组件集以由所述主机设备执行。类似于上述框406中所描述的,所述主机设备可以利用所述当前操作特性来确定并选择哪些组件由所述主机设备执行。在各种实施例中,第二组件集包括在框406中所述被选应用中未被选择的全部组件。所以在上述示例中,在所述第二集中,选择应用_4的模型组件以及应用_2的控制器组件和模型组件以由所述主机设备执行。
86.在一些实施例中,应用可能包括必须由所述头部单元执行的或者必须由所述主机设备执行的组件。例如,由于要与在所述头部单元上提供图像的实际硬件的交互,可能要求一些视图组件在所述头部单元本身上执行,并且不能选择这些视图组件以供在所述主机设备上执行。在至少一个实施例中,被选应用的全部组件都在由所述头部单元执行的第一组件集之中,而第二组件集为空,所述被选应用中没有组件会被所述主机设备执行。
87.在一些其他实施例中,所述主机设备可以选择一个第三组件集以由另一台计算设备(诸如,本文中所描述的移动设备26或另一台计算设备28) 执行。类似于上述框406中所描述的,所述主机设备可以利用当前操作特性来确定并选择哪些组件由这一其他计算设备执行。
88.接下来,方法400继续到框410。在框410中,将所述第一组件集提供给所述头部单
元以供所述头部单元执行。在各种实施例中,所述主机设备推送、下载或以其他方式与所述头部单元交互,从而将这些组件提供给所述头部单元。在各种实施例中,所述头部单元的操作系统协调在所述头部单元上执行的组件与在所述主机设备上执行的组件之间的交互,从而使用户体验就如同整个应用都在所述头部单元上执行一样。在一些实施例中,所述头部单元可以存储在框404可由所述主机设备选择的多个应用中每一个的全部组件。在至少一个这样的实施例中,所述主机设备通知所述头部单元执行哪些组件,以及哪些组件会由所述主机设备执行。
89.在一些其他实施例中,如果选择第三组件集以由另一台计算设备执行,那么所述主机设备将那些组件提供给该另一台计算设备以供该计算设备执行。在一些实施例中,在所述头部单元上执行的第一组件集可与在另一台计算设备上执行的第三组件集交互,从而便于所述应用的联动协调运行。
90.接下来,方法400继续到框412。在框412中,结合在所述头部单元上执行的第一组件集,所述主机设备执行所述第二组件集。如在本文中所描述,所述应用被如此设计从而使所述应用组件中的至少一些能够彼此独立并且在不同设备上执行。如此以来,所述应用不会察觉或注意到什么组件在哪台设备上执行、以及是在所述头部单元上还是所述主机设备上还是一些其他设备上执行这些组件。
91.在各种实施例中,在所述主机设备上执行的第二组件集与在所述头部单元上执行的第一组件集交互,从而使所述被选应用能够按照所述应用的设计正常运作。在一些实施例中,如果选择第三组件集并且所述第三组件集在另一台计算设备上执行,那么在所述主机设备上执行的第二组件集会与在另一台计算设备上执行的第三组件集交互,从而使所述被选应用能够按照所述应用的设计正常运作。
92.方法400继续到框414,以下结合图5对其进行更为详细的描述。简要地,然而,所述主机设备监控当前操作特性,所述当前操作特性与所述被选应用的运行以及所述头部单元、所述主机设备或执行所述应用的至少一部分的任何其他设备相关联。所述主机设备能够持续监控所述操作特性,同时还配合在所述头部单元上对所述第一组件集的执行,执行所述第二组件集。在各种实施例中,在预定的时间或者当信息或状态发生变化时,所述头部单元会将信息和状态更新提供给所述主机设备。例如,所述头部单元会每分钟一次地将其物理位置提供给所述主机设备,但是当所述头部单元选择或者识别新用户时,所述头部单元会提供关于所述主机设备的当前用户所发生的变化。提供给所述主机设备的信息受到监控,所监控到的变化会被用来动态地改变选择哪些组件由所述头部单元执行。
93.方法400继续进行到决策框416,从而确定所述当前操作特性是否已经发生变化。在各种实施例中,如果所述操作特性的一个值改变并超出预定阈值,则发生所述变化。例如,如果所述汽车的位置移动了一千多公里,或者所述头部单元上的负载上升30%,那么已经发生了可能影响到所述应用的共享执行的变化。这些示例是非限制性的,并且其他参数也可被用来确定所述当前操作特性中是否存在变化,该变化可被用来修改对应用的选择或者对提供给所述头部单元以供所述头部单元执行的组件的选择。如果识别到所述当前操作特性中的变化,那么方法400会回到框404,从而在框406和框408中选择其他应用或者选择一个新的组件集以由所述头部单元或所述主机设备执行;否则方法400会回到框414,从而继续监控所述当前操作特性以发现所述当前操作特性中的变化。在各种实施例中,在所述
主机设备监控所述操作特性的同时所述被选应用会被继续执行。
94.图5示例了根据本文所描述的实施例用于监控所述头部单元环境的操作特性以识别变化的方法的逻辑流程图,其中所述变化会对是否要修改哪些应用或组件在所述头部单元上执行产生影响。
95.在“开始”框之后,方法500自框502开始。在框502,监控所述汽车的位置。在各种实施例中,所述汽车位置的变化可以表明所述当前操作特性的变化,其促进在所述头部单元上执行的组件的变化。例如,如果所述汽车正在一个会将所述汽车带到蜂窝移动网络覆盖受限的或蜂窝移动网络覆盖不到的区域的方向上移动,那么所述主机设备会希望在失去网络连接之前向所述头部单元提供所述应用的额外组件。由于在所述头部单元上执行的组件与在所述主机设备上执行的组件相互协调,如果所述头部单元失去蜂窝移动网络的访问,那么该协调便会被暂停,这会减少或停止所述应用的功能。然而,通过将额外组件从所述主机设备提供给所述头部单元,所述头部单元不必依赖所述蜂窝移动网络连接与在所述主机设备上执行的组件相协调,便能够执行所述应用。所述汽车位置的其他类型的变化同样可被监控。
96.方法500继续进行到框504。在框504,监控所述主机设备和所述头部单元之间的网络连接。在各种实施例中,所述头部单元可定时向所述主机设备发送心跳消息,所述心跳消息表明仍有网络连接。在其他实施例中,接收其他操作特性的信息或状态更新同样可以代表所述网络连接。在一些其他实施例中,所述主机设备可以通过向所述头部单元发送消息并计算其返回所需的时间长短来检验所述网络连接。实施例是不受此限制的,并且还可以应用其他类型的网络连接检测或监控技术。如果所述网络连接继续变得更为糟糕,那么所述主机设备会将更多组件推送给所述头部单元,但是如果所述网络连接得到改善,那么所述主机设备会从所述头部单元收回对一些所述组件的执行。
97.方法500到框506。在框506,监控网络数据的使用情况。在各种实施例中,所述主机设备计算所述主机设备和所述头部单元之间双向传输的数据量。在一些实施例中,所述头部单元可追踪在所述头部单元和一个或多个数据服务器(诸如,图1中的远程数据服务器126)之间双向传输的数据量。所述头部单元将该追踪到的数据提供给所述主机设备,从而使所述主机设备能够确定正为所述头部单元所使用的网络带宽的总量。在一些实施例中,随着使用的网络数据量的增加,可向所述头部单元提供额外组件以供所述头部单元执行,从而尝试减少在协调所述主机设备上执行的组件和所述头部设备上执行的组件过程中所使用的网络数据量。
98.接下来,方法500继续到框508,监控每个应用的使用情况。所述头部单元可将关于应用使用情况的各种值提供给所述主机设备。上述值可包括用户使用应用的时间量、所述应用所使用的计算资源量、使用频率、所述汽车的使用和位置的关联性、每天使用的时间或者与用户如何使用应用相关的其他可测量的方面。
99.该被监控的使用情况可被用来预测用户将在何时使用该应用以及使用的程度,并且在任何给定时间改变选择哪些应用并将其提供给用户。例如,假设用户在高速公路上开车时仅使用特定的音乐应用。如果在图4的框402,所述主机设备最初识别到所述汽车在城市道路上行驶,那么便不会在框404选择该应用。因此,所述音乐应对所述用户来说当前不可使用。当所述主机设备识别到所述汽车正在高速公路上,其会选择所述音乐应用并将所
述音乐应用提供给所述头部单元,诸如,如本文所描述,通过选择所述音乐应用的哪些组件将会由所述头部单元执行以及所述音乐应用的哪些组件将会由所述主机设备执行。
100.接下来,方法500继续到框510。在框510,识别所述头部单元的用户的变化。在一些实施例中,所述汽车的占用者可利用在所述头部单元上的用户界面为所述头部单元选择一个不同用户。在其他实施例中,开始访问所述汽车中的配件的移动设备可代表不同的用户。所述头部单元可将所述新用户的标识提供给所述主机设备,这样的标识符会被用来选择所述新用户的资料,并且选择其他应用以提供给所述头部单元。
101.方法500继续进行到框512。在框512,监控所述头部单元的负载。所监控的负载可以包括处理器使用比、已用或可用的存储量或者其他的计算资源容量使用情况。如果在所述头部单元上的当前负载增加到超出预定阈值,那么在所述头部单元上的当前负载的变化可表明一些组件,尤其是计算繁重的组件,应当由所述主机设备执行,而非由所述头部单元执行。因此,如本文所描述,所述主机设备可以修改哪些组件在所述头部单元上执行的选择。
102.在框512之后,方法500结束或返回到调用进程以执行其他功能。
103.在各种实施例中,可以单独地或以组合方式监控和使用一个或多个当前操作特性,从而确定在所述当前操作特性中是否有变化,该变化促进在提供给所述头部单元的应用中的变化,或者在关于哪些组件由所述头部单元执行而哪些组件由所述主机设备执行的选择中的变化。这些变化会实时地或接近实时地在所述头部单元被使用时发生。因此,基于与所述头部单元相关联的当前操作特性,所述主机设备动态地监控和调整所述应用的组件在哪里执行。此外,上述描述的操作特性是非限制性的,并且其他影响所述头部单元的用户体验或者操作环境的操作特性也可以被监控。
104.尽管对图4中的方法400和图5中的方法500的描述中参考了头部单元用户的所述头部单元上运行的应用,但是实施例不受此限制。在其他实施例中,可以实施方法400和方法500以动态地调整哪些应用组件在一些其他计算设备(诸如,结合图2a所述描述的计算设备28或移动设备26) 上执行,用户可以根据本文所描述的实施例利用这些设备来运行应用。
105.在一些其他实施例中,可由头部单元或其它计算设备28,而非所述主机设备,执行方法400和方法500。在至少一个这样的实施例中,正是所述头部单元选择提供给所述头部单元的用户的一个或多个应用;选择哪些组件会在所述头部单元上执行;选择哪些其他组件会在所述主机设备或其他任何设备上执行;提供所述其他组件给那些其他设备,并监控其自身的当前操作特性,从而确定在所述操作特性中是否有变化;以及基于那些改变了的操作特性,动态地调整哪些组件在哪个设备上执行。
106.应当理解的是,除非上下文中另作明确指示,在各种流程图中所描述的实施例可以平行地、顺序地或者以其组合的方式执行。据此,在各种流程图中的一个或多个框或框的组合可以与其他的框或框的组合同步执行。另外,一个或多个框或框的组合可以按照不同于流程图中所示顺序的顺序执行。
107.图6呈现了一个系统图,其描述了计算系统的一种实施方式,所述计算系统用于实施本文所描述的实施例。系统600包括头部单元104、主机设备124、配件108

110以及移动设备114

116。
108.一个或多个专用计算设备被用于实施主机设备124,从而如本文所描述,动态地选择哪些应用组件由所述头部单元104执行以及哪些组件由所述主机设备124执行。据此,本文所描述的各种实施例可以软件、硬件、固件或其一些组合的形式被实施。主机设备124包括存储器644、一个或多个中央处理单元(cpu)662、i/o界面666、其他计算机可读介质668以及网络界面670。
109.存储器644可以包括一个或多个各种类型的永久性和/或易失性存储技术。存储器644的例子包括,但不限于,闪速存储器、硬盘驱动器、光盘驱动器、固态驱动器、各种类型的随机存取存储器(ram)、各种类型的只读存储器(rom)、其他的计算机可读存储介质(也被称作处理器可读存储介质)或其他存储技术或其任何组合。存储器644可被用来存储信息,包括被cpu662用来执行功能的计算机可读指令,其包括本文所描述的至少一些实施例。
110.存储器644可在其上存储了各种模块,包括动态应用管理器模块646。所述动态应用管理器模块646监控与所述头部单元104相关联的操作特性,并且确定哪些组件由所述头部单元104执行,而哪些组件由所述主机设备 124执行。所述动态应用管理器模块646将所述被选组件通过通信网络122 提供给所述头部单元104。所述动态应用管理器模块646可以通过通信网络122从所述头部单元104接收各种各样的数据和信息,从而识别与所述头部单元104相关联的操作特性或是在所述操作特性中发生的变化,其被用来动态调整对于在所述头部单元104上执行的组件的选择。
111.存储器644还存储了应用648。应用648包括一个或多个应用的多个组件。如本文所描述,所述主机设备124确定哪些组件由所述头部单元104 执行,哪些组件由所述主机设备124执行。所以应用648的一些组件可由 cpu662在主机设备124上执行,而一些可被作为应用614提供给头部单元104,并由cpu622在头部单元104上执行。
112.存储器644还可存储其他程序650和其他数据652。所述其他数据652 可以包括用户的一个或多个使用所述头部单元104的用户的资料。例如,如果多人驾驶包括所述头部单元104的汽车,可为每个不同的驾驶者存储一份资料。还可存储所述汽车的一个或多个乘坐者的资料。每份资料可以包括一个所述用户最常使用的应用的列表、最近被使用的应用的身份、用户偏好和其他信息。这些资料可被主机设备124用来确定头部单元104的当前操作特性。例如,在一些实施例中,用户会选择一个用户标识或将一个用户标识输入到头部单元104,或者头部单元会基于用来启动所述汽车的钥匙或密钥卡来确定所述用户标识。头部单元104将该用户标识提供给主机设备124。主机设备124使用所述用户标识在其他数据652中查阅相应的用户资料。所述用户资料中的信息会被用作与头部单元104相关联的当前操作特性初始集合。
113.i/o界面666可以包括用于各种其他输入或输出设备的界面,诸如音频界面、显示器界面、其他视频界面、usb界面等等。其他计算机可读介质668可以包括其他类型的静态的或可移动的计算机可读介质,诸如可移动闪存盘、外接硬盘等等。网络界面670被配置来与其他计算设备通信,诸如通过通信网络122的头部单元104。
114.一个或多个专用计算系统被用来实施头部单元104,从而如本文所描述的,执行应用组件并与所述主机设备124通信。据此,本文所描述的各种实施例可以软件、硬件、固件或其一些组合的形式被实施。头部单元104 包括存储器604、一个或多个中央处理单元(cpu)622、显示器624、i/o 接口626、其他计算机可读介质628以及网络接口630。
115.存储器604可以包括一个或多个各种类型的永久性和/或易失性存储技术。存储器604的例子包括,但不限于,闪速存储器、硬盘驱动器、光盘驱动器、固态驱动器、各种类型的随机存取存储器(ram)、各种类型的只读存储器(rom)、其他的计算机可读存储介质(也被称作处理器可读存储介质)或其他存储技术或其任何组合。存储器604可被用来存储信息,包括被cpu622用来执行功能的计算机可读指令,其包括本文所描述的至少一些实施例。
116.存储器604可在其上存储了各种模块,包括用户设备管理器模块608 和配件管理器模块610。用户设备管理器模块608可以通过移动设备通信网络120与移动设备114

116中的一个或多个通信。用户设备管理器模块 608可以接收来自所述移动设备114

116的命令请求,以控制配件108

110,并且能够向所述移动设备114

116发送配件数据和信息。配件管理器模块 610可以通过配件通信网络106与配件108

110中的一个或多个通信。所述配件管理器610可以接收来自配件108

110的配件数据和信息,并且发送命令请求以控制配件108

110。
117.存储器604还在其上存储了应用614。应用614包括一个或多个应用的一个或多个组件,如本文所描述,其由所述主机设备124提供给所述头部单元104,并由所述头部单元104执行。应用614可以包括一个或多个配件。这些配件可以包括如导航应用、无线电和音频应用、汽车环境控制应用、汽车性能或保养应用或者其他汽车相关的应用。
118.存储器604还可存储其他程序618和其他数据620。所述其他数据620 可以存储配件数据或者与所述各种配件108

110相关联的其他数据。例如,所述其他数据620可以存储音乐播放列表或无线电台收藏、地图路径、用户联系人信息、用户对平视显示信息和布局的偏好等。
119.显示器624是能够向用户提供内容或信息的显示器设备。例如,显示器624会显示地图、无线电台信息、应用、所述汽车的环境控制、其他用户界面等。所述显示器624可以是液晶显示器、发光二极管或其他类型的显示设备,其包括一个触敏屏幕,所述触敏屏幕能够接收来自用户的手、触笔或其他物体的输入。
120.i/o接口可以包括用于各种其他输入或输出设备的界面,诸如音频界面、其他视频界面、usb界面等等。
121.其他计算机可读介质628可以包括其他类型的静态的或可移动的计算机可读介质,诸如可移动闪存盘、外接硬盘等等。
122.网络接口630被配置来与其他计算设备通信,诸如通过通信网络122 的主机设备124、通过移动通信网络120的移动设备114

116和通过配件通信网络106的配件108

110。
123.为了说明之便,参考头部单元104对系统600进行描述。但如上文所描述,其他计算设备28或移动设备26也可被用于实施如本文所描述的、动态地分配在单独处理设备上会被执行的应用组件。并且那些系统可以包括相对于头部单元104所列举的类似的计算资源,诸如处理器、显示器、网络界面、存储器、其他界面等。
124.可对上文所描述的各种实施例进行组合以提供进一步的实施例。可以根据以上详细的描述对所述实施例做出这些改变以及其他的改变。一般地,在以下权利要求中所使用的词语不应被理解为将所述权利要求限制为说明书和权利要求中公开的具体实施例,但是应当被理解为包括在此类权利要求有权享有的等价物的充分范围内的一切可能的实施例。据此,所述权利要求不受本公开内容的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献