The various aspects of the subject matter disclosed herein are now described with reference to the annexed drawings, wherein like numerals refer to like or corresponding elements throughout. It should be understood, however, that the drawings and detailed description relating thereto are not intended to limit the claimed subject matter to the particular form disclosed. Rather, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the claimed subject matter.
As used herein, the terms “component,” “system” and the like are intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on computer and the computer can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
The word “exemplary” is used herein to mean serving as an example, instance, or illustration. The subject matter disclosed herein is not limited by such examples. In addition, any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs.
Furthermore, the disclosed subject matter may be implemented as a system, method, apparatus, or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof to control a computer or processor based device to implement aspects detailed herein. The term “article of manufacture” (or alternatively, “computer program product”) as used herein is intended to encompass a computer program accessible from any computer-readable device, carrier, or media. For example, computer readable media can include but are not limited to magnetic storage devices (e.g., hard disk, floppy disk, magnetic strips . . . ), optical disks (e.g., compact disk (CD), digital versatile disk (DVD) . . . ), smart cards, and flash memory devices (e.g., card, stick). Additionally it should be appreciated that a carrier wave can be employed to carry computer-readable electronic data such as those used in transmitting and receiving electronic mail or in accessing a network such as the Internet or a local area network (LAN). Of course, those skilled in the art will recognize many modifications may be made to this configuration without departing from the scope or spirit of the claimed subject matter.
The availability of location information can enhance usability of mobile devices and provide users with information relevant to their current location. Additional functionality can be achieved if users can also receive or utilize information regarding the location of other users (e.g., family members or friends) and/or events (e.g., sales, concerts or traffic bottlenecks). In particular, alerts or notifications based at least in part upon mobile device location information can provide users with an invaluable tool for monitoring user locations, receiving information regarding local events and the like.
An alert system can provide for creation and management of user accounts corresponding to individual mobile devices. Accounts can be used to control access to location information for enrolled mobile devices and to manage a set of alerts. As used herein, an alert defines a set of conditions, which when met, result in the transmission of a message or signal to a device (e.g., cell phone, PDA, laptop computer, desktop computer). Location information can include location of the mobile device, location of other mobile devices enrolled in the alert system, location of events or activities and other any information derived from current or previous locations of users or events.
Referring now to
Information related to accounts can be stored in an account data store 104. A data store, as used herein, is any collection of data including, but not limited to, a database or collection of files. The account data store 104 can include user information (e.g., a user or account identifier and contact information), information regarding the relationship of the account to other accounts (e.g., dependencies) and any alerts associated with the account. A dependent account can be created for children or the elderly who might not be able to control their own account effectively. Alert information can be stored with account information in the account data store 104, in a separate alert data store 106, or in a combination thereof. The alert data store 106 can maintain alerts defined for accounts of the alert system. Typically, an alert is associated with a particular user account.
The alert system 100 can include a location component 108 that can receive, obtain or retrieve location information for a set of mobile devices. The location component 108 can receive location information periodically and/or dynamically. Alternatively, the location component 108 can request and/or retrieve information either periodically or dynamically. The location information can include any data indicative of the current location of a mobile device including, but not limited to, latitude and longitude, street addresses or any other geographic designators. Additionally, location information can include any information from which location of a mobile device can be deduced or estimated. For instance, the location information can include signal data from which the position of the mobile device can be computed using triangulation algorithms.
Location information for enrolled mobile devices can be maintained in a device location data store 110. Alternatively, location information for each mobile device can be stored with account information for the mobile device and maintained in the account data store 104. The device location data store 110 (or account data store 104) can maintain a history of previous location information for the mobile devices. The location information can include a timestamp indicating the time at which the location information was generated or recorded.
The alert system 100 can also include an alert evaluator component 112 that can determine when alert conditions have been met, triggering distribution of one or more notifications. The alert evaluator component 112 can periodically determine whether any alerts in the system 100 have been actuated based upon the most recent location information and alert conditions. Alternatively, the alert evaluator component 112 can dynamically review a subset of available alerts based upon received location information. For instance, if updated location information is received for a particular mobile device, the alert evaluator component 112 can review only those alerts defined based upon the position of the particular mobile device, and generate any notifications based upon the updated location information.
When the alert evaluator component 112 determines that an alert has been actuated, a notification can be distributed to appropriate mobile devices by a notification distributor component 114. A notification distributor component 114 can transmit generated notifications periodically or dynamically. Alternatively, the notification distributor component 114 can provide notifications to mobile devices upon receiving a request from the mobile devices or account. For instance, if a mobile device has been turned off or has left the coverage area and is unable to connect to the system 100, the mobile device can request the most recent notifications upon resuming contact with the system 100. In addition to automatically generated notifications, an account can request and receive location information for any mobile device enrolled in the system 100, if the account has the correct permissions. The permissions required to access and utilize location information for mobile devices are discussed in detail below. The notification distributor component 114 can also ensure that relevant data is included in the notification and that notifications are formatted for individual mobile devices. For instance, a notification can be sent as an SMS message to a cell phone or as an email message to a laptop with Wi-Fi access.
Referring now to
The alert system 202 can include a network server 208 (e.g., a HTTP server) and a data store server 210 (e.g., a database server). The data store server 210 can manage and support location, account and alert information. The network server 208 can allow users to access account information maintained in the data store server 210. Although a single network server 208 and data store server 210 are illustrated, the alert system 202 can include any number of network servers 208 and data store servers 210. Alternatively, location, account and alert information can be stored as a set of files shared over a network using a peer-to-peer (P2P) file distribution application. Relevant account and alert information can be located on a set of mobile devices and shared as needed.
The set of terminals 204 can connect to the network server 208 via a network (e.g., the Internet). The set of terminals 204 can include any number of terminals 212. Terminals can include desktop computers, laptops, PDAs and the like. Users can utilize terminals 212 to create and/or manage mobile device accounts. Accounts can also be managed from mobile devices 206. However, in general, mobile devices include limited user interfaces (e.g., display screens and keypads) to minimize size and weight of such devices and enhance portability. Accounts can be managed using terminals 212 to provide users with enhanced user interfaces and facilitate management of accounts and alerts.
The mobile devices 206 can be enrolled and associated with an account of the alert system 202. Location information for each enrolled mobile device should be provided to the alert system 202 and can be used to trigger alerts prompting distribution of notifications. Location information can include geographic designators such as latitude and longitude, street address and the like. Additionally, location information can include information from which location can be computed or estimated. Location can be determined either at the mobile device, at the alert system 202 or at a separate system (not shown). The location information can be provided periodically or dynamically to the alert system 202.
Location of the mobile devices 206 can be determined in any manner that allows location information to be provided to the alert system 202. For example, location can be determined using a GPS associated with the mobile device. Alternatively, any or all of a variety of triangulation algorithms can be used to calculate mobile device location based upon signals received at the mobile device and position of base stations and transmitters.
Users can also elect to self-report or assert the current location of a mobile device. Users can advise the alert system 202 of the location of the mobile device 206 either by inputting a geographic designator or entering or selecting from a provided set of predefined locations. The system can include a set of predefined locations and users can add user-specific locations, such as the user's home, work or school locations. The user can also elect to share their list of custom defined locations with other users (e.g., family or friends). Locations can be defined either through the set of terminals 204 or the set of mobile devices 200. To report current location, a user can select a current location from a list of predefined locations displayed on a mobile device 206.
Referring now to
Referring now to
During account initialization, the owner or user of the mobile device can be prompted to enter information necessary to establish an account. For example, the user can be prompted for information required to contact the mobile device (e.g., cell phone number), a user or account name associated with the account, a password to be used to access the account in the future and a verification phrase. The verification phrase can be used to help ensure the person initiating the account has the authority to enroll the mobile device and create the corresponding account.
At reference numeral 404, an invitation to confirm enrollment in the alert service is transmitted to the mobile device whose identifier was entered during account initialization. The invitation notifies the individual in possession of the mobile device of account initialization and requests that the individual confirm creation of the account. At reference numeral 406, a response to the invitation is received. A determination is made as to whether the invitation is accepted at reference numeral 408. If the invitation is declined, the invitation is deleted at reference numeral 410 and the process terminates. If the individual desires to create the account, the response includes the verification phrase to confirm the account. Inclusion of the verification phrase ensures that the individual initializing the account and the individual in possession of the mobile device are either one and the same or that the individuals have agreed upon a verification phrase and creation of the account.
At reference numeral 412, a determination is made as to whether the received response includes a verification phrase identical to the verification phrase established during initialization. If yes, the account is created and activated at reference numeral 414 and the enrollment process terminates. The newly created account can be accessed using the password established at initialization. If the verification phrases are not identical, the process can return to reference numeral 404, and generate another invitation requesting that the individual reenter the verification phrase. If the verification phrase is incorrectly entered multiple times, the process may terminate.
Referring now to
An exemplary invitation display screen 502 illustrates the invitation received at the cell phone. The invitation advises the cell phone user that the initialization process is underway and allows the cell phone user to indicate whether they wish to continue with the initialization process. Confirmation by the cell phone user prevents individuals from setting up accounts for mobile devices belonging to others without permission. If the cell phone user wishes to continue initialization of the alert server account, a confirmation display screen 504 can be displayed allowing the cell phone user to elect to contact (e.g., via a phone call) the inviter to get the verification phrase. The cell phone user can call the inviter to obtain the verification phrase without disrupting the initialization process. By obtaining the verification phrase directly from the inviter, the cell phone user confirms the identity of the inviter. The cell phone owner can initialize their own account, in which case the inviter and the cell phone user would be the same individual.
Once the cell phone user has received the verification phrase, an exemplary verification display screen 506 can be rendered including a prompt to enter the verification phrase. Once the verification phrase is correctly entered, a successful initialization display screen 508 can be rendered indicating that the account initialization process has been successfully completed. The account can be further configured using a terminal or desktop to facilitate account setup.
The system can provide multiple types of accounts, such as independent accounts and dependent accounts. Typically, each mobile device can be connected to a single account. However, a single user can control multiple accounts by creating an independent account and one or more related dependent accounts governed, at least in part, by the independent account. All accounts can include a set of permissions controlling access to location information for the corresponding mobile device. In particular, each account can include a list of locate permissions and a list of alert permissions. A locate permission gives the account the ability to access location information for a mobile device associated with another account. This gives the account the ability to locate the mobile device. An alert permission gives the account the ability to define an alert based upon the location of a mobile device associated with another account. In addition, each account can track the permissions that it has granted to other accounts, allowing other accounts to locate or define an alert based upon the location of the mobile device associated with the account. Additional permissions can include defining locations and/or regions, creating or modifying alerts associated with an account, controlling subordinate or dependent accounts and unsubscribing from the alert system.
Independent accounts can control the grant of permissions associated with the account. In contrast, dependent accounts can have limited control of account permissions. Each dependent account can be related to, or dependent upon an independent account. The independent account can determine the specific permissions available for any dependent account. Dependent accounts can be useful in situations where individuals should not have control of the full features of the alert service. For example, a parent may set up a dependent account for their child or an adult child may set up a dependent account for their elderly parent.
During account initialization or configuration, each independent account can grant locate, alert or any other permissions to other accounts. Dependent accounts can grant permissions as allowed by the independent account governing the dependent account. Grants of locate, alert and other permissions are distinct from the independent/dependent account relationship. For example, when a first account grants locate and/or alert permission to a second account, the first account retains control and can cancel either or both permissions at any point. In contrast, dependent accounts may control only a subset of their permissions. Instead, the permissions of dependent accounts can be governed by related independent accounts.
The user can manually grant account permissions at any time utilizing the account interface if the user's account permits it. Alternatively, the alert system can be utilized in conjunction with a social network to automatically generate default grants of permission. Permissions can be added, cancelled or modified at any time. For example, a user may wish to initialize his account by allowing all friends in his social network to set alerts based upon his location. As additional friends are made, the user can add those new friends (if they enroll in the alert system) to his permissions. Similarly, the user can remove individual accounts from his permissions or modify the granted permissions.
The account interface can provide a set of templates to facilitate the granting of common types of permissions. For example, if the user identifies another account as a family member, the family member account can automatically be granted both locate and alert permissions. In addition, users can generate custom templates to meet the user's specific needs. For example, an employer can generate a template to be used by their employees that grants locate permission to the employer only within regular business hours.
The scope of permission grants can be limited to increase flexibility and usability. A user can grant locate permission for a limited period of time, or for certain recurring periods of time. For example, an employee may grant locate permission to an employer or coworker limited to between the hours of nine o'clock and 5 o'clock on weekdays. Outside of work hours, the employer should not have permission to locate the employee. Alternatively, the scope of permissions can be limited geographically. For instance, a user may allow coworkers to determine when he is within the office or to locate him within a warehouse or on the company campus, but not once he has left a predefined geographic area, such as the company grounds.
Alert conditions can be based upon the juxtaposition or proximity of a first entity with a second entity, where an entity can be an individual mobile device, a geographic region, a geographic location or an event. Typically, it is the combination of two or more entities or features that triggers distribution of a notification to a mobile device. For example, an alert can be defined so that a notification is distributed when a first entity is in close, physical proximity to a second entity. Users can define alerts through a GUI accessible through a terminal or through the mobile device.
Alerts are frequently defined based upon location of a specific mobile device and consequently, the location of the user of the mobile device. For simplicity, it is assumed herein that location of a mobile device corresponds to the location of the person using the mobile device. Alert conditions can be based upon location of the mobile device corresponding to the account for which the alert is defined. For instance, a user can define an alert based upon their current location. Users can also define alerts based upon the location of any other mobile device enrolled within the alert system and for which the user has alert permission. A user can define a position update alert that notifies the user of the current location of a target mobile device (and its owner) on a periodic basis. For example, a parent can generate an alert that notifies the parent of their child's location every thirty minutes. Users can also dynamically request the current location for any mobile devices enrolled within the alert system for which the user has locate permission. For instance, a parent can request the current position of their child at any time, if the parent has locate permission for the child's mobile device.
An alert can also be defined based upon a person's amount of motion during a period of time, instead of, or in addition to their specific geographic position. An alert can be actuated and a notification distributed based upon excessive distances traveled during a given time frame. This type of alert can be used to determine if a teenager is cruising, or driving up and down the same strip of road. While the teenager may not travel far from home, location information from the teenager's mobile device can be used to determine that the teen has traveled an inordinate distance. For instance, an alert can be actuated if the teenager travels more than sixty miles on a Friday night. Conversely, an alert can be actuated based upon lack of motion. For instance, a notification can be generated to notify an adult child if their elderly parent has not moved for an eight-hour period during the day.
Alerts can also be defined to notify a user if location information becomes unavailable for an individual mobile device for a period of time. For instance, an alert can be triggered if location information has not been updated for more than two hours. Stale or out of date location information can indicate that the individual has turned off the mobile device, that there is a problem with the mobile device or that they have left the coverage area for the system.
Alerts can be defined based upon the proximity of enrolled users to one another. A user may wish to be notified any time a particular friend is within their proximity. For example, an alert can be specified to notify the user if the friend is within 0.1 miles of the user's current location. Conversely, the user can define an alert that is actuated when an individual is no longer in physical proximity of the user. For example, during a family trip to an amusement park, a parent may wish to set an alert that would be triggered if their child were more than 0.1 miles from the current location of the parent.
The user can also define groups or categories of people (e.g., family, friends and coworkers) that can be shared with other users. These categories can be used during alert definition, allowing the user to receive a notification if any of their friends is within 0.1 miles of their current location. The user can also set an alert triggered if any person for whom the user has alert permission, regardless of category, is in proximity to the user.
Alert conditions can also be based upon the proximity of multiple, mobile device users to each other. An alert can be defined to actuate whenever two or more enrolled mobile device users, for whom the user has alert permission, are within 0.1 miles of each other. For instance, an employee could set an alert that would notify him whenever two or more members of his work group are in close physical proximity to each other, possibly indicating a project meeting. Similarly, the user can create an alert actuated when any three or more coworkers are in physical proximity to each other. Conversely, the user can also define an alert triggered when two enrolled individuals are separated by more than a predefined distance. For instance, one parent can define an alert that is triggered when the other parent is separated from a child by more than 0.1 miles.
Referring now to
Geographic locations can include specific locations or points of interest (POIs). The alert system 600 and particularly the geographic data store 602 can include a set of predefined locations, such as airports, historical monuments (e.g., the Lincoln Memorial or the Statue of Liberty), universities (e.g., The Ohio State University), hospitals (e.g., The Cleveland Clinic) and the like. Users can also define additional, customized geographic locations. For example, a user can define his or her home, business office and the like. Users can also elect to share lists of POIs with other users. For instance, a family may share a list of POIs including the family home, the children's schools and the like. In addition, users can generate and share lists with other, non-related users. A user with an interest in fishing can generate POIs indicating favored fishing spots and make the list available to other fishermen.
Alerts can be defined based upon the combination of one or more people and a location or POI. For example, an alert can be defined that notifies a parent when a child arrives at home each day. Conversely, an alert can be defined that notifies a parent when a child leaves the family home.
POIs can be grouped based upon predefined categories to facilitate alert generation and management. Exemplary categories include historical monuments, hospitals and airports. Users can also define and share POI categories of particular interest to the individual user (e.g., flea markets and free parking lots). Users can generate alerts that are triggered when the user is within a predefined distance of an instance of a POI of a selected category. For example, a user can elect to be notified whenever they are within 0.5 miles of a hardware store. Users can also define alerts based upon the proximity of third parties to an instance of POI of a selected category. For instance, a user may wish to be notified whenever their grandmother is within 0.1 miles of any hospital.
Geographic locations can also be defined based upon regions or geographic areas. As used herein, a geographic region is a physical area with defined boundaries. The alert system 600 can provide predefined regions, such as states, counties or amusement parks. Users can also create and share customized regions. Regions can be defined using a graphic interface to outline areas on a provided map. Regions can also be defined as a circular area based upon selection of a center geographic point and a radius from that point. Furthermore, a region can include a route, such as the user's regular commute. Defined geographic regions can be used to generate alerts in the same manner as POIs. For instance, a user can outline a particular neighborhood on the map and define an alert that notifies the user if their child leaves the neighborhood. A user wishing to pick their spouse up at the airport can generate an alert that is actuated once the spouse arrives in the region for the airport.
As illustrated in the preceding examples, the combination of people and geographic locations (including regions and POIs) can be used to generate a variety of useful types of alerts. As described above, notifications can be distributed when the user or a third party is in proximity to or within a geographic location. Conversely, an alert can be defined to notify the user when the user or a third party is not proximate to or within the geographic location. For example, a parent can be notified when their child leaves their school region.
Time constraints can also be utilized to further enhance the utility of alerts. Alerts can be actuated if an individual remains proximate to a geographic location for longer than a specified period of time. For example, a parent may wish to receive a notification if a child has remained within an arcade for over two hours. Alternatively, an alert can be actuated if an individual is not proximate to a geographic location for longer than a specified period of time.
Alerts can also be defined based upon geographic locations and groups or categories of people. Alerts conditions can be defined to trigger distribution of a notification when any or all of a group of locatable persons are in a region. A user can define an alert actuated when any one friend of the user is in the mall or when any combination of friends is in the mall. An alert can also be generated when no locatable persons are within a region. For example, the user may wish to be notified when none of his or her family members are at home.
Events or activities can also be used to trigger alerts. Instances of events can be provided by the alert system or can be defined by individual users. Predefined categories of events can be provided by the system or created and shared by users. Event categories can include concerts, sales, traffic jams, garage sales, parades, or any other type of activity or occurrence that can be of interest to users. Events and event categories can be maintained in the event data store 604 and used to define a variety of alerts. Event information maintained in the event data store 604 can include a description of the event, an event category for the event, a location and a time or time frame for the event. Alerts can be defined based upon events or categories of events in proximity to or within geographic locations, such as regions. For example, a user can define an alert triggered by a concert event currently taking place within the downtown region.
Events can be created and shared by the system operators, businesses and by individual users. Users can create and share events with a subset of system enrollees, (e.g., family members only) or with the general public. For instance, a user can create a public garage sale event scheduled for Saturday morning at a specific address. Unrelated users can receive alerts regarding the garage sale, if they have created alerts conditioned upon garage sale events within a region that includes the garage sale address. This event sharing capability can be used to create a virtual community bulletin board, where individuals can create events and post events. Users can define alerts to filter events and receive notifications for only those events most likely to be of interest to the individual user.
Referring now to
At reference numeral 706, the information can be validated to ensure that the account has the permissions required to define the alert. In addition, information such as start time and end time can be verified to ensure that a valid alert is defined. At reference numeral 708, a determination can be made as to whether the entered information is valid. If no, an error message can be displayed at reference numeral 710, and the process can return to prompt the user for correct information at reference numeral 704. If the information is valid, at reference numeral 712, an alert is defined.
Referring now to
If it has been determined that the alert is active at reference numeral 906, alert information is obtained at reference numeral 908. Based upon the obtained information, a determination is made as to whether the alert has been actuated at reference numeral 910. If no, the process proceeds to reference numeral 914 where it is determined if there is another alert. If yes, the process returns to reference numeral 904 and another alert is selected. If there are no additional alerts, a determination is made as to whether there are additional accounts to be processed at reference numeral 916. If there are additional accounts, the process returns to reference numeral 902. If there are no additional accounts, the process terminates.
If it has been determined that the alert has been actuated at reference numeral 910, a notification is generated and distributed to the appropriate mobile device at reference numeral 912. At reference numeral 914, a determination is made as to whether there are additional alerts to be processed. If yes, the process returns to reference numeral 904 and the next alert is selected. If no, at reference numeral 916 a determination is made as to whether there are additional accounts to process. If yes, the process returns to reference numeral 902 and the next user account is processed. If no, the process terminates.
Notifications can be distributed or delivered to the mobile devices in a variety of forms. A notification can be a simple short message service (SMS) text message delivered to a cell phone. In addition to simple text, a notification can include geographic location information, phone numbers or even an electronic coupon. The alert system can generate a temporary geographic location based upon the alert. For example, if an alert is triggered by an event within a geographic region, the notification received at a mobile device can include not only text describing the location, but location information (e.g., a street address or latitude and longitude) that can be used to retrieve additional information about the location of the event. The user may be able to retrieve a map with the event location highlighted or indicated upon the map. The user can act upon the provided location information rather than simply receiving passive text. The notification can also contain a phone number associated with the alert. For example, the phone number of the user whose location is monitored or a phone number associated with the event can be provided within the notification. By simply selecting the phone number, the user can contact the event and receive additional information.
Alerts can also be used in an advertising context. Typically, notifications generated by advertisement alerts are distributed as mobile devices approach a location, generally the location of the vendor. The account interface can allow users to specify the types or categories of advertisements that the users would be interested in receiving. Users can define alerts that allow them to receive specific types of advertisements. Allowing users to select categories of offers increases the likelihood that the user will be interested in the goods or services advertised. This increases both the utility of advertisement to users and the effectiveness of the advertisement for the vendor.
Advertisement notifications can be used to defer the cost of maintaining an alert system. In one case, the system can automatically send advertisements to users based upon the conditions of the advertisement alert and without allowing users to opt out of receiving the advertisement. In this case, the alert system may be provided to users without charge. The system provider can receive fees from vendors in return for distributing advertisements. The total number and/or type of advertisement notifications a user receives can be limited to avoid excessive distractions. Alternatively, users can pay a subscription fee to the system provider. In return for the fee, the user can receive advertisements only if the user explicitly requests such advertisement notifications.
In yet another alternative, a hybrid of the preceding models can be employed. The system can include multiple levels of service. The alert system may be available without charge, if the user is willing to accept a significant number of advertisements. The users may be able to specify particular types of advertisements that they wish to receive. However, the user can reduce the number or type of advertisement notifications received in exchange for paying a small fee or premium. Any number of levels of service can be defined with varying fees based upon the number or type of advertisements the user is willing to receive.
Users can also elect to subscribe to certain types of location-based alerts provided by third parties. Certain alert types can be so useful that users may be prepared to pay a premium or a subscription fee for the service. For example, a third party can compile information such as traffic updates, speed trap information, nearby entertainment events, restaurant information or tourist information. Users can subscribe to these third party services and the alert system can receive a portion of the subscription fees in exchange for distributing the associated notifications.
Referring now to
Referring now to
The alert system operator can sell exclusive advertisement rights for a particular advertisement category to vendors for defined regions or specified periods of time. For example, a restaurant owner can purchase the exclusive rights for food advertisements within two blocks of the restaurant during the lunch hours. Alternatively, the owner of a first restaurant can purchase the exclusive advertisement alert rights for a region proximate to a competing restaurant. The system operator can auction off advertisement rights, requiring vendors to bid for particularly popular advertising categories, regions or times.
The advertisement interface 1102 can also allow vendors to specify a limited quantity of advertisement notifications to distribute. Vendors may be charged based upon the number of users that receive the advertisements. To limit expenditures, vendors may elect to distribute advertisements to a predetermined number of users. In addition, due to the short period of time required between purchase and distribution of advertisements, vendors can monitor the effectiveness of the advertisements and purchase additional advertisements as needed.
The time and location sensitive nature of advertisements distributed through the alert system 1100 provides increased flexibility for vendors. For example, a particular restaurant may be having a slow lunch crowd. The owner of the restaurant can contact the alert system 1100 and purchase a specific number of advertisements (e.g., fifty ads) including a coupon. The fixed number of advertisement notifications would be distributed to users within a specified distance of the restaurant. After all of the fixed number of ads has been distributed, the alert system would cease to distribute the advertisement. If the number of customers in the restaurant has been sufficiently increased by the issued advertisements, the process ends. Alternatively, the owner can elect to purchase additional advertisements, which can be issued almost immediately. The alert system 1100 can effectively create an advertisement that reaches a predetermined number of people, within a defined geographic area. The system may also be able to distribute the advertisements to users who have indicated a predisposition to the products advertised, benefiting both vendors and consumers.
Referring now to
Turning once again to
The location of the user can be predicted using a variety of algorithms and techniques. The location prediction component 1104 can determine whether the user is on a highway based upon current location information and determine direction of travel based upon prior location information. The location prediction component 1104 can then estimate the likely location of the user on the highway for a period of time. Alternatively, the location predication component 1104 can include or utilize machine learning, artificial intelligence or inference components, systems, algorithms or mechanisms to predict future location of the user's mobile device. The location prediction component 1104 can utilize past location information to identify patterns and/or common routes. The alert evaluator component 112 can determine if alerts are actuated for the user or other users with alert permission based upon the predicted location of the user, instead of, or in addition to the current location.
The alert system 1100 can also include a landmark data store 1106. The landmark data store 1106 can include landmark or location information in a context that is readily understandable to the user. While latitude and longitude can provide an exact location on the surface of the earth, most users will be unable to utilize latitude and longitude. Even street addresses may not truly give a user an accurate idea of a location. Even if users are familiar with the location of the street, they may be unable to readily identify the portion of the street that contains the relevant address. Typically, users navigate based upon landmarks such as easily identifiable buildings (e.g., the airport), intersections (e.g., a highway interchange) or familiar locations (e.g., home, office or a favorite restaurant).
In addition to, or in combination with the geographic data store illustrated in
The aforementioned systems have been described with respect to interaction between several components. It should be appreciated that such systems and components can include those components or sub-components specified therein, some of the specified components or sub-components, and/or additional components. Sub-components could also be implemented as components communicatively coupled to other components rather than included within parent components. Additionally, it should be noted that one or more components may be combined into a single component providing aggregate functionality or divided into several sub-components. The components may also interact with one or more other components not specifically described herein but known by those of skill in the art.
Furthermore, as will be appreciated various portions of the disclosed systems above and methods below may include or consist of artificial intelligence or knowledge or rule based components, sub-components, processes, means, methodologies, or mechanisms (e.g., support vector machines, neural networks, expert systems, Bayesian belief networks, fuzzy logic, data fusion engines, classifiers . . . ). Such components, inter alia, can automate certain mechanisms or processes performed thereby to make portions of the systems and methods more adaptive as well as efficient and intelligent.
While for purposes of simplicity of explanation, the methodologies that can be implemented in accordance with the disclosed subject matter were shown and described as a series of blocks, it is to be understood and appreciated that the claimed subject matter is not limited by the order of the blocks, as some blocks may occur in different orders and/or concurrently with other blocks from what is depicted and described herein. Moreover, not all illustrated blocks may be required to implement the methodologies described hereinafter.
Additionally, it should be further appreciated that the methodologies disclosed throughout this specification are capable of being stored on an article of manufacture to facilitate transporting and transferring such methodologies to computers. The term article of manufacture, as used, is intended to encompass a computer program accessible from any computer-readable device, carrier, or media.
In order to provide a context for the various aspects of the disclosed subject matter,
With reference again to
The system memory 1306 includes read-only memory (ROM) 1310 and random access memory (RAM) 1312. A basic input/output system (BIOS) is stored in a non-volatile memory 1310 such as ROM, EPROM, EEPROM, which BIOS contains the basic routines that help to transfer information between elements within the computer 1302, such as during start-up. The RAM 1312 can also include a high-speed RAM such as static RAM for caching data.
The computer or mobile device 1302 further includes an internal hard disk drive (HDD) 1314 (e.g., EIDE, SATA), which internal hard disk drive 1314 may also be configured for external use in a suitable chassis (not shown), a magnetic floppy disk drive (FDD) 1316, (e.g., to read from or write to a removable diskette 1318) and an optical disk drive 1320, (e.g., reading a CD-ROM disk 1322 or, to read from or write to other high capacity optical media such as the DVD). The hard disk drive 1314, magnetic disk drive 1316 and optical disk drive 1320 can be connected to the system bus 1308 by a hard disk drive interface 1324, a magnetic disk drive interface 1326 and an optical drive interface 1328, respectively. The interface 1324 for external drive implementations includes at least one or both of Universal Serial Bus (USB) and IEEE 1194 interface technologies. Other external drive connection technologies are within contemplation of the subject systems and methods.
The drives and their associated computer-readable media provide nonvolatile storage of data, data structures, computer-executable instructions, and so forth. For the computer 1302, the drives and media accommodate the storage of any data in a suitable digital format. Although the description of computer-readable media above refers to a HDD, a removable magnetic diskette, and a removable optical media such as a CD or DVD, it should be appreciated by those skilled in the art that other types of media which are readable by a computer, such as zip drives, magnetic cassettes, flash memory cards, cartridges, and the like, may also be used in the exemplary operating environment, and further, that any such media may contain computer-executable instructions for performing the methods for the embodiments of the data management system described herein.
A number of program modules can be stored in the drives and RAM 1312, including an operating system 1330, one or more application programs 1332, other program modules 1334 and program data 1336. All or portions of the operating system, applications, modules, and/or data can also be cached in the RAM 1312. It is appreciated that the systems and methods can be implemented with various commercially available operating systems or combinations of operating systems.
A user can enter commands and information into the computer 1302 through one or more wired/wireless input devices, e.g., a keyboard 1338 and a pointing device, such as a mouse 1340. Other input devices (not shown) may include a microphone, an IR remote control, a joystick, a game pad, a stylus pen, touch screen, or the like. These and other input devices are often connected to the processing unit 1304 through an input device interface 1342 that is coupled to the system bus 1308, but can be connected by other interfaces, such as a parallel port, an IEEE 1194 serial port, a game port, a USB port, an IR interface, etc. A display device 1344 can be used to provide a set of group items to a user. The display devices can be connected to the system bus 1308 via an interface, such as a video adapter 1346.
The mobile device or computer 1302 may operate in a networked environment using logical connections via wired and/or wireless communications to one or more remote computers, such as a remote computer(s) 1348. The remote computer(s) 1348 can be a workstation, a server computer, a router, a personal computer, portable computer, microprocessor-based entertainment appliance, a peer device or other common network node, and typically includes many or all of the elements described relative to the computer 1302, although, for purposes of brevity, only a memory/storage device 1350 is illustrated. The logical connections depicted include wired/wireless connectivity to a local area network (LAN) 1352 and/or larger networks, e.g., a wide area network (WAN) 1354. Such LAN and WAN networking environments are commonplace in offices and companies, and facilitate enterprise-wide computer networks, such as intranets, all of which may connect to a global communications network, e.g., the Internet.
When used in a LAN networking environment, the computer 1302 is connected to the local network 1352 through a wired and/or wireless communication network interface or adapter 1356. The adaptor 1356 may facilitate wired or wireless communication to the LAN 1352, which may also include a wireless access point disposed thereon for communicating with the wireless adaptor 1356.
When used in a WAN networking environment, the computer 1302 can include a modem 1358, or is connected to a communications server on the WAN 1354, or has other means for establishing communications over the WAN 1354, such as by way of the Internet. The modem 1358, which can be internal or external and a wired or wireless device, is connected to the system bus 1308 via the serial port interface 1342. In a networked environment, program modules depicted relative to the computer 1302, or portions thereof, can be stored in the remote memory/storage device 1350. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers can be used.
The computer 1302 is operable to communicate with any wireless devices or entities operatively disposed in wireless communication, e.g., a printer, scanner, desktop and/or portable computer, PDA, communications satellite, any piece of equipment or location associated with a wirelessly detectable tag (e.g., a kiosk, news stand, restroom), and telephone. The wireless devices or entities include at least Wi-Fi and Bluetooth™ wireless technologies. Thus, the communication can be a predefined structure as with a conventional network or simply an ad hoc communication between at least two devices.
Wi-Fi allows connection to the Internet from a couch at home, a bed in a hotel room, or a conference room at work, without wires. Wi-Fi is a wireless technology similar to that used in a cell phone that enables such devices, e.g., computers, to send and receive data indoors and out; anywhere within the range of a base station. Wi-Fi networks use radio technologies called IEEE 802.11 (a, b, g, etc.) to provide secure, reliable, fast wireless connectivity. A Wi-Fi network can be used to connect computers to each other, to the Internet, and to wired networks (which use IEEE 802.3 or Ethernet). Wi-Fi networks operate in the unlicensed 2.4 and 5 GHz radio bands, at an 11 Mbps (802.11a) or 54 Mbps (802.11b) data rate, for example, or with products that contain both bands (dual band), so the networks can provide real-world performance similar to the basic 10BaseT wired Ethernet networks used in many offices.
What has been described above includes examples of aspects of the claimed subject matter. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the claimed subject matter, but one of ordinary skill in the art may recognize that many further combinations and permutations of the disclosed subject matter are possible. Accordingly, the disclosed subject matter is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims. Furthermore, to the extent that the terms “includes,” “has” or “having” are used in either the detailed description or the claims, such terms are intended to be inclusive in a manner similar to the term “comprising” as “comprising” is interpreted when employed as a transitional word in a claim.
This application is related to co-pending U.S. patent application Ser. No. 11/462,885, (Atty. Docket No. MS316553.01/MSFTP1365US), entitled, “LOCATION BASED NOTIFICATION SERVICES”, and filed Aug. 7, 2006.