SYNCHRONIZED GROUP LOCATION UPDATES
Systems and methods are disclosed in which a location update for a user is utilized as a location update for the user and one or more additional users that have been location-synchronized to the user. In general, a location update is received for a first user. One or more second users that have been location-synchronized to the first user are then identified. A location reported by the location update for the first user is recorded, or stored, as a current location of the first user and a current location of each of the one or more second users that have been location-synchronized to the first user. A location-based service, such as a social location-based service, may then be provided based on the current locations of the first and one or more second users.
Latest WALDECK TECHNOLOGY, LLC Patents:
This application claims the benefit of provisional patent application Ser. No. 61/309,903, filed Mar. 3, 2010, the disclosure of which is hereby incorporated herein by reference in its entirety.
FIELD OF THE DISCLOSUREThe present disclosure relates to location updates.
BACKGROUNDSocial Location-Based Services (SLBSs), such as the Gowalla® and FourSquare™ check-in services, require constant location updates to be accurate and useful. However, in many situations, users either are not capable of providing location updates (e.g., they do not have their mobile device with them or turned on) or do not desire to provide location updates (e.g., they are too busy talking with friends). As such, there is a need for a system and method that enables location updates from users even in situations where those users are not capable of providing or do not desire to provide location updates.
SUMMARYSystems and methods are disclosed in which a location update for a user is utilized as a location update for the user and one or more additional users that have been location-synchronized to the user. In general, a location update is received for a first user. One or more second users that have been location-synchronized to the first user are then identified. A location reported by the location update for the first user is recorded, or stored, as a current location of the first user and a current location of each of the one or more second users that have been location-synchronized to the first user. A location-based service, such as a social location-based service, may then be provided based on the current locations of the first and the one or more second users.
Those skilled in the art will appreciate the scope of the present disclosure and realize additional aspects thereof after reading the following detailed description of the preferred embodiments in association with the accompanying drawing figures.
The accompanying drawing figures incorporated in and forming a part of this specification illustrate several aspects of the disclosure, and together with the description serve to explain the principles of the disclosure.
The embodiments set forth below represent the necessary information to enable those skilled in the art to practice the embodiments and illustrate the best mode of practicing the embodiments. Upon reading the following description in light of the accompanying drawing figures, those skilled in the art will understand the concepts of the disclosure and will recognize applications of these concepts not particularly addressed herein. It should be understood that these concepts and applications fall within the scope of the disclosure and the accompanying claims.
The SLBS 12 is generally any type of social location-based service and is preferably implemented in software hosted by a computer server or a number of computer servers operating in a collaborative manner for purposes of load sharing and/or redundancy. As an example, the SLBS 12 may be a Mobile Aggregate Profile (MAP) service such as that described in U.S. patent application Ser. No. 12/645,532, entitled FORMING CROWDS AND PROVIDING ACCESS TO CROWD DATA IN A MOBILE ENVIRONMENT, which was filed Dec. 23, 2009; U.S. patent application Ser. No. 12/645,539, entitled ANONYMOUS CROWD TRACKING, which was filed Dec. 23, 2009; U.S. patent application Ser. No. 12/645,535, entitled MAINTAINING A HISTORICAL RECORD OF ANONYMIZED USER PROFILE DATA BY LOCATION FOR USERS IN A MOBILE ENVIRONMENT, which was filed Dec. 23, 2009; U.S. patent application Ser. No. 12/645,546, entitled CROWD FORMATION FOR MOBILE DEVICE USERS, which was filed Dec. 23, 2009; U.S. patent application Ser. No. 12/645,556, entitled SERVING A REQUEST FOR DATA FROM A HISTORICAL RECORD OF ANONYMIZED USER PROFILE DATA IN A MOBILE ENVIRONMENT, which was filed Dec. 23, 2009; U.S. patent application Ser. No. 12/645,560, entitled HANDLING CROWD REQUESTS FOR LARGE GEOGRAPHIC AREAS, which was filed Dec. 23, 2009; and U.S. patent application Ser. No. 12/645,544, entitled MODIFYING A USER'S CONTRIBUTION TO AN AGGREGATE PROFILE BASED ON TIME BETWEEN LOCATION UPDATES AND EXTERNAL EVENTS, which was filed Dec. 23, 2009; all of which are hereby incorporated herein by reference in their entireties. As described in the aforementioned published U.S. patent applications, the MAP service operates to, among other things, create and maintain a historical record of anonymized user profile data by geographic location and to create and track crowds of users all based on location updates received for users of the MAP service. Note, however, that the SLBS 12 is not limited to the MAP service. For example, the SLBS 12 may alternatively be a check-in service similar to the FourSquare™ check-in service or the Gowalla® check-in service. Other types of social location-based services will be apparent to one of ordinary skill in the art upon reading this disclosure and are to be considered within the scope of the present disclosure.
As illustrated, the SLBS 12 includes a location update server 20 and a user records repository 22. The location update server 20 is preferably implemented in software and generally operates to receive location updates, process the location updates, and update user records of the users 16 stored in the user records repository 22. As described below in detail, location-synchronized groups of users are created either manually by the users 16 or programmatically by the location update server 20. The location-synchronized groups of users are recorded in the user records of the users 16 stored in the user records repository 22.
The user records repository 22 generally includes a user record for each of the users 16, where each of the users 16 is a registered user of the SLBS 12. The user record of each of the users 16 includes a current location of the user 16. In addition, the user record of the user 16 includes a list of other users that are location-synchronized to the user 16 and/or an identifier of another user 16 to which the user 16 is location-synchronized. Note that, in one embodiment, the other users that are location-synchronized to the user 16 may all be users 16 of the SLBS 12. However, in another embodiment, the other users that are location-synchronized to the user 16 may include one or more of the users 16 of the SLBS 12 and/or users (e.g., user 32, discussed below) that are not registered with the SLBS 12. In some embodiments, the user record of the user 16 may also include a historical record of location updates received for the user 16 that includes one or more previous locations of the user 16 as defined by one or more previous location updates for the user 16. Still further, in some embodiments, the user record of the user 16 may include one or more user settings defined by the user 16 for use by the location update server 20 in programmatically location-synchronizing the user 16 to other users 16, programmatically location-synchronizing other users 16 to the user 16, programmatically de-synchronizing the user 16 from other users 16, and/or programmatically de-synchronizing other users 16 from the user 16.
In some embodiments, the user records repository 22 may also store user records for each of a number of non-registered users of the SLBS 12 such as, for example, user 32 (discussed below). For each non-registered user, the user record of that non-registered user includes a current location of the non-registered user. Further, the current location of the non-registered user is the current location of the user 16 to which the non-registered user has been location-synchronized. The user record of the non-registered user may also include user profile data, which may be provided by the non-registered user or obtained from a third-party source (e.g., the non-registered user's Facebook® profile).
The mobile devices 14 may be mobile smart phones, portable media player devices, mobile gaming devices, mobile computers (e.g., laptop computers), or the like. Some exemplary mobile devices that may be programmed or otherwise configured to operate as the mobile devices 14 are the Apple® iPhone®, the Palm Pre®, the Samsung Rogue™, the Blackberry Storm™, the Motorola DROID or similar phone running Google's Android™ Operating System, an Apple® iPad®, and the Apple® iPod Touch® device. However, this list of exemplary mobile devices is not exhaustive and is not intended to limit the scope of the present disclosure.
The mobile devices 14-1 through 14-N include SLBS clients 24-1 through 24-N (generally referred to herein collectively as SLBS clients 24 or individually as SLBS client 24) which include corresponding location update clients 26-1 through 26-N (generally referred to herein collectively as location update clients 26 and individually as location update client 26). The mobile devices 14-1 through 14-N also include location functions 28-1 through 28-N (generally referred to herein collectively as location functions 28 and individually as location function 28).
The SLBS clients 24 are preferably implemented in software and generally operate to provide an interface by which the mobile devices 14 and the users 16 interact with the SLBS 12. The location update clients 26 generally operate to obtain current locations of the mobile devices 14, and thus the users 16, from the location functions 28 and send corresponding location updates to the location update server 20 of the SLBS 12. The location update clients 26 may send the location updates periodically, in response to triggering events such as a change in the location of the users 16, or in response to a request from the location update server 20. As discussed below, the location updates may be for geographic locations at which the users 16 are located (e.g., latitude and longitude, street address, or the like) or for “check-in” locations. “Check-in” locations are Points of Interest (POIs) at or near the current geographic locations of the users 16 that have been selected by the users 16, or programmatically selected on behalf of the users 16, for “check-in” in a manner similar to that done for check-in services such as, for example, the FourSquare™ and Gowalla® check-in services.
For each mobile device 14, the location function 28 of the mobile device 14 may be implemented in hardware, software, or a combination thereof. In general, the location function 28 of the mobile device 14 operates to determine or otherwise obtain the geographic location of the mobile device 14. For example, the location function 28 of the mobile device 14 may be, or include, a Global Positioning System (GPS) receiver. In addition or alternatively, the location function 28 may include hardware and/or software that enables improved location tracking in indoor environments such as, for example, shopping malls. For example, the location function 28 may be part of, or compatible with, the InvisiTrack Location System provided by InvisiTrack and described in U.S. Pat. No. 7,423,580 entitled “Method and System of Three-Dimensional Positional Finding” which issued on Sep. 9, 2008, U.S. Pat. No. 7,787,886 entitled “System and Method for Locating a Target using RFID” which issued on Aug. 31, 2010, and U.S. Patent Application Publication No. 2007/0075898 entitled “Method and System for Positional Finding Using RF, Continuous and/or Combined Movement” which published on Apr. 5, 2007, all of which are hereby incorporated herein by reference for their teachings regarding location tracking.
In this embodiment, the system 10 also includes a guest device 30 having an associated user 32. The guest device 30 may be a mobile device similar to the mobile devices 14 or other computing device (e.g., a personal computer). The user 32 is enabled to access the SLBS 12 via the guest device 30 to, for example, request to be location-synchronized with a select one of the users 16. Notably, the user 32 is not a registered user of the SLBS 12. Further, while only one guest device 30 and associated user 32 are illustrated, the system 10 may include multiple guest devices 30 and associated users 32.
Next, the location update server 20 of the SLBS 12 identifies one or more other users that are location-synchronized to the user 16 (step 102). The other users that are location-synchronized to the user 16 may include only other ones of the users 16 of the SLBS 12, only non-registered users of the SLBS 12 such as the user 32, or one or more of the other users 16 of the SLBS 12 and non-registered users of the SLBS such as the user 32 depending on the particular implementation. Several embodiments of a process by which other users are location-synchronized to the user 16 are described below in detail. The location update server 20 of the SLBS 12 then records the location of the user 16 of the mobile device 14 reported in the location update as the current location of the user 16 of the mobile device 14 and the current location(s) of the other user(s) that are location-synchronized to the user 16 (step 104). The location reported in the location update is recorded as the current locations of the user 16 and the other user(s) that are location-synchronized to the user 16 by storing the location as the current locations in the user records of those users 16. The SLBS 12 provides a desired social location-based service to the users 16 of the SLBS 12 using the current locations of the users 16 and, in some embodiments, the current locations of non-registered users (step 106).
In some embodiments, the location-synchronization request may also include one or more settings configured by the requesting user that define when the requesting user is to be de-synchronized from the select user (i.e., define when the requesting user is to no longer be location-synchronized to the select user). The settings may include one or more time-based settings. For example, the settings may include a setting that defines an amount of time that the requesting user is to be location-synchronized to the select user or an end-time that defines the time at which the requesting user is to be de-synchronized from the select user. It should be noted that while the settings may be included in the location-synchronization request, the settings may alternatively be predefined by the requesting user and included in the user record of the requesting user.
In response to receiving the location-synchronization request, the location update server 20 of the SLBS 12 records, or stores, the requesting user as a location-synchronized user of the select user (step 302). More specifically, in one embodiment, the location update server 20 adds the requesting user to a list of location-synchronized users of the select user maintained in the user record of the select user. In another embodiment, the location update server 20 adds the select user as the user to which the requesting user is location-synchronized, which may be maintained in the user record of the requesting user. From this time and until the requesting user and the select user are de-synchronized, location updates for the select user will also be recorded as location updates for the requesting user.
In some embodiments, the location-synchronization request may also include one or more settings configured by the requesting user that define when the select user is to be de-synchronized from the requesting user (i.e., define when the select user is to no longer be location-synchronized to the requesting user). The settings may include one or more time-based settings. For example, the settings may include a setting that defines an amount of time that the select user is to be location-synchronized to the requesting user or an end-time that defines the time at which the select user is to be de-synchronized from the requesting user. It should be noted that while the settings may be included in the location-synchronization request, the settings may alternatively be predefined by the requesting user and included in the user record of the requesting user.
In response to receiving the location-synchronization request, the location update server 20 of the SLBS 12 records, or stores, the select user as a location-synchronized user of the requesting user (step 402). More specifically, in one embodiment, the location update server 20 adds the select user to a list of location-synchronized users of the requesting user maintained in the user record of the requesting user. In another embodiment, the location update server 20 adds the requesting user as the user to which the select user is location-synchronized, which may be maintained in the user record of the select user. From this time and until the requesting user and the select user are de-synchronized, location updates for the requesting user will also be recorded as location updates for the select user.
If the location update server 20 determines that the first user is to be location-synchronized to the second user, then the location update server 20 records the first user as a location-synchronized user of the second user (step 502). In some embodiments, a weight may be assigned to the first user as a location-synchronized user of the second user that reflects a degree of certainty, or sureness, that the first user should be location-synchronized to the second user. This weighting may subsequently be adjusted by users, such as but not limited to the first user or the second user, or other entities. Such feedback may be utilized by the location update server 20 to improve its methods of determining when it is appropriate to location-synchronize these particular users and/or users in the system in general based on, for example, a statistical analysis of the feedback. In this example, the process ends, at least with respect to this particular user pair. It should be noted that the process of
In response to receiving the de-synchronization request, the location update server 20 of the SLBS 12 removes the requesting user as a location-synchronized user of the select user (step 602). More specifically, in one embodiment, the location update server 20 removes the requesting user from a list of location-synchronized users of the select user maintained in the user record of the select user. In another embodiment, the location update server 20 removes the select user as the user to which the requesting user is location-synchronized as maintained in the user record of the requesting user.
In response to receiving the de-synchronization request, the location update server 20 of the SLBS 12 removes the select user as a location-synchronized user of the requesting user (step 702). More specifically, in one embodiment, the location update server 20 removes the select user from a list of location-synchronized users of the requesting user maintained in the user record of the requesting user. In another embodiment, the location update server 20 removes the requesting user as the user to which the select user is location-synchronized as maintained in the user record of the select user.
If the location update server 20 determines that the first user is to be de-synchronized from the second user, then the location update server 20 de-synchronizes the users by removing the first user as a location-synchronized user of the second user (step 802). In this example, the process ends, at least with respect to this particular user pair. It should be noted that the process of
While
The following use case is provided to illustrate some, but not necessarily all, of the embodiments described above. This use case is provided for illustrative purposes only and is not intended to limit the scope of the present disclosure in any manner whatsoever.
-
- 1. Jack is planning a night on the town with his girlfriend, Sarah, and his friends Sam, Jessica, Frank, and Charlene. Sarah, Jessica, Sam, and Jack are all users 16 of the SLBS 12. Since Sarah and Jessica are dressed up and did not want to have to bother with purses and Sam did not want to potentially lose his mobile device 14, they have all opted to leave their mobile devices 14 in Jack's car and let Jack represent them to the SLBS 12.
- 2. Before they leave for downtown, Sarah, Jessica, and Sam all log into the SLBS 12 via their mobile devices 14 and request to be synchronized with Jack for the night. Jack logs into the SLBS 12 and accepts their requests and requests that the SLBS 12 also synchronize two more friends, namely Frank and Charlene, to him for the night.
- 3. Using the SLBS 12, Jack peruses crowds downtown, particularly paying attention to crowds at a few potentially desirable POIs. Jack eventually chooses one POI and has the SLBS 12 give him directions to that POI.
- 4. The SLBS 12 sends an alert that includes information about Jack and his group to advanced users (e.g., owners or managers) of the POIs in which he has shown an interest. The SLBS 12 also gives the advanced user of the POI chosen by Jack an estimate for time of arrival.
- 5. The advanced users of the POIs in which Jack has expressed an interest may send some incentives to Jack and his group of synchronized users in hopes of attracting them.
- 6. Jack and his group end up going to the chosen POI, and they are able to get a dollar off admission each for going there.
- 7. They run into their friend Randolph, who is also a user 16 of the SBLS 12. Randolph decides to hang with Jack and his group for the evening.
- 8. As the night goes on and Jack updates his location, the SLBS 12 automatically updates the locations of all of the other users that are synchronized to Jack.
- 9. After Randolph updates his location at one of the same locations as Jack, the SLBS 12 determines that Randolph has been part of Jack, Sarah, Sam, and Jessica's groups in the past. In response, the SLBS 12 programmatically, or automatically, synchronizes Randolph to Jack. Since the SLBS 12 is not certain that Randolph should be synchronized with Jack, location updates received from Jack are also stored for Randolph but with a lower weighting or sureness value.
- 10. After the SLBS 12 finds a tweet by Randolph that the SLBS 12 determines means he is hanging out with Jack's group, the SLBS 12 increases the sureness value of location updates from Jack that are stored as Randolph's location.
- 11. Jessica had made plans to meet up with some other friends later on in the evening, so she takes her mobile device 14 from Jack's car and heads out to hang out with her other friends. The SLBS 12 sees that Jessica updates her location at least a predefined threshold distance from Jack, so it automatically de-synchronizes her from Jack.
- 12. Finally, Jack's group heads their separate ways for the evening. After a specified amount of time has expired, the SLBS 12 automatically de-synchronizes the rest of the group from Jack.
Those skilled in the art will recognize improvements and modifications to the preferred embodiments of the present disclosure. All such improvements and modifications are considered within the scope of the concepts disclosed herein and the claims that follow.
Claims
1. A computer-implemented method comprising:
- receiving a location update for a first user;
- identifying one or more second users that have been location-synchronized to the first user in response to receiving the location update for the first user; and
- recording a location reported in the location update for the first user as a current location of the first user and a current location of each of the one or more second users that have been location-synchronized to the first user.
2. The method of claim 1 further comprising providing a social location-based service based on current locations of a plurality of users comprising the first user and the one or more second users.
3. The method of claim 1 wherein the location reported in the location update for the first user is a current geographic location of the first user.
4. The method of claim 1 wherein the location reported in the location update for the first user is a check-in location for the first user.
5. The method of claim 1 further comprising, prior to receiving the location update for the first user:
- receiving, from a requesting user, a request to location-synchronize the requesting user to the first user; and
- recording the requesting user as being location-synchronized to the first user;
- wherein identifying the one or more second users that have been location-synchronized to the first user comprises identifying the requesting user as one of the one or more second users that have been location-synchronized to the first user.
6. The method of claim 1 further comprising, prior to receiving the location update for the first user:
- receiving, from the first user, a request to location-synchronize a select user to the first user; and
- recording the select user as being location-synchronized to the first user;
- wherein identifying the one or more second users that have been location-synchronized to the first user comprises identifying the select user as one of the one or more second users that have been location-synchronized to the first user.
7. The method of claim 1 further comprising, prior to receiving the location update for the first user:
- programmatically determining that a user is to be location-synchronized to the first user; and
- recording the user as being location-synchronized to the first user;
- wherein identifying the one or more second users that have been location-synchronized to the first user comprises identifying the user as one of the one or more second users that have been location-synchronized to the first user.
8. The method of claim 7 wherein programmatically determining that the user is to be location-synchronized to the first user comprises programmatically determining that the user is to be location-synchronized to the first user based on one or more user settings.
9. The method of claim 7 wherein programmatically determining that the user is to be location-synchronized to the first user comprises programmatically determining that the user is to be location-synchronized to the first user based on one or more system-defined rules.
10. The method of claim 7 wherein programmatically determining that the user is to be location-synchronized to the first user comprises programmatically determining that the user is to be location-synchronized to the first user based on current locations of the first user and the user at that time.
11. The method of claim 7 wherein programmatically determining that the user is to be location-synchronized to the first user comprises programmatically determining that the user is to be location-synchronized to the first user based on one or more historical locations of the first user and the user.
12. The method of claim 7 wherein programmatically determining that the user is to be location-synchronized to the first user comprises programmatically determining that the user is to be location-synchronized to the first user based on information obtained from one or more third-party sources that is indicative of spatial proximity of the first user and the user.
13. The method of claim 1 further comprising:
- receiving, from a requesting user, a request to de-synchronize the requesting user from the first user; and
- de-synchronizing the requesting user from the first user such that the requesting user is no longer location-synchronized to the first user.
14. The method of claim 1 further comprising:
- receiving, from the first user, a request to de-synchronize a select user from the first user; and
- de-synchronizing the select user from the first user such that the select user is no longer location-synchronized to the first user.
15. The method of claim 1 further comprising, prior to receiving the location update for the first user:
- programmatically determining that a user is to be de-synchronized from the first user; and
- de-synchronizing the user from the first user such that the user is no longer location-synchronized to the first user.
16. The method of claim 15 wherein programmatically determining that the user is to be de-synchronized from the first user comprises programmatically determining that the user is to be de-synchronized from the first user after a defined amount of time has expired since the user was location-synchronized to the first user.
17. The method of claim 16 wherein the defined amount of time is defined by the user.
18. The method of claim 16 wherein the defined amount of time is a system-defined amount of time.
19. The method of claim 15 wherein programmatically determining that the user is to be de-synchronized from the first user comprises programmatically determining that the user is to be de-synchronized from the first user at a time specified by the user.
20. The method of claim 15 wherein programmatically determining that the user is to be de-synchronized from the first user comprises programmatically determining that the user is to be de-synchronized from the first user based on one or more user settings.
21. The method of claim 15 wherein programmatically determining that the user is to be de-synchronized from the first user comprises programmatically determining that the user is to be de-synchronized from the first user based on one or more system-defined rules.
22. The method of claim 15 wherein programmatically determining that the user is to be de-synchronized from the first user comprises programmatically determining that the user is to be de-synchronized from the first user based on current locations of the first user and the user at that time.
23. The method of claim 15 wherein programmatically determining that the user is to be de-synchronized from the first user comprises programmatically determining that the user is to be de-synchronized from the first user based on one or more historical locations of the first user and the user.
24. The method of claim 15 wherein programmatically determining that the user is to be de-synchronized from the first user comprises programmatically determining that the user is to be de-synchronized from the first user based on information obtained from one or more third-party sources that is indicative of spatial proximity of the first user and the user.
25. A computer server comprising:
- a communication interface adapted to communicatively couple the computer server to a network; and
- a controller associated with the communication interface that is adapted to: receive, via the communication interface, a location update for a first user; identify one or more second users that have been location-synchronized to the first user in response to receiving the location update for the first user; and record a location reported in the location update for the first user as a current location of the first user and a current location of each of the one or more second users that have been location-synchronized to the first user.
26. A non-transitory computer-readable medium storing software for instructing a controller of a computing device to:
- receive a location update for a first user;
- identify one or more second users that have been location-synchronized to the first user in response to receiving the location update for the first user; and
- record a location reported in the location update for the first user as a current location of the first user and a current location of each of the one or more second users that have been location-synchronized to the first user.
Type: Application
Filed: Feb 15, 2011
Publication Date: Mar 15, 2012
Applicant: WALDECK TECHNOLOGY, LLC (Wilmington, DE)
Inventor: Sean T. Purdy (Durham, NC)
Application Number: 13/027,756
International Classification: G06F 15/16 (20060101);