在多个设备之间共享内容的利记博彩app

文档序号:7990188阅读:365来源:国知局
在多个设备之间共享内容的利记博彩app
【专利摘要】提出了用于在设备组的用户设备之间分发内容的系统和方法。在一个示例中,访问描述用户设备之间的逻辑关系的逻辑关系信息。基于所述逻辑关系信息来确定多个所述用户设备的设备组中的成员。通过通信网络来接收来自所述设备组的所述用户设备中的至少一个的内容。所接收到的内容通过所述通信网络转发到所述设备组的其他用户设备。
【专利说明】在多个设备之间共享内容
[0001] 相关专利f件的夺叉引用 本专利申请要求2012年2月24日提交的标题为"SHARING CONTENT AMONG MULTIPLE DEVICES"的美国专利申请No. 13/404, 356、2012年2月24日提交的标题为"SHARING CONTENT AMONG A GROUP OF DEVICES" 的美国专利申请 No. 13/404,370、2012年2 月 24 日提交的标题为"USER DEVICE GROUP FORMATION"的美国专利申请No. 13/404, 381、以 及 2012 年 2 月 24 日提交的标题为 "STORAGE AND DISTRIBUTION OF CONTENT FOR A USER DEVICE GROUP"的美国专利申请No. 13/404, 393的权益。这些申请中的每一个要求于2011 年3月23日提交的标题为"SHARING CONTENT AMONG MULTIPLE DEVICES"的美国临时申请 No. 61/466, 849的优先权。前述申请中的每一个都从而通过引用被整体地结合在本文中。
[0002] 版权声明 本专利文件的公开的一部分包含受版权保护的材料。版权所有者不反对在它出现在专 利和商标局专利文件或记录中时由该专利文件或专利公开的任何人的传真复制,但以其他 方式保留任何所有版权权利。以下声明适用于如在下面和在形成本文件的一部分的图中所 描述的软件和数据:版权2012, Color Labs有限公司,版权所有。

【技术领域】
[0003] 本申请一般地涉及内容的通信,并且更具体地,涉及用于内容在多个设备之间的 共享的系统和方法。

【背景技术】
[0004] 因为诸如蜂窝电话、平板计算机以及膝上型计算机之类的便携式通信设备继续发 展以提供改进的音频、视频以及静止图像捕获能力,所以这些设备的用户捕获各种形式的 内容并且与诸如朋友和亲属之类的其他人共享该内容的机会继续增加。在一些情况下,用 户可以借助于明确地确定内容的接受者、手动地将内容附加到电子邮件、"图片邮件"或相 似的通信消息并且使用用户的通信设备将消息和附加内容传送到每个接受者的通信设备 来将内容分发给其他人。通常,分发内容的用户在捕获待分发的内容之前已经将每个接受 者的诸如电子邮件地址或电话号码之类的联系人信息编程到他的通信设备中。
[0005] 在另一示例中,分发内容的用户可以将内容发布到可由内容的预定接受者访问的 单独的互联网网站或其他数据站点,并且随后向接受者通知关于如何访问该内容的消息。 通常,提供对内容的访问的站点被密码保护或者提供仅预定接受者可以通过其访问内容的 一些其他手段。

【专利附图】

【附图说明】
[0006] 通过示例而不是限制的方式在附图的图中举例说明了一些实施例,在附图中: 图1是举例说明示例通信系统的框图; 图2是举例说明在图1的通信系统中共享内容的示例方法的流程图; 图3是举例说明示例通信系统的示例客户端设备的模块的框图; 图4是举例说明示例通信系统的示例服务器的模块的框图; 图5是用通信系统的客户端设备的组标识的示例数据结构的图; 图6是举例说明将客户端设备加入到通信系统内的客户端设备组的示例方法的流程 图; 图7是举例说明为客户端设备确定一组以加入到通信系统中的示例方法的流程图; 图8是举例说明在通信系统中的一组客户端设备之间共享内容的示例方法的流程图; 图9A至9L是由通信系统中的客户端设备提供的示例用户界面的一组屏幕截图;以及 图10是采用计算机系统的示例形式的机器的图解表示,在所述计算机系统内可以执 行用于使机器执行本文中所讨论的方法学中的任何一个或多个的一组指令。

【具体实施方式】
[0007] 讨论了用于共享诸如相片、音频内容、视频内容以及文本内容之类的内容的示例 方法和系统。在以下描述中,出于说明的目的,许多特定细节被阐述以便提供对示例实施例 的彻底理解。然而,对本领域的技术人员而言将明显的是,本主题可以在没有这些特定细节 的情况下实施。还将明显的是,本文中所描述的软件开发的类型不限于所提供的示例并且 可以包括未具体地讨论的其他情形。
[0008] 依照示例实施例,图1举例说明了包括经由通信网络106与服务器104耦合的多 个客户端(用户)设备1〇2八、1028、102(:、1020(更一般地,设备102)的通信系统100。在 这个特定示例中,客户端设备中的三个l〇2A、102B、102C属于组110,针对所述组110,服务 器104将由组客户端设备102A、102B、102C中的一个所捕获的内容120分发给组110的剩 余成员。在这个实施方式中,第四客户端设备102D不属于组110,以及因此不接收由组客 户端设备l〇2A、102B、102C中的任一个发布到组110的内容120。虽然图1显示了三个成 员客户端设备l〇2A、102B、102C的组110,但是大于一的任何数目的客户端设备102可以构 成组110。如在下面被更详细地描述的那样,可以借助于客户端设备102之间的交互来确 定组110的成员客户端设备102,所述交互诸如是设备102之间的通信、设备102的物理接 近、以及描述客户端设备102在一时间段期间可以被多密切或强烈地在逻辑上彼此连接或 者相关的其他参数。
[0009] 图2是如图1中所示出的那样在客户端设备102之间共享内容120的示例方法 200的简化流程图。然而,利用不同组件或系统的其他通信系统可以在其他示例中采用图 2中所描绘的方法。在方法200中,服务器104确定属于组110的客户端设备102(操作 202),如上面所提到的那样。组110的客户端设备102A中的一个然后可以捕获诸如音频、 视频、静止图像或类似物之类的内容120 (操作204)。客户端设备102A然后将内容120传 送到服务器104 (操作206),所述服务器104将内容120传送到组110的其他成员客户端 设备102BU02C (操作208)。在一个示例中,内容120还可以经由节点108的应用编程接 口(API)而被分发给单独的通信节点108 (在图1中示出),以便同样可以从其他设备访问 内容120。通信节点108的示例可以是托管特定网站或消息服务的服务器,所述消息服务诸 如 Shuttcrfly? 或 Twitter?。
[0010] 在另一示例中,方法200可以被编码为非瞬态计算机可读存储介质上的指令,所 述非瞬态计算机可读存储介质诸如例如集成电路、磁盘或光盘,所述指令可由诸如图1的 客户端设备102和服务器104之类的一个或多个计算机或其他处理系统读取和执行。
[0011] 在图1中,客户端设备102能够捕获内容120,诸如相片、音频和/或视频、文本数 据(诸如由设备的用户所生成的)或对于一个或多个用户而言感兴趣的任何其他类型的内 容120,并且向设备102的用户显示该内容120。客户端设备102的示例可以包括但不限于 移动通信设备,诸如蜂窝电话、个人数字助理(PDA)、数字相机、膝上型计算机、平板计算机 以及上网本。
[0012] 通信网络106可以是能够通过有线或无线地促进客户端设备102与服务器104之 间的通信(包括内容120的传送)的任何通信网络。通信网络106的示例可以包括但不限 于广域网(诸如互特网)、局域网(LAN)(诸如IEEE 802. llx (Wi-Fi)网络)、蓝牙连接、 近场通信(NFC)连接、以太网连接、移动或蜂窝通信设备网络(诸如第三代(3G)或第四代 (4G)连接)以及微小区网络中的任一个和/或全部。通信网络106可以构成服务器104与 客户端设备102中的每一个之间的直接连接,或者可以包括任何数目的发射机、接收机、交 换机、中继器以及其他部件来促进服务器104与客户端设备102之间的通信。
[0013] 服务器104可以是能够从客户端设备102接收内容120、将内容120转发到其他 客户端设备102以及执行如在下面进一步描述的与服务器104相关联的其他任务的任何设 备或系统。服务器104可以是例如被编程为协调客户端设备102的组110的形成并且促进 由组110的一个或多个成员设备102所生成的内容120到组110的其他成员的传送的基于 处理器的系统。在一个示例中,服务器104可以被实现为一个或多个组件,诸如处理系统和 相关数据库,可能体现为可经由通信网络106访问的"云"解决方案。在另一示例中,服务 器104可以是部署在通信服务提供商站点、会议中心或特定事件或会议正进行的位置处的 系统或设备。在一些实施方式中,服务器104可以与通信网络106的一个或多个组件、或附 连到其的设备(诸如无线或微小区接入点、本地化集线器)、或甚至客户端设备102中的一 个相结合。例如,代替使用明确的客户端-服务器拓扑,通信系统100可以被配置为对等网 络,其中客户端设备102中的一个或多个执行如本文中所描述的服务器104的职责。
[0014] 在一些实施例中,客户端设备组110表示借助于由服务器104检测到的在成员设 备102之间发生的"交互"标识的多个客户端设备102。客户端设备102之间的交互可能是 被动的(例如,客户端设备102维持极接近彼此达一段时间)以及主动的(例如,从一个客 户端设备102向另一个发起的呼叫、SMS消息或其他通信)。可能使它们等同于同一组110 的客户端设备102之间的交互类型可以包括但不限于在客户端设备110之间已发生的通信 的数目、客户端设备102之间的通信的时间长度、客户端设备102之间的物理距离、客户端 设备102在物理上处于极接近的时间长度、以及涉及客户端设备102的其他情况和/或活 动。在一些实施方式中,如果两个设备102之间的唯一或重要特征的某类型的逻辑交互正 在发生或者已发生,则同一组110的两个客户端设备102不需要保持极接近或者参与设备 102之间的直接通信。例如,其用户已将彼此标识为"朋友"以及因此可能过去已经直接地 且广泛地通信的客户端设备102可以属于组110,而不管相关联的客户端设备102的物理接 近如何。这类朋友可以包括但不限于个人的朋友、朋友的朋友、亲属以及共享或拥有一个或 多个共同兴趣或背景的用户。出于在一些示例中定义客户端设备组110的目的,这类逻辑 交互连同上面提到的用户之间的更明确的交互一起可以被认为是各个用户或用户设备之 间的交互或逻辑关系。
[0015] 如由服务器104检测到的或者被传送到服务器104的这些交互中的任一个或全部 可以有助于服务器104确定或计算客户端设备102中的两个之间的"连接强度"或"密切关 系"。在一些示例中,展示出相对较高的连接强度或密切关系的客户端设备102倾向于指示 设备102应该等同于组110或者为组110的成员,而客户端设备102之间的相对较低的连接 强度或密切关系倾向于指示设备102不应该为同一组110的成员。在至少一些实施例中, 因为服务器104可以检测或接收有关如上所述的客户端设备102之间的交互的信息,所以 描述所述交互的信息的焦点可能是在客户端设备102本身上,而不是在客户端设备102的 用户上。结果,服务器104不需要收集客户端设备102的任何用户的个人可识别信息以确 定或者计算任何两个客户端设备102之间的连接强度或密切关系。个人可识别信息将通常 包括敏感信息,诸如全名、驾照号码、信用卡账号等等。
[0016] 此外,因为服务器104可以根据客户端设备102交互、来自用户的有关在网络或组 110中包括的哪些客户端设备102可能是不必要的明确指导来将客户端设备102加入组中。 进一步地,服务器104可以在没有诸如密码或其他安全措施的明确使用之类的任何正式的 客户端设备102认证处理的情况下,构建组110并且管理组110中的客户端设备102的成 员。
[0017] 在一些示例中,两个或更多个客户端设备102之间的连接强度或密切关系随着时 间的推移可能不会保持不变。例如,在特定事件下用他们相应的客户端设备捕获相片的两 个用户可能从不直接地与彼此进行通信,并且可能不会在任何显著的时间长度内同时存在 于任何其他位置。结果,服务器104可以将两个客户端设备102之间的这种连接视为临时的 或"短暂的",从而使两个客户端设备102在短时间段内与相同组110相关联。因此,组110 中的成员可以随着时间的推移而盛衰,并且甚至组110可能是短期的。因此,这样的组110 可以被认为是一种"弹性网络"或"动态网络",其中成员可能由于组110内以及在组110外 部的客户端设备102之间的持续交互(或其缺乏)而随着时间的推移改变。在这种情况下, 术语"网络"被采用以指代客户端设备102的组110,如上所述。
[0018] 在一个实施例中,一旦服务器104形成客户端设备102的组110,组110的任何成 员可以将诸如音频、视频、文本、静止图像等等之类的内容120发布到服务器104,所述服务 器104然后可以将内容120分发给组110的其他成员。在图1的特定示例中,服务器104 已形成了包括第一客户端设备102A、第二客户端设备102B以及第三客户端设备102C的 组110。第四客户端设备102D由于未拥有比得上其他客户端设备102A、102B、102C之间的 连接强度或密切关系的连接强度或密切关系而未被包括在组102D中。当第一客户端设备 102A然后经由通信网络106将内容120发布到服务器104时,服务器104进而将内容120 转发到组110的所有其他成员(在这种情况下,第二客户端设备102B和第三客户端设备 102C),但不转发到不是组110的成员的那些客户端设备102 (在这个示例中,第四客户端 设备102D)。类似地,服务器104可以将由第二客户端设备102B或第三客户端设备102C发 布的内容分发给组110的其他成员。
[0019] 图3和4分别是可以用作图1中所描绘的服务器104和客户端设备102中的一个 的客户端设备300和关联服务器400的示例实施例的框图。在图3中,客户端设备300包 括多个软件和或硬件模块,诸如用户界面模块302、位置服务模块304、环境检测模块306、 时间同步模块308、惯性运动模块310、内容高速缓存模块312、内容推送机制模块314、内容 摄取模块316以及调谐参数模块318。在其他客户端设备300中,可以省略模块302-318中 的一个或多个,并且可以包括未在图3中描绘的一个或多个模块。
[0020] 在客户端设备300中,用户界面模块302可以促进客户端设备300的用户对内容 120在组110内的各个方面的共享的访问,包括但不限于提供关于要加入哪一个组110的明 确输入、将内容120发布到组110以及接收由组110中的其他客户端设备102发布的内容 120。在下面结合图9A至9L更详细地讨论由用户界面模块302所提供的用户界面的更特 定示例。
[0021] 位置服务模块304可以提供或者生成有关用户客户端设备300的物理位置的信 息。在一个示例中,位置服务模块304可以借助于从GPS系统、辅助GPS (A-GPS)系统、Wi-Fi 定位系统和/或小区站点三角测量接收到的信号来确定位置。位置服务模块304可以借助 于客户端设备300的电路接收此类信号并且处理所述信号中的一个或多个以确定位置。
[0022] 环境检测模块306可以从驻留在客户端设备300上或与客户端设备300通信的一 个或多个传感器接收信号以指示在客户端设备300附近的各种环境条件。例如,这样的信 号可以指示如由诸如测光计、加速度计、陀螺仪、温度计等等之类的传感器所生成的大气压 力、温度、光、速率、加速度、方位等等。例如,加速度的持续改变可以指示客户端设备位于移 动的汽车中,或者检测到多个语音可以指示存在于人群内。环境检测模块306还可以采用 来自各种通信网络接口的信号来补充并且增强由位置服务模块306所生成的客户端设备 300的位置信息以更接近地定义客户端设备300的位置,所述来自各种通信网络接口的信 号诸如近场通信(NFC)信号、蓝牙?通信信号、Wi-Fi通信信号等等。
[0023] 时间同步模块308可以提供定时信息,诸如时间戳,所述定时信息被周期性地从 服务器400接收(并且在本地保持在时间同步模块308中)以标记各种位置数据(来自位 置服务模块304)和/或环境数据(来自环境检测模块306)何时被接收或者生成。如在下 面被更全面地描述的那样,位置数据和环境数据连同它们的定时信息一起可以被上载到服 务器400,所述服务器400然后可以将所述数据与来自其他客户端设备300的对应数据相比 较以确定客户端设备300的相对物理接近,以及因此至少部分地确定客户端设备300中的 哪一个可以被一起分组。
[0024] 通常,惯性运动模块310帮助确定在客户端设备300已与服务器400失去联系的 时间段期间或者在与服务器400间歇联系的周期期间,客户端设备300可以在特定组110 中保持多久。在一个示例中,惯性运动模块310考虑各种类型的信息,诸如位置信息、时间 信息以及客户端设备300在组110内的活动(例如,内容120到组110的发布、组110通过 客户端设备300的发起等等),以便像在与服务器400最后一次有意义的联系之前做的那样 帮助确定客户端设备300是否应该保持在相同组110中。
[0025] 诸如在当客户端设备300已与服务器400失去联系时的时间期间,内容高速缓存 模块312可以在本地在客户端设备300上存储在客户端设备300处已捕获但尚未被发布到 服务器400的内容120。响应于服务器400与客户端设备300之间的连接正被恢复,包括照 片、音频、视频、注解等等的经高速缓存的内容然后可以被上载到服务器400以便后续传送 到组110的其他客户端设备400。
[0026] 内容推送机制模块314依据"推送"数据传送模型经由通信网络106来促进内容 120和其他数据从服务器400的接收。例如,慧星(Cometheb应用模型可以被采用以依据 "悬挂GET"协议接收内容120和其他数据,在所述"悬挂GET"协议中服务器400无限地保 持来自客户端设备300的超文本传送协议(HTTP)请求以将内容120和其他数据推送到客 户端设备400。
[0027] 内容摄取模块316可以负责取得在客户端设备300处捕获的内容120并且可能在 将数据发布到服务器400之前修改、调整或者以其他方式处理内容120。对于静止图像内 容120而言,这样的处理的示例可以包括但不限于缩放图像以及调整图像的分辨率、方位、 亮度、锐度、色彩、对比度或焦点。这些操作可能取决于若干因素,包括但不限于客户端设备 300的捕获和显示能力、以及耦合客户端设备300和服务器400的通信网络106的速度。内 容摄取模块316还可以将各种元数据与诸如上面所讨论的位置数据和环境数据之类的内 容120打包在一起,可能地以便允许服务器400确定内容120将被分发到的组110。
[0028] 调谐参数模块318可以从服务器400接收可以调节或者修改客户端设备300的模 块302-316中的一个或多个的操作的一个或多个参数。在一个实施方式中,调谐参数模块 318可以接收基于客户端设备300的最后一个已知位置来影响惯性运动模块310的操作的 参数。例如,可以基于在客户端设备300的区域中的可用网络访问来调整在被从组110中 移除之前客户端设备104可能与服务器104失去联系的时间长度或客户端设备300已行进 的距离。在一些示例中,可以从服务器400接收影响其他模块的其他调谐参数,所述其他模 块诸如位置服务模块304、环境检测模块306以及内容推送模块314。此类参数可以包括例 如如何处理在客户端设备300处正接收的接近和环境数据、客户端设备300应该使用什么 通信地址来接收内容120更新等等。
[0029] 在图4中,服务器400可以包括例如API模块402、用户元数据模块404、交互记录 模块406、密切关系计算器模块408、组内容评级器模块410 (其进而可以包括组候选索引 器412和候选评分器模块414)、推送/订阅模块416、存在模块418、内容排队模块420、面 部检测/识别模块422以及图像质量检测模块424。在其他服务器400中,可以省略模块 402-424中的一个或多个,并且可以添加未在图4中描绘的其他模块。
[0030] 用户元数据模块404包含与用于各种用户的多个客户端设备300中的每一个相 关联的信息(诸如与客户端设备300相关联的标识符),以允许与其他客户端设备300通信。 用户元数据还可以包括客户端设备300过去已经与其交互的联系人(诸如其他客户端设备 300)的列表。在一个示例中,联系人可以被划分成活动联系人列表和所有联系人列表。基 于客户端设备300与其他客户端设备300之间的最近交互,服务器400可以针对客户端设 备300将该客户端设备300从所有联系人列表提升到活动列表,并且使活动列表中的客户 端设备300降级到所有联系人列表。提升和降级操作是在下面所描述的由密切关系计算器 模块408所作出的计算的结果。还能够由于来自客户端设备300的用户的直接首要指令而 修改联系人列表。同样可以经由用户元数据模块404存储其他用户偏好,诸如客户端设备 300已经发起或者形成了哪些组110以及客户端设备300将保持在哪些组110中而不管先 前的客户端设备300交互如何(在下面被称为"锁定")。在一些实施方式中,可以基于一个 或多个推理或算法将附加的联系人添加到列表。例如,可以基于例如三角形闭合将特定的 预期联系人添加到客户端设备300A的联系人列表,在所述三角形闭合中客户端设备300A 和预期联系人各具有一个或多个共同联系人。
[0031] API模块402经由服务器400的两个其他模块来促进至少两个功能。对于一个来 说,API模块402使得能够经由交互记录模块406记录客户端设备300之间的交互。进一 步地,API模块402促进回答有关与其他客户端设备300的密切关系的查询,其通过密切关 系计算器模块408来加以计算。在一个示例中,API模块402基于所记录的交互来保持每 个客户端设备300与其他客户端设备之间的密切关系分数,其中密切关系分数(由密切关 系计算器模块408生成)被与阈限值比较以确定其他客户端设备300是被放在用户元数据 模块404中保持的活动联系人列表中还是所有联系人列表中,其中活动联系人列表中的联 系人指示该联系人是活动的。在一些实施方式中阈限可以为浮动阈限,其值可能取决于第 一客户端设备300已经与其交互的其他客户端设备300有多少。在一些示例中其他因素可 能影响该阈限的值。
[0032] 在一个示例中,交互记录模块406可以以先进先出(FIFO)方案的类型记录客户端 设备300与另一客户端设备300之间的最近交互,诸如100或200次交互。结果,较老的交 互在大多数情况下被删除,因为与较新的交互相比它们大概是较不重要的。在一些示例中 不可能严格地根据这样的FIFO方案来处理一些交互,诸如第一客户端设备300已经"加为 好友"或者明确地阻止的另一客户端设备300,因为这样的用户偏好可以被保留,而不管他 们的年龄如何。
[0033] 在图4的示例中,组内容评级器模块410包括两个子模块:候选索引器模块412和 候选评分器模块414。通常,候选索引器模块412确定客户端设备300所属于的一个或多个 可能的组110。该动作可能例如在客户端设备300被第一次加电时、或者在实现本文中所讨 论的各种方法的应用被启动时发生。候选索引器模块412然后可以将一个或多个标识的组 110转发到候选评分器模块414,每当组内容评级器模块410被请求执行该功能,所述候选 评分器模块414然后可以诸如借助于公式来生成分数。例如,组内容评级器模块410相对 于当客户端设备300第一次试图加入组110时或者当客户端设备上载诸如相片、视频剪辑、 音频段、文本块或类似物之类的内容120的项目时可用的一个或多个组110来针对客户端 设备300执行评级。
[0034] 组内容评级器模块410然后可以使用由候选评分器模块414所提供的分数来根据 一个或多个组110对内容120进行排序和评级。相对于内容120具有最高分数的组110然 后可以被选择以供客户端设备130加入。在一些实施方式中,客户端设备300的用户可能 已经特别地指示了针对特定组110的偏好,在这种情况下,组内容评级器模块414可以为内 容120选择那个组110。在一个示例中,组内容评级器模块414将组110的最高分数与阈 限值相比较。如果分数达到阈限,则服务器400可以将相关联的组110推荐给客户端设备 300以便加入,或者自动地将客户端设备300加入到组110。替代地,如果分数小于阈限,则 服务器400可以为客户端设备300生成新的组110,并且将与那个组110相关联的元数据推 送到其他客户端设备300,诸如位于接近于第一客户端设备300的那些,并且允许那些客户 端设备300加入新生成的组110的选项。在一个示例中,每当组内容评级器模块414针对 特定内容120对候选组110进行评级以调整评级时,组内容评级器模块414接收有关第一 客户端设备300与其他客户端设备300之间的接近、连接等等的元数据。
[0035] 存在模块418可以被服务器400采用来确定哪些客户端设备300位于第一客户端 设备300的某预定距离之内。这个服务器400可以使用这个信息来标识可能对加入由第一 客户端设备300发起的新组感兴趣的那些客户端设备300。为此目的,存在|旲块418可以保 持在第一客户端设备300附近的那些客户端设备300的实时索引。对于不接近于第一客户 端设备300的那些客户端设备300而言,服务器400可以轮询那些客户端设备300来确定 它们的位置以便提供它们可能与其相关联的组110。
[0036] 推送/订阅模块416可以为服务器400提供功能以便将内容推送到特定组110的 客户端设备300,以及给客户端设备300提供客户端设备300的用户然后可能订阅或加入的 一个或多个潜在的组110。在一个示例中,服务器400自动地将客户端设备300加入到组 110而不用从客户端设备300请求确认。如上面所提到的那样,可以借助于Comet web应用 模型来促进内容120的推送以依据"悬挂GET"协议将内容120和其他数据分发给客户端设 备 300。
[0037] 内容排队模块420可以保持并且管理仍然将被分发给一个或多个客户端设备300 的内容120。例如,如果客户端设备300的数目高到足以在将内容120分发给组110成员中 的全部的过程中引起明显延迟,则推送/订阅模块420可能不会立即将内容120的各项分 发给组110的所有客户端设备300。在这样的情况下,推送/订阅模块416然后可以将内容 120(以及可能地任何关联的元数据)转发到内容排队模块420,所述内容排队模块420然 后可以保持内容120,或者将内容120传送到仅组110成员设备的子集,直到后来。在内容 排队模块420中对内容120排队的决定可以基于若干因素,可能包括但不限于与组120相 关联的客户端设备300的数目和通信网络106的可用带宽。
[0038] 面部检测/识别模块422可以被采用来在将结果得到的内容120分发给组110之 前基于在图像中检测到的面部或其他重要特征来调整静止或视频图像内容(例如,通过修 剪)。在一个示例中,面部检测/识别模块422还可以使面部特征与人的名字相关联以便生 成标识在内容120中表示的人的元数据。该元数据然后可以在分发给组110之前被附加到 内容120。
[0039] 图像质量检测模块424可以处理静止图像、视频段的一帧或多帧等等以探知图像 或帧的一个或多个方面,诸如定标、分辨率、方位、亮度、锐度、色彩、对比度、焦点等等。图像 质量检测模块424然后可以确定图像的相对质量并且决定该图像或帧是否将被分发给该 组的剩余客户端设备300,或者替代地应该被丢弃。在一些实施方式中,图像质量检测模块 可以在将图像分发给组110之前调整图像,诸如修剪不聚焦区域或图像的不太感兴趣的部 分、使图像增壳等等。
[0040] 图5提供了保持与和特定组110相关联的内容120相关的数据的组数据结构500 的图形表示。在这个特定示例中,组数据结构500提供多个"叶"或"子"数据结构502-510 可以与其相关联的根501或"父"结构。子数据结构502-510的示例可以包括但不限于组 标识符502、用于与组110相关联的每个相片或静止图像的数据结构504A-504N、用于与组 110相关联的每个视频段的数据结构506A-506N、用于与组110相关联的每个音频段的数据 结构508A-508N、以及用于与组110相关联的每个注解的数据结构510A-510N。在一些示例 中,注解可以是来自组110的客户端设备300的用户的字符相关评论(像用户等级等等)的 文本串或其他集合。注解可以与特定内容120或者通常与组110相关联,诸如对其他客户端 设备120加入特定组的邀请。根501和叶数据结构502-510中的任一个或全部还可以包括 与发布内容120的客户端设备300相关联的上面所讨论的元数据或者与其链接,所述元数 据可能包括但不限于:进行发布的客户端设备300的标识、内容120的捕获时间、描述客户 端设备300的位置的信息、以及在客户端设备300处感测到的环境参数。如上所述,这个信 息可以被组内容评级器模块410用来对与内容120相关联的各种可能的组110进行评级。
[0041] 每个组数据结构500可以在逻辑上与被标识为组110的成员的每个客户端设备 300相关联。进一步地,服务器400可以根据它们在组110中的投入而将客户端设备300组 织为作出贡献的设备(例如,将内容120提供或者发布给组110的那些客户端设备300)或 存在设备(正在接收内容120但不提供内容120的那些客户端设备)。在一些实施方式中, 存在设备不被认为拥有和作出贡献的设备一样强的到所述组的连接,因为诸如通过物理上 远离第一组110移动而不贡献内容120并且然后开始与第二组110极接近,它们可以通过 在与另一组110相关联之前临时地与所述组相关联而在组中仅拥有"短暂存在"。
[0042] 图6提供了根据在组110内分发内容的方法的一个特定示例的、在服务器400与 试图加入组110的客户端设备300A之间的操作和交互的总体框图的各部分。除客户端设 备300A以外的其他客户端设备300总体被称为客户端设备300B,如图8中所示。其他可能 的示例可以省略图6中所描述的一个或多个操作和通信,或者可以添加未在其中示出的其 他操作和通信。
[0043] 在图6中,客户端设备300A可以在加电或者启动特定应用时经由API模块402将 初始消息提供给服务器400 (操作602)。这样的消息可以被称为"自举"消息。作为响应, 服务器400可以经由API模块402为客户端设备300的各种模块供应一个或多个调谐参数 (操作604),如上所述。在接收到调谐参数之后的某一时刻,客户端设备300A检索或生成 位置信息(经由位置服务模块304)和环境数据(经由环境检测模块306)(操作606)。客 户端设备300A然后可以经由API模块402将包含所生成的位置数据和环境数据的循环消 息(有时被称为轮询或"我在这里"消息)发送到服务器400 (操作608)。
[0044] 响应于轮询消息602,服务器400的API模块402可以记录特定于客户端设备300A 的信息(操作610)。例如,API模块402可以向存在模块418通知这个信息以便存在模块 418可以确定物理上接近于第一客户端设备300A的其他潜在客户端设备300B。API模块 402还可以使推送/订阅模块416向服务器400订阅客户端设备300A,以便客户端设备300A 将接收有关新内容120、新的组110、客户端设备300A所属于的组110的新的成员客户端设 备300B等等的更新。
[0045] 此外,响应于轮询消息608, API模块402可以用所接收到的位置和存在信息来调 用组内容评级器模块410以为客户端设备300A生成组推荐(操作612)。这个操作的更具 体示例在图7中提供。在那个示例中,组内容评级器模块410可以将客户端设备300A位置 和环境信息提供给候选索引器模块412 (操作702),以便候选索引器模块412可以针对客 户端设备300A来标识候选组110 (操作704)。候选组110可以包括在客户端设备300A附 近的所有组110。在一个示例中,可以相对于预定义区域来定义客户端设备300A的附近,从 而使得候选索引器模块412然后可以针对相同或相邻区域中的各个组110来确定客户端设 备300A相对于其他客户端设备300的位置。还可以考虑不在附近的其他组110,诸如客户 端设备300A的"朋友"可能属于(或最近已属于)的、或者客户端设备300A可能先前已经 被附加到的当前或最近组110。
[0046] 候选索引器模块412然后可以将候选组提供给候选评分器414 (操作706),所述 候选评分器414然后可以独立地给由候选索引器模块412所提供的候选组110中的每一个 评分(如上所述)(操作708),并且将那些分数提供给组内容评级器模块410 (操作710)。 在一个示例中,候选评分器模块414可以接收若干输入因素以为特定组确定分数。一个这 种类型的因素是关于客户端设备300A被附加到的先前的组110或关联的客户端设备300 的、由客户端设备300A的用户采取的明确动作。这样的动作包括例如手动地加入先前的组 110、手动地创建先前的组110、手动地保持附加到先前的组110而不管位置的后续变化如 何(被称为"锁定"到组110)以及将特定客户端设备300指定为"朋友"。这样的朋友是否 存在于候选组110中以及该朋友是否将内容120贡献给候选组110 (包括注解)的信息还 可以被提供给候选索引评分器模块414。候选索引评分器模块414还可以考虑有关与候选 组110的先前交互的客户端设备300A的用户的动作,诸如存在于组110中和内容120和/ 或注解的贡献。在一些示例中,候选索引评分器模块414还可以基于先前与其他组110中 的客户端设备300A相关联的朋友的数目、贡献者等等考虑指示客户端设备300A的相对"孤 单"的一个或多个因素。候选索引评分器模块414还可以考虑由客户端设备300A经由服务 器402的API模块402所提供的时间、位置以及环境信息。
[0047] 候选索引评分器模块414可以通过数值来表示这些因素中的任一个和/或全部, 候选索引评分器模块414然后可以对所述数值进行加权以确定每个因素的相对重要性。可 以对每个值设置各个最大或最小极限。进一步地,一个或多个各种时变函数可以被应用于 每个加权因子值,诸如例如指数衰减、渐近增长或递减斜坡,以便表示时间推移对因子的影 响。例如,与客户端设备300A在各个时间的位置相关的因子可能被采用指数衰减函数来调 节,使得较老的位置随着时间的推移而对于评分而言变得不太重要。接近特定最大值的渐 近增长函数可以适用于解决客户端设备300A的朋友的贡献活动量的因子。诸如客户端设 备300A的用户的关于加入、创建以及锁定组110的手动动作之类的其他因素可以不采用特 定时变函数来加以调节。
[0048] 结果得到的值中的每一个然后可以借助于聚集函数来组合以为候选组110确定 总体分数。在一个示例中,包括因子权重、所应用的时变函数以及聚集函数的总体算法可以 保持不变或静态,然而在其他实施方式中,作为一个或多个机器学习算法的结果,它们可能 随着时间的推移而改变。
[0049] 在接收到候选组和它们的分数时,组内容评级器模块410为客户端设备300A选择 候选组110中的一个,或者为客户端设备300A生成新的组110 (操作712)。在一个示例 中,组内容评级器模块410将每个候选组110的分数与预定阈限相比较。如果候选组110中 的至少一个拥有满足或者超过阈限的分数,则组内容评级器模块410可以针对客户端设备 300A选择具有超过阈限的最高分数的候选组110中的一个或多个以加入。替代地,如果候 选组110当中没有一个拥有和阈限一样高的分数,则组内容评级器模块410可以创建新的 组110以供客户端设备300A加入。在新的组110的情况下,组内容评级器模块410还可以 使用于客户端设备300A的位置和环境元数据与新的组110相关联,以便在客户端设备300A 附近的其他客户端设备300B可以被询问加入新的组110。
[0050] 在一些实施方式中,组内容评级器模块410还可以考虑关于各组的先前用户偏 好,以便为客户端设备300A选择组110。这样的偏好可以包括例如赞同包括特定客户端设 备300B (诸如"朋友")的组110的加入、或阻止包括其他特定客户端设备300B的组110的 加入。这样的偏好可以超越由候选评分器模块414所提供的针对候选组110的分数。
[0051] 在组内容评级器模块410为客户端设备300A选择了可能加入的一个或多个组110 之后,组内容评级器模块410然后可以通过向存在模块418指示客户端设备300A将被加入 到一个或多个候选组110并且将被从客户端设备300A可能在其中活动的其他组110中移 除来使客户端设备300A与所选的一个组或多组110相关联(操作714)。推送/订阅模块 416还可以用来给客户端设备300A订阅针对该组检测到的所有实时改变(操作716),诸如 新内容120、组110成员的改变等等。如果由于位置改变和其他情况而随后批准到那些组 110中的一个的切换,则客户端设备300A还可以订阅附近的其他候选组110。
[0052] 对于本文中所描述的实施例中的至少一些,用于执行有关组110的形成的各种功 能的算法(例如,诸如由密切关系计算器模块408、候选索引器模块412、候选评分器模块 414和/或组内容评级器模块410所执行的那些)可以是基于一种或多种类型的建模。这 样的建模的示例可以包括但不限于逻辑回归、贝叶斯网络、随机森林建模以及神经网络。
[0053] 返回到图6,服务器400的API模块402将所推荐的组提供给客户端设备300 (操 作614)。在一个不例中,API模块402基于由候选评分器模块414生成的最高分数提供针 对所推荐的组110之一的强推荐以供客户端设备300A加入。作为响应,客户端设备300A 的用户选择所推荐的组110中的一个(操作616)。客户端设备300A然后可以经由API模 块402向服务器400通知该选择(操作618)。在另一示例中,服务器400可以简单地为客 户端设备300A选择最高评级的组110并且向客户端设备300A通知组110的选择,在这种 情况下客户端设备300A不需要选择特定组110加入或者向服务器400通知所述选择。在 一些情况下,客户端设备300A可以替代地能够明确地将由服务器400选择的组110改变为 候选组110中的另一个。
[0054] 在一个实施方式中,服务器400可能能够检测多个客户端设备300几乎同时试图 创建新的组110的情况,所述新的组110逻辑上应该是相同的组110。在这个示例中,服务 器400分析一个或多个因素,包括但不限于试图创建新的组110的客户端设备300的位置 和环境条件以及组110的创建的定时。基于该分析,服务器400可以替代地创建单个组110 以供所有所涉及的客户端设备300加入。
[0055] 在这一点上,客户端设备300A和服务器400就客户端设备300A已加入的特定组 110而言达成一致。进一步地,可以响应于一个或多个事件620再次执行决定客户端设备 300A是否应该保持在当前组110中(或者被从组110中移除,可能以便加入新的组110)的 操作606-618的整个评估过程。一个这样的事件620可以为超时定时器或"心跳"计数器 的期满,这可以使客户端设备300A收集位置和环境数据(操作606),并且一旦特定时间段 (例如,三或五分钟)自最后一个轮询消息被发送以来已经过去,就发送包含该数据的另一 轮询消息(操作608)。可以在服务器400或客户端300A中保持心跳计数器。另一这样的事 件620可以是在客户端设备300A附近生成新的组110,在这种情况下服务器400向客户端 设备300A通知新的组110,从而使客户端设备300A发送另一轮询消息608。进一步地,如 果客户端设备300A (经由客户端设备300A的位置或环境数据)检测到明显的物理移动,则 另一事件620可能发生。在一些实施方式中,客户端设备300A的用户可以明确地请求再启 动分组过程,从而构成另一类型的事件620。在每种情况下,服务器400然后可以基于在服 务器400中针对每个组110生成的分数来确定客户端设备300A应该保持在当前组110中, 还是切换到另一组110。在其他示例中,分组操作606-618还可以响应于内容120在客户端 设备300A中的创建或捕获而发生,所述内容120然后被上载到服务器400以用于分发给组 110的其他成员客户端设备300B。
[0056] 在一些实施方式中,组110可能强烈地等同于或者"锁定"到特定位置或集合地 点,诸如本地酒吧或体育场或竞技场。结果,客户端设备300A的用户在进入这样的区域时 可以明确地请求再启动分组过程,或者服务器400可以响应于检测到客户端设备300A已进 入该区域而启动该过程。因此,服务器400因此可以给客户端设备300A提供加入那个特定 组110的选项。类似地,在离开该预定区域时,要么服务器400要么客户端设备300A可以 再次启动分组过程以为客户端设备300A找到另一组110。
[0057] 然而在其他实施例中,服务器400可以带着响应于客户端设备300A的用户不想要 的、讨厌的或欺骗性的行为而从它的当前组110移除客户端设备300A的意图来针对客户端 设备300A启动分组过程。例如,组110的其他成员客户端设备300B可以用信号通知服务 器104请求从组110移除客户端设备300A。根据来自其他客户端设备300B的请求的数目 和性质,服务器400可以再启动分组过程同时要求客户端设备300A从当前组110移除,或 者仅单方面地从组110移除客户端设备300A而不试图将引起问题的客户端设备300A加入 到另一组110。在另一实施方式中,服务器110可以借助于某算法或启发式方法在没有来 自组110的其他客户端设备300B的请求或其他输入的情况下执行此类动作。例如,服务器 104可以在检测到客户端设备300A发布过度大量的内容120或者发布讨厌的内容120 (诸 如不适当的评论、照片等等)时基于决定来将客户端设备300A从组110中排除。
[0058] 在客户端设备300A与服务器400在多个时间段内失去联系并且因此不能够以及 时的方式给轮询消息608提供位置和环境数据的情况下,客户端设备300A的惯性运动模块 310能够确定客户端设备300A是否(或持续多久)保持在所加入的组110中。在一个示例 中,服务器400推送由惯性运动模块310采用的一组指导方针或指令以确定在什么条件下 客户端设备300A已离开它选择的组110。例如,各种条件(诸如缺乏与服务器400联系达预 定最小时间段、客户端设备300A的移动超过某最小距离、和/或客户端设备300A与另一客 户端设备300B (诸如"朋友")之间的交互方面的可能的一些改变)可以使惯性运动模块 310确定客户端设备300A不再是它选择的组110的一部分。
[0059] 虽然加入了组110,但是客户端设备300A可以将在客户端设备300A中捕获或者生 成的内容上载到服务器400以便分发给组110的其他成员客户端设备300B。图8提供了用 于分发或者共享内容120的方法800的流程图。例如,响应于客户端设备300A的用户激活 客户端设备300A的相机按钮、将文本输入到客户端设备300A中、或者执行类似动作,客户 端设备300A捕获相关内容120 (操作802)。
[0060] 客户端设备300A还可以处理内容120,诸如提供照片的缩略图版本以及与该照片 相关的其他信息,以便生成将与内容120包括在一起的附加数据(操作804)。客户端设备 300A还可以向内容120附加经由位置服务模块304和环境检测模块306提供的各种位置 和环境元数据、以及可能地客户端设备300A的标识(操作806)。关于内容120的其他信 息(诸如图像的亮度和对比度分数)还可以被作为元数据附加到内容120。客户端设备300A 然后可以经由API模块402将内容120和附带的元数据上载到服务器400 (操作808)。
[0061] 在接收到内容120和元数据之后,服务器400然后可以处理内容120 (操作810)。 在一些示例中,服务器400经由面部检测/识别模块422和图像质量检测模块424可以修 改内容120,诸如修剪静止图像以更好地示出面部、或者消除具有差的质量的图像的各部分 或整个图像。进一步地,服务器400会能够使用户名与出现在图像中的面部相关联,并且将 那些名字作为元数据提供给接收客户端设备300B。该信息在一些实施例中还可以被用来使 其他客户端设备300B与组110相关联。服务器400可以在其他示例中采用内容120的其 他类型的处理。
[0062] 服务器400还确定客户端设备300A当前与之相关联的组110 (操作812)。在一 个实施方式中,如果客户端设备300A在内容120和相关元数据的上载(操作808)之前已 经保持与服务器400联系,则API模块402可以确定客户端设备300A被加入的当前组110 是预期目标组110。替代地,如果客户端设备300A先前已经与服务器400失去联系,则服务 器API模块402可以使组候选评级器模块410经由与内容120相关联的元数据来确定客户 端设备300A在内容120被捕获或生成时是否属于另一组110。一旦组110确定已被作出, API模块402还可以将内容120和相关元数据作为与组110相关联的组数据结构500的子 数据结构来存储。
[0063] 一旦与客户端设备300A相关联的组110被确定,服务器400然后就可以经由推送 /订阅模块416将内容120和元数据下载到组110中的客户端设备300B (操作814)。例 如,其他客户端设备300B中的每一个可以经由早先提到的彗星模型被发送一个消息,该消 息指示来自客户端设备300A的内容120可用于下载。在一些实施方式中,根据内容120的 大小、在服务器400与其他客户端设备300B之间的连接中可用的带宽以及其他因素,其他 客户端设备300B可以在下载全部内容120之前下载缩略图草图或其他形式的内容120。
[0064] 在下载内容120和任何相关元数据之后,接收客户端设备300B可以诸如借助于客 户端设备300B的用户界面将内容120呈现给用户(操作816)。此外,诸如借助于在下面描 述的内容"日记",内容120可以在客户端设备300B中被归档以供后续检索和呈现给用户。 [0065] 除内容120以外,其他类型的信息能够被推送到特定组110的客户端设备300中 的任一个。这个信息可以包括例如这样的通知:另一客户端设备300已加入接收该通知的 客户端设备300所加入的组110并且新的组110可用于接收该通知的客户端设备300。在 一个实施方式中,包括新内容120的通知的这些通知可以经由接收客户端模块300的用户 界面(诸如经由用户界面的"收件箱"窗口或类似区域)来加以提供。
[0066] 图9A至9L提供了客户端设备300A在如上所述的各种情况下的示例用户界面的 屏幕视图。例如,图9A至9E提供了一系列用户界面视图,在所述一系列用户界面视图中用 户启动诸如"智能"电话之类的客户端设备上的应用,并且提供信息以从在用户界面上表示 的一组客户端设备300中标识客户端设备300A。所述应用提供了在上述示例中的至少一个 中描述的内容共享功能。更具体地,图9A提供在应用被启动时的开始屏幕。图9B的用户 界面呈现客户端设备300A的用户的第一个名字的输入字段902。图9C示出了其中输入字 段902已被填充的后续屏幕。一旦输入字段902被填充了,应用就促使用户提供自拍照片 (如图9D中所示)以便用户可以通过后续屏幕上的照片"图标"来表示。自拍照片被显示 在图9E中。在这一点上,应用为用户做好准备以在加入组并且共享内容过程中加以利用。 在紧跟之后的图9F至9L中,正被共享的内容是静止照片图像和注解,尽管也可以共享其他 类型的内容。
[0067] 图9F提供了当照片正被捕获并且在组110的一组客户端设备300之间分发时的 用户界面的屏幕视图。沿着屏幕右侧的照片带904是从组110的各个成员实时地接收的最 近的照片,其中最近的照片在大显示窗口 906中被加亮。每个均表示当前组110的成员的 照片图标的"带状物"908也被呈现给用户。在诸如图9F的示例之类的一些示例中,带状物 908的照片中的每一个都被调整成基于与图像相关联的一个或多个因素来反映客户端设备 300A相对于组110的相对连接强度或密切关系,所述一个或多个因素诸如例如是与图像相 关联的设备的物理位置和环境数据。在图9F中,最左边的照片(与当前客户端设备300A 相关联)的较高关联由与带状物908的剩余照片相比的图像的亮度和色彩内容来指示,所 述剩余照片基本上缺乏色彩,并且被变暗。还可以采用区分客户端设备300的连接强度或 密切关系的其他方式(诸如锐度或尺寸)。组字段910显示当前组110的成员的名字。图 标中的一个(显出轮廓的图像)示出了名字和照片图标都不与该特定客户端设备300相关 联。
[0068] 图9G提供多个内容"日记"912,其中每个日记912包含被分发给客户端设备300 的特定组110的多个内容项。顶部日记表示当前客户端设备300被或者已被与其相关联的 最近的组110。每个日记912标记有内容项的数目、内容的类型、与组110相关联的每个客 户端设备300的名字以及那个组110的最近的图像多久以前被捕获。
[0069] 图9H提供了在组110由客户端设备300A创建并且当前仅包含如经由组成员区域 914所示出的当前客户端设备300A的情况下的屏幕视图。示出在组成员区域914下面的 内容区域916列出了针对该组110已被发布的内容项,其全部已被当前客户端设备300A捕 犾。
[0070] 图91提供了由组110的各个成员以"收件箱"格式类型发布的注解列表918。注 解918根据发布所述注解的客户端设备300的名字按字母顺序布置,尽管其他布置(诸如 按时间先后)也是可能的。注解918可以包括例如对照片的评论"喜欢"和星级。如图91 中所呈现的那样,每个注解918都提供了注解918的发布者的名字、注解918所针对的客户 端设备300的名字、注解918多久以前被发布、表示发布者的照片图标以及注解918。
[0071] 图9J提供了内容项920 (在这种情况下,照片)的列表的屏幕视图,其中每个照片 标记有该照片的发布者的用户图标922以及发布者的名字和照片多久以前被捕获。
[0072] 图9K描绘了与图9G中所示出的那些类似的若干内容日记924的屏幕视图。
[0073] 图9L举例说明了与图9F的示例类似的正被实时地发布到当前组110的照片的另 一屏幕视图。用户界面包括正被发布到组110的最近的照片的照片带932、照片之一的大显 示窗口 926、经由图标来显示组110的四个成员及它们的相对连接强度或密切关系的照片 图标带状物928、以及列出组110的成员的组字段930。
[0074] 作为本文中所讨论的实施例中的至少一些的结果,诸如静止图像、视频剪辑、音频 段以及文本数据之类的内容的共享可以被容易地在多个客户端设备之间共享,所述多个客 户端设备基于先前的或当前的物理接近、各种设备之间的先前联系人和/或其他因素而形 成它们自己的"网络"。可以在无需客户端设备的用户事先形成或者配置组的情况下、无需 客户端设备的明确授权的情况下、以及无需提供用户的个人可识别信息的情况下"即时"形 成这类组。
[0075] 模块、组件以及逻辑 特定实施例在本文中被描述为包括逻辑或多个组件、模块或机制。模块可以构成软件 模块(例如,在机器可读介质上或者在传输信号中体现的代码)或硬件模块。硬件模块是 能够执行特定操作的有形单元并且可以被以特定方式配置或者布置。在示例实施例中,一 个或多个计算机系统(例如,独立的、客户端或服务器计算机系统)或计算机系统的一个或 多个硬件模块(例如,一个处理器或一组处理器)可以通过软件(例如,应用或应用部分) 而被配置为操作来执行如本文中所描述的特定操作的硬件模块。
[0076] 在各种实施例中,可以以机械方式或电子方式实现硬件模块。例如,硬件模块可以 包括被永久地配置(例如,作为专用处理器,诸如现场可编程门阵列(FPGA)或专用集成电 路(ASIC))成执行特定操作的专门电路或逻辑。硬件模块还可以包括被软件临时配置成执 行特定操作的可编程逻辑或电路(例如,如包含在通用处理器或其他可编程处理器内)。将 领会的是,在专用或永久地配置的电路中或在临时配置的电路(例如,通过软件配置)中以 机械方式实现硬件模块的决定可能是由成本和时间考虑来驱动的。
[0077] 因此,术语"硬件模块"应该被理解成包括有形实体,成为被物理上构建、永久地配 置(例如,硬连线)或者临时配置(例如,编程)成以特定方式操作和/或执行本文中所描 述的特定操作的实体。考虑其中硬件模块被临时配置(例如,编程)的实施例,每个硬件模 块不需要被及时配置或者以任何一个实例实例化。例如,在硬件模块包括使用软件配置的 通用处理器的情况下,该通用处理器在不同时间可以被配置为相应的不同硬件模块。软件 可以因此配置处理器,例如,以便在一时间实例处构成特定硬件模块,而在不同的时间实例 处构成不同的硬件模块。
[0078] 硬件模块能够将信息提供给其他硬件模块,并且从其他硬件模块接收信息。因此, 所描述的硬件模块可以被认为是被通信地耦合。在多个这样的硬件模块同时存在的情况 下,通信可以通过连接硬件模块的信号传输(例如,通过适当的电路和总线)来实现。在多 个硬件模块在不同时间被配置或者实例化的实施例中,此类硬件模块之间的通信可以例如 通过信息在多个硬件模块能够访问的存储器结构中的存储和检索来实现。例如,一个硬件 模块可以执行操作并且将该操作的输出存储在它被通信地耦合到的存储器设备中。另外的 硬件模块然后可以在以后的时间访问该存储器设备以检索并且处理所存储的输出。硬件模 块还可以启动与输入或输出设备的通信,并且能够对资源进行操作(例如,信息的收集)。
[0079] 本文中所描述的示例方法的各种操作可以至少部分地通过被临时配置(例如,通 过软件)或者永久地配置成执行有关操作的一个或多个处理器来执行。无论被临时地还 是永久地配置,这样的处理器可以构成用于执行一个或多个操作或功能的处理器实现的模 块。在本文中涉及的模块可以在一些示例实施例中包括处理器实现的模块。
[0080] 类似地,本文中所描述的方法可以被至少部分地处理器实现。例如,方法的操作中 的至少一些可以通过一个或多个处理器或处理器实现的模块来执行。某些操作的执行可以 分布在不仅驻留在单个机器内而且跨越多个机器部署的一个或多个处理器之间。在一些示 例实施例中,所述处理器或多个处理器可以位于单个位置中(例如,在家庭环境内、办公环 境内,或者作为服务器场),然而在其他实施例中处理器可以跨越多个位置分布。
[0081] 一个或多个处理器还可以用于支持有关操作在"云计算"环境中的执行或者作为 "软件即服务"(SaaS)。例如,操作中的至少一些可以通过一组计算机(作为包括处理器的 机器的示例)来执行,这些操作可经由网络(例如,互联网)并且经由一个或多个适当的接 口(例如,API)访问。
[0082] 电子装置和系统 示例实施例可以用数字电子电路或者用计算机硬件、固件或软件或者用其组合来加以 实现。示例实施例可以使用计算机程序产品(例如,有形地体现在机器可读介质中的信息 载体中的计算机程序)来实现以供数据处理装置(例如,可编程处理器、一个计算机或多个 计算机)执行,或者以便控制数据处理装置(例如,可编程处理器、一个计算机或多个计算 机)的操作。
[0083] 能够以包括编译或解释语言的任何形式的编程语言来写计算机程序,并且能够以 任何形式来部署计算机程序,包括作为独立程序或作为模块、子程序或适于在计算环境中 使用的其他单元。计算机程序能够被部署成在一个计算机上或在一个站点处或者跨越多个 站点分布并且通过通信网络互连的多个计算机上运行。
[0084] 在示例实施例中,操作可以通过运行计算机程序以通过对输入数据进行操作并 且生成输出来执行功能的一个或多个可编程处理器来执行。方法操作还能够通过专用逻 辑电路(例如,现场可编程门阵列(FPGA)或专用集成电路(ASIC))来执行,并且示例实施 例的装置可以被实现为专用逻辑电路(例如,现场可编程门阵列(FPGA)或专用集成电路 (ASIC))。
[0085] 计算系统能够包括客户端和服务器。客户端和服务器通常远离彼此并且典型地通 过通信网络交互。客户端和服务器的关系依靠在它们相应的计算机上运行并且对于彼此而 言具有客户端-服务器关系的计算机程序而形成。在部署可编程计算系统的实施例中,将 领会的是,硬件和软件架构两者都可以被考虑。具体地,将领会的是,是否在永久地配置的 硬件(例如,ASIC)中、在临时配置的硬件(例如,软件和可编程处理器的组合)或永久地 以及临时地配置的硬件的组合中实现特定功能的选择可以是设计选择。在下面阐述了可以 被部署在各种示例实施例中的硬件(例如,机器)和的软件架构。
[0086] 示例机器架构和机器可读介质 图10是具有计算机系统1000的示例形式的机器的框图,在所述计算机系统1000内可 以执行用于使机器执行本文中所讨论的方法学中的任何一个或多个的指令。在可替换的实 施例中,机器用作独立设备或者可以被连接(例如,联网)到其他机器。在联网部署中,机 器可以在服务器-客户端网络环境中以服务器或客户端机器的能力操作,或者在对等(或 分布式)网络环境中作为同等机器。机器可以为个人计算机(PC)、平板PC、机顶盒(STB)、 个人数字助理(PDA)、蜂窝电话、web设备、网络路由器、交换机或桥接器或能够执行规定将 由该机器采取的动作的指令(顺序地或以其他的方式)的任何机器。进一步地,虽然举例 说明了仅单个机器,但是术语"机器"还应该被理解成包括单独地或者共同地执行一组(或 多组)指令以执行本文中所讨论的方法学中的任一个或多个的各机器的任何集合。
[0087] 示例计算机系统1000包括经由总线1008与彼此进行通信的处理器1002 (例如, 中央处理单元(CPU)、图形处理单元(GPU)或两者)、主存储器1004以及静态存储器1006。 计算机系统1〇〇〇可以进一步包括视频显示单元1010 (例如,液晶显示器(LCD)或阴极射线 管(CRT))。计算机系统1000还包括字母数字输入设备1012 (例如,键盘)、用户界面(UI) 导航设备1014 (例如,鼠标)、盘驱动单元1016、信号生成设备1018 (例如,扬声器)以及 网络接口设备1020。计算机系统1000还可以包括可以提供对计算机系统1000或另一设备 存在于其中的环境进行描述的多个输入的环境输入设备1026,包括但不限于全球定位感测 (GPS)接收器、温度传感器、光传感器、静止照片或视频相机、音频传感器(例如,麦克风)、 速度传感器、陀螺仪、加速度计以及罗盘中的任一个。
[0088] 机器可读介质 盘驱动单元1016包括在其上存储了体现本文中所描述的方法或功能中的任何一个或 多个或者被其利用的一组或多组数据结构和指令1024 (例如软件)的机器可读介质1022。 指令1024还可以在其通过计算机系统1000运行期间完全地或至少部分地驻留在主存储器 1004内和/或在处理器1002内,主存储器1004和处理器1002还构成机器可读媒体。
[0089] 虽然机器可读介质1022在示例实施例中被示出为单个介质,但是术语"机器可读 介质"可以包括存储一个或多个指令1024或数据结构的单个介质或多个媒体(例如,集中 式或分布式数据库和/或关联的高速缓存器和服务器)。术语"非瞬态机器可读介质"还 应该被理解为包括能够存储、编码或者承载用于供机器执行并且使机器执行本主题的方法 中的任何一个或多个的指令,或者能够存储、编码或者承载被此类指令利用或者与此类指 令相关联的数据结构的任何有形介质。术语"非瞬态机器可读介质"因此应该被理解为包 括但不限于固态存储器以及光学和磁媒体。非瞬态机器可读媒体的特定示例包括但不限于 非易失性存储器,通过示例的方式包括半导体存储器设备(例如,可擦可编程只读存储器 (EPROM)、电可擦可编程只读存储器(EEPR0M)以及闪速存储器设备),诸如内部硬盘和可移 动盘之类的磁盘、磁光盘以及CD-ROM和DVD-ROM盘。
[0090] 传输介质 可以进一步使用传输介质通过计算机网络1050来发送或者接收指令1024。指令1024 可以使用网络接口设备1020和多个众所周知的传送协议(例如,HTTP)中的任何一个来发 送。通信网络的示例包括局域网(LAN)、广域网(WAN)、互联网、移动电话网、普通老式电话 服务(POTS)网络以及无线数据网络(例如,WiFi和WiMAX网络)。术语"传输介质"应该 被理解成包括能够存储、编码或者承载指令以供机器执行的任何无形介质,并且包括数字 或模拟通信信号或其他无形媒体以促进这样的软件的通信。
[0091] 结论 因此,已经描述了用来在若干通信设备之间共享内容的方法和系统。尽管已经参考特 定示例实施例对本主题进行了描述,但将明显的是,在不背离本主题的较广范围的情况下 可以对这些实施例作出各种修改和改变。例如,虽然以上讨论的大部分注意关于通用计算 机系统和应用使用实施例,但是还可以以与本文中所讨论的方式相似的方式来开发其他基 于软件或固件的系统,诸如采用嵌入式固件的电子产品和系统。因此,本说明书和图将在说 明性意义而不是限制性意义上来看待。形成其一部分的附图通过说明的而非限制的方式示 出了在其中可以实践本主题的特定实施例。所举例说明的实施例被足够详细地描述以使得 本领域的技术人员能够实践本文中所公开的教导。可以利用和从其得到其他实施例,使得 在不背离本公开的范围的情况下可以作出结构上及逻辑上的代替和改变。本具体描述因此 将不以限制意义来理解。
[0092] 如果实际上公开了一个以上,则仅仅为了方便并且并不旨在自愿地将本申请的范 围限制于任何单个发明或发明构思,而可以通过术语"发明"在本文中单独地和/或共同地 提及本发明主题的此类实施例。因此,尽管已经在本文中举例说明并且描述了特定实施例, 但是应该领会的是,被计算以实现相同目的的任何布置可以取代所示出的特定实施例。本 公开旨在涵盖各种实施例的任何和所有适应或变化。上述实施例以及未在本文中具体地描 述的其他实施例的组合对于回顾了上述描述之后的本领域技术人员而言将是显而易见的。
[0093] 在本文件中提及的所有公开、专利以及专利文件通过引用整体地结合在本文中, 就像通过引用单独地结合那样。在本文件与通过引用如此结合的那些文件之间的不一致使 用的情况下,(一个或多个)所结合的引用中的使用应该被认为是对本文件中的使用的补 充;对于不能调和的不一致性而言,本文件中的使用有支配权。
[0094] 在本文件中,术语" 一"或"一个"像在专利文件中通用的那样被用来包括一个或 一个以上,与"至少一个"或"一个或多个"的任何其他实例或使用无关。在本文件中,除非 另外指示,否则术语"或"被用来指非排他性或,从而使得"A或B"包括"A而非B"、"B而非 A"以及"A和B"。
【权利要求】
1. 一种方法,包括: 访问描述用户设备之间的逻辑关系的逻辑关系信息; 使用至少一个处理器基于所述逻辑关系信息来确定多个所述用户设备的设备组中的 成员; 通过通信网络从所述设备组的所述用户设备中的至少一个接收内容;以及 将通过所述通信网络从所述设备组的所述用户设备中的所述至少一个接收到的所述 内容转发到所述设备组的其他用户设备。
2. 根据权利要求1所述的方法,所述设备组中的所述成员的确定包括基于所述逻辑关 系信息来反复地调整所述设备组中的所述成员。
3. 根据权利要求1所述的方法,所述用户设备之间的所述逻辑关系包括所述用户设备 的至少两个用户之间的交互。
4. 根据权利要求1所述的方法,所述用户设备之间的所述逻辑关系包括所述用户设备 中的至少两个之间的通信。
5. 根据权利要求1所述的方法,所述用户设备之间的所述逻辑关系包括所述用户设备 中的至少两个的物理接近。
6. 根据权利要求5所述的方法,所述用户设备中的所述至少两个的所述物理接近由所 述用户设备中的所述至少两个的位置数据和由所述用户设备中的所述至少两个捕获的环 境数据中的至少一个来定义。
7. 根据权利要求5所述的方法,所述设备组中的所述成员的确定包括:在所述用户设 备中的所述至少一个与所述用户设备中的其他的物理接近已结束之后,在所述设备组中保 持所述用户设备中的至少一个的成员资格。
8. 根据权利要求1所述的方法,所述设备组中的所述成员的确定包括基于所述逻辑关 系信息来计算所述用户设备中的至少两个之间的密切关系。
9. 根据权利要求8所述的方法,所述密切关系的计算包括:比起用所述逻辑关系信息 表示的用户设备之间的较不近的交互来说,给用所述逻辑关系信息表示的用户设备之间的 更近的交互分配更大的重要性。
10. 根据权利要求8所述的方法,所述密切关系的计算包括:比起不将内容贡献给所述 设备组来说,给将内容贡献给所述设备组分配更大的重要性。
11. 根据权利要求10所述的方法,内容的所述贡献包括将注解供应给所述内容。
12. 根据权利要求1所述的方法,所述设备组中的所述成员的确定包括:考虑与所述用 户设备相关联的用户偏好,所述用户偏好包括加入与第一用户设备相关联的设备组和拒绝 加入与第二用户设备相关联的设备组中的至少一个。
13. 根据权利要求1所述的方法,所述设备组中的所述成员的确定包括使所述设备组 与预定位置相关联。
14. 根据权利要求1所述的方法,所述设备组中的所述成员的确定包括从所述设备组 移除所述用户设备中的一个。
15. 根据权利要求14所述的方法,进一步包括从属于所述设备组的所述用户设备中的 另一个接收请求,以从所述设备组移除所述用户设备中的所述一个,所述用户设备中的所 述一个从所述设备组的移除是基于所述请求的。
16. 根据权利要求14所述的方法,进一步包括检测与所述用户设备中的所述一个相对 应的讨厌的行为,所述用户设备中的所述一个从所述设备组的移除是基于检测到所述讨厌 的行为。
17. -种用户设备,其包括: 环境输入设备,用来捕获内容; 位置服务模块,用来生成指示所述用户设备在所述内容被捕获时的位置的位置信息; 以及 内容推送模块,用来基于所述用户设备与所述多个用户设备之间的至少一个逻辑关系 将所述内容发送到服务器系统以用于分发给所述用户设备所属于的设备组的多个用户设 备,所述内容推送模块用来与所述内容相关联地将所述位置信息发送到所述服务器系统。
18. 根据权利要求17所述的用户设备,所述环境输入设备用来检测所述用户设备中的 至少一个环境条件,所述用户设备进一步包括环境检测模块以生成指示当所述内容被捕获 时有效的所述至少一个环境条件的环境信息,所述内容推送模块用来与所述内容相关联地 将所述环境信息发送到所述服务器系统。
19. 根据权利要求17所述的用户设备,进一步包括时间同步模块以生成指示所述内容 何时被捕获的定时信息,所述内容推送模块用来与所述内容相关联地将所述定时信息发送 到所述服务器系统。
20. -种服务器系统,其包括: 至少一个处理器;以及 数据储存器,其含有包括将由所述至少一个处理器执行的指令的模块,所述模块包 括: 接口模块,用来接收包括指示所述第一用户设备的地理位置的位置信息的消息; 密切关系计算器模块,用来使用所述位置信息来计算表示所述第一用户设备与其他用 户设备之间的逻辑连接强度的值;以及 组评级器模块,用来基于表示所述逻辑连接强度的所述值来为所述第一用户设备确定 第一设备组,所述第一设备组包括多个所述其他用户设备。
21. 根据权利要求20所述的服务器系统,所述接口模块用来从所述第一用户设备接收 指示与所述第一用户设备相关的至少一个环境条件的环境信息,所述密切关系计算器模块 用来基于所述环境信息来计算表示所述逻辑连接强度的所述值。
22. 根据权利要求20所述的服务器系统,所述组评级器模块用来通过至少部分基于表 示所述逻辑连接强度的所述值生成组推荐来为所述第一用户设备确定所述第一设备组,所 述组推荐包括针对所述第一设备组的第一组推荐。
23. 根据权利要求22所述的服务器系统,所述组评级器模块用来: 基于表示所述逻辑连接强度的所述值对所述组推荐进行评级,表示所述逻辑连接强度 的所述值是基于所述第一用户设备与所述其他用户设备之间的多个通信、所述第一用户设 备与所述其他用户设备之间的所述通信的时间长度、以及关于所述第一用户设备和所述其 他用户设备的用户是否逻辑上连接的指示中的至少一个的; 基于所述第一组推荐是所述组推荐中评级最高的来选择所述第一组推荐;以及 响应于所述第一组推荐的所述选择使所述第一用户设备与所述第一设备组相关联。
24. 根据权利要求22所述的服务器系统,所述组评级器模块用来: 将所述组推荐发送到所述第一用户设备; 从所述第一用户设备接收所述第一设备组的选择;并且 响应于所述选择使所述第一用户设备与所述第一设备组相关联。
25. 根据权利要求22所述的服务器系统,所述组评级器模块包括: 候选索引器模块,用来至少部分地基于表示所述逻辑连接强度的所述值来标识用于所 述第一用户设备的候选组;以及 候选评分器模块,用来基于使所述用户设备与所述候选组中的每一个相关的关联信息 来为所述候选组中的每一个生成分数,所述关联信息被表示为多个数值; 所述组评级器模块用来将所述候选组的所述分数与阈限比较。
26. 根据权利要求25所述的服务器系统,所述组评级器模块用来基于满足所述阈限的 所述候选组中的所述至少一个的所述分数来选择所述候选组中的至少一个作为所述组推 荐中的一个。
27. 根据权利要求25所述的服务器系统,所述组评级器模块用来基于所述候选组中没 有一个的分数满足所述阈限来为所述第一用户设备创建新的设备组作为组推荐。
28. -种非瞬态计算机可读数据存储介质,其包括当被机器的至少一个处理器执行时 使所述机器执行包括以下各项的操作的指令: 基于所述多个用户设备之间的逻辑关系来定义包括多个用户设备的设备组; 将与所述设备组相对应的组数据结构存储在数据存储设备中,所述组数据结构包括父 数据结构; 从所述设备组的第一用户设备接收内容项目; 将所述内容项目作为所述父数据结构的子数据结构存储在所述数据存储设备中;以及 基于被存储在所述组数据结构中的所述内容项目来将所述内容项目发送到所述设备 组的其他用户设备。
29. 根据权利要求28所述的非瞬态计算机可读数据存储介质,所述子数据结构包括与 所述内容项目相对应的元数据,所述元数据包括从所述第一用户设备与所述内容项目一起 接收到的数据。
30. 根据权利要求28所述的非瞬态计算机可读数据存储介质,所述操作进一步包括基 于所述元数据来标识用于与所述第一用户设备关联的所述设备组,所述元数据指示所述第 一用户设备是否已经将各内容项目贡献给所述设备组,当所述第一用户设备已将各内容项 目贡献给所述设备组时,所述第一用户设备更可能与所述设备组相关联。
31. 根据权利要求28所述的非瞬态计算机可读数据存储介质,所述操作进一步包括基 于所述元数据来标识用于与所述内容项目关联的所述设备组。
32. 根据权利要求28所述的非瞬态计算机可读数据存储介质,所述设备组的定义是基 于至少部分地使用所述元数据的所述多个用户设备之间的所述逻辑关系的。
33. 根据权利要求28所述的非瞬态计算机可读数据存储介质,所述元数据包括所述第 一用户设备的标识、所述内容项目的生成时间、指示所述第一用户设备在所述内容项目生 成时的位置的位置信息、以及指示在所述内容项目生成时影响所述第一用户设备的环境条 件的环境信息中的至少一个。
【文档编号】H04L12/58GK104106062SQ201280024677
【公开日】2014年10月15日 申请日期:2012年3月22日 优先权日:2011年3月23日
【发明者】V.马勒, J.程, N.费德尔, E.W.吉伦, G.拉马纳拉亚南, N.J.伍兹 申请人:邻客音公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1