确定重要用户位置以用于提供基于位置的服务的制作方法

文档序号:12290406阅读:345来源:国知局
确定重要用户位置以用于提供基于位置的服务的制作方法与工艺

本公开整体涉及基于位置的服务。



背景技术:

许多电子设备具有基于位置的功能。例如,移动设备可使用卫星导航系统(例如,全球定位系统或者说是GPS)或蜂窝通信系统来估计移动设备的位置。该移动设备可执行位置特定的各种任务。例如,该移动设备上执行的地图应用程序可使移动设备显示地图。地图上的标记可指示该移动设备的当前位置。在接收选择该标记的用户输入时,该移动设备可显示在当前位置附近的感兴趣点,例如餐厅或加油站。在接收指定目的地的用户输入时,该移动设备可显示从当前位置到目的地的路线,以及基于该路线上的交通信息所估计的到达时间。



技术实现要素:

本公开描述了用于确定对用户来说重要的位置以提供基于位置的服务的技术。重要用户位置是指这样的地理位置:它被确定为对移动设备的用户具有重要意义,这样用户有可能会在未来访问该位置。移动设备可基于用户在某个地理位置停留了多长时间,来确定该地理位置是否是重要用户位置。用于确定重要位置的时长可基于提示。提示可为在移动设备上执行或由移动设备检测到的历史或当前动作,该动作指示用户可能对该位置感兴趣。在检测提示时,移动设备可减少用于确定重要位置的预指定阈值时间。

本公开描述了用于自适应位置集群的技术。移动设备可确定指示某个位置对用户来说重要的位置集群的大小。在预指定时间段内,移动设备可记录位置,并确定所记录位置的收敛速率。收敛速率可指示位置多快被集群在一起。较高收敛速率对应于较小大小。移动设备可测量给定收敛速率上的偏差。移动设备可存储与大小关联的位置集群。移动设备可基于位置集群中的位置和该位置集群的大小来确定重要位置。

本公开描述了用于确定日历项的位置的技术。移动设备可接收包括描述和时间的日历项。该移动设备可确定,在日历项中指定的时间,移动设备位于据估计为对用户来说重要的位置。该移动设备可存储与重要位置关联的描述。在接收包含描述中的至少一个词语的新日历项时,该移动设备可预测用户将在新日历项中指定的时间访问重要位置。该移动设备可基于预测来为用户提供辅助。

本公开描述了用于使用位置应用编程接口(API)来确定移动设备的位置的技术。移动设备可接收表示请求移动设备监测重要位置进出情况的输入。该移动设备可调用如API中声明的位置管理器类的对象的开始监测实例函数来开始监测,以及调用如API中声明的对象的停止监测实例函数来停止监测。该移动设备可存储进出情况,或向符合API的函数提供进出记录以便执行各种任务。

可以实现本说明书中描述的特征以获得一个或多个优点。移动设备可学习该移动设备的移动模式,并且使其自身适应此移动模式。该移动设备可基于此移动模式来提供预测性用户辅助,而不需要另外的用户输入,包括例如,如果移动设备基于该移动设备的历史移动模式确定用户将要访问重要位置,那么即使该移动设备未接收到用户询问,也会在用户正在去往该重要位置时警示用户交通状况。因此,该移动设备的用户可在使用该移动设备的服务(尤其是基于位置的服务)时获得更好的体验。例如,该移动设备可确定用户通常在平日早上8:00从家出发去上班,并且在周末早上8:00从家里出发去健身房。在平日早上临近8:00前打开时,该移动设备可自动显示从家到工作地的路线的交通信息;而在周末时,该移动设备可自动显示从家到健身房的路线的交通信息。

在附图和以下说明书中阐述了主题的一个或多个具体实施的细节。根据说明书、附图以及权利要求书,所述主题的其他特征、方面和优点将变得显而易见。

附图说明

图1是示出预测性用户辅助的示例性具体实施的示意图。

图2A是示出确定位置集群的示例性技术的示意图。

图2B是示出基于提示的位置集群的示例性技术的示意图。

图3A是示出基于位置集群来识别重要位置的示例性技术的示意图。

图3B示出自适应集群的示例性技术。

图4A是示出基于位置集群确定的示例性状态模型的示意图。

图4B示出用于确定日历项的位置的示例性技术。

图5是示出状态模型的渐进变化的示意图。

图6A是示出确定示例性状态之间的转变概率密度的示意图。

图6B是示出确定示例性状态的进入概率密度的示意图。

图6C示出用于显示重要位置的示例性用户界面。

图7A、7B和7C是示出实现预测性用户辅助的示例性移动设备的部件的框图。

图7D是示出示例性位置API的框图。

图8A是示出基于提示的位置确定的示例性过程的流程图。

图8B是示出自适应位置集群的示例性过程的流程图。

图8C是示出确定日历项的位置的示例性过程的流程图。

图8D是示出调用位置监测API的示例性过程的流程图。

图9是示出预测未来位置的示例性过程的流程图。

图10是示出实现图1-图9的特征和操作的移动设备的示例性设备架构的框图。

图11是实现图1-图9的特征和操作的移动设备的示例性网络操作环境的框图。

各附图中的类似参考符号表示类似的元件。

具体实施方式

示例性预测性用户辅助

图1是示出预测性用户辅助的示例性具体实施的示意图。示例性移动设备102可利用移动设备102的历史移动来预测移动设备102的未来位置。移动设备102随后可调整移动设备102的行为以执行特定于预测的未来位置的服务。

移动设备102可使用机器学习和数据挖掘技术来了解移动设备102的历史移动。历史移动可被记录为由移动设备102访问的重要位置和移动设备102在重要位置之间的移动。在以足够的确定度确定移动设备102在某个地点或区域停留了足够量的时间时,移动设备102可确定该地点或区域是重要位置。如果该时间量满足各种标准,例如,当该时间量满足时长阈值(例如,X小时)或频率阈值(例如,每天X分钟、每周Y天)时,该时间量就可为足够的。移动设备102的移动的记录可包括进入每个重要位置的测量或计算出的时间以及离开每个重要位置的测量或计算出的时间。重要位置可与多次进出相关联。

除了重要位置之外,移动的记录可包括重要位置之间的转变。每次从第一重要位置转变到第二重要位置可与指示移动设备102离开第一重要位置的时间的转变开始时间戳以及指示移动设备102进入第二重要位置的时间的转变结束时间戳相关联。

移动设备102可将移动的记录表示为状态模型104。状态模型104可包括多个状态(例如,状态106以及其他状态)和转变(例如,转变107以及状态之间的其他转变),每个状态表示一个重要位置,每个转变表示移动设备102在重要位置之间的一种移动。在下文中将参考图2-图5来描述确定状态模型104的其他细节。

基于状态模型104,移动设备102可确定(1)移动设备102在给定时间从给定重要位置移动到每个其他重要位置的转变概率密度;或(2)移动设备102从先前未知或未呈现的位置进入重要位置的进入概率密度。移动设备102的模式分析器可使用状态模型104来确定移动设备102的每天、每周、每月或每年移动模式。移动设备102的预测引擎可使用转变概率密度(或进入概率密度)和移动模式来预报移动设备102未来将进入(或停留)的重要位置。移动设备102随后可使用此预报来提供预测性用户辅助,例如,以有助于用户计划未来事件。

在图1的实施例中,移动设备102可使用移动设备102的位置确定子系统来确定当前位置108。移动设备102可确定当前时间110。基于当前位置、当前时间以及状态模型104的概率和模式,移动设备102可确定移动设备102在未来某个给定时间的最有可能位置是状态106所表示的重要位置。移动设备102随后可执行对应于此重要位置或对应于从当前位置向此重要位置的转变的用户辅助功能。例如,在打开或者说是解锁时,移动设备102可提供用于在移动设备102的显示表面上显示的警示112。警示112可包括用户辅助信息116。用户辅助信息116可包括例如从当前位置到可能的未来位置的路线,以及该路线沿途的交通状况。移动设备102可提供用于自动显示的警示112和用户辅助信息116,而无需请求用户输入有可能的未来位置来作为目的地。

在一些具体实施中,移动设备102可提供与有可能的未来位置相关联的标签。标签可为由用户预指定或由移动设备102通过反向地理编码或通过对移动设备102的移动的语义分析确定的感兴趣点的地址或名称。例如,移动设备102可确定第一位置有可能是家而第二位置有可能是工作地。因此,在用户辅助信息116中,移动设备102可使用词语“家”和“工作地”。

示例性状态模型构造技术

图2A是示出确定位置集群的示例性技术的示意图。(图1的)示例性移动设备102可使用学习技术来确定(图1的)状态模型104。

移动设备102可循时间(T)顺序跟踪位置数据。顺序跟踪位置数据可通过在另一应用程序上捎带来执行,从而避免或降低位置数据收集成本。例如,移动设备102可在另一服务从移动设备102的位置确定子系统请求位置时,收集位置数据。因此,收集位置数据可以是“自由”的,而不必激活位置确定子系统来仅用于确定移动设备102的移动模式。

移动设备102可随时间T推移收集位置202、204、206、208、210和212。收集这些位置可以是不间断的操作。可清除存在时间长于指定时段的位置。该时段可通过用户偏好或隐私策略来指定。位置202、204、206、208、210和212均可包括纬度、经度和海拔坐标,并与指示收集到对应位置的时间的时间戳相关联。

移动设备102可确定位置202、204、206、208、210和212中的一些是属于可指示重要位置的位置集群。在确定以下内容时:(1)收集到至少一个预指定的阈值数量(例如,两个)的连续位置;(2)连续位置的时间跨度满足预指定的阈值时间窗口;以及(3)这些位置相同,从而指示移动设备102静止,或者这些位置彼此足够靠近,从而指示在收集位置时移动设备102是位于足够小的限定区域内,移动设备102可确定位置集群形成。

例如,移动设备102可在确定两个位置集群,即,随时间T的位置集群218和位置集群220。位置集群218可包括在长于阈值时间窗口(例如,45分钟的时间窗口)的时间段[T1,T2]内收集到的位置202、204和206。在确定位置202、204和206的方差低至足以满足方差阈值时,移动设备102可确定位置集群218包括位置202、204和206。同样,位置集群220可包括在时间段[T3,T4]内收集到的位置210和212。在确定位置210和212的方差满足方差阈值时,移动设备102可确定位置集群220包括位置210和212。

异常值(outlier)检测机制可过滤掉不属于集群的位置。例如,移动设备102可确定位置208不同于位置206和位置210(例如,位置206与208之间的距离和位置208与位置210之间的距离超过阈值)。另外,移动设备102可确定没有其他位置(1)在位置208之前或之后的阈值时间窗口内被收集,并且(2)在地理上靠近位置208。作为响应,移动设备102可确定位置208是异常值并弃除位置208。另外,如果某时间段内的某位置与该时间段内的许多其他位置明显不同,那么移动设备102可将此不同位置作为异常值弃除,并使用在该时间窗口中的其他位置来确定位置集群。移动设备102可使用位置集群218和220来确定重要位置和状态模型104的状态。

图2B是示出基于提示的位置集群的示例性技术的示意图。在一些具体实施中,用于确定位置集群的条件之一是连续位置的时间跨度满足可变阈值时间窗口。该阈值可基于移动设备102是否具有位置重要性的提示而变化。

在各个时间,移动设备102可位于位置232、234和236。位置232、234和236可彼此远离,指示移动设备102正在移动。移动设备102可在连续的时间段内位于位置240至248。位置240至248可相同或彼此足够靠近。移动设备102可基于该时间段是否满足可变阈值,确定该时间段是否长至足以使得位置240至248形成指示某重要位置的位置集群。移动设备102可使用各种提示来确定此可变阈值。

例如,移动设备102可搜索移动设备102先前访问的位置。移动设备102可将指示移动设备102先前访问了在位置240至248处或附近的位置的记录指定为第一提示。移动设备102可检查在移动设备102上执行或通过该移动设备执行的用户搜索历史。如果用户先前已搜索该位置,那么移动设备102可将包括在位置240至248处或附近的地址或在位置240至248处或附近的商家的搜索查询指定为第二提示。移动设备102可将用户日历中的在位置240至248处或附近的日历项(例如,约会或会议)指定为第三提示。

在检测一个或多个提示时,移动设备102可使用较短的时间段(例如,5分钟)来作为用于确定位置集群或重要位置的阈值。更多提示可对应于较短阈值。因此,当满足短时间阈值时,移动设备102可在检测移动设备的位置242时确定重要位置。

如果未发现提示,那么移动设备102可使用较长的时间段(例如,20分钟)来作为用于确定位置集群或重要位置的阈值。因此,在未发现提示的情况下,当满足长时间阈值时,移动设备102可在检测移动设备102的位置246时确定重要位置。在任一种情况下,无论是否存在提示,移动设备102均可实时(例如,在位置收敛到集群中后的5分钟或20分钟)确定重要位置。

图3A是示出基于位置集群来识别重要位置的示例性技术的示意图。使用以上参考图2所述的技术,移动设备102可识别出位置集群218、220、302和303。移动设备102可基于位置集群218、220、302和303来确定重要位置304、306和308。

移动设备102可基于位置集群218、220、302和303,使用每个位置集群218、220、302和303中的位置来确定重要位置304、306和308中的每一个。确定重要位置304、306和308可基于具有恒定增益的递归滤波器。确定重要位置304、306和308的细节在下一段中提供。重要位置304、306和308中的每一个可包括纬度、经度,以及可选地海拔坐标。重要位置304、306和308中的每一个可与一个或多个位置集群相关联。例如,在时间段[T1,T2]中,重要位置304可对应于位置集群218,在时间段[T7,T8]中,可对应于位置集群303。位置集群218和位置集群303中的位置可以相同。时间段[T1,T2]和时间窗口[T7,T8]的长度可相同或不同。

移动设备102可在时间T2具有初始状态模型。在时间T2+k,移动设备102可接收渐进位置数据,其中k是时间T2与接收到额外位置数据的时间之间的差值(在此示例中,k=T7-T2)。移动设备102可使用渐进位置数据来确定状态模型中使用的重要位置304。移动设备102可确定位置集群218对应于纬度和经度坐标X1。移动设备102可确定位置集群303对应于纬度和经度坐标X2。移动设备102可确定X1与X2之间的距离满足阈值。作为响应,移动设备102可确定位置集群218和位置集群303属于相同位置(重要位置304)。移动设备102随后可使用恒定增益滤波器向重要位置304添加位置集群303,如下在滤波器(1)中所示。

重要位置304、306和308中的每一个可与一个或多个进入时间戳以及一个或多个退出时间戳相关联。每个进入时间戳可对应于与位置集群中的第一位置相关联的时间。例如,与重要位置304相关联的第一进入时间戳可为与位置202相关联的时间戳,该位置是位置集群218中的第一个位置。与重要位置304相关联的第二进入时间戳可为与位置集群303中的第一位置相关联的时间戳。同样,每个退出时间戳可对应于与位置集群中的最后一个位置相关联的时间。例如,与重要位置304相关联的第一退出时间戳可为与位置206相关联的时间戳,该位置是位置集群218中的最后一个位置。与重要位置304相关联的第二进入时间戳可为与位置集群303中的最后一个位置相关联的时间戳。

重要位置304、306和308中的每一个可与标签相关联。标签可由用户指定(例如,“家”、“健身房”或“工作地”),或由移动设备102通过反向地理编码自动确定。在一些具体实施中,标签可从对与重要位置相关联的每个位置集群的一天中的某时和一周中的某日的模式的语义分析得出。该语义分析可基于人类的自然行为。移动设备102可编程以应用反映人类行为的预定模式。该行为可包括例如每个人都需要睡一段时间。睡眠时间可为移动设备102完全静止的时间。用户每天睡8小时,并且在家里吃晚餐,那么他有可能平日在家耗时X小时(例如,10-12小时),周末在家耗时Y小时。用户可从周一至周五在正常办公时间内工作。移动设备102可利用这些模式来将重要位置确定为“家”,在“家”时:(1)移动设备102每周花费比第一阈值小时数(例如,60小时)更多的时间;(2)移动设备102记录大多数的进出情况;并且(3)这些进出情况指示移动设备每天停留至少第二阈值小时数(例如,8小时)。

例如,移动设备102可确定与重要位置304相关联的每个位置集群对应于指定为平日夜晚的时间段(例如,从晚上7:00至第二天早上8:00)。移动设备102随后可将重要位置304指定为“家”,并将该指定内容提供作为重要位置304的标签。

移动设备102可确定从一个重要位置到另一个重要位置的转变。例如,移动设备102可确定,在给定的平日,移动设备102在时间T2与时间T3之间从重要位置304(“家”)转变(312)到重要位置308(“工作地”)。移动设备102可将此转变与转变开始时间戳(例如,T2)和转变结束时间戳(例如,T3)相关联。移动设备102可基于重要位置304、306和308,以及转变312、314和316来构造状态模型104。在下文中将参考图4来描述状态模型104的细节。

图3B示出自适应集群的示例性技术。(图1的)移动设备102可在移动设备102使用基于位置的服务时,记录移动设备102的位置。移动设备102可记录位置和时间戳。移动设备102可基于所记录的位置和时间戳来确定该位置在某时间段内是否收敛至集群。例如,移动设备102可确定,移动设备102在给定时间(例如,晚上8:00)位于位置332,并且在另一时间(例如,晚上11:00)位于位置334。移动设备102可确定移动设备102的位置在晚上8:00与晚上11:00之间没有移动远离位置332和334。移动设备102可确定位置332和334以及在晚上8:00与晚上11:00之间记录的位置收敛到具有基于位置332和334之间的距离确定的大小的位置集群中。移动设备102可确定重要位置304具有对应于该位置集群的大小的第一大小。

移动设备102可确定移动设备已转变(335)至另一位置。移动设备102可确定,在总时间量超阈值时间的一个或多个时间段内,移动设备102位于位置336、338、340、342、344、346、348、350和352。所述时间段可包括例如,周一早上8:00至早上10:00、周二早上8:00至早上9:00和周三早上10:00至晚上12:00。与移动设备102在家里的客厅与卧室之间的移动相比,这些位置由于移动设备102在工作地的特征(包括停车场、办公室、会议室和自助餐厅)之间移动,可比位置332和334更为“散开”。移动设备102可通过测量位置样本中的各个位置间的偏差,确定位置336至352收敛到具有基于位置336至352之间的距离确定的大小的位置集群中。移动设备102可确定重要位置308具有对应于该位置集群的大小的第二大小。第二大小可大于重要位置304的第一大小,这是因为位置336到352间的更大散度。

在一些具体实施中,移动设备102可将重要位置304和重要位置308与地图数据匹配。例如,移动设备102可确定重要位置304与建筑354重合,如地图数据所表示。作为响应,移动设备102可使重要位置304的形状与建筑354的形状一致。同样,移动设备102可确定重要位置308匹配一组地理特征(包括停车场356、办公室358、会议室360和自助餐厅362),如地图数据所表示。作为响应,移动设备102可根据停车场356、办公室358、会议室360和自助餐厅362的边界框来确定重要位置的形状。

图4A是示出基于位置集群确定的示例性状态模型104的示意图。状态模型104可为一阶自回归进程,其描绘了状态以及状态转变,其中转变为状态q以先前状态r为条件。状态以及状态转变可为移动设备102在各重要位置间的移动的抽象表达。与常规的高斯-马尔可夫模型相比,状态模型104可为足够的模型,其使用时间和持续时间的分布函数保留了状态转变的随机性。

状态模型104可包括状态106、402和404。状态106、402和404可分别对应于重要位置304、308和306。移动设备102可基于位置集群218、220、302和303来确定重要位置304、308和306,如上文参考图3所述。状态106、402和404中的每一个可分别表示重要位置304、308和306。

状态模型104可包括从每个状态到每个其他状态的多个转变。这些转变可包括例如从状态106到状态402的转变406,以及从状态106到状态402的转变408。在状态模型104中,从状态106到状态402的每个转变可对应于从重要位置304的位置集群到重要位置308的位置集群的转变。例如,转变406可表示从重要位置304的位置集群218到重要位置308的位置集群220的转变312。转变408可表示从重要位置304的位置集群303到重要位置308的下一位置集群的转变。

转变406和408中的每一个可与转变开始时间戳和转变结束时间戳相关联。每个转变开始时间戳可为移动设备102离开状态106表示的重要位置304的时间。例如,转变406的转变开始时间戳可为周二上午7:00;转变408的转变开始时间戳可为周三上午7:00。每个转变结束时间戳可为移动设备102进入状态402表示的重要位置308的时间。例如,转变406的转变结束时间戳可为周二上午9:00;转变408的转变结束时间戳可为周三上午9:00。

状态模型104中的每个状态可与一个或多个状态进入时间戳以及一个或多个状态退出时间戳相关联。例如,状态106的第一状态进入时间戳可为与位于重要位置304的位置集群218中的移动设备102的第一位置(位置202)相关联的时间。第一状态退出时间戳可为与位于重要位置304的位置集群218中的移动设备102的最后一个位置(位置206)相关联的时间。第一状态进入时间戳和第一状态退出时间戳可限定移动设备102停留在状态106的第一停留时间412。状态106的第二状态进入时间戳可为与位于重要位置304的位置集群303中的移动设备102的第一位置相关联的时间。第二状态退出时间戳可为与重要位置304的位置集群303中的移动设备102的最后一个位置相关联的时间。第二状态进入时间戳和第二状态退出时间戳可限定移动设备102停留在状态106的第二停留时间414。

图4B示出用于确定日历项的位置的示例性技术。(图1的)移动设备102可执行日历应用程序,在日历应用程序中,用户可为移动设备102指定日历项以提供提示或警示。移动设备102可从用户输入或从应用程序(例如,电子邮件程序)确定日历项422、424和426。日历项422、424和426中的每一个可与相应的文本串相关联,例如,“雪松”、“红杉”和“牙医”。每一个文本串可为相应日历项的主题行或相应日历项的正文。日历项422、424和426中的每一个可与一个相应时间相关联,例如,周三早上9:00至早上10:30、周三早上11:00至中午12:00和周三下午2:00至下午3:30。移动设备102可对多个实例进行关联,以增加确定关联正确的确定度。例如,日历应用程序可具有多个日历项,包括指示会议室的字符串“红杉”。移动设备102在如日历项指示的时间可以或可以不始终在“红杉”会议室中。通过对多个实例进行关联,移动设备102可确定被访问最多次的位置是“红杉”会议室的位置。

移动设备102可确定,在与日历项422和424相关联的某时间段内,移动设备102位于被指定为“工作地”的重要位置308,以及在与日历项426相关联的某时间段内,移动设备102位于被指定为“帕罗奥托”的重要位置428。因此,移动设备102可存储与相应位置相关联的文本串“雪松”、“红杉”和“牙医”中的每一个。例如,移动设备102可在文本数据库中存储与重要位置308的地理坐标相关联的文本串“雪松”和“红杉”中的每一个,并且存储与重要位置428的地理坐标相关联的文本串“牙医”。移动设备102可将所存储的信息提供给位置服务,以便提供各种用户辅助。

例如,移动设备102可接收指定未来某个时间(例如,6个月后的给定某天的下午5:00)的日历项。该日历项可包括文本串“看牙医”。移动设备102可确定此文本串匹配存储在文本数据库中的文本串。因此,移动设备102可确定,用户有可能在给定那天的下午5:00访问重要位置428。在那天,移动设备102可确定从移动设备102的位置到重要位置428的估计行进时间(例如,25分钟)。因此,移动设备102可自动地提供警示,此警示在那天下午5:00前至少25分钟显示,并向用户指示用户应按日历项准时启程前往重要位置428。

图5是示出状态模型104的渐进变化的示意图。状态模型104可具有可变的拓扑结构,以允许渐进地添加新的状态和删除废弃状态。

移动设备102可确定新状态502。例如,移动设备102可确定一系列的位置读数以足够的确定度指示移动设备102停留在某个地点达足够长久的持续时间,从而确定该地点是重要位置。移动设备102可确定该重要位置没有表示在状态模型104中。作为响应,移动设备102可创建新状态502,并且将新状态502添加(504)到状态模型104。移动设备102可基于移动设备102在访问状态502之前访问的最后一个重要位置来添加到状态502的转变。移动设备102可将状态502与第一个位置读数的状态进入时间戳相关联,该第一个位置读数指示移动设备102位于状态502的重要位置。移动设备102可将状态502与最后一个位置读数的状态退出时间戳相关联,该最后一个位置读数指示在移动设备102进入另一重要位置前,移动设备102处于由状态502表示的重要位置。移动设备102可基于移动设备102访问并表示在状态模型104中的下一重要位置来添加从状态502的转变。

除了添加状态之外,移动设备102可周期性地从状态模型104中删除状态。移动设备102可确定,在足够长久的时间(例如,超过X天或周阈值)内,移动设备102没有访问由状态404表示的重要位置。因此,移动设备102可将状态404从状态模型104中删除(506)。删除状态404可包括删除以状态404为终点的转变和以状态404为起点的转变。

移动设备102可使用状态模型104来预测移动设备102的未来位置。预测未来位置可至少部分地基于移动设备102的当前位置。当前位置可为“处于某状态”,其中当前位置由状态模型104中的状态来表示。在确定该当前位置处于某状态时,移动设备102可基于在状态之间的转变概率密度来预测未来位置。当前位置可为“在状态外”,其中当前位置不由状态模型104中的状态表示。在确定当前位置在状态外时,移动设备102可基于从当前位置进入状态模型104中的状态的进入概率密度来预测未来位置。在下文中参考图6A和图6B描述关于确定转变概率密度和进入概率密度的细节。

图6A是示出确定示例性状态106和402之间的转变概率密度602的示意图。转变概率密度602可指示移动设备102从状态模型104的状态106转变到状态402的概率分布。在接收预测移动设备102的未来位置的请求时,移动设备102可确定转变概率密度602。该请求可与当前时间和未来时间相关联。在当前时间,移动设备102可位于对应于状态106的重要位置。未来时间可为某时间点或时间窗口。

转变概率密度602可为在某时间段(例如,[Ta,Tb])内的分布,其中Ta是该时间段的开始时间,Tb是该时间段的结束时间。时间段[Ta,Tb]可为预报窗口。在一些具体实施中,开始时间Ta可对应于当前时间、或具有偏差的当前时间(例如,当前时间之前或之后X分钟);结束时间Tb可对应于未来时间、或具有偏差的未来时间(例如,未来时间之前或之后Y分钟)。在一些具体实施中,开始时间Ta和结束时间Tb可分别对应于某个时间窗口(例如,一日或一周)的开始和结束。

移动设备102可基于移动设备102从状态106到状态402的历史转变来确定转变概率密度602。在Ta与Tb之间的某个给定时间,(1)此给定时间在过去从状态106到状态402的更多转变可对应于更高的概率密度值;(2)对此给定时间在过去的转变的更高确定度可对应于更高的概率密度值;并且(3)此给定时间在过去的转变的更稳定模式可对应于更高的概率密度值。

例如,t0对应于早上8:00,t1对应于下午3:00。在过去并如状态模型104中所记录,状态106与状态402之间在早上7:00与早上9:00之间发生X次转变;在下午2:00与下午4:00之间发生Y次转变。如果X大于Y,那么t0可对应于相对较高的概率密度值604,而t1可对应于相对较低的概率密度值606。

另外,转变的确定度可为相关的。如果比起Y次转变的转变开始时间戳的平均时间与t1的接近程度,X次转变的转变开始时间戳的平均时间与t0的接近程度更高,那么t0可对应于相对较高的概率密度值604,而t1可对应于相对较低的概率密度值606。如果X次转变的转变开始时间戳的方差比Y次转变的转变开始时间戳的方差更小,那么t0可对应于相对较高的概率密度值604,而t1可对应于相对较低的概率密度值606。

另外,过去的转变的模式的稳定性可为相关的。移动设备102可基于时间来确定移动的模式。例如,移动设备102可基于状态模型104中的转变来确定移动设备102的移动遵循每周模式。平日,移动设备102在早上7:00与早上9:00之间从状态106转变到状态402。周末,移动设备102在下午2:00与下午4:00之间从状态106转变到状态402。基于这种识别到的每周模式,移动设备102可在t0是在平日的情况下,为时间t0关联相对较高的概率密度值604,或者在t0是在周末的情况下,为时间t0关联相对较低的概率密度值。

转变概率密度602可为离散的或连续的。在确定状态模型104中的状态之间的转变概率密度602以及其他转变密度概率时,移动设备102可确定移动设备102直接或间接地(例如,通过一个或多个中间状态)从当前状态(例如,状态106)转变到各个其他状态的基于时间的可能性。移动设备102可基于当前位置、未来时间和移动设备102转变到各个状态的概率来确定移动设备102的预测未来位置。

图6B是示出确定示例性状态106的进入概率密度620的示意图。每个概率密度620可指示移动设备102从没有表示在状态模型104中的当前位置进入状态106的概率分布。在接收预测移动设备102的未来位置的请求时,移动设备102可确定进入概率密度620。该请求可与当前时间和未来时间相关联。在当前时间,移动设备102可位于未被表示的当前位置。未来时间可为某时间点或时间窗口。

进入概率密度620可为在某时间段(例如,[Tc,Td])内的分布,其中Tc是该时间段的开始时间,Td是该时间段的结束时间。时间段[Tc,Td]可为预报窗口。在一些具体实施中,开始时间Tc可对应于当前时间、或具有偏差的当前时间(例如,当前时间之前或之后X分钟);结束时间Td可对应于未来时间、或具有偏差的未来时间(例如,未来时间之前或之后Y分钟)。在一些具体实施中,开始时间Tc和结束时间Td可分别对应于某个时间窗口(例如,一日或一周)的开始和结束。

移动设备102可基于移动设备102在状态106的停留时间来确定进入概率密度620。停留时间(例如,停留时间412、414和622)可如上文参考图4所述那样确定。

在Tc与Td之间的某个给定时间,(1)移动设备102在此给定时间在过去在状态106的更多次停留可对应于更高的概率密度值;(2)对在过去进入状态106的更高确定度可对应于更高的概率密度值;并且(3)在过去进入状态106的更稳定模式可对应于更高的概率密度值。

例如,t2对应于早上10:00,t2对应于下午3:00。在过去并如状态模型104中由停留时间412、414和622所记录,在X个场合下,移动设备102在时间t2位于状态106;在Y个场合下,移动设备102在时间t3位于状态106。如果X小于Y(例如,在这个示例中,X=2,Y=3),那么t2可对应于相对较低的概率密度值624,而t3可对应于相对较低的概率密度值626。

除此之外或作为另外一种选择,移动设备102可基于从状态模型104确定的状态停留时间来确定移动设备102的位置遵循每周模式。例如,移动设备102可确定,停留时间414以及多个其他停留时间仅出现在平日,而停留时间412和622仅出现在周末。基于这种识别到的每周模式,如果时间t2和时间t3属于平日,那么移动设备102可将较低的概率密度值624关联到时间t2并将较高的概率密度值624关联到时间t3。移动设备102可将相等的概率密度值相关联到属于周末的时间t2和时间t3。

进入概率密度620可为离散的或连续的。在确定在状态模型104中的状态之间的进入概率密度620以及其他进入密度概率时,移动设备102可确定该移动设备直接或间接地(例如,通过一个或多个中间状态)从当前位置进入各个其他状态的基于时间的可能性。移动设备102可基于当前位置、未来时间和移动设备102进入各个状态的概率来确定移动设备102的预测未来位置。

移动设备102可在基于各种因素计算进入概率密度之前、期间或之后,从状态模型104滤出状态。将某个状态滤出可包括在不从状态模型104中删除该状态的情况下,防止该状态被用于特定位置预测。用于将某个状态滤出的因素可包括当前位置与由该状态在状态模型104中表示的位置之间的距离。在确定移动设备102在预报时间窗口期间不可能从当前位置到达该状态的位置时,移动设备102可将该状态滤出。移动设备可基于当前时间与时间窗口的开始时间或结束时间之间的时间差,以及移动设备102的移动的预指定最大速度,来执行过滤。

例如,移动设备102可确定当前时间与预报时间窗口的结束时间Td之间的时间差为X小时。移动设备可确定当前位置与由状态106表示的重要位置之间的距离为Y千米。基于预指定的Z千米每小时的最大速度,在确定X*Z<Y时,这指示移动设备102即使是以最大速度行进也无法在X小时内到达状态106表示的位置,因此移动设备102可将状态106滤出。

图6C示出用于显示重要位置的示例性用户界面604。用户界面604可在移动设备102上显示。用户界面604可包括用于显示重要位置(例如,由标记608、610和612指示的重要位置)的地图显示。用户界面604可包括搜索框614,用户可在此搜索框中输入对重要位置的搜索查询。在所示实施例中,用户输入了日期/时间跨度查询“2014年3月23日,我的位置”。此示例性查询是请求搜索用户在2014年3月23日访问的重要位置。在接收发起某搜索的输入(例如,选择“搜索”按钮)时,移动设备搜索重要位置数据存储,确定在2014年3月23日访问的重要位置,生成表示这些重要位置的标记608、610和612,并在地图上显示标记608、610和612。标记608、610和612可具有不同大小,对应于所表示的重要位置的不同大小。

示例性设备部件

图7A为示出实现预测性用户辅助的示例性移动设备102的部件的框图。移动设备102中的每一个部件均可包括硬件和软件部件。

移动设备102可包括状态模型确定子系统702。状态模型确定子系统702可为移动设备102的一个部件,其被编程为使用来自位置确定子系统704的位置数据来确定状态模型(例如,状态模型104)。位置数据可包括一系列的一个或多个位置读数,每个位置读数均与时间戳相关联。位置读数可包括纬度、经度,以及可选地海拔坐标。

位置确定子系统704是移动设备102的一个部件,其被编程为使用卫星导航系统(例如,GPS)、蜂窝通信系统(例如,通过使用蜂窝塔的三角测量)或无线接入网关(例如,通过使用已知接入点位置的三角测量)来确定移动设备102的位置。

移动设备102可包括一个或多个服务706。服务706可包括移动设备102的操作系统或一个或多个应用程序的功能。服务706可从位置确定子系统704请求位置数据。该请求可激活位置确定子系统704。

状态模型确定子系统702可被配置为在服务706激活位置确定子系统704时,读出由位置确定子系统704提供的位置数据。通过位置确定子系统704的激活来触发读出位置数据能够避免或尽量减少确定状态模型的操作所耗费的电池电量。基于位置数据,状态模型确定子系统702可确定状态模型并将状态模型存储在状态模型数据库708中。状态模型数据库708可包括在移动设备102上或在远离移动设备102的服务器上的存储设备。

移动设备102可包括预报子系统710。预报子系统710是移动设备102的一个部件,其被配置为基于状态模型数据库708中存储的状态模型来确定移动设备102的预测未来位置。一个或多个服务712或其他服务714可从预报子系统710请求预报。该请求可与某个未来时间点或时间窗口相关联。作为响应,预报子系统710可提供对应于此未来时间或时间窗口的一个或多个预测未来位置。

图7B是示出图7A的示例性状态模型确定子系统702的部件的框图。状态模型确定子系统702中的每一个部件均可包括硬件和软件部件。

状态模型确定子系统702可包括位置监听器720。位置监听器720是状态模型确定子系统702的一个部件,其被配置为在被位置确定子系统704的激活触发时,从位置确定子系统704读出位置数据。在一些具体实施中,位置监听器720可被编程为周期性地激活位置确定子系统704来获得位置数据。

位置监听器720可将从位置确定子系统704接收到的位置数据存储到原始位置数据存储722上。原始位置数据存储722可为移动设备102的一个部件,其被编程为将原始位置数据存储为来自位置确定子系统704的读数。原始位置数据存储722可施行持续策略,其中基于用户请求或隐私策略在指定的持续时段后将原始位置数据清除。

状态模型确定子系统702可包括抽象引擎724。抽象引擎724是状态模型确定子系统702的一个部件,其被配置为访问原始位置数据存储722中存储的位置数据。基于此位置数据,抽象引擎724可基于一个或多个预指定的条件来确定位置集群。这些条件可包括用于确立重要位置的最小位置数量(例如,2个)、阈值时间值窗口(例如,X分钟的最小值)和异常值准则。抽象引擎724可通过生成位置集群的抽象表达来确定所访问的重要位置。抽象引擎724可将重要位置存储在位置数据存储726中。

位置数据存储726是状态模型确定子系统702的存储设备,其被配置为存储由抽象引擎724确定的重要位置。位置数据存储726可施行持续策略,其中在指定的持续时段后将重要位置清除。位置数据存储726的持续策略可不同于原始位置数据存储722的持续策略。

状态模型确定子系统702可包括状态模型构造引擎728。状态模型构造引擎728是状态模型确定子系统702的一个部件,其被配置为从位置数据存储726读出重要位置并生成状态模型104。另外,状态模型构造引擎728可被配置为通过添加和删除状态模型104的状态,来维护状态模型104。

图7C是示出图7A的示例性预报子系统710的部件的框图。预报子系统710中的每一个部件均可包括硬件和软件部件。

预报子系统710可包括概率建模器740。概率建模器740是预报子系统710的一个部件,其被配置为基于状态模型(例如,状态模型104)的状态和转变,确定概率密度(例如,转变概率密度602和进入概率密度620)。概率建模器740可确定在某个时间窗口内转变和进入的概率密度。

预报子系统710可包括模式分析器742。模式分析器742是预报子系统710的一个部件,其被配置为确定移动设备102在某个时间段内的移动模式。该时间段可为一天、一周、一个月或一年。模式分析器742可基于状态模型104的寿命来确定是否要基于一天、一周、一个月或一年来确定模式。例如,模式分析器742可确定状态模型104是否满足了寿命阈值(例如,包含至少X周的数据)。

在确定状态模型104满足阈值时,模式分析器742可确定每周模型。每周模型可包括针对一周中的每日计算的概率分布,其中例如,周一的概率分布是独立于周日的概率分布而确定。在确定状态模型104不满足阈值时,模式分析器742可确定每日模型。每日模型可包括针对一天中的每个小时计算的概率分布,其中例如,早上9:00至早上10:00的概率分布是独立于下午5:00至下午6:00的概率分布而确定。

在一些具体实施中,模式分析器742可在确定移动设备102已移动到新地点时,确定每日模式。例如,模式分析器742可确定最后X个新状态中的每一个与比最后X个新状态更早的每个状态之间的距离超过局部阈值(例如,Y千米),这指示移动设备102最近已行进到新位置(例如,到达度假地)。在确定时,模式分析器742可确定从最后X个状态开始的每日模式。

预报子系统710可包括预测引擎744。预测引擎744是预报子系统710的一个部件,其被配置为接收当前时间和当前位置,并确定预报位置。预测引擎744可基于由概率建模器740提供的转变和进入的概率密度,以及从模式分析器742提供的移动模式来确定移动设备102的预测位置。预测引擎744可基于概率密度和移动模式来识别多个候选未来位置。预测引擎744随后可使用各种属性对将候选未来位置进行排名。

预测引擎744用来对候选未来位置进行排名的属性可包括对由某个状态表示的候选未来位置的最后一次访问,其中最近的访问可与更高的排名相关联。这些属性可包括与候选位置相关联的状态的数据寿命,其中有较长数据历史的状态可与较高排名相关联。这些属性可包括与预报时间窗口相关联的可能性,此可能性是基于当前位置、该预报时间窗口的未来时间和该预报时间窗口的长度而确定。这些属性可包括聚合停留时间,其中具有较长聚合停留时间的状态可具有更高的排名。这些属性可包括对候选位置的状态的访问次数,其中对状态的更多次访问或更高频次访问可使其具有更高排名。预测引擎744可向预测引擎接口746提供一个或多个候选未来位置(包括排名最高的候选未来位置)作为预报。

预测引擎接口746可为移动设备102的一个部件,其被配置为实现对预测引擎744的应用编程接口(API),使得符合此API的应用程序、功能或设备可访问预测引擎744确定的预报。在一些具体实施中,预测引擎接口746可包括与其他设备714(例如,外部显示屏或GPS设备)的接口,并向其他设备714提供预报位置。

预报子系统710可包括语义分析器748。语义分析器748是预报子系统710的一个部件,其被配置为基于对各重要位置的访问模式,确定这些重要位置的意义。语义分析器748可基于此意义来生成标签(例如,“工作地”或“家”),并将标签提供给将与预报相关联的预测引擎接口746。

图7D是示出示例性位置API的框图。此API可在移动设备102上实现。此API可包括位置函数声明760。位置函数声明760可使用头文件来实现,例如,用面向对象的C编程语言(例如Objective-C或C++)编写的.h文件。

位置函数声明760可包括开始监测访问函数声明762和停止监测访问函数声明764。声明762和764中的每者可声明相应函数的名称,该名称指示了函数的操作。声明762和764中的每者可声明相应函数的返回类型。声明762和764中的每者可声明相应函数是类方法还是实例方法。例如,类方法可由函数名之前的加号(+)来表示。实例方法可由函数名之前的减号(-)来表示。声明762和764中的每者可声明相应函数的参数。

这些函数可在位置函数库766中定义。位置函数库766可包括开始监测访问函数的定义768和停止监测访问函数的定义770。定义768和定义770中的每者均可包括用于开始和停止监测位置访问的编程指令。位置访问可为包括到达某个位置和从该位置离开中的至少一者的事件。

应用程序772可通过API来调用开始监测访问函数和停止监测访问函数。例如,应用程序可被编程为通过包括用于编译的头文件来包括位置函数声明760。应用程序772可包括位置函数774。位置函数774可包括例如可操作来使移动设备102的处理器确定位置集群和重要位置的计算机指令。位置函数774可调用如位置函数声明760中声明并如位置库766中定义的开始监测访问函数和停止监测访问函数。

示例性程序

图8A是示出基于提示的位置确定的示例性过程800的流程图。过程800可由包括一个或多个处理器的系统执行。该系统可包括移动设备102。

该系统可确定(802)此移动设备的多个位置。每个位置可与指示该位置被位置确定子系统确定的时间的时间戳相关联。这些位置可基于位置的时间戳按顺序排序。确定这些位置可包括每次从位置确定子系统读出位置(例如,纬度和经度)。对位置确定子系统的每次读出可由位置确定子系统的激活而被触发,位置确定子系统的激活是由请求基于位置的服务的应用程序所导致。系统可通过使用统计滤波器删除异常值来将位置从位置确定子系统滤出。

该系统可识别(804)指示该移动设备的用户已表示有兴趣在这些位置的至少一部分处或附近执行一个或多个动作的提示。该提示可包括在移动设备上执行的或通过移动设备检测到的当前动作、或在移动设备上执行的或通过移动设备检测到的动作的历史记录中的至少一者。

例如,该提示可包括当前动作。当前动作可包括由移动设备检测到的指示用户已进入或离开车辆的运动模式的变化。当前动作可包括指示移动设备插入充电器中的电源插入事件。当前动作可包括指示移动设备连接到有线或无线通信网络的网络握手。除此之外或作为另外一种选择,提示可包括历史记录。历史记录可包括搜索记录,搜索包括移动设备上的搜索输入以及搜索结果,搜索结果包括地理位置的地址。历史记录可包括指示约会将在该地理位置处发生的日历项。历史记录可包括指示移动设备建立了与位于该地理位置处的无线设备的无线连接的记录。历史记录可包括指示移动设备已在该地理位置处插入充电设备或计算设备中的记录。历史记录可包括移动设备在该地理位置处先前访问的记录。

该系统可确定(806)基于提示的阈值来识别位置集群,包括根据所识别的提示,减少用于建立该位置集群的预指定的时间阈值。

该系统可确定(808),在确定已排序位置中的一组连续位置间的时间差长于基于提示的时间阈值时,这组连续位置形成位置集群。位置集群可指示移动设备在某个地理位置停留足够长久以指示对用户来说的重要位置。确定连续位置形成位置集群可在移动设备移动进出该地理位置时实时发生,或者以批处理模式进行,例如,每天早上2:00进行一次。

该系统可将重要位置存储(810)在移动设备上,并与重要位置的标签相关联。该系统可将重要位置指定为状态模型中的状态,用以估计用户在未来可能移动到的地点,并且根据所估计的地点提供预测性用户辅助。状态模型可将移动设备从第一重要位置向第二重要位置的每次移动表示为从表示第一重要位置的第一状态到表示第二重要位置的第二状态的转变。该转变与转变开始时间和转变结束时间相关联。

该系统可将状态模型提供给移动设备的预报子系统,以便生成如下预报:移动设备在某个给定的未来时间的未来位置是表示在状态模型中的重要位置中的一个。该预报可基于当前时间、未来时间、当前位置和基于状态模型的状态和转变所确定的概率密度函数。该系统可基于移动设备的历史移动模式,预测移动设备在未来某个时间将移动到此重要位置。

图8B是示出自适应位置集群的示例性过程820的流程图。过程820可由包括一个或多个处理器的系统执行。该系统可包括移动设备102。

该系统可确定(822)在预指定的收敛阈值量的时间(例如,5小时)内记录的移动设备的一系列的位置收敛到位置集群中。位置集群可指示该位置集群的地理位置对移动设备的用户来说是重要位置。移动设备的这一系列位置可在多时间段内被记录,例如,平日每天早上7:00-8:00,其中每一个时间段与另一个时间段分离。只要时间段的总时间量在相加后满足预指定的收敛阈值量的时间,那么该系统就可进入下一阶段操作。

该系统可确定(824)位置集群中的位置的收敛速率,收敛速率指示这些位置多快被集群在一起。确定收敛速率可实时发生,并包括使用在目前的时间段和每个先前的时间段中记录的位置来确定收敛速率。确定该系列位置收敛到位置集群中可包括确定指示进入该位置集群的初始位置X[0]。该系统随后可接收一系列的后续位置X[1],X[2]...X[n]。该系统可使用被配置为滤出过于远离已在位置集群中的位置的异常值的统计滤波器,来确定每个相应后续位置是否包括在该位置集群中。该统计滤波器可包括一种类型的卡尔曼滤波器。在确定后续位置的至少一部分被包括在位置集群中时,该系统可确定该系列的位置收敛到该位置集群中。确定收敛速率包括例如通过计算该位置的标准偏差std(X[0],X[1]...X[n])来确定位置集群中位置间的统计偏差。

该系统可基于收敛速率确定(826)该位置集群的尺寸。例如,收敛速率越高(标准偏差越小所指示)可对应于尺寸越小。在确定该位置集群的尺寸之后,该系统可根据移动设备的另外的位置来调整尺寸。另外的位置间的收敛性增大可减小该位置集群的尺寸。

该系统可存储(828)与位置集群相关联的尺寸。在一些具体实施中,该系统可将重要位置指定为状态模型中的状态,用以估计用户将来可能移至的地点,并且根据所估计的地点提供预测性用户辅助。该重要位置可与位置集群的尺寸相关联,并且可通过具有对应于该位置集群的尺寸的显示尺寸的标记表示在虚拟地图中。确定收敛速率、确定位置集群的尺寸以及将重要位置指定为状态模型中的状态可在移动设备确定并记录该移动设备的位置时实时发生。在各种具体实施中,该系统可从地图数据中识别街道。街道可具有与重要位置匹配的位置,并且具有与位置集群的尺寸匹配的尺寸。该系统可使重要位置与街道吻合,包括将街道的形状指定为重要位置的形状。

图8C是示出确定日历项的位置的示例过程840的流程图。过程840可由包括一个或多个处理器的系统执行。该系统可包括移动设备102。

该系统可从日历管理应用程序接收(842)日历项的记录。该记录可包括描述日历项的事件和该事件的时间规范的文本串。文本串可包括日历项的主题行或日历项的文本正文。

该系统可确定(844)重要位置与日历项之间的地理重叠。确定地理重叠可包括确定移动设备在时间规范中指定的时间停留在移动设备的用户的重要位置处。重要位置可包括被估计为对移动设备的用户具有重要意义的位置。重要位置可使用如从历史数据检测到的移动设备的位置集群来确定。确定移动设备停留在重要位置可包括确定移动设备位于位置群集中至少阈值量的时间。位置集群可包括移动设备由统计滤波器过滤的检测到的位置。作为响应,该系统可基于位置集群确定重要位置。

响应于确定地理重叠,该系统可将文本串与重要位置相关联(846)。将主题本文与重要位置相关联可包括将与重要位置相关联的文本串存储在存储设备上。将主题本文与重要位置相关联可包括将主题文本与日历应用程序中的重要位置相关联。

该系统可在第二日历项的时间规范中指定的时间前,提供(848)对应于日历管理应用程序的第二日历项的重要位置的基于位置的服务。该系统可在确定第二日历项包括文本串中的至少一个项时,提供基于位置的服务。提供基于位置的服务可在使用在第二日历项的时间规范中指定的时间减去从当前位置到重要位置的估计行进时间来确定的时间发生。

在一些具体实施中,基于位置的服务可包括确定日历项在与该用户的日常事务相关联的一组位置外。日常事务可包括用户在某天的各个时间位于每个位置处的一组相应可能性值。响应于确定日历项在该组位置外,该系统可将预测性用户辅助模型从基于日常事务(例如,工作地)的模型切换至基于重要位置(例如,加利福尼亚州东帕罗奥托市的度假胜地)的模型。

在一些具体实施中,基于位置的服务可包括确定用户将在第二日历项的时间规范中指定的时间访问第二位置。作为响应,该系统可在用户访问第二位置前向该用户提供警示。例如,移动设备可基于该移动设备的传感器的读数来确定该移动设备的运输模式,例如步行、骑车、驾车或搭乘公共交通系统。接着,该移动设备可确定对应于运输模式的行进时间,并且提供对应于行进时间的警示。在一些具体实施中,该移动设备可从移动设备或从服务器接收运动分类器,该运动分类器指示移动设备正以特定模式行进。该移动设备可使用运输模式作为上下文信息来对分类器进行重新分类。因此,该移动设备可使用上下文信息滤出对某个运动错误分类的一个或多个运动分类器。

图8D是示出调用位置监测API的示例过程860的流程图。过程860可由包括一个或多个处理器的移动设备执行。移动设备可为图1的移动设备102。

该移动设备可接收(862)输入。该输入可请求移动设备监测移动设备的位置,以确定移动设备在某个位置停留的时间长度。在确定该时间长度满足可配置的阈值时,该移动设备可确定该位置对该移动设备的用户来说是重要位置。

响应于该输入,该移动设备可通过API监测(864)位置。监测位置可包括调用位置管理器类的对象的开始监测实例函数(也被称为开始监测实例方法)。开始监测实例函数可在API中声明,并且被配置为执行记录在这些位置处检测到的移动设备的访问这些动作。每个所检测到的访问可与移动设备访问的位置的一组相应地理坐标相关联。记录检测到的访问可包括将检测到的访问作为数据对象存储在存储设备上,或发送预指定函数的访问回调函数以通知检测到的访问的某个方面的预指定函数。检测到的访问的该方面可包括移动设备到达某个位置或移动设备离开该位置中的至少一者。

在一些具体实施中,可将每个所检测到的访问记录为位置访问类的对象,该对象具有存储该访问开始日期的到达日期属性、存储该访问结束日期的离开日期属性、存储移动设备访问的区域的中心的地理坐标的坐标属性以及存储所访问的区域的估计半径的水平精度属性。该位置访问类的对象可在类声明中指定,以符合安全编码协议和复制协议,安全编码协议和复制协议中的每者限定该对象向另一对象发送消息的方式。

响应于触发事件,该移动设备可停止(866)监测。停止监测可包括调用该对象的停止监测实例函数(也被称为停止监测实例方法)。停止监测实例函数可在API中声明,并且可操作来使该位置管理器类的对象停止记录访问。该触发事件可包括用户输入、暂停事件或中断事件。

开始监测实例函数和停止监测实例函数中的每者可为异步函数,该异步函数被调用时执行其相应操作,而不需要调用程序在执行其他动作前等待结果。开始监测实例函数和停止监测实例函数中的每者与API中的编译器提示相关联。编译器提示指示API的操作系统的兼容版本。

该移动设备可向位置消费方提供(868)所记录的访问。位置消费方可为重要位置确定引擎,用于使用所记录的访问中的各组地理坐标确定重要位置的位置坐标以及重要位置的尺寸。

该API可以面向对象的编程语言(例如,头文件中的Objective-C或C++编程语言)定义。开始监测实例函数可在API中被声明为具有startMonitoringVisits的名称和void类型。停止监测实例函数可在API中被声明为具有stopMonitoringVisits的名称和void类型。相应实例函数的每个名称可为使用API编程的开发人员指示该相应函数的底层运算。API的伪代码在以下列表1中提供。

@interface LocationManager(LocationVisitExtensions)

/*startMonitoringVisits

*开始监测访问。应用程序分配的所有LocationManagers

*可将所检测到的访问递送至其委托。递送过程可

*持续进行,直到将-stopMonitoringVisits发送到任一此类LocationManager,

*甚至跨过应用程序重启事件。

*可将所检测到的访问发送到委托的-locationManager:didVisit:

*方法。*/

-(void)startMonitoringVisits COMPILER_HINT(OS_VERSION);

/*stopMonitoringVisits

*停止监测访问。要恢复访问监测,发送

*-startMonitoringVisits。

*停止和开始可为异步操作,并且可能会或可能不会

*即刻反映在委托回调模式中。*/

-(void)stopMonitoringVisits COMPILER_HINT(OS_VERSION);

@end

/*LocationVisit

*此类的一个实例可表示可能的开放式事件,

*移动设备在该事件期间位于指定坐标处。*/

COMPILER_HINT(OS_VERSION)

@interface LocationVisit:Object<SecureCoding,Copying>

/*arrivalDate-访问开始的日期(包括时间)。如果实际到达日期不可用,

*则该值可等于[Date_Distant_Past]。*/

@property(nonatomic,readonly,copy)Date*arrivalDate;

/*departureDate–访问结束的日期。如果移动设备仍未离开位置,

*则该值可等于[Date_Distant_Future]。*/

@property(nonatomic,readonly,copy)Date*departureDate;

/*coordinate-移动设备正在访问的区域的中心。*/

@property(nonatomic)LocationCoordinate2D coordinate;

/*horizontalAccuracy-移动设备正在访问的区域的半径估计(如,以米为单位)。*/

@property(nonatomic)CLLocationAccuracy horizontalAccuracy;@end

列表1:位置API

图9是示出预测未来位置的示例过程900的流程图。过程900可由移动设备102例如使用移动设备102的预报子系统710执行。

移动设备102可从联接到移动设备102的存储设备(例如,状态模型数据库708)接收(902)状态模型。该状态模型可包括多个状态和这些状态之间的转变。每个状态可对应于一个位置。从第一状态至第二状态的每个转变可指示移动设备102过去从对应第一位置移动至对应第二位置。每个位置和转变可与一个或多个时间戳相关联。

移动设备102可从应用程序或设备接收(904)对移动设备102的未来位置进行预测的请求。该请求可指定移动设备102的未来时间和任选的当前位置。未来时间可包括未来的某个时间点或未来的某个时间窗口。

移动设备102可使用该移动设备的当前时间、未来时间和当前位置作为输入,来确定(906)与状态模型中的每个状态相关联的概率。如果该请求不包括当前位置,则移动设备102可使用位置确定子系统704来确定当前位置。移动设备102可基于状态、转变和相关联的时间戳来确定概率。这些概率可指示移动设备102将位于对应于未来时间的某个状态的每个相应位置的可能性。

确定(906)与每个状态相关联的概率可包括确定当前位置在状态中,其中当前位置表示为状态模型中的状态。确定每个状态的概率可包括确定移动设备102从表示当前位置的状态移动至对应于一个或多个转变中的状态的位置的转变概率密度。转变概率密度可满足马尔可夫过程的属性。确定转变概率密度可基于状态之间的转变以及与每个转变相关联的转变开始时间戳和转变结束时间戳。

确定(906)与每个状态相关联的概率可包括确定当前位置在状态外,其中当前位置未表示为状态模型中的状态。确定与每个状态相关联的概率可包括确定移动设备102进入对应于来自状态外的当前位置的每个状态的位置的进入概率密度。确定进入概率密度可基于移动设备102在每个状态的停留时间。移动设备102可基于与相应状态相关联的一个或多个进入时间戳以及一个或多个离开时间戳来确定停留时间。

在一些具体实施中,确定(906)与每个状态相关联的概率可基于每天、每周、每月或每年模式。移动设备102可确定状态模型是否满足寿命阈值(例如,X周)。在确定状态模型满足寿命阈值时,移动设备102可确定第一活动模式。第一活动模式可对应于第一时间跨度(例如,一周)。另选地,在确定状态模型不满足寿命阈值时,移动设备102可确定第二活动模式。第二活动模式可对应于第二时间跨度(例如,一天)。第一时间跨度可长于第二时间跨度。移动设备102可基于当前时间、未来时间以及第一活动模式或第二活动模式来确定概率。接着,移动设备102可基于当前时间、未来时间以及第一活动模式或第二活动模式来确定将每个状态相关联的概率。

在一些具体实施中,移动设备102可基于当前位置与状态模型中表示的每个位置之间的距离以及当前时间与未来时间之间的差值来过滤状态模型中的状态。移动设备102可滤出在给定时间差并且给定移动设备102的移动速度的情况下,移动设备102从当前位置达到该状态的可能性落到阈值以下的状态。

基于概率,移动设备102可响应于请求来提供(908)与状态相关联的至少一个位置作为移动设备102的预测未来位置。在一些具体实施中,提供位置作为预测未来位置可包括识别与最高概率相关联的状态,并且将与最高概率相关联的状态所关联的位置指定为预测未来位置。在一些具体实施中,提供位置作为预测未来位置可包括基于概率和一个或多个预测属性来对状态进行排名,并且将与最高排名相关联的位置指定为预测未来位置。

预测属性可包括对每个对应位置进行最后一次访问的时间。预测属性可包括基于当前位置、当前时间和预测窗口长度得出的预测窗口的可能性。预测属性可包括状态模型的临时长度。预测属性可包括每个状态处的聚合停留时间。预测属性可包括每个状态处的访问次数。

在一些具体实施中,移动设备102可确定状态模型的数据密度满足稀疏模型阈值。作为响应,移动设备102可确定在稀疏操作模式中与每个状态相关联的概率。在稀疏操作模式中,概率密度的计算和排名可以不如正常操作模式的计算和排名那样严格的方式来执行。

示例性移动设备架构

图10是示出实现基于分类的地理围栏的特征和操作的移动设备的示例性设备架构1000的框图。移动设备(例如,移动设备102)可包括存储器接口1002、一个或多个数据处理器、图像处理器和/或处理器1004以及外围设备接口1006。存储器接口1002、一个或多个处理器1004和/或外围设备接口1006可为独立组件,或者可集成到一个或多个集成电路中。处理器1004可包括应用处理器、基带处理器和无线处理器。移动设备102中的各组件(例如)可由一条或多条通信总线或信号线联接。

可将传感器、设备和子系统联接到外围设备接口1006,以方便多个功能。例如,可将运动传感器1010、光传感器1012和接近传感器1014联接到外围设备接口1006,以方便移动设备的取向、照明和接近功能。可将位置处理器1015(如GPS接收器)连接到外围设备接口1006,以提供地理定位。也可将电子磁力计1016(如集成电路芯片)连接到外围设备接口1006,以提供可用于确定磁北方向的数据。因而,电子磁力计1016可用作电子罗盘。运动传感器1010可包括被配置成确定移动设备移动速度和方向变化的一个或多个加速计。气压计1017可包括连接到外围设备接口1006并被配置成测量移动设备周围的大气压力的一个或多个设备。

可利用照相机子系统1020和光学传感器1022(如电荷耦合设备(CCD)或互补金属氧化物半导体(CMOS)光学传感器)来方便照相机功能,诸如记录照片和视频剪辑。

可通过一个或多个无线通信子系统1024来方便通信功能,所述无线通信子系统可包括射频接收器与发射器和/或光学(如红外线)接收器与发射器。通信子系统1024的具体设计与实现可取决于移动设备打算通过其操作的通信网络。例如,移动设备可包括被设计用于通过GSM网络、GPRS网络、EDGE网络、Wi-FiTM或WiMAXTM网络以及BluetoothTM网络操作的通信子系统1024。具体地讲,无线通信子系统1024可包括主机协议使得移动设备可被配置为其他无线设备的基站。

可将音频子系统1026联接到扬声器1028和麦克风1030,以方便启用语音的功能,诸如语音识别、语音复制、数字记录和电话功能。音频子系统1026可被配置为从用户接收语音命令。

I/O子系统1040可包括触摸表面控制器1042和/或其他输入控制器1044。可将触摸表面控制器1042联接到触摸表面1046或垫片。触摸表面1046和触摸表面控制器1042可(例如)利用多种触敏技术中的任一种来检测接触和运动或其中断,所述触敏技术包括但不限于电容性、电阻性、红外线和表面声波技术,以及用于确定与接触表面1046接触的一个或多个点的其他接近传感器阵列或其他元件。触摸表面1046可包括例如触摸屏。

可将其他输入控制器1044联接到其他输入/控制设备1048,诸如一个或多个按钮、摇臂开关、拇指滚轮、红外线端口、USB端口和/或指针设备诸如触控笔。所述一个或多个按钮(未示出)可包括用于扬声器1028和/或麦克风1030的音量控制的增大/减小按钮。

在一个具体实施中,按下该按钮达第一持续时间可使触摸表面1046解除锁定,按下该按钮达第二持续时间(长于第一持续时间)可打开或关闭移动设备102的电源。用户能够对一个或多个按钮的功能进行自定义。例如,也可使用触摸表面1046实现虚拟或软按钮和/或键盘。

在一些具体实施中,移动设备102可显示记录的音频和/或视频文件,诸如MP3、AAC和MPEG文件。在一些具体实施中,移动设备102可包括MP3播放器的功能。移动设备102因此可包括与iPod兼容的针脚连接器。也可使用其他输入/输出和控制设备。

可将存储器接口1002联接到存储器1050。存储器1050可包括高速随机存取存储器和/或非易失性存储器,诸如一个或多个磁盘存储设备、一个或多个光学存储设备,和/或闪存存储器(如NAND、NOR)。存储器1050可存储操作系统1052,诸如Darwin、RTXC、LINUX、UNIX、OS X、WINDOWS、iOS或嵌入式操作系统诸如VxWorks。操作系统1052可包括用于处理基础系统服务以及用于执行硬件相关任务的指令。在一些具体实施中,操作系统1052可包括内核(如UNIX内核)。

存储器1050还可存储通信指令1054,以方便与一个或多个附加设备、一个或多个计算机和/或一个或多个服务器通信。存储器1050可包括图形用户界面指令1056,以方便图形用户界面处理;传感器处理指令1058,以方便与传感器相关的处理和功能;电话指令1060,以方便与电话相关的过程和功能;电子消息传送指令1062,以方便与电子消息传送相关的过程和功能;网络浏览指令1064,以方便与网络浏览相关的过程和功能;媒体处理指令1066,以方便与媒体处理相关的过程和功能;GPS/导航指令1068,以方便与GPS和导航相关的过程和指令;照相机指令1070,以方便与相机相关的过程和功能;磁力计数据1072和校准指令1074,以方便磁力计校准。存储器1050还可存储其他软件指令(未示出),诸如安全指令、用于方便与网络视频相关的过程和功能的网络视频指令,和/或用于方便与网上购物相关的过程和功能的网上购物指令。在一些具体实施中,媒体处理指令1066分为音频处理指令和视频处理指令,分别用于方便与音频处理相关的过程和功能以及与视频处理相关的过程和功能。还可将启动记录和国际移动设备识别码(IMEI)或类似硬件标识符存储在存储器1050中。存储器1050可存储包括建模指令和预测指令的重要位置指令1076。建模指令在执行时可使处理器1004执行状态模型确定子系统702的操作,包括过程800。预测指令在执行时可使处理器1004执行预报子系统710的操作。该操作可包括过程900。

上面标识的指令和应用程序中的每者均可与用于执行上述一个或多个功能的指令集相对应。这些指令不需要作为独立的软件程序、进程或模块来实施。存储器1050可包括附加的指令或更少的指令。此外,可在硬件和/或软件中,包括在一个或多个信号处理和/或专用集成电路中,执行移动设备的各种功能。

示例性操作环境

图11是实现基于分类的地理围栏的特征和操作的移动设备的示例网络操作环境1100的框图。移动设备1102a和1102b可(例如)在数据通信中通过一个或多个有线和/或无线网络1110通信。例如,无线网络1112(如蜂窝网络)可通过利用网关1116与广域网(WAN)1114(诸如互联网)通信。同样,接入设备1118(诸如802.11g无线接入点)可提供对广域网1114的通信接入。移动设备1102a和1102b中的每者可为移动设备102。

在一些具体实施中,可通过无线网络1112和接入设备1118建立语音和数据通信。例如,移动设备1102a可拨打和接收电话呼叫(如使用互联网协议电话(VoIP)协议),发送和接收电子邮件消息(如使用邮局协议3(POP3)),以及通过无线网络1112、网关1116和广域网1114检索电子文档和/或流,诸如网页、照片和视频(如使用传输控制协议/互联网协议(TCP/IP)或用户数据报协议(UDP))。同样,在一些具体实施中,移动设备1102b可通过接入设备1118和广域网1114来拨打和接收电话呼叫、发送和接收电子邮件消息以及检索电子文档。在一些具体实施中,移动设备1102a或1102b可使用一条或多条电缆物理地连接到接入设备1118,并且接入设备1118可以是个人计算机。在该配置中,移动设备1102a或1102b可被称为“受限”设备。

移动设备1102a和1102b还可通过其他方式建立通信。例如,无线设备1102a可通过无线网络1112与其他无线设备(例如其他移动设备、蜂窝电话等)通信。同样,移动设备1102a和1102b可通过使用一个或多个通信子系统(诸如BluetoothTM通信设备)建立对等通信1120,例如个人局域网。也可实现其他通信协议和拓扑结构。

移动设备1102a或1102b可例如通过所述一个或多个有线和/或无线网络与一个或多个服务1130、1140和1150通信。例如,一个或多个位置服务1130可向移动设备1102a和1102b提供与蜂窝塔或无线接入网关相关联的位置数据,使得移动设备1102a和1102b可使用三角测量来确定当前位置。位置服务1130可基于提示并基于自适应位置集群技术从移动设备1102a或1102b接收一系列的当前位置并确定移动设备1102a或1102b或两者的重要位置。行进规划服务1140可基于当前时间、当前位置和预报位置来提供交通信息,以帮助用户规划到预报位置的路线以及估计的到达时间。日历服务1150可将用户的日历项以及由同一用户的多个用户设备访问的相应位置存储在用户存储空间上。

移动设备1102a或1102b还可通过一个或多个有线和/或无线网络访问其他数据和内容。例如,移动设备1102a或1102b可访问内容发布者,诸如新闻站点、简易信息聚合(RSS)供稿、网站、博客、社交网站、开发者网络等等。通过响应于用户触摸(如网络对象)而调用网络浏览功能或应用程序(如浏览器)可提供这种访问。

如上所述,本说明书的主题的一些方面包括可从不同来源获得的数据的采集和使用,以改进移动设备可提供给用户的服务。本公开预期,在某些情况下,这些所采集的数据可包括唯一地识别或可用于联系或定位特定人员的个人信息数据。此类个人信息数据可包括人口数据、基于位置的数据、电话号码、电子邮件地址、推特ID、家庭住址或任何其他识别信息。

本公开认识到在本发明技术中使用此类个人信息数据可用于使用户受益。例如,该个人信息数据可用于递送用户较感兴趣的目标内容。因此,使用此类个人信息数据使得能够对所递送的内容进行有计划的控制。此外,本公开还预期个人信息数据有益于用户的其他用途。

本公开还预期负责此类个人信息数据的收集、分析、公开、传输、存储或其他用途的实体将遵守已确立的隐私政策和/或隐私实践。具体地讲,此类实体应当实行并坚持使用被公认为满足或超出对维护个人信息数据的隐私性和安全性的行业或政府要求的隐私政策和实践。例如,来自用户的个人信息应当被收集用于实体的合法且合理的用途,并且不在这些合法使用之外共享或出售。另外,此类收集应当仅在用户知情同意之后进行。另外,此类实体应采取任何所需的步骤,以保障和保护对此类个人信息数据的访问,并且确保能够访问个人信息数据的其他人遵守他们的隐私政策和程序。另外,这种实体可使其本身经受第三方评估以证明其遵守广泛接受的隐私政策和实践。

不管前述情况如何,本公开还预期用户选择性地阻止使用或访问个人信息数据的实施方案。即本公开预期可提供硬件元件和/或软件元件,以防止或阻止对此类个人信息数据的访问。例如,就广告递送服务而言,本发明的技术可被配置为在注册服务期间允许用户选择“加入”或“退出”参与对个人信息数据的收集。

因此,虽然本公开广泛地覆盖了使用个人信息数据来实现一个或多个各种所公开的实施方案,但本公开还预期各种实施方案也可在无需访问此类个人信息数据的情况下被实现。即,本发明技术的各种实施方案不会由于缺少此类个人信息数据的全部或一部分而无法正常进行。例如,可通过基于非个人信息数据或绝对最低限度的个人信息诸如与用户相关联的设备所请求的内容、对内容递送服务可用的其他非个人信息或公开可用信息来推断偏好,从而选择内容并递送给用户。

已描述了本主题的多个具体实施。然而,应当理解,在不脱离本主题的实质和范围的情况下可作出各种修改。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1