Location history filtering
Patent Information
- Application Number
- DE112013003019
- Authority / Receiving Office
- DE · DE
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2013-01-09
- Filing Date
- 2013-06-25
- Publication Date
- 2025-10-09
- Estimated Expiration
- 2033-06-25
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
background
[0001] A user may interact with applications running on a computing device (e.g., mobile phone, tablet computer, smartphone) via a user interface. For example, a user may interact with a user interface of a computing device to install, view, or delete an application stored in a memory of the computing device. In some cases, a user may use a mobile device (e.g., mobile phone, tablet computer, smartphone) to communicate with other devices or systems. For example, a user may interact with a user interface of the mobile device to send information (e.g., data generated by the mobile device or requests from the user for specific information) from the mobile device to a remote computing device. The mobile device may also receive information from a remote computing device (e.g.,a network server) over a network.
[0002] In some examples, the computing device may generate information regarding the location of the mobile device. The location information may be obtained, for example, by the mobile computing device using Global Positioning System (GPS) satellites or from triangulation using cellular network towers or other network access points. The location information may be used to locate the mobile device on an interactive map or otherwise identify the location of the mobile device for one or more mobile device services used by the user.
[0003] Techniques for tracking the location of movable assets are described in US 2010 / 0289644 A1. Techniques for dynamic information exchange on location-aware mesh network devices are described in US 8,427,979 B1. Techniques for collecting and distributing remote data are described in US 2009 / 0325570 A1. Brief outline
[0004] A computer device according to claims 1 to 11, a method according to claim 12 and a computer-readable storage medium according to claim 13 are disclosed.
[0005] In one example, a method comprises receiving, at a computing device, a first plurality of location indicators from a first mobile computing device and a second plurality of location indicators from a second mobile computing device, wherein the first and second computing devices are both associated with a single user and the first and second plurality of location indicators represent geographic locations at which the respective first and second mobile computing devices have been located;Determining, by the computing device, a subset of the first and second plurality of location indicators for a period of time, wherein all location indicators included in the subset are associated with that of the first mobile computing device or the second mobile computing device that moved with the user during the period of time, and outputting, by the computing device, information related to the subset of location indicators for the period of time;
[0006] In another example, a computing device comprises one or more processors and a location history module operable by the one or more processors to: receive a first plurality of location indicators from a first mobile computing device and a second plurality of location indicators from a second mobile computing device, wherein the first and second mobile computing devices are both associated with a user, and the first and second plurality of location indicators represent geographic locations at which each of the respective mobile computing devices has been located;determine a first subset of the first and second plurality of location indicators for a first time period, wherein all location indicators included in the first subset are associated with that of the first mobile computing device or the second mobile computing device that moved with the user during the first time period; determine a second subset of the first and second plurality of location indicators for a second time period different from the first time period, wherein all location indicators included in the second subset are associated with that of the first mobile computing device or the second mobile computing device that moved with the user during the second time period; and output information related to the first and second subsets of location indicators for the respective first and second time periods.
[0007] In another example, a computer-readable storage medium is encoded with instructions that cause one or more processors of a mobile computing device to receive a first plurality of location indicators from a first mobile computing device and a plurality of location indicators from a second mobile computing device, the first and second mobile computing devices associated with a user, the first and second pluralities of location indicators representing geographic locations at which each of the respective mobile computing devices has been located; determine a first subset of the first and second pluralities of location indicators for a period of time, wherein all location indicators included in the subset are associated with that of the first mobile computing device or the second mobile computing device that moved with the user during the period of time;discard a second subset of the first and second plurality of location indicators that is different from the first subset of location indicators, wherein the second subset of location indicators is associated with that of the first mobile computing device or the second mobile computing device that did not move with the user during the time period; and output information related to the first subset of location indicators for the time period;
[0008] The details of one or more examples are set forth in the accompanying drawings and the following description. Further features, objects, and advantages will become apparent from the description and drawings, as well as from the claims. Short description of the drawings Fig. 1 is a conceptual diagram illustrating an example system including a plurality of computing devices, each configured to send location indicators, and a server configured to determine which computing device has moved with the user based on the indicators, in accordance with one or more embodiments of the present disclosure; Fig. 2 is a block diagram showing components of an example of the computing device used in Fig. 1 is shown; Fig. 3 is a block diagram showing components of an example of the server used in Fig. 1 is shown; Fig. 4 is a graph of exemplary distances calculated between location indicators of respective computing devices and at all time periods; and Fig. 5 is a flowchart illustrating an example process that may be performed by a server to determine which location indicators from the plurality of computing devices represent movement of a user during a period of time. Detailed description
[0009] In general, techniques and systems for filtering location information received from multiple computing devices will be described. Computing devices can take many different forms, such as mobile computing devices (e.g., cellular phones, smartphones, smart watches, tablet computers, notebook computers, and navigation devices) or more stationary workstations. In some cases, a single user may own or otherwise use multiple different computing devices. For example, a single user may use two different mobile devices (e.g., one or more smartphones, smart watches, tablet computers, laptop computers, and / or other mobile computing devices). Each of these mobile computing devices may be associated with the user.
[0010] Each of the respective mobile computing devices associated with a user may generate and / or transmit location indicators at various times, each representing a current location of that respective mobile computing device. These location indicators may be sent over a network to one or more server devices and used by one or more applications or processes resident thereon to generate and / or provide the user with information relevant to these locations. In one example, the information provided to the user based on the location indicators may include information regarding historical locations or destinations that the user has previously visited. In another example, the information provided to the user may be based on location indicators and may include information or suggestions (e.g.,upcoming events or vouchers) related to locations the user may wish to visit in the future. In this way, a network-connected server may generate and send information related to consumption by the user based on the location the user traveled through and / or physically visited in the past. In another example, a server for one or more of the mobile devices may generate and send one or more notifications based on a current or past location of one or more of the mobile devices. Such notifications may, for example, include and / or provide vouchers or event information related to the locations.
[0011] However, location indicators received from one or more mobile computing devices located remotely from the user during a given time period may not accurately indicate the user's location during that time period. In other words, one or more servers may inaccurately define multiple locations for the user at the same given time period when considering location indicators from one or more of the user's mobile computing devices. Since in some cases the user may not be carrying or currently carrying all of their mobile computing devices at the same time (e.g., the user may carry a smartphone while maintaining a tablet computer at home), a server may not be able to accurately determine the user's actual location during a given time period based on the multiple location indicators.In other words, the one or more servers may not be able to distinguish location indicators received from a mobile computing device that a user carries from location indicators received from a mobile computing device that the user does not carry during the time period. Thus, location indicators received from multiple mobile computing devices associated with a user may, without further analysis, be of minimal value in accurately determining a user's location at a given time.
[0012] Techniques of this disclosure may, in various cases, enable a computing device (e.g., a mobile computing device or a network-connected server) to determine or filter location indicators that represent the user's location during a given time period from location indicators that do not represent the user's location during that given time period. In other words, a computing device may be configured to distinguish between location identifiers received from a mobile computing device that the user is carrying from those received from a mobile computing device that the user is not carrying during the given time period.For example, one or more servers may be configured to analyze the received location indicators to determine which location indicators or set of location indicators indicate movement of a mobile computing device over time. Those location indicators associated with greater movement or distance between the location indicators may be determined to represent the user's location during the given time period. Since computing devices carried by the user will travel farther than computing devices not carried by the user (e.g., devices left behind at home or in the office), the location identifiers indicating movement of a greater distance over the given time period may be selected for further use and / or used to identify which of the computing devices the user carried during that time period.
[0013] In one example, a server may receive location indicators from multiple computing devices over a network. The server may separate the location indicators into individual location streams based on a device identifier associated with each location indicator. In other words, each location stream may only include location indicators from a single computing device. After filtering the location indicators to remove at least some motion artifacts, the server may distribute location indicators from each location stream into predetermined time periods. For each time period and each location stream, the server may then calculate the total distance between consecutive location indicators. The server may then, in some implementations, select or determine the location indicators of the location stream with the greatest total distance to represent the user's location for each time period. Deselected location indicators may then be discarded by the server.This process can be repeated for any number or duration of time.
[0014] In this manner, location indicators that represent the user's actual location for the given time period can be distinguished from other location indicators. In some examples, the location indicators of computing devices that are remote from the user can be considered "noisy" indicators. Analysis of the location indicators described herein can thus distinguish active computing devices (e.g., computing devices that the user is carrying or using) from inactive computing devices (e.g., computing devices that the user is not carrying or using) during any number of time periods. In some examples, the selected location indicators can be used to identify which computing device or devices the user was carrying during a given time period.Thus, in some embodiments, discrimination between active and idle computing devices may be achieved using location information and without determining the processing usage of each device, where the applications are used by each device, and where the devices receive input from the user, or may be achieved by other metrics normally considered indicative of computing device usage.
[0015] The location history filtering described herein may generally be performed by a location history module and / or other processors of a network-connected server. However, in some examples, one or more embodiments of the process may be distributed to another computing device, such as a remote computing device, or even by a mobile computing device itself (e.g., the mobile computing device that sent at least some of the location identifiers processed by the server). Although computing devices associated with a single user are generally described as standalone devices, such as a smartphone or tablet computer, the computing device may instead be integrated into another device or system. Computing devices associated with a user may include, for example, a navigation system installed in a motor vehicle.In this way, in some examples, the computing device may be integrated into or part of another system.
[0016] Fig. 1 shows a conceptual diagram illustrating an example system 10 that includes a plurality of computing devices 14A, 14B, and 14C (collectively, "computing devices 14"), each configured to send location indicators 26A, 26B, and 26C (collectively, "location indicators 26"), and a server 22 configured to determine, based on the indicators, which computing device has moved with a user 12. As in Fig. 1, the system 10 includes computing devices 14, a network 20, the network server 22, and a storage 24. Each of the computing devices 14 may be carried (separately or together) by or otherwise associated with the user 12.
[0017] Each of the computing devices 14, in some examples, is or may be part of a portable or mobile computing device (e.g., a cellular phone, a netbook, a notebook, or a tablet device). In further examples, the computing devices 14 may be or may be part of a digital camera, a music player, a navigation device, or another type of computing device that the user can carry or move between different locations. Although each of the computing devices 14 may be generally portable or mobile, one or more of the computing devices 14 may be stationary or minimally portable. The computing devices 14 may also be connected to a network 20 (e.g., a wired or wireless network).Although the network 20 may be a single network, the network 20 may represent two or more networks that enable the computing devices 14 to communicate with the network server 22.
[0018] The computing devices 14 may each include a user interface (not shown) that includes one or more input devices and / or output devices such that the user can communicate with the computing devices 14. In one example, the user interface may include a touchscreen interface. In some examples, the user interface may include a display and one or more buttons, control panels, joysticks, mice, a tactile device, or other device that can convert user actions into electrical signals that control the computing devices 14. In each example, the user may interact with the user interface to provide input before or during the processes described herein. The user 12 may interact with one or more computing devices 14 at any given time.In some examples, the user 12 may carry one or more computing devices 14 during one part of the day, and may carry a different one of the computing devices 14 during another part of the day.
[0019] Each of the computer devices 14 may also have a (in Fig. 2) and other hardware that facilitates communication with the network 20. As described herein, the computing devices 14 may be configured to upload or transmit respective location indicators 26 as a representation of respective geographic locations that each computing device 14 (and possibly the user 12) has visited over time. Although the user 12 may carry the computing device 14A with them throughout a day, the computing devices 14B and 14C may remain stationary in the home of the user 12. Each of the location indicators 26 may represent longitude and latitude coordinates, destinations such as restaurants, stores, libraries, workplaces, parks, recreation facilities, schools, or any other locations that the user 12 may have visited.
[0020] When each of the computing devices 14 is energized, the computing devices may generate and / or transmit respective location indicators 26 to the server 22 via the network 20. These location indicators 26 may be generated and / or transmitted regardless of whether the respective computing device 14 is moving. The location indicators 26 may be generated and / or transmitted by a computing device in an active state (e.g., the user 12 is interacting with the device) or in an idle state (e.g., the user 12 is not interacting with the device, but the device is energized). Each of the computing devices 14 may continuously generate and / or transmit respective location indicators 26 at predetermined times and / or upon location change. The server 22 may thus receive hundreds, thousands, or even more location indicators 26 over time.At least some of the location indicators 26 may be maintained or stored by the network server 22 and the storage 24. In some examples, the location indicators 26 may be associated with the user 12 when the user 12 is logged into an application of the computing device 14 or is listed as the user of the computing device 14. The network server 22 may maintain the association between the user 12 and the computing device 14.
[0021] Computing devices 14 may generate location indicators 26 using one or more techniques. For example, computing device 14 may use a global positioning system (GPS) device to obtain longitude and latitude coordinates of the respective computing device 14. In another example, computing devices 14 may derive their position using one or more network access points (e.g., wireless towers or local area network access devices) to which computing device 14 is connected. In some examples, computing devices 14 may triangulate their approximate position from multiple cell towers. In another example, each of computing devices 14 may determine its respective position by detecting other computing devices using short-range communication or other communication protocols.In any event, each of the location indicators 26 may be generated for a respective location that the user of the respective computing device 14 has visited for at least one point in time. The computing devices 14 may generate each of the location indicators 26 using any one or a combination of these or other location detection techniques.
[0022] Each of the location indicators 26 may include some data representing the particular location 16 at which the location identifier was generated. The location indicators 26 may include, for example, one or more GPS coordinates, a distance and a direction from a known location, and / or a known landmark for which the network server 22 can derive the position of the landmark. The network server 22 may store each of the received location indicators 26 in the memory 24. The network server 22 may format each of the location indicators 26 into a predetermined format before or after storing each location identifier in the memory 24. The network server 22 may then analyze the received location indicators 26 to identify which of the location indicators 26 represent the geographic locations at which the user 12 was located.The network server 22 may also identify which one or more of the computing devices 14 was associated with the location indicators 26 representing the location of the user 12.
[0023] Each of the location indicators 26 may also be associated with or include a device identifier. The device identifier may be code or data that identifies the specific computing device 14 that sent the respective location indicator 26. In some examples, the device identifier may indicate the type of device (e.g., the manufacturer and model). In further examples, the device identifier may be a unique network address (e.g., an IP address or a Media Access Control address) for each computing device 14. In further examples, the user identifier may be a user-defined name or label that distinguishes each of the computing devices 14 from one another. As described herein, the device identifier may be used to separate location identifiers into different location streams or groups of location indicators that are unique to each computing device 14 (e.g.,Location indicators 26A, 26B and 26C) are specific.
[0024] The network server 22 may include one or more desktop computers, mainframes, minicomputers, or other computing devices capable of executing computer instructions and storing data. In further examples, the network server 22 may even include a mobile computing device with access to the network 20 and / or the storage 24. In this manner, the network server 22 may include, or be described as, any computing device configured to perform the features described herein with respect to the server 22. The network server 22 may include any hardware and software that enables the network server 22 to receive the location indicators 26 and determine which location indicators 26 represent the location of the user 12. The storage 24 may include one or more data stores, memories, hard drives, or other data storage devices.In some examples, the storage 24 may be included within the network server 22. The network 20 may be a high-speed network (e.g., a WiFi, a WiMAX, a wireless local area network, 3G, 4G) or another wireless network (e.g., a cellular or other data network). In some examples, the network 20 may be implemented by one or more of the Internet, a wired network, or a fiber optic network. In other words, the network 20 may be any data communication protocol or protocols that facilitates the transmission of data between two or more devices.
[0025] The storage 24 may be included in, or described as, cloud storage. In other words, the location indicators 26 and / or instructions implementing the techniques described herein may be stored in one or more locations in the cloud (e.g., one or more storages 24). The network server 22 may access the cloud and fetch or send data upon request by an authorized user, such as the computing devices 14. In some examples, the storage 24 may comprise Relational Database Management System (RDBMS) software. In one example, the storage 24 may be a relational database accessible through a Structured Query Language (SQL) interface, which is known in the art.Alternatively, storage 24 may be stored on a separate network-connected computing device and accessed by network server 22 through a network interface or system bus. In other examples, storage 24 may be an Object Database Management System (ODBMS), an Online Analytical Processing (OLAP) database, or another suitable data management system.
[0026] To facilitate connection to networks and access points for the media sharing service, computing device 14 may include a short-range communication module capable of communicating with various devices. Example short-range communication devices may include Bluetooth™, Wi-Fi™, near-field communication (NFC), or any other similar technology. The maximum distance between computing devices 14 and the other device (e.g., the coverage area or envelope surrounding each computing device 14) may be determined at least in part by the type of short-range communication used for sensing. In some cases, the maximum distance may be between about one meter and 100 meters. In one example, the maximum distance for sensing may be about 10 meters.
[0027] As described herein, the server 22 and / or another computing device (e.g., a computing device 14) may filter the location history of multiple devices associated with the user 12 to determine which locations represent actual locations of the user. The location history may include at least the location indicators 26 received from multiple computing devices 14 over time. Although three computing devices 14 in Fig. 1, two computing devices or four or more computing devices may be associated with the user 12 in other examples. Because the user 12 may only have one or two selected computing devices 14 with them at any given time, the location indicators 26 received by the server 22 over the network 20 may diverge from one another because different computing devices 14 generate and / or transmit the location indicators 26 representing different locations at approximately the same time. Therefore, the location indicators 26 may be filtered and / or analyzed to determine which of the location indicators 26 likely represent the user's location. The server 22 and / or a computing device may utilize a location history module or one or more processors to perform the techniques described herein.
[0028] In one example, server 22 may receive a plurality of location indicators 26A from computing device 14A, a plurality of location indicators 26B from computing device 14B, and a plurality of location indicators 26C from computing device 14C. Each of computing devices 14 may be associated with user 12, and location indicators 26 represent geographic locations at which each of the respective computing devices 14 has been located. Server 22 may also determine, based on the received location indicators 26, a subset of location indicators 26 associated with one of computing devices 14 that moved with user 12 during a period of time.For example, the server 22 may be configured to determine the subset of location indicators 26 associated with the one of the computing devices 14 that moved with the user 12 during the time period based on the distances between geographic locations represented by the location indicators from each of the respective computing devices 14. In other words, the server 22 may use the distances between consecutively received or chronologically ordered location indicators for the time period to determine the subset of location indicators associated with the one of the computing devices 14 that moved with the user 12. The server 22 may repeat the determination process for two or more additional time periods, such as hundreds or even thousands of additional time periods.The server 22 may also output the subset of location indicators 26 determined for each of the different time periods.
[0029] A computing device may be associated with user 12 if the computing device is registered to user 12 by a service provider of the device, the user is logged into one or more applications running on the computing device, or the user is otherwise using the computing device. For example, server 22 may record which user each of location indicators 26 should be associated with. Server 22 may filter the location history by multiple different users, so server 22 may need to be able to separate received location indicators 26 per user. In any event, each of computing devices 14 may be associated with a user based on a registration or login from the user stored in server 22 or memory 24.
[0030] In some examples, a processor or module of server 22 may output the subset of determined location indicators 26 to another processor or module of server 22. In this manner, server 22 may use the determined location indicators to provide a location-based service to user 12 or another functional entity. The determined location indicators that represent or estimate the locations of user 12 may be used to provide location-specific information to user 12, such as historical locations the user has previously visited, destinations the user frequents, or travel routes the user has previously taken.In another example, server 22 may use the determined location indicators to predict or suggest locations the user may want to visit, upcoming events, vouchers for related business establishments, or even navigation directions based on previous locations. Furthermore, server 22 may use the selected location indicators to enhance mapping services for the user or any other service or function that may benefit from information related to where user 12 has been located. In other words, server 22 and / or computing device 14 may use the selected location indicators to generate or determine information related to the selected subset of location indicators.The server 22 may be configured to output the related information to any mobile computing device associated with the user 12.
[0031] Determining the location indicators from the respective computing device 14 that the user 12 carried or used may include additional operations or steps. For example, the server 22 may separate each of the location indicators 26A, 26B, and 26C into respective individual location streams for each of the respective computing devices 14. In this manner, the location indicators received from each computing device 14 may be separated into the location streams specific to the computing device. Each location indicator 26 may include a device identifier or other identifier or code that enables the server 22 to identify from which computing device the location indicator was generated. In this manner, separating the location identifiers 26 may include separating the location identifiers by respective device identifiers associated with each of the received location identifiers.Each device identifier may represent one of the computing devices 14.
[0032] The server 22 may also filter location noise from the received location indicators 26. In some examples, the server 22 may filter the location noise from the respective location streams. Filtering the location noise may involve removing those location indicators 26 that represent location changes resulting from at least one of cell tower reassignment, atmospheric conditions, and variable wireless network strength. As described herein, each of the computing devices 14 may generate location indicators using various techniques, and some techniques may be more accurate than others. Additionally, some location determination techniques may involve identifying the location of a cell tower to which the computing device is assigned or another network access point.At these times, the computing device may be assigned to or switched to another nearby cell tower or access point, even if the computing device is stationary. This switching may be referred to as jitter and may erroneously represent computing device movement when, in fact, no movement has occurred.
[0033] The server 22 can be configured to remove these erroneous location indicators and to filter this noise from the location information. For example, the server 22 can generate a sequence of consecutive location indicators P1 to P n search, where P1 and P n are within a small distance D of each other and have timestamps within a few minutes or hours of each other. Furthermore, P1 and P n have a high reporting accuracy. If P2 to P n-1 (e.g. indicators between P1 and P n) have a low reporting accuracy and are located more than one error distance away from P1, then the points P2 to P n identified as erroneous indicators and removed from the location indicators retained or maintained in the location stream. In further examples, filtering location noise may include comparing the distance between consecutive location indicators and identifying when the distance is large, occurs rapidly, and / or oscillates. Other noise filtering techniques known in the field of signal-to-noise filtering may be used similarly to remove inaccurate location indicators.
[0034] Determining the subset of location indicators representing user movement may also include additional steps. For example, for each time period, the server 22 may calculate the total distance between a subset of location indicators for each of the individual location streams during the respective time period. The calculated total distances may represent the distance the respective computing devices 14 moved during the time period. The total distance may be the sum of the distances between the consecutive location indicators in time for each location stream. In other words, the total distance may be the length or distance of the geographic path represented by the chain of location indicators for the given time period.
[0035] The server 22 may compare the total distances for each of the location streams during the time period. The location indicators of the location stream with the largest calculated total distance, as determined in the comparing step, may be selected as the subset of location indicators representing the location of the user 12 for that time period. In general, movement of computing devices may be assumed to be carried by the user or to be active, whereas a lack of movement of computing devices may be assumed to be abandoned by the user or to be in an inactive or idle state. Therefore, computing devices that generate location indicators representing larger distance changes may be assumed to be carrying those by the user 12.
[0036] In some examples, however, none of the devices 14 moves at all or only moves a minimal distance during a period of time. In this way, the computing device or computing devices carried by the user can be inferred from adjacent time periods. For example, the server 22 may determine that the total distances for each of the location streams during the time period are approximately the same. The server 22 may then identify which of the computing devices 14 was associated with the location indicators selected for the time period immediately prior to the time period in question. In other words, the server 22 may check which computing device was determined to have been carried by the user 12 during the previous time period. The server 22 may then select the location indicators associated with the identified computing device for the time period in which the distances were approximately the same.In further examples, server 22 may review the subsequent time period to determine which computing device moved with the user and select the location indicators from that computing device for the time period where the distances were equal. In other words, if a computing device was determined to move with the user in a single time period, then server 22 may assume that the computing device is located with the user, even if all computing devices made movements of approximately equal distances.
[0037] In further examples, server 22 may select location indicators for a time period in which the computing devices move equal distances based on the location indicators selected from a previous or subsequent time period in which there was a location stream with a greater total distance traveled. Server 22 may compare the location of the selected location indicators in a single time period with the locations of deselected location indicators from the location streams in the adjacent time period. Server 22 may select the location indicators in closest proximity to the previous or subsequently selected location indicators. In other words, server 22 may attempt to select location indicators proximate to one or more location indicators in adjacent time periods. This approximation may thus maintain the likely continuity of user 12's locomotion.
[0038] Once the server 22 determines the location indicators that represent user movement during each time period, the user 22 may store the subset of location indicators selected for the respective time periods. The server 22 may store the location indicators in a database maintained in the memory 24. The database may include an entry for each time period that includes the respective location indicators and / or an entry for each location indicator with a respective timestamp that identifies when the location indicator was generated and / or received by the server 22. In some examples, the server may also identify the computing device or devices associated with the subset of location indicators selected for each time period. The server 22 may output the device identifier representing the identified computing device for the time period.The device identifier can be appended to each location indicator or simply to the time period. Server 22 can also store the device identifier with the respective location indicators in memory 24.
[0039] The device identifier for each time period can also be used to determine which of the computing devices 14, for example, notifications or other information should be sent to. For example, the server 22 may have a notification regarding an upcoming calendar event or other information to send to the user 12. Instead of sending the notification to all computing devices, the server 22 may use the device identifier to select which of the computing devices is the one to which the notification should be sent. The server 22 may then deliver the appropriate notifications to the selected one or more mobile computing devices.
[0040] In some examples, server 22 may discard and / or delete those location indicators that were deselected from each time period. In this manner, server 22 may discard the subset of location indicators that differs from the subset selected as representing the location of user 12. The discarded subset of location indicators may thus be associated with the one or more computing devices 14 that did not move with user 12 during the respective time periods. Discarding the deselected location indicators may prevent those indicators from contaminating the desired indicators. Discarded location indicators may be deleted from system 10. However, in some examples, server 22 may store discarded location indicators in memory 24 for later analysis.
[0041] The time period for each of the location indicators from each computing device may, in some examples, be a preselected time period. The server 22 may store instructions indicating how long one or more of the time periods may be. Longer time periods may improve the accuracy of determining which computing device 14 and its respective location indicators 26 represent the user location for that time period. However, the longer time periods may not identify short-term switching between devices. Shorter time periods may be more responsive in terms of identification when the user 12 switches devices, but the fewer number of location indicators from each computing device may decrease the accuracy of determining which computing device the user 12 was using or carrying during the short period.A balance between selecting a short margin for responsiveness and a long margin for selection accuracy may depend on the frequency of location indicator generation and transmission and / or usage patterns of each device.
[0042] In general, any time period can be selected to be between about one minute and one week. In a more specific example, each time period can be between about 10 minutes and 24 hours. In another example, each time period can be about 1 hour. Although each time period can be of equal duration, in some examples, server 22 can vary the time periods. For example, server 22 can increase the time period when user 12 is asleep, as this is when user 12 is less likely to be using a computing device or switching between devices. In contrast, server 12 can decrease the time period during the day when user 22 is more likely to switch between computing devices. In this manner, the duration of the time periods can be dynamically changed based on different times of day, events, or user patterns.
[0043] Various embodiments of the disclosure may only be operable if the user has explicitly enabled such functionality. For example, the user may be prompted to join or enable such functionality before the location indicators can be sent. Furthermore, various embodiments of the disclosure may be disabled by the user (e.g., the user may opt out of any functionality at any time). Thus, a user may choose to prevent one or more computing devices 14 from sending location indicators 26 or other location-related information related to the location the user is visiting or traveling through. Furthermore, the user may prevent computing devices 14 from sending information that identifies the user without confirmation.Computing devices 14 may display one or more screens prompting the user to select any or all of the information. In this way, the user can control what information, if any, is sent to server 22. More generally, privacy constraints may be applied in all embodiments of the disclosure based on the user's privacy preferences to respect the user's privacy preferences for entering or exiting the functionality described in this disclosure.
[0044] Fig. Figure 2 is a block diagram showing components of an example of the computing device 14A shown in Fig. 1 is shown. Fig. 2 shows only a single example of computing device 14A, and many other example embodiments of computing device 14A may be used in other instances. For example, computing device 14A may include additional components and run multiple different applications. Furthermore, computing devices 14B and 14C may include similar components to computing device 14A.
[0045] As in the specific example according to Fig. 2, the computing device 14A includes one or more processors 30, a memory 32, a network interface 34, one or more storage devices 36, a user interface 38, a power source 40, and a location device 42. The computing device 14A also includes an operating system 44, which may include modules and / or applications executable by the processors 30 and the computing device 14A, such as the location history module 48. The computing device 14A, in one example, further includes one or more applications 46. The one or more applications 46, such as the location history module 48, are also executable by the computing device 14A. Each of components 30, 32, 34, 36, 38, 40, 42, 44, 46, and 48 may be interconnected (physically, communicatively, and / or operatively) for intercomponent communication.
[0046] The processors 30, in one example, are configured to implement functionality and / or process instructions for execution within the computing device 14A. The processors 30A may, for example, be capable of processing instructions stored in the memory 32 or instructions stored in the storage devices 36. These instructions may define or otherwise control the operation of the operating system 44 and the application 46. The application 46, such as the location history module 48, may control the generation and / or transmission of the location indicators 26A and / or some or all of the processes for selecting which location indicators represent user movement. In other examples, the multiple applications 46 may control the processes described herein such that each application controls one or more aspects of the overall process (e.g.,A single application can control the generation of the location indicators 26, and a single application can control the transmission of the location indicators 26. The location history module 48 can perform some or all of the functions described herein and attributed to the network server 22. Alternatively, a network server 22 can perform all functions related to selecting the location indicators without requiring the location history module 48.
[0047] Memory 32, in one example, is configured to store information within computing device 14A during operation. Memory 32 is described in some cases as a computer-readable storage medium. In some examples, memory 32 is temporary memory, meaning that a primary purpose of memory 32 is not long-term storage. Memory 32, in some examples, is described as volatile memory, meaning that memory 32 does not retain stored contents when the computer is turned off. Examples of volatile memory include random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), and other forms of volatile memory known in the art.In some examples, memory 32 is used to store program instructions for execution by processors 30. In one example, memory 32 is used by software or applications running on computing device 14A (e.g., one or more of applications 46) to temporarily store information during program execution.
[0048] The storage devices 36, in some examples, also include one or more computer-readable storage media. The storage devices 36 may be configured to store larger amounts of information than the memory 32 (e.g., the location indicators 26). The storage devices 36 may further be configured for long-term storage of information. In some examples, the storage devices 36 include non-volatile storage elements. Examples of such non-volatile storage elements include magnetic hard disks, optical disks, floppy disks, flash memory, or forms of electrically programmable memory (EPROM) or electrically erasable programmable memory (EEPROM).
[0049] The computing device 14A also includes, in some examples, a network interface 34. The computing device 14A, in one example, uses the network interface 34 to communicate with external devices over one or more networks, such as the network 20 in Fig. 1. The network interface 34 may be a network interface card, such as an Ethernet card, an optical transceiver, a radio frequency transceiver, or any other type of device capable of sending and receiving information. Other examples of such network interfaces may include Bluetooth™, 3G, 4G, and WiFi™ wireless connections within the computing devices, as well as USB. In some examples, the computing device 14A uses the network interface 34 to wirelessly communicate with external devices (e.g., network server 22), such as a server, a cellular phone, or other network-connected computing device. As described herein, the network interface 34 may be configured to send location indicators 26 and receive any data over the network 20 as instructed by the applications 46 and / or the processors 30.
[0050] Computing device 14A, in one example, also includes a single or multiple user interfaces 38. User interface 38 may be configured to receive input from a user (e.g., tactile, audio, or video feedback). User interface 38 may include a touch-sensitive and / or presence-sensitive screen or display, a mouse, a keyboard, a voice-responsive system, or any other type of device for detecting a command from a user. User interface 38 may also include output devices combined with or separate from the input devices. In this manner, user interface 38 may be configured to provide output to a user using tactile, audio, or video stimuli.In one example, user interface 38 may include a touch-sensitive display, a sound card, a video graphics adapter card, or any other type of device for converting a signal into a suitable form understandable by humans or machines. Additionally, user interface 38 may include a speaker, a liquid crystal display (LCD), an array of light-emitting diodes (LEDs), or any other type of device capable of producing readable output for a user.
[0051] Computing device 14A may also include one or more location devices 42. Computing device 14A may use location device 42 to generate or otherwise obtain location indicators 26A. Location device 42 may include one or more satellite radio systems (e.g., the Global Positioning System (GPS) radio system) that can determine the geographic location of computing device 14A. Computing device 14A may use location device 42 to confirm the location of computing device 14A, identify which networks may be available to computing device 14A, or determine the location of computing device 14A from other networks or network towers.Alternatively, location device 42 may use triangulation or other such techniques to determine the location of computing device 14A based on known geographic positions of network towers, network access points, or any other type of device in communication with computing device 14A. In some examples, computing device 14A may also include one or more short-range communication devices (e.g., Bluetooth, Wi-Fi, ultra-wideband radio, or near-field communication devices). TM TM
[0052] Computing device 14A, in some examples, includes one or more power sources 40, such as a rechargeable battery, capable of supplying power to computing device 14A. Power sources 40, in some examples, may be made of nickel-cadmium, lithium-ion, or other suitable materials. In further examples, power sources 40 may be capable of providing stored current or voltage from other stored energy (e.g., fuel cells or capacitors).
[0053] Computing device 14A may also include an operating system 44. Operating system 44, in some examples, controls the operation of components of computing device 14A. In one example, operating system 44 facilitates, for example, interaction of application 46 with processors 30, memory 32, network interface 34, storage device 36, user interface 38, and location device 42.
[0054] Applications 46 may be a software and / or hardware module that controls the generation and transmission of location indicators 26 and / or any other described functions. Applications 46, such as location history module 50, may issue instructions to processors 30 to control any of the components of computing device 14A as needed during an embodiment of the process. Although applications 46 may be software independent of operating system 44, applications 46 may be a subroutine of operating system 44 in other examples. Applications 46 may also include submodules that perform various embodiments of the posting and transmission process. In some examples, the user may be prompted to initiate applications 46 by selecting the application from a list of applications stored on computing device 14A.Alternatively, the applications 46 may automatically start the location history module 48 upon commencement of power flow through the computing device 14 or upon receipt of a request from the user 12 to generate and transmit the location indicators 26.
[0055] Computing device 14A may include additional components or sensors to perform the functionality described herein. For example, computing device 14A may include one or more accelerometers to detect accelerations of computing device 14A, which may indicate that computing device 14A is moving. Any applications or modules (e.g., applications 46) implemented within or executed by computing device 14A may be implemented with respect to, included in, or operatively executable and / or operatively / communicably coupled to the component of computing device 14A (e.g., processors 30, memory 32, network interface 34, and / or storage device 36).
[0056] Fig. 3 shows a block diagram of components of an example of the network server 22. Fig. 3 shows only a single example of the network server 22 (e.g., a computing device), and many other example embodiments of the network server 22 may be used in other cases. For example, the network server 22 may include additional components, run multiple different applications, and / or include multiple different servers. In some examples, the network server 22 may include multiple servers in communication over the network 20 and / or another network. As in the specific example according to Fig. 3, the network server 22 includes one or more processors 50, a memory 52, a network interface 54, one or more storage devices 56, a user interface 58, a power source 60, and a location history module 62. The server 22 may also include an operating system including modules (e.g., the location history module 62) and / or applications executable by the processors 50. Each of the components 50, 52, 54, 56, 58, 60, and 62 may be interconnected (physically, communicatively, and / or operatively) for intercomponent communication. The server 22 may also be in communication with the memory 24 or even include the memory 24 as one of the storage devices 56.
[0057] In one example, processors 50 are configured to implement functionality and / or process instructions for execution within server 22. For example, processors 50 may be capable of processing instructions stored in memory 52, instructions stored in storage devices 56, or instructions stored in memory 24. Location history module 62 may be a hardware and / or software module configured to perform the various functions described herein related to selecting or determining which location indicators from among multiple devices represent the location of a user associated with the computing devices.For example, the location history module 62 may calculate total distances for location indicators of respective location streams and time periods, determine the largest total distance of the location indicators from each location stream and the respective time periods, and filter the location noise from the location indicators. In further examples, the processors 50 may perform some or all of the functions of the location history module 62. The server 22 may alternatively offload some or all of the functions of the location history module 62 to the computing device 14, other network servers, or other computing devices.
[0058] Memory 52, in one example, is configured to store information within server 22 during operation. Memory 52 is described as a computer-readable storage medium in some examples. In some examples, memory 52 is temporary memory, meaning that a primary purpose of memory 52 is not long-term storage. Memory 52 is described as volatile memory in some examples, meaning that memory 52 does not retain stored contents when the computer is turned off. Examples of volatile memory include random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), and other forms of volatile memory known in the art. In some examples, memory 52 is used to store program instructions for execution by processors 50.
[0059] The storage devices 56, in some examples, also include one or more computer-readable storage media. The storage devices 56 may be configured to store larger amounts of information than the memory 52 (e.g., cluster information 28 and / or location indicators 26). The storage devices 56 may also be further configured for long-term storage of information. In some examples, the storage devices 56 include non-volatile storage elements. Examples of such non-volatile storage elements include magnetic hard disks, optical disks, floppy disks, flash memory, or forms of electrically programmable memory (EPROM) or electrically erasable programmable memory (EEPROM). The memory 24, in some examples, may also include one or more computer-readable storage media.
[0060] The server 22, in some examples, also includes a network interface 54 configured to, for example, communicate with other devices and send and / or receive data over a network 22. The network interface 54 may be a network interface card, such as an Ethernet card, an optical transceiver, a radio frequency transceiver, or another type of device capable of sending and receiving information (e.g., the location indicators 26). In alternative examples, the network interface 54 may include Bluetooth, 3G, 4G, and a Wi-Fi wireless connection in TM TM mobile computing devices, as well as USB.
[0061] The user interface 38 may be configured to receive input from a user (e.g., tactile, audio, or video feedback) when direct interaction with the server 22 is desired. The user interface 38 may include a touch-sensitive and / or presence-sensitive screen or display, a mouse, a keyboard, a voice-responsive system, or any other type of device for detecting a command from a user. The user interface 38 may also include output devices, combined with or separate from the input devices. The user interface 38 may include a speaker, a liquid crystal display (LCD), an array of light-emitting diodes (LEDs), or any other type of device capable of producing readable output for a user.The power source may include a battery and / or a circuit for generating power from an AC or DC power source.
[0062] In further examples, server 22 may include additional components to perform the functionality described herein. Any applications or modules (e.g., location history module 62) implemented within or executed by network server 22 may be implemented by, included in, or operable by, executed by, and / or operatively / communicably coupled to the components of network server 22 (e.g., processors 50, memory 52, network interface 54, and / or storage devices 56).
[0063] Fig. 4 shows an exemplary graph 70 of exemplary total distances calculated between location indicators 26 of respective computing devices 14 and for each time period. As in Fig. 4, each different time period is provided on the X-axis. Although each time period in the example according to Fig. 4 is approximately one hour, the time periods in other examples may be of different durations. The distance in kilometers (km) is plotted on the y-axis.
[0064] As described herein, the location indicators 26 may have been separated into individual location streams for each of the computing devices 14. The server 22 may have the separated location indicators 26 using respective device identifiers associated with each of the location indicators to identify the device origin for each location indicator. The server 22 may also have calculated the total distance between the location indicators 26 for each location stream within each time period. This calculated total distance is shown in the graph 70.
[0065] For each time period (e.g., each one-hour block or each time period) shown on the x-axis, the total or cumulative distance traveled by each computing device 14 (based on the distance between each consecutive location indicator within the time period) is shown as a separate vertical bar. The location indicators from computing devices 14A, 14B, and 14C are shown as bars A, B, and C, respectively. In time period 1, for example, the total distance of the location indicators from computing device 14A is approximately 9 km. Likewise, for time period 1, the total distances of the location indicators from computing devices 14B and 14C are approximately 2 km and 1 km, respectively. After comparing the distances of bars A, B, and C of time period 1, it is determined that the total distance of bar A is greater than that of any of the other computing devices.The location indicators from computing device 14A may thus be selected from time period 1. The location indicators from computing devices 14B and 14C may be discarded for time period 1.
[0066] The same comparison of the total distances from each of bars A, B, and C can be continued for each of the time periods. For example, the location indicators from computing device 14B can be selected for time periods 3 and 4. Furthermore, the location indicators from computing device 14A can be selected again in time periods 2, 5, and 6. The location indicators received from computing device 14C may not be selected for any of the time periods shown, since the total distance for these location indicators was never greater than the distances for the other computing devices for the same time period.
[0067] In time period 2, all of the total distances for computing devices 14A, 14B, and 14C may be approximately the same. Therefore, server 22 may examine the previous time period to determine which location indicators to select for time period 2. Since the location indicators from computing device 14A had the greatest total distance and were selected in time period 1, and all of the distances of time period 2 are approximately the same, server 22 may again select the location indicators from computing device 14A. This selection may assume that computing device 14A remained with user 12 during the time period, since user 12 did not move during time period 2. In other examples, server 22 may examine subsequent time periods to select the location indicators of time period 2.Alternatively, the server 22 may analyze the actual locations of the location indicators from each of the computing devices 14 to determine which locations had approximate or ongoing location continuity with the locations of the selected location indicators in time periods 1 and / or 2.
[0068] Although some of the computing devices 14 were not moving during some of the time periods, the location indicators may still suggest that the respective computing device moved a small distance. For example, during time period 2, none of the computing devices 14 may have moved, and yet the total distance for each computing device may be approximately 1 km. This unexpected distance may be due to device switching between different cell towers, access points, or particular location generating devices used over time. A stationary computing device that switches or is reassigned to a different cell tower, for example, may appear to be moving because the locations of the successive location indicators are different. Even if the location indicators are filtered for location noise, some noise may still remain.In other examples, any total distance below a threshold within a single time period can be set to 0, and it can be assumed that the device was not actually moving. The threshold can depend on the time period. For example, the threshold can be chosen between approximately 500 m and 5 km. In one example, the threshold can be approximately 1 km for a period of one hour.
[0069] The graph 70 can be used for illustrative purposes in the example according to Fig. 4. However, the graph 70 may be output and sent by the server 22 to another module or device in other examples. The server 22 may generate similar graphs or tables of data based on any calculations or comparisons described herein.
[0070] Fig. 5 shows a flowchart illustrating an example process that may be performed by the server 22 to determine which of the location indicators 26 from the multiple computing devices 14 represents movement of the user 12 during various time periods. For purposes of clarity only, the location history module 62 of the network server 22 is described as performing the process according to Fig. 5. However, in some examples, the location history module 62 may include one or more processors, and the location history module 62 may be controlled by one or more software applications and associated modules. In further examples, one or more steps of the process may be performed by other devices, such as the location history module 48 of one or more of the computing devices 14.
[0071] As in Fig. 5, the process may begin with the location history module 62 receiving the location indicators 26 from a plurality of computing devices 14, each associated with the user 12 (80). The location history module 62 may then separate the location indicators 26 into individual location streams for each of the computing devices 14 (82). Once the location indicators are separated into their respective location streams, the location history module 62 may filter out the location noise from each of the location streams (84). Filtering the location noise may include removing those location indicators that have been identified as erroneous or otherwise inconsistent with the other location indicators.
[0072] The location history module 62 may then calculate the total distance change between the location indicators within the time period and for each of the location streams (86). For example, the location history module 62 may calculate and sum the distances between each consecutive location identifier of the location stream and within the time period. The location history module 62 may then compare the total distances of each location stream and select the location indicators of the location stream with the greatest distance change for the time period (88). The location history module 62 may discard any of the deselected location indicators for that time period (90). The location history module 62 may then output the selected location indicators as a subset of the location indicators for the time period (92). The selected subset of location indicators may represent the geographic locations at which the user 12 was located during that time period.
[0073] If the location history module 62 determines that additional location indicators are to be selected for another time period ("YES" branch of block 94), then the location history module 62 may calculate the total distances for the location indicators of the new time period for the other time period (86). If the location history module 62 determines that there are no more time periods for which the location indicators are to be selected ("NO" branch of block 94), then the location history module 62 may again receive location indicators from the computing devices 14 (80).
[0074] Other examples may use more or fewer steps than in the example shown in Fig.5 may be provided. The location history module 62 may not filter the location noise. In some examples, the deselected location indicators may not be discarded. In further examples, additional steps may be included, such as selecting the duration of one or more time periods and / or selecting the location indicators from the location streams with equal total distances for the time period based on selections from nearby time periods.
[0075] In one example, a method comprises receiving, at a computing device, a first plurality of location indicators from a first mobile computing device and a second plurality of location indicators from a second mobile computing device, wherein the first and second computing devices are both associated with a single user, and the first and second pluralities of location indicators represent geographic locations at which each of the respective first and second mobile computing devices has been located, determining, by the computing device, a subset of the location indicators associated with one of the first or second mobile computing devices that moved with the user during a period of time, the determined subset of the location indicators based on the received first and second pluralities of location indicators, and outputting, by the computing device, the subset of the location indicators for the period of time.
[0076] In another example, a computing device comprises one or more processors and a location history module operable by the one or more processors to receive a first plurality of location indicators from a first mobile computing device and a second plurality of location indicators from a second mobile computing device, the first and second mobile computing devices being associated with a user, the first and second pluralities of location indicators representing geographic locations at which each of the respective mobile computing devices has been located, determine, based on the received first and second pluralities of location indicators, a first subset of the location indicators associated with one of the first or second mobile computing devices that moved with the user during a first period of time,determine, based on the received first and second plurality of location indicators, a second subset of the location indicators associated with one of the first or second mobile computing devices that moved with a user during a second time period different from the first time period, and output the first and second subsets of the location indicators for the respective first and second time periods.
[0077] In another embodiment, a computer-readable storage medium is encoded with instructions that cause one or more processors of a mobile computing device to receive a first plurality of location indicators from a first mobile computing device and a second plurality of location indicators from a second mobile computing device, the first and second mobile computing devices being associated with a user, the first and second pluralities of location indicators representing geographic locations at which each of the respective mobile computing devices has been located, to determine, based on the received first and second pluralities of location indicators, a first subset of the location indicators associated with one of the first or second mobile computing devices that moved with the user during a period of time, a second subset of the location indicators,which is different from the first subset of location indicators, wherein the second subset of location indicators is associated with one of the first or second mobile computing devices that did not move with the user during the time period, and output the first subset of location indicators for the time period.
[0078] The techniques described in this disclosure may be implemented, at least in part, in hardware, software, firmware, or any combination thereof. Various embodiments of the described techniques may be implemented, for example, within one or more processors, including one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or any other equivalent integrated or discrete logic circuits, as well as any combinations of such components. The term "processor" or "processing circuit" may generally refer to any of the logic circuits described above, alone or in combination with other logic circuits, or any other equivalent circuit.A controller comprising hardware may also perform one or more of the techniques of this disclosure.
[0079] Such hardware, software, and firmware may be implemented within the same device or within separate devices to support the various techniques described in this disclosure. Furthermore, any of the described units, modules, or components may be implemented together or separately as discrete, but commonly operable, logic devices. In some examples, the functions of the units, modules, or components may be distributed among components of multiple devices or systems. The description of various features as modules or units is intended to emphasize different functional embodiments and does not necessarily imply that such modules or units must be implemented by separate hardware, firmware, or software components.Instead, functionality associated with one or more modules or units may be performed by separate hardware, firmware, or software components, or may be integrated within common or separate hardware, firmware, or software components.
[0080] The techniques described in this disclosure may also be embodied in, or encoded in, an article of manufacture including a computer-readable storage medium encoded with instructions. Instructions embedded in or encoded in an article of manufacture including an encoded computer-readable storage medium may cause one or more programmable processors or other processors to implement one or more of the techniques described herein, such as when instructions embodied in or encoded in the computer-readable storage medium are executed by the one or more processors.Example computer-readable storage media may include random access memory (RAM), read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), flash memory, a hard disk, a compact disc-ROM (CD-ROM), a floppy disk, a cartridge, magnetic media, optical media, or any other computer-readable storage device or tangible computer-readable media.
[0081] In some examples, a computer-readable storage medium may comprise a non-transitory medium. The term "non-transitory" may indicate that the storage medium does not embody a carrier wave or propagating signal. In certain examples, a non-transitory storage medium may store data that may change over time (e.g., in RAM or a cache).
Claims
[1] A computer device (22) comprising: one or more processors (50); and a location history module (62) operable by the one or more processors (50) to receive a first plurality of location indicators (26) from a first mobile computing device (14) and a second plurality of location indicators (26) from a second mobile computing device (14), wherein the first and second mobile computing devices (14) are both associated with a single user (12), and the first and second plurality of location indicators (26) represent geographic locations at which each of the respective first and second mobile computing devices (14) has been located; automatically determine a selected subset of one of the first plurality of location indicators (26) or the second plurality of location indicators (26) for a period of time, wherein all location indicators (26) included in the selected subset are associated with that of the first mobile computing device (14) or the second mobile computing device (14) that moved with the user (12) during the period of time, wherein the location indicators (26) associated with that of the first mobile computing device (14) or the second mobile computing device (14) that did not move with the user (12) during the period of time are deselected; separate the first plurality of location indicators (26) and the second plurality of location indicators (26) into respective individual location streams for each of the first mobile computing device (14) and the second mobile computing device (14), to determine the selected subset of one of the first plurality of location indicators (26) or the second plurality of location indicators (26) at least for the time period by calculating a first total distance between a subset of the location indicators (26) of the individual location stream for the first mobile computing device (14) and a second total distance between a subset of location indicators (26) of the individual location stream for the second mobile computing device (14), wherein the calculated first and second total distances represent a respective distance each of the first and second mobile computing devices (14) moved during the period of time, and wherein the location history module (62) is operable by the one or more processors (50) to determine the selected subset of location indicators (26) by at least the following: Comparing the first total distance and the second total distance for each of the respective local flows during the time period; and Selecting, for the time period and based on the comparison, one of the subset of location indicators (26) of the single location stream for the first mobile computing device (14) or the subset of location indicators (26) of the single location stream for the second mobile computing device (14) associated with the greatest total distance; and Output information related to the selected subset of location indicators (26) for the time period. [2] The computing device (22) of claim 1, wherein the time period is a first time period and the selected subset of location indicators (26) is a first selected subset of the location indicators (26), and wherein the location history module (62) is operable by the one or more processors (50) to: determine a second selected subset of the first plurality of location indicators (26) or the second plurality of location indicators (26) for a second time period different from the first time period, wherein each location indicator included in the second selected subset is associated with that of the first mobile computing device (14) or the second mobile computing device (14) that moved with the user (12) during the second time period; and output the second selected subset of the location indicators (26) for the second time period. [3] The computing device (22) of claim 1, wherein the location history module (62) is operable by the one or more processors (50) to separate the first plurality of location indicators (26) and the second plurality of location indicators (26) at least by separating the location indicators (26) by respective device identifiers associated with each of the received location indicators of the first plurality of location indicators (26) and the second plurality of location indicators (26), and each device identifier represents one of the first mobile computing device (14) or the second mobile computing device (14). [4] The computing device (22) of any preceding claim, wherein the location history module (62) is operable by the one or more processors (50) to remove from the respective single location stream for each of the first mobile computing device (14) and the second mobile computing device (14) the location indicators (26) representing a change in location due to at least one of cell tower reassignment, atmospheric conditions, and varying wireless network strength. [5] The computer device (22) of any preceding claim, wherein the time period is a first time period, the selected subset of the location indicators (26) is a first selected subset of the location indicators (26), and the location history module (62) is operable by the one or more processors (50) to determine the first selected subset of the location indicators (26) by at least the following: Comparing the first and second total distances for each of the respective local flows during the first time period; Determining that the first and second total distances for each of the respective local flows are approximately equal during the first time period; identifying that one of the first or second mobile computing devices (14) associated with a second selected subset of the location indicators (26) selected for a second time period immediately preceding the first time period; and Selecting, as the first selected subset of the location indicators (26), the location indicators received for the first time period and associated with the identified mobile computing device (14). [6] The computer device (22) of at least one of the preceding claims, wherein the location history module (62) is operable by the one or more processors (50) to store the selected subset of location indicators (26) for the time period. [7] The computer device (22) of at least one of the preceding claims, wherein the location history module (62) is operable by the one or more processors (50) to: identify the one of the first or second mobile computing devices (14) associated with the selected subset of location indicators (26); and outputting a device identifier representing the identified mobile computing device (14) for the period of time. [8] The computing device (22) of at least one of the preceding claims, wherein the selected subset of the location indicators (26) is a first selected subset of the location indicators (26), and wherein the location history module (62) is operable by the one or more processors (50) to discard a second deselected subset of the location indicators (26) that is different from the first selected subset, the second deselected subset of the location indicators (26) being associated with that of the first or second mobile computing device (14) that did not move with the user (12) during the time period. [9] The computer device (22) of at least one of the preceding claims, wherein the period of time is a preselected period of time between about 10 minutes and 24 hours. [10] The computing device (22) of at least one of the preceding claims, wherein the location history module (62) is operable by the one or more processors (50) to output information related to the selected subset of location indicators (26) for presentation on a display of at least one of the first mobile computing device (14), the second mobile computing device, or a third mobile computing device (14). [11] The computer device (22) of at least one of the preceding claims, wherein the computer device (22) comprises a network server, and wherein the network server comprises the location history module (62). [12] Method comprising: Receiving, at a server computing device (22), a first plurality of location indicators (26) from a first mobile computing device (14) and a second plurality of location indicators (26) from a second mobile computing device (14), wherein the first and second computing devices are both associated with a single user (12), and the first and second plurality of location indicators (26) represent geographic locations at which each of the respective first and second mobile computing devices (14) has been located; automatically determining, by the server computing device (22), a selected subset of one of the first plurality of location indicators (26) or the second plurality of location indicators (26) for a period of time, wherein all location indicators (26) included in the selected subset are associated with the one of the first mobile computing devices (14) or the second mobile computing device (14) that moved with the user (12) during the period of time, wherein the location indicators (26) associated with that of the first mobile computing device (14) or the second mobile computing device (14) that did not move with the user (12) during the period of time are deselected; Separating the first plurality of location indicators (26) and the second plurality of location indicators (26) into respective individual location streams for each of the first mobile computing device (14) and the second mobile computing device (14), Determining the selected subset of one of the first plurality of location indicators (26) or the second plurality of location indicators (26) at least for the time period by calculating a first total distance between a subset of the location indicators (26) of the single location stream for the first mobile computing device (14) and a second total distance between a subset of location indicators (26) of the single location stream for the second mobile computing device (14), wherein the calculated first and second total distances represent a respective distance each of the first and second mobile computing devices (14) moved during the time period; Comparing the first total distance and the second total distance for each of the respective local flows during the time period; Selecting, for the time period and based on the comparison, one of the subset of location indicators (26) of the single location stream for the first mobile computing device (14) or the subset of location indicators (26) of the single location stream for the second mobile computing device (14) associated with the greatest total distance; and Outputting, by the server computer device (22), information related to the selected subset of location indicators (26) for the time period. [13] A computer-readable storage medium (52) encoded with instructions that cause one or more processors (50) of a computing device (22) to: receive a first plurality of location indicators (26) from a first mobile computing device (14) and a second plurality of location indicators (26) from a second mobile computing device (14), wherein the first and second mobile computing devices (14) are associated with a user (12), and the first and second plurality of location indicators (26) represent geographic locations at which each of the respective first and second mobile computing devices (14) has been located; automatically determine a first selected subset of one of the first plurality of location indicators and the second plurality of location indicators (26) for a period of time, wherein all location indicators (26) included in the first selected subset are associated with that of the first mobile computing device (14) or the second mobile computing device (14) that moved with the user (12) during the period of time; discard a second deselected subset of one of the first plurality of location indicators (26) or the second plurality of location indicators (26) that is different from the first subset of location indicators (26), the second deselected subset of location indicators (26) being associated with that of the first mobile computing device (14) or the second mobile computing device (14) that did not move with the user (12) during the time period; separate the first plurality of location indicators (26) and the second plurality of location indicators (26) into respective individual location streams for each of the first mobile computing device (14) and the second mobile computing device (14), to determine the first selected subset of one of the first plurality of location indicators (26) or the second plurality of location indicators (26) at least for the time period by calculating a first total distance between a subset of the location indicators (26) of the individual location stream for the first mobile computing device (14) and a second total distance between a subset of location indicators (26) of the individual location stream for the second mobile computing device (14), wherein the calculated first and second total distances represent a respective distance each of the first and second mobile computing devices (14) moved during the period of time, and wherein the instructions cause the one or more processors to determine the first selected subset of the location indicators (26) by at least the following: Comparing the first total distance and the second total distance for each of the respective local flows during the time period; and Selecting, for the time period and based on the comparison, one of the subset of location indicators (26) of the single location stream for the first mobile computing device (14) or the subset of location indicators (26) of the single location stream for the second mobile computing device (14) associated with the greatest total distance; and Output information related to the first selected subset of location indicators (26) for the time period.
Citation Information
Patent Citations
System and Method for Remote Data Acquisition and Distribution
US20090325570A1
Moving asset location tracking
US20100289644A1
Method and system for dynamic information exchange on location aware mesh network devices
US8427979B1