Device proximity-based reminders using BLUETOOTH LE
By identifying the proximity of entities and establishing short-range communications, the computing device acquires and broadcasts relevant information, solving the problem of insufficient information relevance in the prior art, and achieving more accurate situation reminders.
Patent Information
- Application Number
- CN202210163326.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2014-01-28
- Filing Date
- 2014-12-04
- Publication Date
- 2025-08-05
- Estimated Expiration
- 2034-12-04
AI Technical Summary
When providing context information, the computing device fails to fully consider the user's proximity and interests with people or objects in his environment, resulting in insufficient information relevance.
The geographical proximity of an entity is identified through the computing device, establish direct short-range communication, receive and use shared identifiers, obtain information related to the entity, and generate and broadcast reminder identifiers to achieve more accurate reminders.
The relevance and personalization of the situation information provided by the computing device is improved, the specific needs of users are met, and the accuracy and real-time information are enhanced.
Smart Images

Figure CN114679713B_ABST
Abstract
Description
[0001] Description of the case
[0002] This application is a divisional application of Chinese invention patent application 201480066327.7, filed on December 4, 2014.
[0003] CROSS-REFERENCE TO RELATED APPLICATIONS
[0004] This application claims priority to and is a continuation of U.S. non-provisional patent application No. 14 / 166,335, filed on January 28, 2014, entitled “REMINDERS BASED ON DEVICE PROXIMITY USING BLUETOOTH LE,” which in turn claims priority to U.S. provisional patent application No. 61 / 912,703, filed on December 6, 2013, entitled “REMINDERS BASED ON DEVICE PROXIMITY USING BLUETOOTH LE,” the disclosures of which are incorporated herein by reference in their entirety. Technical Field
[0005] The present description relates generally to computing devices. More particularly, the present description relates to determining the proximity of two computing devices. Background Art
[0006] A computing device can provide contextual information to a user of the computing device. For example, a mobile computing device can provide the user with the nearest location of a coffee shop based on identifying the user's current location (e.g., using Global Positioning System (GPS) coordinates) and based on the user's request for a coffee shop near their current location. The mobile computing device can provide the user with the address of the identified local coffee shop. In another example, the computing device can provide the user with a reminder of a scheduled meeting based on identifying the time of day and a calendar entry for the meeting. The computing device can provide the user with a reminder indicator for the meeting (e.g., displaying a message on a display screen of the computing device and, in some cases, generating an audible prompt).
[0007] In the above example, the computing device identifies the user's location and the current time of day. However, the computing device may be limited in its ability to provide additional contextual information to the user. The additional contextual information may be based on, for example, who the user may be with at the time and what may be present in the user's immediate environment (e.g., businesses, restaurants, stores, retail outlets, transportation hubs, etc.). Furthermore, the contextual information may not take into account any indicators or preferences that the user may have that may be related to their context. The ability of the computing device to identify more specific information related to the context of the user's computing device and the user's indicators or preferences may result in more relevant contextual information being provided to the user for use by the user. Therefore, there is a need for systems, methods, and apparatus that address the shortcomings of current technologies and provide other new and innovative features. Summary of the Invention
[0008] In one general aspect, a method may include identifying, by a computing device, a geographic proximity of an entity. The method may further include establishing, by the computing device, direct short-range communication with the entity, the computing device and the entity being capable of communicating with each other using a short-range communication protocol, receiving, by the computing device, an indication that the computing device and the entity share an identifier, and receiving, by the computing device, information related to the computing device for the entity based on the shared identifier.
[0009] Example embodiments may include one or more of the following features. For example, the computing device may be a first computing device, and the entity may be a second computing device. The shared identifier may be a reminder identifier associated with a reminder set in the first computing device. The short-range communication protocol may be Bluetooth Low Energy (Bluetooth LE). The entity may be a physical location. The shared identifier may be an identified common interest between a set of interests associated with the computing device and a set of interests associated with the entity.
[0010] In another general aspect, a method may include creating a reminder based on receiving a request to create the reminder from a first computing device. The method may further include notifying a second computing device of the reminder, receiving confirmation from the second computing device that the second computing device will allow proximity communication with the first computing device, and generating a reminder identifier associated with the reminder. The method may further include providing the reminder identifier to the first computing device and the second computing device when direct short-range communication has been established between the first computing device and the second computing device, so that the second computing device broadcasts the reminder identifier using a short-range communication protocol, and so that the first computing device recognizes the reminder identifier broadcast from the second computing device.
[0011] Example embodiments may include one or more of the following features. For example, the request received from the first computing device may include information identifying the second computing device. The short-range communication protocol may be Bluetooth Low Energy (Bluetooth LE). The first computing device may identify the broadcasted alert identifier sent from the second computing device and, based on the identification, perform an action on the first computing device.
[0012] In another general aspect, a non-transitory machine-readable medium having instructions stored thereon that, when executed by a processor, cause a computing device to: create a reminder based on receiving a request to create the reminder from a first computing device; notify a second computing device of the reminder; receive a confirmation from the second computing device that the second computing device will allow proximity communication with the first computing device; generate a reminder identifier associated with the reminder; and, when direct short-range communication has been established between the first computing device and the second computing device, provide the reminder identifier to the first computing device and the second computing device so that the second computing device broadcasts the reminder identifier using a short-range communication protocol and so that the first computing device recognizes the reminder identifier broadcast from the second computing device.
[0013] Example embodiments may include one or more of the following features: The request received from the first computing device may include information identifying the second computing device; the short-range communication protocol may be Bluetooth Low Energy (Bluetooth LE); the first computing device may recognize the alert identifier broadcasted from the second computing device and, based on the recognition, perform an action on the first computing device.
[0014] In another general aspect, a non-transitory machine-readable medium having instructions stored thereon, the instructions, when executed by a processor, causes a computing device to: identify a geographic proximity of an entity; establish direct short-range communication with the entity, the computing device and the entity being able to communicate with each other using a short-range communication protocol; receive an indication that the computing device shares an identifier with the entity; and receive information related to the computing device for the entity based on the shared identifier.
[0015] Example embodiments may include one or more of the following features. For example, the computing device may be a first computing device and the entity may be a second computing device. The shared identifier may be a reminder identifier associated with a reminder set by the first computing device. The short-range communication protocol may be Bluetooth Low Energy (Bluetooth LE). The entity may be a physical location. The shared identifier may be an identified common interest between a set of interests associated with the computing device and a set of interests associated with the entity.
[0016] The details of one or more embodiments are set forth in the accompanying drawings and the description below. Other features will be apparent from the description and drawings, and from the claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0017] Figure 1 is a schematic diagram illustrating multiple users using multiple computing devices that communicate with a server via a network, wherein each computing device can determine the proximity or physical location proximity of other computing devices.
[0018] Figures 2A to 2B is a schematic diagram illustrating an example implementation of a proximity alert provided to a computing device.
[0019] Figures 3A to 3B is a diagram illustrating an exemplary embodiment of proximity-related information provided to a computing device.
[0020] Figures 4A to 4C is a diagram illustrating an exemplary embodiment of using past proximity data of a computing device in providing future relevant information to the computing device.
[0021] Figure 5 is a swim lane diagram illustrating an exemplary process for implementing proximity reminders.
[0022] Figure 6 is a flow chart illustrating a method of providing relevant information to a computing device based on proximity to an entity.
[0023] Figure 7 is a flow chart illustrating a method of determining and providing a proximity alert.
[0024] Figure 8 Shown are examples of computer devices and mobile computer devices that can be used to implement the techniques described herein.
[0025] The same reference numbers in different drawings identify the same elements. DETAILED DESCRIPTION
[0026] A computing device may include information related to the user of the device, such as a contact list, calendar, reminders, notes, and the like. The user may install and use various applications that provide information to the user (e.g., a movie listing application, a map application), various applications that provide entertainment to the user (e.g., a music application), or various applications that allow the user to interact with other users (e.g., a social networking application). Furthermore, the computing device may provide contextual information to the user based on, for example, the user's physical location and the time of day when the user is at that location.
[0027] Furthermore, contextual information can be further "fine-tuned" or customized for users to provide them with a more satisfying experience. The computing device can consider other contextual factors, such as the identity of the user of the computing device determined to be proximate to the user's computing device, and the proximity of buildings, businesses, stores, venues, restaurants, hotels, and other physical locations to the user's computing device. The user's computing device can use this proximity information, along with information about the user of the computing device, to provide the user with a customized experience by delivering user-related information that is important to the user in the current context of the user's computing device.
[0028] Figure 1 is a block diagram illustrating multiple users 102a-e using multiple computing devices 104a-e, respectively, where each computing device 104a-e can determine the proximity or physical proximity of other computing devices. In some cases, the other computing devices 104a-e may be mobile computing devices used by the users. In some cases, the users may also be mobile (e.g., in a moving vehicle, walking, or running) while using the computing devices. In other cases, the other computing devices 104a-e may be part of or included in a mobile entity (e.g., a vehicle). In some embodiments, each computing device 104a-e may utilize a wireless communication system and protocols for short-range communication (e.g., to communicate with one or more nearby computing devices). Additionally, each computing device 104a-e may utilize wireless and / or wired communication systems and protocols for long-range communication (e.g., to communicate with a computer system 108 via a network 106). The computer system 108 may include one or more computing devices (e.g., a server 108a) and one or more computer-readable storage devices (e.g., a database 108b).
[0029] In some embodiments, computing devices 104a-e may be laptop or desktop computers, smartphones, personal digital assistants, portable media players, tablet computers, or other suitable computing devices that can communicate with other computing devices or computer systems using network 106. In some embodiments, computing devices 104a-e may perform client-side operations, as described in more detail below. In some embodiments, computer system 108 may represent more than one computing device working together to perform server-side operations. In some embodiments, network 106 may be a public communication network (e.g., the Internet, a cellular data network, a dial-up modem on a telephone network) or a private communication network (e.g., a dedicated LAN, a leased line). In some embodiments, computing devices 104a-e may communicate with network 106 using one or more high-speed wired and / or wireless communication protocols (e.g., 802.11 variants, WiFi, Bluetooth, TCP / IP, Ethernet, IEEE 802.3, etc.).
[0030] For example, refer to Figure 1 , computing device 104b can communicate with network 106 using wireless and / or wired communication systems and protocols for long-range communication. For example, network 106 can be a cellular network including multiple cell sites, each of which can have a maximum range of up to approximately 1.5 miles (1600 meters). In some cases, each site can have a maximum range of up to approximately 5 miles (8000 meters). Computing devices 104a-e can communicate with network 106 wirelessly.
[0031] In addition, computing device 104b can communicate with computing device 104a wirelessly using a wireless communication system and a protocol for short-range communication. For example, when computing device 104a and computing device 104b are within a few centimeters of each other or in contact with each other, computing device 104a and computing device 104b can establish near-field communication (NFC). In this example, computing device 104a and computing device 104b include the hardware and software required to implement NFC. NFC can be used to establish short-range (e.g., a maximum range of less than approximately 4 centimeters) communication between computing device 104a and computing device 104b. In some cases, the maximum range of short-range communication between two NFC-enabled computing devices can be greater than 4 centimeters. In some cases, the maximum range of short-range communication between two NFC-enabled computing devices can be less than 4 centimeters. However, on average, when two NFC-enabled computing devices are less than approximately 4 centimeters apart, they can communicate with each other.
[0032] In another example, computing devices 104a and 104b can communicate with each other using wireless local area network (WLAN) communication technology standards (e.g., standards based on IEEE 802.11). Using WLAN communication technology standards can enable secure short-range (e.g., a maximum range of less than approximately 70 meters) communication between computing devices 104a and 104b. In some cases, the maximum range of short-range communication between two WLAN-enabled computing devices can be greater than 70 meters. In some cases, the maximum range of short-range communication between two WLAN-enabled computing devices can be less than 70 meters. However, on average, when two WLAN-enabled computing devices are less than approximately 70 meters apart, they can communicate with each other.
[0033] In another example, computing device 104a and computing device 104b can communicate with each other using the classic Bluetooth wireless technology standard. Using classic Bluetooth can enable secure short-range (e.g., a maximum range of less than about 100 meters) communication between computing device 104a and computing device 104b. In some cases, the maximum range of short-range communication between two classic Bluetooth-enabled computing devices can be greater than 100 meters. In some cases, the maximum range of short-range communication between two classic Bluetooth-enabled computing devices can be less than 100 meters. However, on average, when two classic Bluetooth-enabled computing devices are less than about 100 meters apart from each other, they can communicate with each other.
[0034] In another example, Bluetooth Low Energy (Bluetooth LE) can enable secure short-range (e.g., a maximum range of less than approximately 50 meters) communication between computing device 104a and computing device 104b. In some cases, the maximum range of short-range communication between two Bluetooth LE-enabled computing devices can be greater than 50 meters. In some cases, the maximum range of short-range communication between two Bluetooth LE-enabled computing devices can be less than 50 meters. However, on average, two Bluetooth LE-enabled computing devices can communicate with each other when they are less than approximately 50 meters apart.
[0035] Computing devices that utilize Bluetooth LE may consume less power than computing devices that utilize Bluetooth or other types of wireless communication systems and protocols. Therefore, utilizing Bluetooth LE may be advantageous when the computing device has limited power (e.g., it operates on a battery). In situations where a Bluetooth LE-enabled computing device may frequently "search" for other Bluetooth LE-enabled devices (e.g., the computing device's Bluetooth LE capability is always on or active), power consumption may be an issue in order for frequent searches to not drain the computing device's battery.
[0036] Reference Figure 1 , computing devices 104a-e may be configured to communicate with network 106 using wireless and / or wired communication systems and protocols for long-range communication. Additionally or alternatively, computing devices 104a-e may be configured to communicate wirelessly with one or more other computing devices (e.g., computing devices 104a-e may communicate with each other) using wireless communication systems and protocols for short-range communication. Users 102a-e of computing devices 104a-e may respectively enable or disable the short-range communication capabilities of each computing device 104a-e.
[0037] For example, computing device 104a may be "discovered" by computing device 104b when computing device 104a is within range (e.g., 50 meters) of a short-range communication system used by both computing device 104a and computing device 104b. Once discovered, computing device 104a may provide information to and / or exchange information with computing device 104b. The information may be based on the context of computing device 104a and computing device 104b (e.g., the locations of computing devices 104a-b), along with information about each of computing devices 104a-b (e.g., user 102a owns computing device 104a and user 102b owns computing device 104b).
[0038] A user may allow (consent to) short-range communication between a computing device owned and / or operated by the user and a computing device owned and / or operated by another user. Figure 1 , user 102a may allow short-range communication between computing device 104a and computing device 104b owned and / or operated by user 102b. For example, user 102a of computing device 104a may indicate on computing device 104a that computing device 104a is to perform an action on computing device 104a when it is in proximity to computing device 104b of user 102b. Using network 106, computing device 104a may transmit the indication of the action to computer system 108. Server 108a may store the indication of the action in database 108b. In addition, computer system 108 may communicate with computing device 104b using network 106. When user 102a and user 102b are in proximity (computing devices 104a and computing devices 104b are in proximity to each other), computing device 104b is notified that user 102a of computing device 104a is interested in communicating with user 102b of computing device 104b. If user 102b allows (agrees to) short-range communication between computing device 104b and computing device 104a, computing device 104b may communicate computing device 104b's permission to short-range communication with computing device 104a back to computer system 108 using network 106.
[0039] Computer system 108 can generate a unique identifier associated with the indication of an action provided to computer system 108 by computing device 104a. Computer system 108 can communicate with computing device 104a and computing device 104b using network 106 and provide the identifier to each computing device 104a-b. Thus, computing device 104a and computing device 104b know the unique identifier for the indicated action that computing device 104a can perform when computing device 104a is in proximity to computing device 104b (user 102a is in proximity to user 102b). Computing device 104b can then "broadcast" the unique identifier using the protocol for the wireless short-range communication system it is configured to use. Computing device 104a can "listen" for the unique identifier using the protocol for the wireless short-range communication system it is configured to use (which is the same wireless short-range communication system that computing device 104b is configured to use).
[0040] When computing device 104b approaches computing device 104a (user 102b approaches user 102a), computing device 104b and computing device 104a may "wake up" (e.g., transition from a sleep or low-power mode) and proceed to "recognize" each other (e.g., computing devices 104a-b communicate with each other using a wireless short-range communication system). Computing device 104a acknowledges that the unique identifier received from computing device 104b is the same as the identifier known to computing device 104a. Based on this acknowledgement, computing device 104a performs an action associated with the unique identifier.
[0041] The above example describes short-range communication between computing device 104a and computing device 104b. However, short-range communication can also be established between any of computing devices 104a-e in a similar manner.
[0042] In some embodiments, a user (user 102a) may own and / or operate multiple computing devices (e.g., computing device 104a and computing device 104d) that may share information with each other and / or synchronize with each other. Figure 1 , user 102a and user 102d may be the same user. Using computing device 104d, user 102a may indicate on computing device 104d that when computing device 104a is in proximity to computing device 104b of user 102b, it may perform an action on computing device 104a. Additionally or alternatively, using computing device 104d, user 102a may indicate on computing device 104d that when either or both computing devices 104d and 104a are in proximity to computing device 104b of user 102b, either or both computing devices 104d and 104a may perform an action on each of respective computing devices 104d and 104a.
[0043] Reference Figure 1 , each of the computing devices 104a-e can be considered a type of entity, wherein each of the computing devices 104a-e can be configured to communicate wirelessly with each other using a wireless communication system and a protocol for short-range communication. Additionally or alternatively, the computing devices 104a-e can be configured to communicate wirelessly with an additional entity (entity 112) using a wireless communication system and a protocol for short-range communication. For example, when computing device 104b is within range (e.g., 50 meters) of a short-range communication system used by both computing device 104b and entity 112, entity 112 and computing device 104b can "discover" each other. Once discovered, entity 112 can provide information to computing device 104b and / or exchange information with computing device 104b.
[0044] The information may be based on user-related data, such as preferences, reminders, and / or other types of data associated with user 102b. Additionally or alternatively, when short-range communication is established between computing device 104b and entity 112, the information may be based on the context (e.g., location and time) of computing device 104b of user 102b and entity 112. Computing device 104b may provide the user-related data to computer system 108, which may be stored in database 108b (e.g., in a user table) in association with computing device 104b of user 102b for potential future access by one or more entities. The user-related data and computing device 104b may each be associated with a unique user identifier for user 102b (a unique user identifier maintained by computer system 108). Furthermore, database 108b may store information related to entity 112 and information associated with entity 112 (e.g., stored in an entity table).
[0045] Entity 112 may "recognize" computing device 104b when computing device 104b is within range (e.g., 50 meters) of a short-range communication system used by both computing device 104b and entity 112. For example, user 102b carrying computing device 104b may enter a building for entity 112, or user 102b carrying computing device 104b may approach a particular location for entity 112. Utilizing a short-range communication system and protocol, computing device 104b may broadcast a unique user identification code associated with computing device 104b. Entity 112 may receive the unique identification code for computing device 104b when computing device 104b is within range of the short-range communication system. Entity 112 may communicate with computer system 108 utilizing network 106 to provide the received broadcasted unique user identification code associated with computing device 104b to computer system 108. Computer system 108 may determine one or more common interests between the user-related data and the entity-related data. For example, the computer system 108 can determine similar and / or common entries in the user-related data table and the entity-related data table. In another example, the computer system 108 can use an interest graph of the user-related data and the entity-related data to determine one or more common interests between the user 102b and the entity 112.
[0046] When computing device 104b is in proximity to entity 112, entity 112 may provide computing device 104b with information related to the common data determined between the user-related data and the entity-related data, as well as the context (e.g., location and time) of computing device 104b of user 102b and the context of entity 112. Computing device 104b may provide the information to user 102b, for example, by displaying a message on display portion 114 of computing device 104b. In some cases, when user 102b receives the message, user 102b may indicate that they accept the information provided by entity 112. In some cases, when computing device 104b displays the message (and specifically, on computing device 104b, if this is the first time computing device 104b has received any type of communication from entity 112), user 102b may decide not to allow entity 112 to provide the information to computing device 104b. For example, computing device 104b may provide an indication to entity 112 that any communications with entity 112 are not permitted when computing device 104b receives a selection of an associated option in a user interface displayed on display portion 114 of computing device 104b.
[0047] In some embodiments, computing devices (e.g., one of computing devices 104a-e) and entities are configured to communicate with each other using short-range communication systems and protocols. However, computing devices and entities are not necessarily capable of long-range communication with a network (e.g., network 106). Entities and computing devices may be located in locations that do not allow or provide long-range communication with the network.
[0048] In these embodiments, an entity and a computing device can "discover" each other when the computing device is within range (e.g., 50 meters) of a short-range communication system used by both the computing device and the entity. Once discovered, the entity can provide information to the computing device and / or exchange information with the computing device, the information being based on the context (e.g., location and time) of the entity and the computing device.
[0049] When a computing device is in proximity to an entity (the computing device is within range (e.g., 50 meters) of a short-range communication system utilized by both the computing device and the entity), the entity can "recognize" the computing device and provide context-related information to the computing device. The computing device can provide information to a user (e.g., user 102b) of the computing device (e.g., computing device 104b), for example, by displaying a message on a display portion (e.g., display portion 114) of the computing device (e.g., computing device 104b).
[0050] In some cases, when a user receives a particular message from an entity, the user can indicate that they consent to receive further information about the entity at a future time when the user may no longer be in proximity to the entity. The computing device can save (store locally on the computing device) the indication of consent to receive further information about the entity. At a future time when the computing device (e.g., computing device 104b) has access to a network (e.g., network 106), the computing device can communicate the indication of the action to a computer system (e.g., computer system 108) using the network. A server included in the computer system (e.g., server 108a) can store the indication of consent to receive further communications about the entity in a database (e.g., database 108b), associating the database entry with a unique user identification code of the user of the computing device. Additionally or alternatively, the computer system can notify a server hosted by the entity that the user of the computing device identified by the unique user identification code consents to receive further communications about the entity.
[0051] At some time in the future, and / or at some predetermined time interval beginning in the future (e.g., weekly, monthly, every Friday afternoon), a server hosted by an entity may send a communication (e.g., a short message service (SMS) message, an electronic mail (email) message, etc.) to a user's computing device using long-range communication with a network. The sending of the communication by the server hosted by the entity to the user may be based on a unique user identification code of the user's computing device and the user's past indication of consent to receive further communications related to the entity. In this case, the previously identified proximity of the user's computing device to the entity may result in the user's computing device receiving further communications from the server hosted by the entity. The received future communications may provide information to the user's computing device related to the entity, even if the user (and the user's computing device) is not near the entity when the user's computing device receives the communication.
[0052] Figures 2A to 2B is a diagram illustrating an exemplary embodiment of a proximity alert provided to computing device 204a. Computing devices 204a and 204b may be configured to communicate with network 206 using wireless and / or wired communication systems and protocols for long-range communication. Additionally or alternatively, computing devices 204a and 204b may be configured to communicate with each other wirelessly using wireless communication systems and protocols for short-range communication.
[0053] Reference Figure 2A , user 202a (Joe) can set a reminder on computing device 204a to "pay Mary $5.00 next time I see her." User 202a is associated with computing device 204a (e.g., user 202a owns computing device 204a). User 202b (Mary) is associated with computing device 204b (e.g., user 202b owns computing device 204b). In another example, a service provider can register a user to a computing device, even though another user may actually own the computing device. In this case, the registered user is the user associated with the computing device.
[0054] The reminder settings indicate that when computing device 204a (and user 202a) is determined to be in proximity to computing device 204b (and user 202b), a reminder displayed on display portion 216 of computing device 204a will remind user 202a (Joe) that he needs to pay user 202b (Mary) $5. Computing device 204a may identify contacts or other information for user 202b to identify user 202b. For example, computing device 204a may determine contact information for user 202b based on contact information stored in contact list 220 on computing device 204a. In some cases, the contact list for user 202a may be stored in database 208b of computer system 208. In another example, a social networking service used by user 202a may provide contact information for user 202b. In some cases, the social networking service may store contact information locally on computing device 204a. In some cases, the social networking service may store contact information for user 202a in database 208b of computer system 208 .
[0055] Using network 206, computing device 204a may communicate a request to computer system 208 to create a pending reminder for user 202a based on the detected proximity of computing device 204b of user 202b (a proximity-based reminder). Computer system 208 may communicate with computing device 204b via network 206 to notify computing device 204b that user 202a of computing device 204a has set a proximity-based reminder. For example, computing device 204b may display a message to user 202b on display portion 218 of computing device 204b indicating that user 202a (Joe) has set a pending proximity-based reminder.
[0056] User 202b can decide whether to allow (agree) or not allow (disagree) proximity-based reminders to alert user 202a's computing device 204a when user 202b's computing device 204b is close to computing device 204a. In some cases, user 202b's decision can apply to all proximity-based communications between computing devices 204a and 204b. In other cases, user 202b's decision can apply to a single, one-time proximity-based communication between computing devices 204a and 204b. In these other cases, user 202b can be prompted each time whether to allow or not proximity-based communications, and such communications can occur between computing devices 204a and 204b.
[0057] In one example, computer system 208 receives a determination from computing device 204b using network 206 that user 202b does not permit proximity-based communications with computing device 204a and user 202a. Computer system 208 may send a message to computing device 204a using network 206. Computing device 204a may display a message to user 202a on display portion 216 of computing device 204a indicating that computing device 204b of user 202b does not wish to participate in proximity-based communications with computing device 204a of user 202a.
[0058] In another example, computer system 208 receives a decision from computing device 204b that user 202b permit proximity-based communications with computing device 204a and user 202a. Server 208a may generate a proximity reminder identifier associated with the proximity-based reminder received from computing device 204a. Server 208a may store the proximity reminder identifier in database 208b along with the proximity-based reminder associated with computing device 204a and user 202a. Computer system 208 may transmit the proximity reminder identifier to both computing device 204a and computing device 204b using network 206. Computing device 204b broadcasts the proximity reminder identifier using short-range communication (e.g., using Bluetooth LE). In addition, computing device 204a listens for the broadcast using short-range communication (e.g., using Bluetooth LE). When computing device 204a is determined to be in proximity to computing device 204b (e.g., computing device 204a and computing device 204b are within range of the short-range communication system (e.g., computing device 204a and computing device 204b are within 50 meters of each other)), both computing device 204a and computing device 204b will "wake up" (e.g., computing device 204a "hears" the broadcast of the proximity alert identifier from computing device 204b).
[0059] Reference Figure 2B , computing device 204a confirms to computing device 204b that computing device 204a has received the broadcast proximity alert identifier and is the intended recipient of the proximity alert identifier. Computing device 204a and computing device 204b acknowledge that they possess the same proximity alert identifier. Based on this confirmation and acknowledgement, computing device 204a displays the reminder "Pay Mary $5.00" to user 202a (Joe) on display portion 216 of computing device 204a.
[0060] In the event that user 202b decides to allow (consent to) all proximity-based communications between computing device 204a and computing device 204b, user 202b may also have the option to change the decision at any time and not allow (disagree to) all proximity-based communications between computing device 204a and computing device 204b. For example, computing device 204b may provide a user interface (accessible by user 202b) to allow user 202b to indicate that they want to disallow further proximity-based communications between computing device 204a and computing device 204b.
[0061] In another example, referring to Figure 2A-2B , user 202a and user 202b may share common interests. Data related to user 202a's interests and data related to user 202b's interests may be stored in database 208b, associated with each user 202a-202b and each computing device 204a-204b, respectively. In some embodiments, user 202a and user 202b may be associated based on each user's contact information being included in the other user's contact list. For example, entry 220a for user 202b may be in contact list 220 stored on computing device 204a, and entry 222a for user 202a may be in contact list 222 stored on computing device 204b. Based on the association of users 202a-202b, computer system 208 may determine one or more common interests between users 202a-202b. For example, by comparing data related to user 202a's interests with data related to user 202b's interests, computer system 208 may form a shared interests graph. Computer system 208 may determine that the shared data between the data related to the interests of user 202a and the data related to the interests of user 202b is watching Tom Cruise movies. Using the data related to the interests of user 202a, computer system 208 may determine that user 202a recently purchased movie tickets for Tom Cruise movies online. Using the data related to the interests of user 202b, computer system 208 may determine that user 202b recently rented Tom Cruise movies online.
[0062] Furthermore, as described above, computing device 204a and computing device 204b are capable of short-range communication (e.g., each computing device 204a-204b is a Bluetooth LE-enabled computing device). Each computing device 204a-204b can broadcast an identifier associated with the respective computing device that the other computing device can receive and acknowledge, enabling communication between computing devices 204a-204b, wherein the communication indicates the proximity of computing device 204b to computing device 204a.
[0063] For example, user 202a and user 202b can each utilize an intelligent personal assistant hosted on their respective computing devices 204a-204b. Each computing device 204a-204b can receive data related to the shared interests of user 202a and user 202b in the form of an electronic card sent by computer system 208 to each computing device 204a-204b. Computing device 204a can present information related to the data related to the shared interests of user 202a and user 202b to user 202a. When within a certain proximity to computing device 204b of user 202b, user 202a can access the intelligent personal assistant on computing device 204a to determine what movies are playing at a local theater. Based on the shared interest in Tom Cruise movies shared by user 202a of computing device 204a and user 202b of a nearby computing device 204b, computing device 204a can present an electronic card to user 202a indicating the times of Tom Cruise movies at a local theater.
[0064] Figures 3A to 3B is a diagram illustrating an exemplary embodiment of proximity-related information provided to computing device 304. Computing device 304 may be configured to communicate with network 306 using wireless and / or wired communication systems and protocols for long-range communications.
[0065] Reference Figure 3A User 302 (Joe) may set a reminder on computing device 304 to "Buy NHL14 video game." User 302 is associated with computing device 304. For example, user 302 may own computing device 304, or computing device 304 may be registered to user 302. The reminder setting indicates that when computing device 304 (and user 302) is determined to be near an entity where NHL14 video game is available for sale, a reminder may be displayed on display portion 314 of computing device 304, reminding user 302 (Joe) to buy NHL14 video game. Using network 306, computing device 304 may transmit a request to create reminder 320a to computer system 308. Reminder 320a is used to remind user 302 to purchase the available NHL14 video game. Furthermore, computer system 308 may associate a proximity reminder identifier with reminder 320a. Computer system 308 may store reminders 320a and their associated identifiers in a table or list of reminders 320 associated with user 302 and computing device 304. Reminders 320 may be stored in database 308b. Additionally, computer system 308 may store other information and data related to the interests of user 302 associated with computing device 304. The additional information and data may be stored in database 308b.
[0066] Reference Figure 3B , computing device 304 and entity 312 are capable of short-range communication (e.g., computing device 304 is a Bluetooth LE-enabled computing device, and entity 312 includes one or more Bluetooth LE-enabled beacons). Computing device 304 can broadcast an identifier associated with computing device 304 that can be received by one or more beacons included in entity 312, enabling two-way short-range communication between computing device 304 and each of the one or more beacons included in entity 312.
[0067] Computing device 304 utilizes short-range communication (e.g., utilizing Bluetooth LE) to broadcast an identifier associated with computing device 304. One or more beacons included in entity 312 utilize a short-range communication system and protocol (e.g., Bluetooth LE) to "listen" for broadcasts from computing devices enabled with short-range communication (e.g., Bluetooth LE). When computing device 304 and the beacon included in entity 312 are within range of the short-range communication system (e.g., when computing device 304 and the beacon included in entity 312 are within 50 meters of each other), it is determined that computing device 304 is proximate to the beacon included in entity 312 (e.g., computing device 304 is proximate to entity 312).
[0068] Upon determining the proximity of computing device 304 to the beacon included in entity 312, entity 312 may further communicate with computer system 308 using network 306 to determine whether there are any shared interests between entity 312 and user 302 based on the received identifier associated with computing device 304. For example, server 308a may access information for entity 312 related to the interests of entity 312 (e.g., entity data 322 stored in database 308b). Additionally, server 308a may access information associated with computing device 304 related to the interests of user 302 (e.g., reminders 320 stored in database 308b). For example, by comparing information associated with computing device 304 and related to the interests of user 302 (e.g., reminders 320) with the interests of entity 312 stored as entity data 322, computer system 308 may generate a shared interest graph. Computer system 308 may determine that computing device 304 has reminder 320a set to purchase the NHL 14 video game and that entity 312 (based on entity data 322 ) has the NHL 14 video game currently available for sale.
[0069] Based on determining a shared interest between user 302 and entity 312 (e.g., reminder 320a related to purchasing NHL 14 video games and entity data 322 indicating that entity 312 is selling NHL 14 video games), entity 312 may utilize short-range communication to send an indication to computing device 304 that entity 312 has NHL 14 video games currently available for sale. Computing device 304 may display the indication to user 302 that entity 312 has NHL 14 video games currently available for sale by displaying a message on display portion 314 of computing device 304.
[0070] In some implementations, user 302 can choose to ignore any communications received from entity 312. User 302 can make this selection when computing device 304 receives the first communication from entity 312. User 302 can make this selection on a one-time basis (ignoring a single communication) for each communication received. Additionally or alternatively, user 302 can make this selection on a semi-permanent basis, allowing user 302 to choose to ignore all communications received by computing device 304 from entity 312 while computing device 304 receives a communication from entity 312, but also allowing the user to change this selection later if no communications are received from the entity.
[0071] In another example, when determining the proximity of computing device 304 to a beacon included in entity 312, entity 312 communicates with computer system 308 using network 306 to determine whether any shared interests exist between entity 312 and user 302. Based on an identifier received from computing device 304 and associated with computing device 304, computer system 308 can determine one or more shared interests between entity 312 and user 302. Computer system 308 can determine the shared interests of user 302 and entity 312 based on a record of previous purchases made by user 302 and stored in a record database for user 302 (which can be included in database 208b). User 302 may have recently purchased tickets on an online ticket purchasing website to see a Star Wars movie in a theater. Server 308a can access information for entity 312 related to entity 312's interests (e.g., entity data 322 stored in database 308b). Computer system 308 may determine that computing device 304 of user 302 is used to purchase tickets on an online ticket purchasing website to see a Star Wars movie in a theater, and that entity 312 (based on entity data 322) currently has the Star Wars trilogy available on DVD and Blu-ray discs. Based on determining a shared interest (e.g., Star Wars movies) between user 302 and entity 312, entity 312 may utilize short-range communication to send an indication to computing device 304 regarding a promotion related to entity 312's availability of the Star Wars trilogy on DVD and Blu-ray discs. Computing device 304 may display the promotion to user 302 by displaying a message on display portion 314 of computing device 304.
[0072] In all cases, a user (e.g., user 302) may set one or more options or controls on the user's computing device (e.g., computing device 304) that may prevent and / or disallow the computing device from broadcasting or otherwise providing an identifier associated with the computing device to other computer systems or other computing devices (which may communicate with the user's computing device using short-range or long-range communications). In these cases, the user may not experience proximity-based alerts or other types of proximity-based interactions, as described above.
[0073] Figures 4A to 4B is a diagram illustrating an exemplary embodiment of using past proximity data of computing device 404 in providing future relevant information to computing device 404. Figure 4A, the Bluetooth LE-enabled computing device 404 and the Bluetooth LE-enabled beacon 430a included in the entity 430 are capable of short-range communication. The computing device 404 can broadcast an identifier associated with the computing device 404 that the Bluetooth LE-enabled beacon 430a can receive, enabling two-way communication between the computing device 404 and the Bluetooth LE-enabled beacon 430a. Figure 4A In the example of FIG, computing device 404 and entity 430 may not use wireless and / or wired communication systems and protocols for communicating with a network over long distances. For example, entity 430 and computing device 404 may be located in a geographical location where no network service exists (e.g., at the top of a ski slope).
[0074] A Bluetooth LE enabled beacon 430a included in the entity 430 broadcasts information associated with the entity 430. The computing device 404, with Bluetooth LE activated in the computing device 404, "listens" for broadcasts from other Bluetooth LE enabled beacons and computing devices.
[0075] When computing device 404 determines that it is in proximity to Bluetooth LE-enabled beacon 430a included in entity 430 (e.g., computing device 404 is within the short-range communication range of Bluetooth LE-enabled beacon 430a (e.g., computing device 404 is within 50 meters of Bluetooth LE-enabled beacon 430a)), computing device 404 may receive broadcast information from Bluetooth LE-enabled beacon 430a. Computing device 404 may display the received broadcast information to user 402 (Joe) on display portion 414 of computing device 404. For example, Joe may be waiting on an uphill route at a ski resort, where the location of computing device 404 and entity 430 prevent long-range communication with a network. When computing device 404 is in proximity to Bluetooth LE-enabled beacon 430a, computing device 404 may receive the uphill route wait time from Bluetooth LE-enabled beacon 430a. Computing device 404 may display the upline wait time to user 402 on display portion 414 of computing device 404 .
[0076] The ability of computing device 404 and Bluetooth LE-enabled beacon 430a of entity 430 to establish short-range communications results in proximity-based contextual information being provided to user 402. Computing device 404 may receive information related to the current location of computing device 404 and the time of day of user 402 for display to user 402 on display portion 414 of computing device 404.
[0077] Furthermore, once short-range communication is established between Bluetooth LE-enabled beacon 430a and computing device 404, Bluetooth LE-enabled beacon 430a may transmit a message to computing device 404 for display to user 402 (Joe) on display portion 414 of computing device 404. The message may request whether user 402 will allow (consent to) receiving future communications related to entity 430. In some cases, user 402 may allow (consent to) receiving future communications related to entity 430. This consent to receive further communications related to entity 430 may be stored locally on computing device 404 for further transmission to computer system 408 when computing device 404 of user 402 may establish long-range communication with computer system 408. In some cases, user 402 may not allow (consent to) receive future communications related to entity 430. This refusal to receive future communications from entity 430 may also be stored locally on computing device 404.
[0078] Reference Figure 4B , user 402 may be located in a geographic location where wireless and / or wired communication systems and protocols for long-distance communication with network 406 are enabled. For example, computing device 404 is currently located in a geographic location where network services are available outside of a ski resort (e.g., user 402's home). When computing device 404 determines that it can communicate with network 406, computing device 404 may transmit consent to computer system 408 to receive future communications related to entity 430 using network 406. Server 408a may store this consent in a database 408b associated with computing device 404 for user 402 and associated with entity 430.
[0079] Reference Figure 4C , entity 430 can host a computer system 440 (e.g., server 440a and database 440b), which can utilize network 406 to provide communications related to entity 430 to computing devices (e.g., short message service (SMS) messages, electronic mail (email) messages, etc.). Computer system 440 can identify computing devices whose users have indicated and / or enabled such communications between computer system 440 and computing devices. For example, computer system 440 can communicate with computer system 408 to determine that computing device 404 will allow receipt of communications from entity 430.
[0080] When computing device 404 of user 402 is not in proximity to entity 430, and / or at predetermined intervals (e.g., weekly, monthly, every Friday afternoon), computer system 440 may send communications (e.g., short message service (SMS) messages, electronic mail (email) messages, etc.) to computing device 404 of user 402 using network 406. The sending of communications by computer system 440 to the user may be based on a unique user identification code for computing device 404 of user 402 and past indications and / or receipt of other communications by computing device 404 associated with entity 430. In this case, the previously identified proximity of computing device 404 of user 402 to entity 430 may result in computing device 404 of user 402 receiving information related to entity 430, even if user 402 (and computing device 404) is not in proximity to entity 430 when computing device 404 of user 402 receives the communications.
[0081] Figure 5 is a swim lane diagram illustrating an exemplary process 500 for implementing proximity reminders. Figure 1 、 Figures 2A-2B 、 Figures 3A-3B 、 Figures 4A-4C The computing device is used to perform process 500.
[0082] In example process 500, device 504a and device 504b may communicate with server 508. Devices 504a, 504b, and server 508 may use wireless and / or wired communication systems and protocols for communicating over long distances with a network accessible by devices 504a, 504b, and server 508.
[0083] A reminder may be set by a user (User A) of computing device 504a (Device A) (block 552). A user (User B) associated with the reminder may be identified (block 554). For example, User A may set a reminder on computing device 504a to perform a specific action on computing device 504a when computing device 504a is in proximity to User B's computing device 504b. Computing device 504a may determine User B's identity (e.g., by determining contact information for User B's computing device 504b, which may be stored locally on computing device 504a). A request to create a reminder is sent by computing device 504a to server 508 (block 556). Along with the determined contact information for User B's computing device 504b, the request may include a specific action to be performed by computing device 504a when it is determined that computing device 504a is in proximity to User B's computing device 504b.
[0084] A reminder is created (block 558). Once the reminder is created, a notification regarding the creation of the reminder is sent to computing device 504b via server 508 (block 560). Computing device 504b receives the notification regarding the reminder (block 562). For example, user B's computing device 504b may receive a message for display on a display portion of computing device 504b. The message may inform user B that user A wishes to establish short-range communication between user A's computing device 504a and user B's computing device 504b when computing device 504a is in proximity to computing device 504b.
[0085] A confirmation option is sent to server 508 via computing device 504b (block 564). For example, user B allows (agrees to) establishing short-range communication between user A's computing device 504a and user B's computing device 504b. Server 508 receives the confirmation option from computing device 504b (block 566). Based on receiving confirmation to establish short-range communication between user A's computing device 504a and user B's computing device 504b, server 508 generates a reminder identifier (block 568). The reminder identifier is associated with the reminder created by and stored by server 508 (block 570). For example, server 508 may store the reminder for user A (and the associated identifier for the reminder) in a database accessible to server 508.
[0086] Server 508 sends the reminder identifier to computing device 504a (block 572). Computing device 504a receives the reminder identifier (block 574). Computing device 504a stores the reminder identifier locally on computing device 504a (block 576). Computing device 504a can use the stored reminder identifier to confirm short-range communication with a computing device (e.g., computing device 504b) that broadcasts the same reminder identifier.
[0087] Additionally, server 508 sends the reminder identifier to computing device 504b (block 572). Computing device 504a receives the reminder identifier (block 578). Computing device 504a broadcasts the reminder identifier (block 574). Computing device 504a may broadcast the reminder identifier using a short-range communication system and a protocol also usable by computing device 504a.
[0088] Figure 6 is a flow chart illustrating a method 600 for providing relevant information to a computing device based on proximity to an entity. In some embodiments, the method 600 can be implemented by the computer system and computing device described herein. For example, the method 600 can be implemented by referring to Figure 1 The computer system and computing device are used to implement method 600.
[0089] Method 600 begins with a computing device identifying the geographic proximity of an entity (block 602). The computing device establishes direct short-range communication with the entity, with the computing device and the entity being able to communicate with each other using a short-range communication protocol (block 604). For example, computing device 104b and entity 112 may each be enabled to communicate using a protocol with a maximum range of less than 100 meters (e.g., computing device 104b is Bluetooth LE-enabled and entity 112 includes a Bluetooth LE-enabled beacon). When short-range communication is established between computing device 104b and the Bluetooth LE-enabled beacon included in entity 112 (using a protocol with a maximum range of less than 100 meters), computing device 104b may determine when it is in proximity to entity 112.
[0090] In another example, computing device 104b and computing device 104a may each be enabled to communicate using a protocol with a maximum range of less than 100 meters (e.g., computing device 104b and computing device 104a are each Bluetooth LE enabled). When short-range communication is established between computing device 104b and computing device 104a (using a protocol with a maximum range of less than 100 meters), computing device 104b may determine when it is in proximity to computing device 104a.
[0091] The computing device may receive an indication that the computing device shares an identifier with the entity (block 606). For example, a Bluetooth LE-enabled beacon included in entity 112 may receive a unique identifier associated with computing device 104b from computing device 104b. Entity 112 may provide the unique identifier to computer system 108. Computer system 108 may determine the shared identifier based on interest data associated with computing device 104b (common interest data associated with the entity).
[0092] In another example, computing device 104a may receive an identifier associated with computing device 104b from computer system 108. Computing device 104a may broadcast the received identifier, which may be received and recognized by computing device 104b.
[0093] Based on the received shared identifier, the computing device may receive information related to the computing device and the entity (block 608). For example, based on an alert set by a user of computing device 104b, computing device 104b may receive information related to products available for sale through entity 112 to purchase the products.
[0094] In another example, computing device 104b may receive a reminder to pay money owed to user 102a of computing device 104a based on an identifier of the reminder shared by computing device 104a and computing device 104b.
[0095] Figure 7 is a flow chart illustrating a method 700 for determining and providing a proximity reminder. In some embodiments, the method 700 can be implemented by the computer system and computing device described herein. For example, the method 700 can be implemented by referring to Figure 1 The computer system and computing device are used to implement method 700.
[0096] Method 700 begins by creating a reminder based on receiving a request to create a reminder from a first computing device (block 702). For example, when computing device 104b (user 102b) is in proximity to computing device 104a (user 102a), computer system 108 receives a request from computing device 104b to create a reminder to write a check for a rental.
[0097] The reminder is notified to the second computing device (block 704). For example, computer system 108 notifies computing device 104a that computing device 104b has created a proximity reminder associated with computing device 104a (and user 102a). A confirmation is received from the second computing device that the second computing device will allow proximity communication with the first computing device (block 706). For example, computing device 104a allows (consents to) short-range communication with computing device 104b. Computing device 104a provides the confirmation to computer system 108.
[0098] A reminder identifier is generated that is associated with the reminder (Block 708). For example, the computer system 108 generates a reminder identifier and associates the reminder identifier with the reminder and the computing device 104b of the user 102b.
[0099] An alert identifier is provided to a first computing device and a second computing device so that the second computing device broadcasts the alert identifier and so that the first computing device recognizes the broadcasted alert identifier from the second computing device (block 710). For example, computer system 108 provides the alert identifier to computing device 104a and computing device 104b. Computing device 104a broadcasts the alert identifier using a short-range communication system and protocol. Computing device 104b is enabled to receive and recognize the broadcasted alert identifier when computing device 104b is in proximity to computing device 104a using the same short-range communication system and protocol as computing device 104a.
[0100] Figure 8Examples of a general computer device 800 and a general mobile computer device 850 that can be used with the techniques described herein are shown. Computing device 800 is intended to represent various forms of digital computers, such as laptop computers, desktop computers, workstations, personal digital assistants, servers, blade servers, mainframes, and other suitable computers. Computing device 850 is intended to represent various forms of mobile devices, such as personal digital assistants, cellular phones, smartphones, and other similar computing devices. The components shown herein, their connections and relationships, and their functions are for illustrative purposes only and are not intended to limit the embodiments of the inventions described and / or claimed in this document.
[0101] The computing device 800 includes a processor 802, a memory 804, a storage device 806, a high-speed interface 808 connected to the memory 804 and a high-speed expansion port 810, and a low-speed interface 812 connected to a low-speed bus 814 and the storage device 806. Each of the components 802, 804, 806, 808, 810, and 812 is interconnected using various buses and can be mounted on a common motherboard or interconnected in other ways as appropriate. The processor 802 can process instructions for execution in the computing device 800, including instructions stored in the memory 804 or instructions stored on the storage device 806, to display graphical information for a GUI on an external input / output device such as a display 816 coupled to the high-speed interface 808. In other embodiments, multiple processors and / or multiple buses can be used, as appropriate, along with multiple memories and multiple types of memory. In addition, multiple computing devices 8000 can be connected, each device providing a portion of the necessary operations (e.g., as a server bank, a blade server group, or a multi-processor system).
[0102] Memory 804 stores information in computing device 800. In one embodiment, memory 804 is a volatile memory unit or units. In another embodiment, memory 804 is a non-volatile memory unit or units. Memory 804 can also be other forms of computer-readable media, such as a magnetic disk or optical disk.
[0103] The storage device 806 can provide mass storage for the computing device 800. In one embodiment, the storage device 806 can be or include a computer-readable medium, such as a floppy disk drive, a hard disk drive, an optical disk drive, or a magnetic tape drive, a flash memory or other similar solid-state memory device, or an array of devices, including devices in a storage area network or other configuration. A computer program product can be tangibly embodied in an information carrier. In addition, the computer program product can include instructions that, when executed, perform one or more methods (such as the methods described above). The information carrier is a computer-readable medium or machine-readable medium, such as the memory 804, the storage device 806, or a memory on the processor 802.
[0104] The high-speed controller 808 manages bandwidth-intensive operations for the computing device 800, while the low-speed controller 812 manages less bandwidth-intensive operations. This allocation of functionality is exemplary only. In one embodiment, the high-speed controller 808 is coupled to the memory 804, the display 816 (e.g., via a graphics processor or accelerator), and to the high-speed expansion port 810, which can accept various expansion cards (not shown). In one embodiment, the low-speed controller 812 is coupled to the storage device 806 and the low-speed expansion port 814. The low-speed expansion port can include various communication ports (e.g., USB, Bluetooth, Bluetooth LE, Ethernet, wireless Ethernet) and can be coupled to one or more input / output devices, such as a keyboard, a pointing device, a scanner, or a network device (such as a switch or router), for example, via a network adapter.
[0105] The computing device 800 can be implemented in a variety of different forms, as shown. For example, it can be implemented as a standard server 820, or often implemented in a group of such servers. In addition, it can be implemented as a personal computer, such as a laptop computer 822. Alternatively, the components of the computing device 800 can be combined with other components (not shown) in a mobile device, such as device 850. Each of these devices can contain one or more of the computing devices 800, 850, and the entire system can be composed of multiple computing devices 800, 850 communicating with each other.
[0106] Among other components, computing device 850 includes a processor 852, a memory 864, an input / output device (such as a display 854), a communication interface 866, and a transceiver 868. In addition, computing device 850 is provided with a storage device, such as a micro drive or other device, to provide additional storage. Each of components 850, 852, 864, 854, 866, and 868 is interconnected using various buses, and several components can be mounted on a common motherboard or interconnected in other ways as appropriate.
[0107] Processor 852 can execute instructions in computing device 850, including instructions stored in memory 864. The processor can be implemented as a chipset of chips, including independent and multiple analog and digital processors. The processor can provide coordination of other components of device 850, such as control of a user interface, applications running on device 850, and wireless communications conducted by device 850.
[0108] The processor 852 can communicate with the user through the control interface 858 and the display interface 856 coupled to the display 854. The display 854 can be, for example, a TFT LCD (thin film transistor liquid crystal display) or an OLED (organic light emitting diode) display, or other appropriate display technology. The display interface 856 may include appropriate circuits for driving the display 854 to present graphical information and other information to the user. The control interface 858 can receive commands from the user and convert them for submission to the processor 852. In addition, an external interface 862 can be provided to communicate with the processor 852, thereby enabling near-field communication between the device 850 and other devices. In some embodiments, the external interface 862 can be provided for wired communication, in other embodiments it can be used for wireless communication, and multiple interfaces can be used.
[0109] Memory 864 stores information within computing device 850. Memory 864 can be implemented as one or more computer-readable media, volatile memory unit(s), or non-volatile memory unit(s). Furthermore, expansion memory 874 can be provided and connected to device 850 via expansion interface 872, which may include, for example, a SIMM (Single In-line Memory Module) card interface. This expansion memory 874 can provide additional storage space for device 850 and can also store applications or other information for device 850. Specifically, expansion memory 874 can include instructions for executing or supplementing the processes described above, and can also include security information. Thus, for example, expansion memory 874 can be provided as a security module for device 850 and can be programmed with instructions that allow for secure use of device 850. Furthermore, secure applications can be provided via a SIMM card along with additional information, such as by placing identifying information on the SIMM card in an unhackable manner.
[0110] As described below, the memory may include, for example, flash memory and / or NVRAM memory. In one embodiment, a computer program product is tangibly embodied in an information carrier. The computer program product includes instructions that, when executed, perform one or more methods (such as the above-described methods). The information carrier is a computer-readable medium or machine-readable medium, such as memory 864, expansion memory 874, or memory 852 on the processor, received, for example, via transceiver 868 or external interface 862.
[0111] Device 850 can communicate wirelessly via communication interface 866, which may include digital signal processing circuitry as needed. Communication interface 866 can provide communication in various modes or protocols, such as, among others, GSM voice calls, SMS, EMS, or MMS messages, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS. Such communication can occur, for example, via radio frequency transceiver 868. In addition, short-range communication can be performed, for example, using Bluetooth, Bluetooth LE, WiFi, or other such transceivers (not shown). In addition, a GPS (Global Positioning System) receiver module 870 can provide additional navigation and positioning-related wireless data to device 850, which can be used as appropriate by applications running on device 850.
[0112] In addition, the device 850 can communicate auditorily using an audio codec 860 that can receive voice information from a user and convert it into usable digital information. The audio codec 860 can also generate audible sound for the user, such as through a speaker, such as in an earphone of the device 850. Such sound can include sound from a voice phone call, can include recorded sound (e.g., voice messages, music files, etc.), and can also include sound generated by applications operating on the device 850.
[0113] The computing device 850 may be implemented in a variety of different forms, as shown in the figure. For example, it may be implemented as a cellular phone 880. In addition, it may be implemented as a component of a smart phone 882, a personal digital assistant, or other similar mobile device.
[0114] Various implementations of the systems and techniques described herein can be implemented in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and / or combinations thereof. These implementations may include implementation in one or more computer programs (executable and / or compilable on a programmable system including at least one programmable processor, which may be either special purpose or general purpose, coupled to receive and transmit data and instructions to and from a storage system, at least one input device, and at least one output device.
[0115] These computer programs (also referred to as programs, software, software applications, or code) include machine instructions for a programmable processor and may be implemented in a high-level programming language and / or an object-oriented programming language and / or in assembly / machine language. As used herein, the terms "machine-readable medium," "computer-readable medium," and "machine-readable medium" refer to any computer program product, apparatus, and / or device (e.g., a magnetic disk, an optical disk, a memory, a programmable logic device (PLD)) for providing machine instructions and / or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term "machine-readable signal" refers to any signal for providing machine instructions and / or data to a programmable processor.
[0116] To provide interaction with a user, the systems and techniques described herein can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user and a pointing device (e.g., a mouse or trackball) for the user to provide input to the computer. Other types of devices can also be used to provide interaction with the user; for example, the feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user can be received in any form, including auditory, voice, or tactile input.
[0117] The systems and techniques described herein can be implemented in a computing system that includes a back-end component (e.g., as a data server), or includes a middleware component (e.g., an application server), or includes a front-end component (e.g., a client computer with a graphical user interface or a web browser through which a user can interact with an implementation of the systems and techniques described herein), or any combination of these back-end components, middleware components, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication (e.g., a communication network), a wide area network (LAN), and the Internet.
[0118] A computing system may include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
[0119] Where the systems and methods described herein collect personal information about a user, or where personal information may be utilized, the user may be provided with an opportunity to control whether a program or feature collects user information (e.g., information about the user's social network, social actions or activities, occupation, preferences, or current location), or to control whether and / or how content is received from a content server that may be more relevant to the user. Additionally, certain data may be processed in one or more ways prior to storage or use to remove personally identifiable information. For example, the user's identity may be processed so that personally identifiable information cannot be determined for the user, or the user's geographic location obtained for location information (e.g., to a city, ZIP code, or state level) may be generalized so that the user's specific location cannot be determined. Thus, the user may have control over how information about the user is collected and used by the content server.
[0120] A number of embodiments have been described, but it will be understood that various modifications can be made without departing from the spirit and scope of the invention.
[0121] Furthermore, the logic flows depicted in the accompanying drawings do not require the particular order or sequential order shown to achieve the desired results. Furthermore, other steps may be provided or eliminated from the described flows, and other components may be added or eliminated from the described systems. Therefore, other embodiments fall within the scope of the appended claims.
Claims
1. A method implemented by one or more processors, the method comprising: receiving, from a computing device of a user, a proximity-based reminder intended for an intended recipient, wherein the proximity-based reminder is based on a user interface input of the user, and wherein the intended recipient is other than the user; identifying the intended recipient of the proximity-based alert based on the proximity-based alert; responsive to identifying the intended recipient, performing one or more iterations of determining whether an intended recipient computing device of the intended recipient is within a determined proximity of the computing device of the user; In response to determining that the intended recipient computing device of the intended recipient is within the determined proximity: causing an output intended for the target recipient to be rendered, wherein the output is based on the proximity-based alert; After causing the output intended for the target recipient and based on the proximity-based reminder to be rendered: determining that the intended recipient consents to one or more further proximity-based reminders from the user; After determining that the intended recipient consents to one or more further proximity-based reminders from the user: receiving, from the computing device of the user, additional proximity-based reminders intended for the intended recipient; performing one or more further iterations of determining whether the intended recipient computing device of the intended recipient is within a further determined proximity of the computing device of the user; and In response to determining that the intended recipient computing device of the intended recipient is within the further determined proximity: A further output intended for the target recipient is caused to be rendered, wherein the further output is based on the further proximity-based reminder.
2. The method according to claim 1, further comprising: Prior to determining whether the intended recipient computing device of the intended recipient is within the determined proximity: A notification output is rendered for the intended recipient, wherein the notification output indicates to the intended recipient that the user generated the proximity-based reminder.
3. The method according to claim 1, further comprising: Prior to causing the output intended for the target recipient and based on the proximity-based reminder to be rendered: A determination is made as to whether the intended recipient consents to proximity-based reminders from the user.
4. The method according to claim 1, wherein The intended recipient is different from the user, and wherein the computing device of the user is different from the intended recipient computing device of the intended recipient.
5. A non-transitory computer-readable storage medium configured to store instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising: receiving, from a computing device of a user, a proximity-based reminder intended for an intended recipient, wherein the proximity-based reminder is based on a user interface input of the user, and wherein the intended recipient is other than the user; identifying the intended recipient of the proximity-based alert based on the proximity-based alert; responsive to identifying the intended recipient, performing one or more iterations of determining whether an intended recipient computing device of the intended recipient is within a determined proximity of the computing device of the user; In response to determining that the intended recipient computing device of the intended recipient is within the determined proximity: causing an output intended for the target recipient to be rendered, wherein the output is based on the proximity-based alert; After causing the output intended for the target recipient and based on the proximity-based reminder to be rendered: determining that the intended recipient consents to one or more further proximity-based reminders from the user; After determining that the intended recipient consents to one or more further proximity-based reminders from the user: receiving, from the computing device of the user, additional proximity-based reminders intended for the intended recipient; performing one or more further iterations of determining whether the intended recipient computing device of the intended recipient is within a further determined proximity of the computing device of the user; and In response to determining that the intended recipient computing device of the intended recipient is within the further determined proximity: A further output intended for the target recipient is caused to be rendered, wherein the further output is based on the further proximity-based reminder.
6. The non-transitory computer-readable storage medium of claim 5, wherein the operations further comprise: Prior to determining whether the intended recipient computing device of the intended recipient is within the determined proximity: A notification output is rendered for the intended recipient, wherein the notification output indicates to the intended recipient that the user generated the proximity-based reminder.
7. The non-transitory computer-readable storage medium of claim 5, wherein the operations further comprise: Prior to causing the output intended for the target recipient and based on the proximity-based reminder to be rendered: A determination is made as to whether the intended recipient consents to proximity-based reminders from the user.
8. The non-transitory computer-readable storage medium of claim 5, wherein: The intended recipient is different from the user, and wherein the computing device of the user is different from the computing device of the intended recipient.
9. A system for providing proximity-based reminders, comprising: one or more processors; as well as a memory configured to store instructions that, when executed by the one or more processors, cause the one or more processors to perform operations comprising: receiving, from a computing device of a user, a proximity-based reminder intended for an intended recipient, wherein the proximity-based reminder is based on a user interface input of the user, and wherein the intended recipient is other than the user; identifying the intended recipient of the proximity-based alert based on the proximity-based alert; responsive to identifying the intended recipient, performing one or more iterations of determining whether an intended recipient computing device of the intended recipient is within a determined proximity of the computing device of the user; In response to determining that the intended recipient computing device of the intended recipient is within the determined proximity: causing an output intended for the target recipient to be rendered, wherein the output is based on the proximity-based alert; After causing the output intended for the target recipient and based on the proximity-based reminder to be rendered: determining that the intended recipient consents to one or more further proximity-based reminders from the user; After determining that the intended recipient consents to one or more further proximity-based reminders from the user: receiving, from the computing device of the user, additional proximity-based reminders intended for the intended recipient; performing one or more further iterations of determining whether the intended recipient computing device of the intended recipient is within a further determined proximity of the computing device of the user; and In response to determining that the intended recipient computing device of the intended recipient is within the further determined proximity: A further output intended for the target recipient is caused to be rendered, wherein the further output is based on the further proximity-based reminder.
10. The system of claim 9, wherein the operations further comprise: Prior to determining whether the intended recipient computing device of the intended recipient is within the determined proximity: A notification output is rendered for the intended recipient, wherein the notification output indicates to the intended recipient that the user generated the proximity-based reminder.
11. The system of claim 9, wherein the operations further comprise: Prior to causing the output intended for the target recipient and based on the proximity-based reminder to be rendered: A determination is made as to whether the intended recipient consents to proximity-based reminders from the user.
12. The system according to claim 9, wherein: The intended recipient is different from the user, and wherein the computing device of the user is different from the computing device of the intended recipient.
Citation Information
Patent Citations
Automatic Detection and Notification of Proximity of Persons of Interest
US20070167136A1