Discovering continuous device interactions
The use of a low-power coprocessor and anonymized proximity identifiers in device discovery techniques addresses battery efficiency and privacy concerns, enabling efficient detection and recording of meaningful interaction events.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-01-17
- Publication Date
- 2026-03-10
AI Technical Summary
Existing device discovery techniques are limited by battery efficiency and privacy concerns, and they struggle to distinguish meaningful interaction events from chance encounters, especially in environments with numerous electronic devices.
Implement a low-power coprocessor to handle proximity messages, use anonymized proximity identifiers, and calculate event scores based on device relationships and interactions to detect meaningful events.
Enhances battery efficiency and protects privacy by efficiently detecting and recording meaningful interaction events without personal identifiable information.
Smart Images

Figure 2026508156000001_ABST
Abstract
Description
[Technical Field]
[0001] This application claims priority to U.S. Provisional Application No. 63 / 484,520, for "CONTINUOUS DEVICE INTERACTION DISCOVERY," filed February 12, 2023, and U.S. Patent Application No. 18 / 409,370, for "CONTINUOUS DEVICE INTERACTION DISCOVERY," filed January 10, 2024, which are incorporated by reference in their entireties for all purposes.
[0002] The present disclosure relates generally to techniques for performing device detection with electronic devices. [Background technology]
[0003] Device discovery is the problem of identifying nearby electronic devices. Device discovery may involve listening for wireless short-range communication messages broadcast by nearby (e.g., proximate) electronic devices. Wireless short-range communication messages (e.g., Bluetooth Low Energy (BLE) advertisements) from other devices may be received at the device's wireless short-range communication chip and stored in a buffer on the chip. However, such a configuration may limit the ability to detect nearby devices over an extended period of time, especially without using excessive battery storage. Additionally, privacy-conscious users may be concerned about storing logs of discovered devices. Therefore, improvements to device discovery techniques are desirable. Summary of the Invention
[0004] Certain embodiments are directed to techniques (e.g., devices, methods, memories or non-transitory computer-readable media storing code or instructions executable by one or more processors) for device discovery according to the present disclosure. The techniques may include methods for detecting proximity messages from nearby devices and using the messages to identify interaction events.
[0005] In one general aspect, the technique may include receiving a proximity message at a wireless short-range communications chip from one or more other devices. The technique may also include forwarding the proximity message to a coprocessor of the SOC via a power management bus while the processor is in a low power mode. The technique may further include processing the proximity message by the coprocessor to obtain a processed proximity message. The technique may further include storing the processed proximity message in a proximity buffer in a memory (e.g., one or more memories) of the SOC. The technique may further include determining whether a trigger event has occurred. The technique may also include waking the processor from the low power mode in response to the trigger event. The technique may further include analyzing the processed proximity message using the processor. Other examples of this aspect include corresponding computer systems, apparatuses, and computer programs recorded on one or more computer storage devices, each configured to perform the operations of the method.
[0006] In one general aspect, the present technology may include receiving a plurality of proximity messages during a first time period, the proximity messages being received via a wireless personal area network, each proximity message including a proximity identifier calculated using a unique identifier for a proximate electronic device that sent the proximity message. The technology may also include retrieving a set of device identifiers from an identifier database, the set of device identifiers corresponding to a set of electronic devices in a contact list for the first electronic device. The technology may further include determining, for each message in the plurality of proximity messages, whether a proximity identifier of the proximate electronic device matches a device identifier of the set of electronic devices, thereby determining a matching proximity message. The technology may further include generating an event score for one or more portions of the first time period based on the matching proximity messages, the event score comprising a probability that an event occurred between the first electronic device and one or more proximate electronic devices. The technology may further include determining whether an event occurred during the time period by comparing the event score to an event threshold. Other examples of this aspect include corresponding computer systems, apparatuses, and computer programs stored on one or more computer storage devices, each configured to perform the operations of the present method.
[0007] These and other embodiments of the present disclosure are described in more detail below. For example, other embodiments are directed to systems, devices, and computer-readable media associated with the methods described herein.
[0008] A better understanding of the nature and advantages of embodiments of the present invention can be obtained by reference to the following detailed description and accompanying drawings. [Brief explanation of the drawings]
[0009] [Figure 1] 1 illustrates a simplified diagram of an exchange of proximity messages between electronic devices, according to at least one embodiment.
[0010] [Figure 2A] 1A-1C illustrate simplified diagrams of various environments in which electronic devices exchange proximity messages, according to at least one embodiment. [Figure 2B] 1A-1C illustrate simplified diagrams of various environments in which electronic devices exchange proximity messages, according to at least one embodiment. [Figure 2C] 1A-1C illustrate simplified diagrams of various environments in which electronic devices exchange proximity messages, according to at least one embodiment.
[0011] [Figure 3] FIG. 1 is a simplified diagram of an architecture for performing device discovery, according to at least one embodiment.
[0012] [Figure 4] 1 is a simplified flowchart of a technique for processing and analyzing proximity messages, according to at least one embodiment.
[0013] [Figure 5] 1 illustrates a simplified diagram of a modified key exchange for anonymized device discovery, according to at least one embodiment.
[0014] [Figure 6] 1 shows a diagram illustrating event score calculation for two interaction events, according to various embodiments.
[0015] [Figure 7] 1 illustrates a simplified diagram of an interaction event according to at least one embodiment.
[0016] [Figure 8] 1 shows a simplified diagram of event score calculation according to at least one embodiment.
[0017] [Figure 9]1 is a simplified flowchart of a technique for determining whether an interaction event has occurred, according to at least one embodiment.
[0018] [Figure 10] FIG. 1 is a block diagram of an exemplary electronic device according to at least one embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0019] Certain embodiments are directed to techniques (e.g., devices, methods, memories or non-transitory computer-readable media storing code or instructions executable by one or more processors) for device discovery techniques.
[0020] Device discovery techniques involving ranging between electronic devices, such as mobile devices, can enable a first device to record interactions with other devices. This log can be an anonymized ledger of times the first electronic device encountered another device. These devices, including the first device, can periodically broadcast short-range proximity messages (e.g., Bluetooth Low Energy (BLE) advertisement messages), and nearby devices receiving these messages can use them to determine whether an interaction between the broadcaster and receiver occurred.
[0021] However, electronic devices are nearly ubiquitous in many environments, and simply recording a list of nearby devices may not provide relevant information to the user of the receiving device. For example, without filtering proximity messages, an electronic device for an individual commuting on the subway may record interactions with hundreds or thousands of electronic devices that have no meaningful relationship to the individual. Therefore, it is desirable to distinguish between meaningful interaction events with devices that have a connection to the individual and chance encounters with unrelated devices.
[0022] A matching process can be used to determine whether a received proximity message is from a broadcaster that has a relationship with the receiver. The matching process can use a unique identifier of the broadcaster (also referred to as the broadcast device). The proximity message can have a proximity identifier that is generated by signing the unique identifier of the broadcast device with a private key. Thus, the proximity identifier can be generated as a digital signature.
[0023] The proximity identifiers may be matched (e.g., via a process such as decryption) to devices in the receiving device's contact list using a public key that the broadcasting device shares with the associated device. For example, the public keys may be stored in a database, and the receiving device may periodically retrieve the public keys for the devices' contact list from the database. Alternatively or additionally, public keys may be exchanged using techniques that do not require a database, such as via a near field communication protocol or by reading a matrix barcode.
[0024] As part of the matching process, the receiving device can determine whether the proximity identifier matches a device identifier stored in the receiving device's contact list. For example, the receiving device can perform a verification process that applies a portion of a public key (e.g., a power value and a modulus value) to the proximity identifier to obtain a first result. The receiving device can then verify that the first result matches a second result produced by applying a second portion of the public key to the device identifier (e.g., a modulus function). The proximity identifier may be a hash or modulus result generated using a private key. Thus, the proximity identifier may not be unique (e.g., if a hash collision occurs). However, the use of time (or a time-varying portion of the verification process) can reduce the likelihood of such collisions persisting, thereby enabling a unique determination that the broadcasting device is present in the contact list.
[0025] Some embodiments may only identify the presence of a device in a contact list, as opposed to identifying the device and disclosing such information to the user of the receiving device. In this way, the proximity identifier can protect the anonymity of the broadcasting device. Furthermore, unrelated devices may identify the broadcasting device, for example, because the proximity identifier can only be decrypted using a public key. In addition, the proximity identifier cannot be used to directly obtain the device identifier, even with the public key. Instead, the proximity identifier can only be used to determine that the decrypted proximity identifier and the device identifier match (i.e., match). Thus, because the device identifier must be known by the verifying device, the device identifier cannot be determined in its entirety from the proximity identifier alone. The decrypted proximity identifier may match a device identifier with sufficient probability for interaction event detection while still matching multiple potential device identifiers. Furthermore, the interaction event may be stored anonymously, and the proximity message and decrypted proximity message may be deleted after the event is recorded.
[0026] Such techniques can enable the determination of an event score corresponding to whether a user of a receiving device was part of an event (e.g., a social gathering). Such a determination can be used in a variety of ways, for example, as a trigger for applications such as journaling, camera applications, social media applications, etc.
[0027] A further problem with such device detection is that monitoring for proximity messages can be energy inefficient because the mobile device's main processor may need to analyze the messages. Proximity messages can be received by a wireless short-range communications chip (e.g., a Bluetooth Low Energy (BLE) chip). To save power, an always-on low-power coprocessor can retrieve messages from the communications chip and store them in a buffer in memory. The low-power coprocessor can be part of a system-on-chip (SOC) that has memory and a main processor. The in-memory buffer can be flushed to the main processor when the main processor wakes, or the coprocessor can wake the processor and flush the buffer when it is full. After waking, the processor can process any pending advertisements and return to sleep. Because the buffer on the system-on-chip is larger than the buffer on the wireless short-range communications chip, the processor can be woken less frequently and can process larger batches at each wake. Therefore, an architecture with an always-on coprocessor is more energy efficient than an architecture that uses the wireless short-range communications chip buffer to process advertisements. I. Interaction Events
[0028] An interaction event is intended to capture meaningful contact between two or more individuals with an existing relationship. Meaningful contact can be a meeting between electronic devices that occurs in rare or unusual circumstances. An interaction event can be distinguished from an encounter in which two individuals happen to be near each other, regardless of whether they have an existing relationship. Both interaction events and encounters can be detected by proximity messages exchanged between individuals' electronic devices. Upon or after receiving a proximity message, a receiving electronic device can attempt to process the proximity message to determine whether there is an acceptable possibility that the message is from a broadcasting electronic device associated with one of the broadcasting device's contacts. If the message is from a contact, the receiving electronic device can determine whether an interaction event has occurred.
[0029] Interaction events can be used for a variety of purposes. For example, a journaling application can use a recorded interaction event as a writing prompt (e.g., "The journal detected an event between 2:00 PM and 2:45 PM"). The interaction event may be recorded along with some information about the event, such as the number of devices present during the event, the start time of the event, the end time of the event, or the general location of the event (e.g., city rather than street address). For privacy reasons, interaction events are anonymous and simply record that an interaction event occurred; no personal identifying data is recorded about any of the participants in the interaction event.
[0030] FIG. 1 shows a simplified diagram of proximity message exchange between devices according to at least one embodiment. A primary electronic device 105 is an electronic device belonging to a user 110. The primary electronic device 105 has multiple entries in its contact list representing accounts the user 110 has stored on his or her primary electronic device 105. The primary electronic device 105 exchanges proximity messages with electronic devices, and at the end of a period, the primary electronic device 105 may attempt to process these messages to obtain a processed proximity message. The period may be a time frame during which the primary electronic device 105 collects proximity messages, and at the end of the period, the primary electronic device 105 may process the proximity messages to generate a processed proximity message. Processing may include de-duplicating or purging messages in a buffer so that only one message per device is processed in a given period. The primary electronic device may keep a record of which period and for how long for each.
[0031] The contact list of the primary electronic device 105 includes entries for user accounts logged in to the associated electronic devices 115 and 120, although user accounts logged in to non-associated electronic devices 125 may not be present in the contact list. The contact list may represent the user accounts associated with the primary electronic device 105, although other techniques for identifying accounts associated with the primary electronic device 105 are contemplated. For example, a favorites list, a list of accounts that have exchanged texts or phone calls with the primary electronic device 105, or any other list of accounts may be used to identify the user accounts associated with the primary electronic device 105.
[0032] The primary electronic device 105 and the associated electronic device 115 are separated by a first distance 130. This distance is short enough to exchange proximity messages over a wireless personal area network using a wireless short-range communication chip. The proximity messages may be Bluetooth messages, and the wireless short-range communication chip may be a Bluetooth Low Energy (BLE) chip. Because the primary electronic device 105 can receive and process messages from the associated electronic device 115, the associated electronic device 115 may be a proximate device with respect to the primary electronic device 105 (e.g., the associated electronic device 115 is within range of and associated with the primary electronic device 105).
[0033] The associated electronic device 120 is associated with the primary electronic device 105, as is the associated electronic device 115. However, the primary electronic device 105 and the associated electronic device 115 are separated by a second distance 135 that is longer than the first distance 130, preventing proximity messages from being successfully exchanged between the devices. The second distance 135 may be too long for a proximity message to travel between the devices with its payload intact, or filtering on the primary electronic device 105, such as a receive signal strength filter, may filter out messages that are greater than a threshold distance from the receiving device (e.g., the primary electronic device 105 may filter out messages with an RSSI below a signal threshold). Thus, even though the associated electronic device 120 is associated with the primary electronic device 105, the associated electronic device 120 is not a proximity device with respect to the primary electronic device 105.
[0034] The unassociated electronic device 125 is separated from the primary electronic device 105 by a third distance 140 that is approximately the same length as the first distance 130. However, unlike the associated electronic device 115, the unassociated electronic device 125 is not associated with the first electronic device. Therefore, the primary electronic device 105 cannot process proximity messages received from the unassociated electronic device 125, and those messages may be ignored by the primary electronic device 105.
[0035] While successful exchange of proximity messages is necessary for interaction event detection, that exchange may not be sufficient to detect an interaction event. For example, if two devices are regularly near each other, any interaction between the devices may not be meaningful (e.g., worth recording in a journal). For example, two roommates or coworkers may successfully exchange proximity messages on a daily basis, but the interaction between the individuals operating the devices may be routine and uneventful. Conversely, a single exchange of messages may be caused by a fleeting encounter that the individuals carrying the devices may not be aware of. For example, one device may be present with an individual ordering coffee inside a store, while the other device may be carried by someone passing by the store. Thus, proximity messages can be analyzed to determine whether an interaction event has occurred.
[0036] 2A-2C show simplified diagrams of various environments in which electronic devices exchange proximity messages, according to at least one embodiment. A primary electronic device 205 may be a device carried by an individual during the day; in FIG. 2A, the individual is at home 210. Later that day, in FIG. 2B, the individual visits a bank 215, and then returns to home 210 to host a party with several friends, in FIG. 2C.
[0037] During the day, the primary electronic device 205 receives proximity messages from the unrelated electronic device 220. Because the primary electronic device 205 cannot process these messages to generate processed proximity messages, the primary electronic device may never identify interaction events with the unrelated electronic devices.
[0038] Referring now to FIG. 2A , whether two devices regularly interact can determine whether an interaction event has occurred. The associated electronic device 225 may be controlled by a roommate of the individual (e.g., the primary individual) operating the primary electronic device 205. Thus, the associated electronic device 225 and the primary electronic device regularly exchange proximity messages because they share a common living space. As a result, even if the primary electronic device 205 exchanges messages with the associated electronic device 225 nearly every day, the primary electronic device does not detect an interaction event in FIG. 2A . An interaction event should be a meaningful interaction that an individual may want to acknowledge, but everyday interactions with familiar individuals are unlikely to be considered meaningful by either party.
[0039] Referring now to FIG. 2B, the number of simultaneously interacting devices can determine whether an interaction event occurs. FIG. 2B shows a primary electronic device in a bank 215. The visit to the bank shown in FIG. 2B is relatively short, lasting no longer than half an hour. While in the bank 215, the primary electronic device 205 exchanges proximity messages with associated electronic devices 230, 235, and 240. The primary electronic device successfully processes the proximity messages from each device. The primary electronic device determines that it encountered each of the associated electronic devices 230, 235, and 240 for five minutes. The encounters with the associated electronic devices 235 and 240 overlap, but the encounter with the associated electronic device 230 did not overlap with any other devices.
[0040] In this case, the primary electronic device detects an interaction event during the period from the first proximity message received from any of the associated electronic devices 235, 240 to the last proximity message received from those devices. The primary electronic device 205 may detect interaction events related to encounters with the electronic devices 235, 240 because bringing multiple associated devices together simultaneously can be a meaningful interaction and worth documenting, even if the encounter is relatively short in length. Conversely, an encounter with the associated electronic device 230 may not be recorded as an interaction event because an encounter with a single device may not be worth remembering.
[0041] Referring now to FIG. 2C, the length of an encounter between electronic devices can determine whether an interaction event has occurred. FIG. 2C shows a primary electronic device in a home 210. In this case, primary electronic device 205 is joined by associated electronic device 245, which corresponds to a first friend of the primary individual. The primary individual invites the friend to home 210 to play a board game. During the three-hour period that the primary individual and the friend play the board game, primary electronic device 205 and associated electronic device 245 exchange proximity messages. After the game ends and the first friend leaves, a second friend carrying associated electronic device 250 returns the basketball, and his device interacts with the primary electronic device for five minutes.
[0042] Based on these interactions, the primary electronic device 205 detects an interaction event for the first friend because there is a consecutive three-hour period in which devices that do not normally interact encounter each other. A prolonged interaction with a related device may be an interaction event if interactions between these devices are infrequent. In addition, the primary electronic device does not record an interaction event for the second friend because the encounter was brief, even though these devices do not interact on a daily basis.
[0043] The number of devices involved in the encounter and the length of the encounter may be used to determine whether an interaction event has occurred, although the interaction event may be stripped of these details when the interaction event is recorded on the primary electronic device 205. An interaction event may be recorded as an event without details regarding the number of participating devices. In addition, the length of the interaction event need not be documented; for example, the interaction event may be recorded with a start time, an end time, a midpoint, a part of the day (e.g., morning, noon, afternoon, evening, dusk, dawn, late night, early morning, breakfast, lunch, dinner, etc.). The amount of information recorded with each interaction event may be customizable by the primary individual, who can configure which details are included in the event. II. Interaction Event Detection Architecture
[0044] Processing proximity messages can mean monitoring received messages over a sustained period of time. This monitoring can be a drain on the battery of the electronic device. Event detection can be performed in an energy-efficient manner using an architecture with a low-power co-processor to collect and process proximity messages as they arrive and a primary processor to calculate event scores for batches of processed proximity messages.
[0045] 3 is a simplified diagram of an architecture 300 for performing device discovery, according to at least one embodiment. Proximity messages may be received at a primary electronic device from other electronic devices at an antenna connected to a Bluetooth Low Energy (BLE) chip 305. The BLE chip 305 may be circuitry for analyzing, forwarding, or storing messages received via a wireless short-range network (e.g., a wireless short-range chip). In this case, the BLE chip is connected to a system-on-chip (SOC) 310 by a power management bus 315 that supports bidirectional communication with one or more processors. The power management bus 315 is a connection that the BLE chip 305 can use to wake processors connected to the chip. The SOC 310 may be a single piece of silicon containing circuitry for implementing most or all of the functionality of a computing device (e.g., processing, memory, input / output connections).
[0046] The always-on processor (AOP) 320 can receive proximity messages from the BLE chip 305 via the power management bus 315. While the power management bus 315 can be used to wake the processor, the AOP 320 is a low-power coprocessor that functions continuously while the electronic device is powered. The AOP 320 can process proximity messages by deduplication, associating proximity messages from related electronic devices with their respective devices, and discarding proximity messages from unrelated devices. Deduplication can be a process in which duplicate copies of repetitive data are removed to improve storage utilization. To dedupe, the AOP 320 can analyze data in memory to identify byte patterns or unique contiguous groups of data, called chunks, that occur within the analyzed data. These identified byte patterns can be stored in memory 325. During deduplication, the AOP 320 can search memory to determine any other locations where a particular byte pattern is repeated. If a byte pattern is repeated, AOP 320 can remove the byte pattern from memory and replace the pattern with a reference (e.g., a pointer or address) to the stored byte pattern. Because the reference can be smaller than the byte pattern, and a byte pattern can be repeated tens, hundreds, or thousands of times in memory, this de-duplication process can significantly reduce the amount of data stored in memory 325.
[0047] The processed proximity messages generated by AOP 320 may be stored in memory 325 (e.g., random access memory (RAM), dynamic random access memory (DRAM), etc.). At regular intervals or when memory 325 is full, processor 330 may collect the processed proximity messages from memory 325 and process the messages using daemon 335. Daemon 335 may determine a unique identifier associated with each processed message, calculate an event score, and provide the event score to other software, services, or applications.
[0048] 4 is a simplified flowchart of a technique for processing and analyzing proximity messages according to at least one embodiment. In some implementations, one or more method blocks of FIG. 5 may be performed by an electronic device (e.g., primary electronic device 105, 205, 505, electronic device 115, 120, 220, 225, 230, 235, 240, 245, 250, architecture 300, electronic device 1000). In some implementations, one or more method blocks of FIG. 5 may be performed by another device or group of devices that are separate from or include the electronic device.
[0049] Additionally or alternatively, one or more method blocks of FIG. 5 may be performed by one or more components of an electronic device (e.g., primary electronic device 105, 205, 505, electronic device 115, 120, 220, 225, 230, 235, 240, 245, 250, architecture 300, electronic device 1000), such as BLE chip 305, SOC 310, AOP 520, memory 325, processor 330, radio circuitry 1008, processor 1018, etc.
[0050] Referring more particularly to method 400, at block 410, a proximity message may be received at a wireless short-range communication circuit (e.g., BLE chip 305). The message may be received at one or more devices (e.g., primary electronic device 105, 205, 505, electronic device 115, 120, 220, 225, 230, 235, 240, 245, 250, architecture 300, electronic device 1000).
[0051] At block 420, the proximity message may be forwarded to a coprocessor of a system-on-chip (SOC). The message may be forwarded by the BLE chip 305 to the AOP 320 on the SOC 310 via the power management bus 315. The message may be forwarded while the processor 330 is in a low power mode.
[0052] At block 430, the coprocessor may process the proximity message to obtain a processed proximity message. Processing the message may include removing duplicate proximity messages (e.g., de-duping the message). Processing may include removing messages with RSSI values below a threshold (e.g., the device was too far from the electronic device). The RSSI value may be calculated by the BLE chip 305 when the proximity message is received. De-duping the proximity message may mean identifying at least one byte chunk in the proximity message forwarded at 420, storing the at least one byte chunk in memory 325, determining one or more locations in the proximity message where each byte chunk of the at least one byte chunk is repeated in the proximity message, and replacing the repeated one or more byte chunks with a reference to the byte chunk stored in memory.
[0053] At block 340, the proximity message may be stored in a proximity buffer in a memory of the SOC. The memory may be memory 325, and the SOC may be SOC 310.
[0054] At block 350, it may be determined whether a trigger event has occurred. The trigger event may be the expiration of a time period or the number of entities in the buffer reaching a threshold. The trigger event (e.g., trigger event) may be a threshold (e.g., a memory threshold) based on memory usage (e.g., an event may be triggered when 100% of the memory is used). The trigger event may include a user interacting with the electronic device or otherwise waking the processor.
[0055] In block 460, the processor may be woken from the low power mode in response to determining 350 that a trigger event has occurred. The AOP 320 may wake the processor 330 in response to the trigger event.
[0056] At block 470, the processed proximity message may be analyzed using a processor. The processed proximity message may be analyzed to determine if an interaction event has occurred. Analyzing the processed proximity message is described in more detail below with respect to method 900. III. Anonymized Interaction Events
[0057] Individuals may have privacy concerns regarding interaction events. In particular, there may be concerns that interaction logs contain personal information and could be used to reconstruct someone's activities. These concerns can be alleviated by anonymized interaction events, which record encounters between related electronic devices without personally identifiable information. A. Proximity Message Generation
[0058] 5 shows a simplified diagram of a modified key exchange for anonymized device discovery, according to at least one embodiment. This key exchange can be one-way, using a dedicated broadcasting device and a dedicated receiving device, or two-way, with both electronic devices both broadcasting and receiving proximity messages. In this example, the primary electronic device 505 and the associated electronic device 510 both send and receive proximity messages as part of the two-way key exchange. However, for purposes of illustration, the primary electronic device 505 is described as receiving proximity messages from the associated electronic device 510, although both devices are capable of broadcasting and receiving proximity messages.
[0059] The primary electronic device 505 can receive a proximity message from the associated electronic device 510. The proximity message can be a proximity identifier calculated by signing the unique identifier of the associated electronic device 510 with a private key. Signing the unique identifier can mean appending a signature, or a value calculated from the unique identifier using a private key (e.g., a Rivest-Shamir-Adleman public key), to a message containing the unique identifier to generate the proximity message. Generating a signature for a proximity message without the private key should be computationally infeasible, and the signature should be verifiable using the public key associated with the private key. In some situations, the signature can be generated for the unique identifier and a timestamp so that the time the proximity message was generated can be verified. In one example, a public-private key pair includes a key pair including a modulus N, which is the product of two random, secret, distinct large prime numbers, along with integers e and d:
number
number
number
[0060] In some embodiments, the proximity identifier may be anonymized to generate the proximity message by removing one or more bits from the bit string comprising the proximity identifier (e.g., removing the first bit, the second bit, the last two bits, etc.). By removing bits, the proximity identifier may be rendered partially anonymous, even after decryption (e.g., digital signature verification), since the unique identifier cannot be fully reconstructed from the proximity identifier. Instead, the unique identifier and the reconstructed unique identifier may be determined, and the probability of this identifier being matched to another electronic device may be sufficient for event detection purposes.
[0061] The private key and its corresponding public key stored in database 515 may be static, or the key may be changed periodically (e.g., every 15 minutes). For example, the key may be updated at regular intervals or after each message so that a single public key can only be used to decrypt a few proximity messages. Additionally, old public keys may be deleted from database 515 after they are updated, so that proximity messages cannot be decrypted during the later period.
[0062] Upon or after receiving a proximity message, or at regular intervals, the primary electronic device can retrieve from the database 515 a list of public keys corresponding to one or more associated devices. A primary electronic device may be associated with a device if an account associated with the associated electronic device is in a contact list on the primary electronic device. Additionally or alternatively, a device may be associated if the primary electronic device 505 and the associated electronic device 510 have interacted (e.g., exchanged text messages, video chatted, exchanged phone calls, interacted on an application, etc.) within a certain period of time. In some embodiments, devices may be associated if the number of interactions within a certain period of time exceeds a threshold. The period of time may be 5 seconds, 10 seconds, 20 seconds, 50 seconds, 1 minute, 5 minutes, 10 minutes, 15 minutes, 50 minutes, 1 hour, 2 hours, 5 hours, 12 hours, 1 day, or 1 week.
[0063] The retrieved list of public keys can be used by the primary electronic device 505 to process proximity messages received from the associated electronic device 510. The primary electronic device 505 can process received proximity messages as they are received or as part of a batch of messages stored in memory. For example, proximity messages can be processed by a coprocessor, stored in the primary electronic device's 505 memory, and provided to the primary electronic device's processor in a batch. Processing the proximity messages can include de-duplicating the proximity messages and attempting to verify the proximity message signature using the list of public keys. If the proximity message can be verified, the message is a processed proximity message from an associated electronic device; if the message cannot be decrypted, the message is from a non-associated electronic device and cannot be processed. B. Event Score
[0064] The processed proximity messages can be stored in a memory in the primary electronic device 505, and a processor in the device can use the processed proximity messages to calculate an event score that represents the probability that an interaction event occurred, each of which represents the probability that a proximity message was exchanged with an associated electronic device in the primary electronic device's contact list during the most recent period.
[0065] The primary electronic device 505 can calculate an event score using event scores from previous periods preceding the most recent period. For example, the event score can persist for four weeks. Using the event scores from previous periods can distinguish routine interactions with familiar related electronic devices (e.g., a roommate's device) from interaction events. The event score can be compared to two thresholds to determine whether an interaction event occurred. If the event score is too low (e.g., below a first threshold), there were not enough encounters between the devices for an interaction event. If the event score is too high (e.g., above a second threshold), regular contact between these two devices suggests that the encounter was routine and that an interaction event did not occur.
[0066] For example, the event score of a previous event score may include scores of associated electronic devices (e.g., unique identifiers) that exchanged proximity messages with the primary electronic device 505 during a period preceding the most recent period. If no proximity messages are exchanged with a particular associated electronic device during the current period using the event score from the previous period, the event score may be decremented by a decrement value. If there is an exchange of proximity messages between these devices during the most recent period, the event score may be incremented by an increment value. If it is desired to increase or decay the event score more quickly, the increment and decrement values may have the same or different magnitudes.
[0067] The magnitude of the increment value can vary based on the number of devices that sent proximity messages of the primary electronic device 505 during the current time period. If the primary electronic device 505 is encountering multiple associated devices simultaneously, it may be more likely that an interaction event has occurred. For example, the increment value for each associated device that sent a proximity message to the primary electronic device 505 can be weighted based on the number of associated electronic devices encountered during the time period (e.g., three devices encountered, so the increment value is tripled).
[0068] Additionally, the incremental score may be weighted based on the location where the proximity message exchange occurred. Message exchanges in familiar locations may not be weighted, while message exchanges in new locations may be weighted a greater amount. Additionally, other interactions between devices may affect the magnitude of the incremental value weight. For example, if the primary electronic device and the associated electronic device communicate over a cellular network (e.g., via phone calls, short messaging service (SMS) messages, video phone calls, text-based communication via an application, etc.), the incremental value weight may be increased.
[0069] The weight of the increment value may be increased based on the relationship between the primary electronic device 505 and the associated electronic device 510. For example, an associated electronic device with a unique identifier that is in the favorites list, designated as a family member in the contact list, or featured as an emergency contact in the primary electronic device may be weighted higher. Activities performed by the primary electronic device during the period may be used to modify the weight of the increment value. For example, if the primary electronic device is used to control a television during the period, the primary individual may be watching television with the person controlling the associated electronic device, which may be an interaction event. Conversely, if the primary electronic device is performing a solo activity, such as listening to a podcast on headphones, the weight may be decreased.
[0070] While the exchange of proximity messages may be symmetric, the calculation of interaction events using event scores may not be symmetric. Potentially, one participant in an encounter may classify an event as an interaction event, while other participants may not detect the interaction event. Additionally, the associated electronic device 510 may be associated with the primary electronic device 505 (e.g., at the contact point of the primary device), but the primary electronic device 505 may not be associated with the associated electronic device 510.
[0071] Proximity messages may be filtered to filter out messages from devices that are beyond a threshold distance from the primary electronic device 505. In such situations, a received signal strength indicator (RSSI) can be used to filter out proximity messages from devices that are far enough away that an interaction event is unlikely. The received signal strength indicator (RSSI) is a measure of power in a received signal. One or more antennas in an array of electronic devices may be configured to measure the received signal strength. The received signal strength may be expressed as a negative number having any unit that may vary between implementations. For example, the Institute of Electrical and Electronics Engineers (IEEE) 602.11 technical standard for implementing wireless area network communications and Bluetooth Low Energy (BLE) wireless personal area technology both use decibel-milliwatt (-dBm) as the unit of received signal strength, although other units are also possible.
[0072] Signal strength can be determined using the wireless communication antenna of an electronic device. Electronic devices often include components for wireless communication, and RSSI can enable distance measurement without dedicated hardware. To measure RSSI, a primary electronic device can transmit a signal that is received by one or more associated electronic devices. The signal's power decays at a regular rate that can be used to determine the approximate distance between devices.
[0073] An event score can be calculated at the end of a time period referred to as an event interval. For example, the duration of an event interval can be one hour divided into five-minute interaction intervals. At the end of an interaction interval, the electronic device can request proximity messages received during that interaction interval. Using the received proximity messages, the electronic device can identify proximity messages from some or all of the electronic phone's contacts (e.g., the top 64 contacts), and for each contact, the electronic device can identify the number of interaction intervals in which proximity messages from the contact were received. At the end of the event interval, the interaction durations (e.g., the number of interaction intervals) for each contact are summed, and an event score can be calculated as described below.
[0074] An event score (e.g., contact score) for a contact may be a percentage of the active interaction interval for that contact. An active interaction interval is an interaction interval in which the electronic device received at least one proximity message for that contact. This contact score may be calculated by summing the active interaction intervals for the contact and normalizing the sum of the event intervals by dividing the sum by the total number of interaction intervals within the event interval. The event score for an event interval may be the sum of the contact scores for each contact. The event score may be calculated using the following formula:
number
[0075] 6 shows a diagram 600 illustrating event score calculations for two interaction events, according to various embodiments. As shown in diagram 600, event scores are calculated for consecutive 60-minute event intervals corresponding to potential events. However, the event intervals corresponding to potential events may not be consecutive, in all embodiments, with overlapping event intervals or event intervals separated by a temporal gap.
[0076] As shown in diagram 600, the event interval for potential event 1 602 begins at line 604 at t0. The event intervals for potential event 1 602 and potential event 2 606 are separated by line 608 at t0+60 minutes. Diagram 600 shows active interaction events corresponding to periods during which the electronic device received proximity messages from mobile devices in the electronic device's contact list. The electronic device received proximity messages from contact A 610 over a series of active interaction intervals extending from line 604 at t0 to line 612 at t0+75 minutes. Contact B 614 has two separate series of active interaction intervals: 1) from line 616 at t0+5 minutes to line 618 at t0+20 minutes, and 2) from line 620 at t0+55 minutes to line 612 at t0+75 minutes. The electronic device received only proximity messages from contact C 622 over the active interaction interval from line 616 at t0+5 minutes to line 624 at t0+10 minutes.
[0077] Proximity messages for both contact A 610 and contact B 614 are received during active interaction intervals during the event intervals corresponding to potential event 1 602 and potential event 2 606, but proximity messages for contact C 622 are received only during active interaction intervals during the event interval corresponding to potential event 1 602. In this case, the interaction interval is 1 minute, which corresponds to 60 interaction intervals. Using equation (1), the event score for potential event 1 602 can be calculated as follows:
number
number
[0078] The event scores can be stored for a period of time, for example, the event scores can last for 28 days. However, other periods are contemplated, and the event scores can be stored for 1 week, 2 weeks, 3 weeks, 4 weeks, 5 weeks, 6 weeks, 8 weeks, 9 weeks, 10 weeks, 11 weeks, or 12 weeks. The event scores can be stored along with a unique identifier for the event, a start time of the event interval, an end time of the event interval, the event score, a frequency score, a recency score, and a significance score. C. Additional Scores
[0079] The event score can be extended with additional score types to identify different types of events. These scores can include a recency score, a frequency score, a significance score, or a density score. While the event score can determine whether an electronic device has been around multiple contacts, the event score alone may not be able to identify significant events involving interactions with a small number of contacts. 1. Density Score
[0080] The density score records the total number of devices that sent proximity messages to the electronic device during the event interval. The density score calculation is similar to the event score calculation, except that the event score is calculated from proximity messages generated by the contact, whereas the density score is calculated using all devices (e.g., sending devices) from which a proximity message was received. The density score can be calculated using the following formula:
number
[0081] Interactions with one or two contacts may be important, but the significance may depend on how recently the user of the electronic device interacted with the contacts. For example, breakfast with a roommate may not be important, but coffee with a friend from out of town may be. Recency scores can be used to distinguish between everyday interactions and potentially important meetings.
[0082] The recency score may be a value between 0 and 1 calculated at the end of each day. A lower recency score may mean that the contacts met more recently, and a higher recency score may mean that the contacts met less recently. The recency score may be calculated from a binary daily score. If the contact met during the day, the daily score may be set to zero. If the contact did not meet during the day, the daily score may be set to one. In some embodiments, the recency score may be a moving average of the recency scores of one or more days preceding the current day and a score calculated using the daily scores. For example, the recency score may be calculated as the average of the daily score and the recency score of the previous day. The recency score may be calculated using the following formula:
number
[0083] The frequency score can correspond to the frequency of interaction between the electronic device and the contact. The frequency count can be the number of hours per day that the electronic device interacts with the contact (e.g., receives a proximity message from the contact). A moving average is calculated for each contact using the following formula:
number
number
number
[0084] The significance score represents the number of communications between the electronic device and the contact. The significance score may be a time-decaying count of these communications, with the score increasing once for each communication. The communications may be text messages, emails, phone calls, or messages sent via an application. The significance score may increase over a set period of time depending on the communication. For example, a text message may increase the score by 1 for a two-day period, after which the score decreases by 1. Different communication types may increase the score for different periods of time. For example, a text message may increase the significance score by 12 hours, while a phone call between the electronic device and the contact may increase the score by two days. D. Score Use Cases
[0085] Scores, including an event score, a recency score, a frequency score, and a significance score, can be used to detect types of interactions that may be appropriate as journaling prompts. For example, the event score alone can be used to determine that an electronic device was around a relatively large number of the device's contacts. Such events may include a party, an activity, or an outing with multiple friends. Additional scores may not be necessary to identify events such as a party because such events have a high event score.
[0086] The event score and recency score can be used to identify one-to-one interactions with close friends. The event score itself may not be sufficient to indicate that a significant event occurred because there is only one contact during the event interval. However, a high frequency score (e.g., a score between (0.6, 1)) can indicate that the contact is someone the user of the electronic device sees more frequently than usual. Thus, the interaction can be classified as one in which interactions with the contact were encountered more frequently than usual.
[0087] The event score, frequency score, and significance score may be used to determine that a user of an electronic device frequently chats online and then meets a close friend in person. The event score may indicate that the user met a single contact, a high recency score (e.g., a recency score of 1) may indicate that the user and contact meet infrequently, and a high significance score may indicate that the user and contact communicate frequently via their devices.
[0088] Similarly, the event score, frequency score, and significance score may indicate that the user of the electronic device met a mix of close friends and acquaintances. The event score may indicate that multiple contacts were encountered during the event interval. The frequency score of at least some of the contacts may indicate that the contacts are being encountered more frequently than usual, and the significance score of at least some of the contacts may indicate that the electronic device user and the contacts frequently interact online. Thus, some contacts are acquaintances that the user does not see frequently, while some contacts communicate regularly with the user. E. Interaction Events
[0089] FIG. 7 shows a simplified diagram 700 of interaction events according to at least one embodiment. Diagram 700 illustrates periods in which a primary electronic device exchanged proximity messages with electronic devices corresponding to three different individuals. Interaction event A 705 corresponds to an interaction event with the first person's associated electronic device. This interaction event is determined to be an interaction event because of an event score that can be calculated based on the length of the interaction (e.g., from T0 to T6) and the number of periods within the interaction in which additional electronic devices were present (e.g., T1-T4, T5-T6). Because of the length and number of individuals involved, the event score for interaction event A 705 may be relatively high and exceed an event threshold, and may be calculated by the primary electronic device as an interaction event.
[0090] In contrast, the interaction events with the other two individuals are not determined to be interaction events due to the relatively short duration of Event B 710, Event C 715, and Event D 720. The encounter with Person 3, shown as Event C 715, occurs over a short period of time, T2-T4, and the length of the encounter may result in an event score that does not exceed the event threshold; therefore, Event C is not classified as an interaction event. Additionally, although the total time of interaction between Person 2's primary electronic device and associated electronic devices may be relatively long (e.g., T1-T3, T5-T7), these periods are separated by gaps from T3-T4 and can be considered separate events, each with a separate event score that may not exceed the event threshold, even though the events, when combined, may have an event score that exceeds the event threshold.
[0091] 8 shows a simplified diagram of event score calculation according to at least one embodiment. In some embodiments, the event score shown in row 805 may be influenced by the relationship between the person controlling the primary electronic device and the associated electronic device, in addition to other characteristics. For example, the other characteristics may include a frequency score that tracks how often the electronic devices exchange proximity messages, an interaction score that indicates how often the two electronic devices interact (e.g., exchange text messages, phone calls, emails, video calls, etc.), and an event score from a past period. These characteristics may be stored for different amounts of time, with, for example, an interaction score persisting for 28 days while an event score decays to zero over a week.
[0092] The relationship and frequency scores of related electronic devices can be used to weight the event score for a period of time. For example, in period 810, there are two related devices in the period, but the event score is 1.5. The relatively low event score may be because the two related devices in this period include a related electronic device with a "partner" relationship type and a high frequency score, and a neighbor related electronic device with a high frequency score. The relationship types and frequency scores for these devices may mean that the event scores for these devices are not weighted highly because they are encountered frequently, and therefore, walking with neighbors and partners may not be meaningful interactions.
[0093] In contrast, during time period 815, the primary electronic device encounters an associated electronic device with a "friend" relationship type and a low frequency score. Although there are more associated devices in this time period (e.g., 6 vs. 2 in time period 810), if the associated devices in 815 were weighted equally to the associated devices in 810, the event score would be 4.5. Instead, the event score for time period 815 is 10.5 because of the number of devices in the time period, the relationship types for the devices (e.g., "friend"), and the different frequency scores between the two time periods. Thus, time period 810 may be classified as an encounter, and time period 815 may be classified as an interaction event. F. Interaction Event Detection
[0094] 9 is a simplified flowchart of a technique for determining whether an interaction event has occurred, according to at least one embodiment. In some implementations, one or more method blocks of FIG. 9 may be performed by an electronic device (primary electronic device 105, 205, 505, electronic device 115, 120, 220, 225, 230, 235, 240, 245, 250, architecture 500, electronic device 1000). In some implementations, one or more method blocks of FIG. 9 may be performed by another device or group of devices separate from or including the electronic device.
[0095] Additionally or alternatively, one or more of the method blocks of FIG. 9 may be performed by one or more components of the electronic device (e.g., primary electronic device 105, 205, 505, electronic device 115, 120, 220, 225, 230, 235, 240, 245, 250, architecture 500, electronic device 1000), such as BLE chip 305, SOC 310, AOP 520, memory 525, processor 530, radio circuitry 1008, processor 1018, etc.
[0096] Referring more particularly to method 900, at block 910, a plurality of proximity messages may be received at a first mobile device (e.g., primary electronic device 105, 205, 505, electronic device 115, 120, 220, 225, 230, 235, 240, 245, 250, architecture 500, electronic device 1000) during a first period of time. The proximity messages may be received over a wireless personal area network (e.g., at the BLE chip 305). Each proximity message may comprise a proximity identifier calculated using a unique identifier of a proximate mobile device that sent the proximity message. The proximity identifier may be calculated by signing a unique identifier of the proximate electronic device with a private key. The proximate electronic device may be an associated electronic device. The wireless personal area network may be a Bluetooth network, and the proximity messages may be Bluetooth Low Energy (BLE) messages received at the BLE chip 305.
[0097] At block 920, a set of device identifiers may be obtained from the identifier database. The device identifiers may correspond to a set of mobile devices in a contact list for the first mobile device. The contact list may be a list of phone numbers, email addresses, or other contact information that the first mobile device uses to communicate with other devices. In some embodiments, the contact list may be a favorites list or group of electronic devices that have communicated with the first electronic device over a cellular network during a period of time.
[0098] At block 930, it may be determined for each message in the plurality of proximity messages whether the proximity identifier of the proximate mobile device matches a device identifier for the set of mobile devices. Whether the proximity identifier matches may be determined by decrypting the proximity identifier using a public key retrieved from an identifier database, where the public key is retrieved for each mobile device in the set of mobile devices from 920.
[0099] At block 940, an event score may be generated for one or more portions of the first time period. The event score may be calculated based on the matching proximity messages from 930, the plurality of proximity messages received during the first time period, the matching proximity messages received from proximate electronic devices during the first time period, and prior event scores corresponding to the prior time period. The event score may include a probability that an event occurred between the first electronic device and one or more proximate electronic devices.
[0100] At block 950, it may be determined whether an event occurred during the time period by comparing the event score to an event threshold. The event threshold may be a minimum event score above which an interaction event is considered to have occurred. In some embodiments, the event threshold is a maximum event score, and an interaction event is considered to have occurred if the event score is below the event threshold. In some embodiments, the event thresholds are a first event threshold and a second event threshold, and an interaction event is considered to have occurred if the event score is between the first event threshold and the second event threshold. IV. Exemplary Devices
[0101] 10 is a block diagram of an exemplary electronic device 1000 according to at least one embodiment. Device 1000 generally includes a computer-readable medium 1002, a processing system 1004, an input / output (I / O) subsystem 1006, radio circuitry 1008, and audio circuitry 1010 including a speaker 1012 and a microphone 1014. These components may be coupled by one or more communication buses or signal lines 1003. Device 1000 may be any portable electronic device, including a handheld computer, a tablet computer, a mobile phone, a laptop computer, a tablet device, a media player, a personal digital assistant (PDA), a key fob, a car key, an access card, a multifunction device, a mobile phone, a portable gaming device, a headset, etc. (including combinations of two or more of these items).
[0102] It will be apparent that the architecture shown in Figure 10 is only one example architecture for device 1000, and that device 1000 may have more or fewer components or a different arrangement of components than those shown. The various components shown in Figure 10 may be implemented in hardware, software, or a combination of both hardware and software, including one or more signal processing and / or application specific integrated circuits.
[0103] The radio circuitry 1008 is used to transmit and receive information over a wireless link or network with conventional circuitry of one or more other devices, such as an antenna system, a radio frequency (RF) transceiver, one or more amplifiers, a tuner, one or more oscillators, a digital signal processor, a coder-decoder (CODEC) chipset, memory, etc. The radio circuitry 1008 can use various protocols, for example, as described herein. In various embodiments, the radio circuitry 1008 may establish and maintain communications with other devices using one or more communications protocols, including time division multiple access (TDMA), code division multiple access (CDMA), Global System for Mobile Communications (GSM), Enhanced Data GSM Environment (EDGE), Wideband Code Division Multiple Access (W-CDMA), Long Term Evolution (LTE), Long Term Evolution (LTE) Advanced, Wi-Fi (such as Institute of Electrical and Electronics Engineers (IEEE) 602.11a, IEEE 602.11b, IEEE 602.11g, and / or IEEE 602.11n), Bluetooth, Wi-MAX, Voice over Internet Protocol (VoIP), Near Field Communication Protocol (NFC), protocols for email, instant messaging, and / or short message service (SMS), or any other suitable communications protocol, including communications protocols not yet developed as of the filing date of this document.
[0104] The radio circuit 1008 is coupled to the processing system 1004 via a peripheral interface 1016. The peripheral interface 1016 may include conventional components for establishing and maintaining communications between peripherals and the processing system 1004. Voice and data information received by the radio circuit 1008 (e.g., in a speech recognition application or a voice command application) is transmitted via the peripheral interface 1016 to one or more processors 1018. The one or more processors 1018 may be configured to process various data formats for one or more application programs 1034 stored on the medium 1002.
[0105] The peripheral interface 1016 couples input and output peripherals of the device 1000 to one or more processors 1018 and the computer-readable medium 1002. The one or more processors 1018 communicate with the computer-readable medium 1002 via a controller 1020. The computer-readable medium 1002 may be any device or medium capable of storing code and / or data for use by the one or more processors 1018. The computer-readable medium 1002 may include a memory hierarchy including cache, main memory, and secondary memory. This memory hierarchy may be implemented using any combination of random access memory (RAM) (e.g., static random access memory (SRAM), dynamic random access memory (DRAM), double data random access memory (DDRAM)), read-only memory (ROM), FLASH, magnetic and / or optical storage devices (such as disk drives, magnetic tape, CDs (compact discs), and DVDs (digital video discs)). In some embodiments, the peripherals interface 1016, the one or more processors 1018, and the controller 1020 can be realized on a single chip, such as the processing system 1004. In some other embodiments, they may be implemented on separate chips.
[0106] The processor(s) 1018 may include hardware and / or software elements that perform one or more processing functions, such as mathematical operations, logical operations, data manipulation operations, data transfer operations, controlling the receipt of user input, controlling the output of information to a user, etc. The processor(s) 1018 may be embodied as one or more hardware processors, microprocessors, microcontrollers, field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), etc.
[0107] Device 1000 also includes a power system 1042 that provides power to the various hardware components. Power system 1042 may include a power management system, one or more power sources (e.g., battery, alternating current (AC)), a recharging system, power failure detection circuitry, power converters or inverters, power status indicators (e.g., light emitting diodes (LEDs)), and other components typically associated with the generation, management, and distribution of power in a mobile device.
[0108] In some embodiments, device 1000 includes a camera 1044. In some embodiments, device 1000 includes sensors 1046. The sensors may include an accelerometer, a compass, a gyrometer, a pressure sensor, an audio sensor, a light sensor, a barometer, etc. The sensors 1046 may be used to sense aspects of a location, such as an audio signature or a light signature of the location.
[0109] In some embodiments, device 1000 may include a GPS receiver, sometimes referred to as a GPS unit 1048. Mobile devices may use satellite navigation systems, such as the Global Positioning System (GPS), to obtain position information, timing information, altitude, or other navigation information. During operation, the GPS unit may receive signals from GPS satellites orbiting the Earth. The GPS unit analyzes the signals to generate travel time and distance estimates. The GPS unit may determine the mobile device's current position (current location). Based on these estimates, the mobile device may determine a location fix, altitude, and / or current velocity. The location fix may be geographic coordinates, such as latitude and longitude information.
[0110] The one or more processors 1018 execute various software components stored on the medium 1002 to perform various functions for the device 1000. In some embodiments, the software components include an operating system 1022, a communications module 1024 (or set of instructions), a location module 1026 (or set of instructions), an event module 1028 used as part of the event detection described herein, and other application programs 1034 (or sets of instructions).
[0111] Operating system 1022 may be any suitable operating system, including embedded operating systems such as iOS, Mac OS, Darwin, Real Time Operating System (RTXC), LINUX, UNIX, OS X, WINDOWS, or VxWorks. An operating system may include procedures, sets of instructions, software components, and / or drivers for controlling and managing general system tasks (e.g., memory management, storage device control, power management, etc.) and facilitating communication between various hardware and software components.
[0112] Communications module 1024 facilitates communication with other devices via one or more external ports 1036 or via radio circuitry 1008 and includes various software components for handling data received from radio circuitry 1008 and / or external port 1036. External port 1036 (e.g., Universal Serial Bus (USB), FireWire, Lightning connector, 60-pin connector, etc.) is adapted to couple to other devices directly or indirectly via a network (e.g., the Internet, a wireless local area network (LAN), etc.).
[0113] The location / motion module 1026 can help determine the current position (e.g., coordinates or other geographic location identifier) and movement of the device 1000. Modern positioning systems include satellite-based positioning systems such as the Global Positioning System (GPS), cellular network positioning based on “cell ID,” and Wi-Fi positioning technology based on Wi-Fi networks. GPS can also determine a position estimate based on the visibility of multiple satellites, but satellites may not be visible (or have weak signals) indoors or in “city canyons.” In some embodiments, the location / motion module 1026 receives data from the GPS unit 1048 and analyzes the signals to determine the current position of the mobile device. In some embodiments, the location / motion module 1026 can determine the current location using Wi-Fi or cellular location technology. For example, the location of the mobile device can be estimated using knowledge of nearby cell sites and / or Wi-Fi access points and their locations. Information identifying the Wi-Fi or cellular transmitter is received by the radio circuitry 1008 and passed to the location / motion module 1026. In some embodiments, the location module receives one or more transmitter IDs. In some embodiments, a set of transmitter IDs can be compared to a reference database (e.g., a cell ID database, a Wi-Fi reference database) that maps or correlates the transmitter IDs to position coordinates of corresponding transmitters and calculates estimated position coordinates for the device 1000 based on the position coordinates of the corresponding transmitters. Regardless of the particular location technology used, the location / motion module 1026 receives information from which a location fix can be derived, interprets the information, and returns location information such as geographic coordinates, latitude / longitude, or other location fix data.
[0114] The ranging module 1028 can transmit / receive ranging messages, for example, to / from an antenna connected to the radio circuit 1008. The messages can be used for various purposes, such as identifying the device's transmitting antenna, determining the message's timestamp, and determining the distance of the electronic device 1000 from another device. The ranging module 1028 can reside on various processors of the device, such as an always-on processor (AOP), a UWB chip, and / or an application processor. For example, one portion of the ranging module 1028 can determine the distance on the AOP, and another portion of the ranging module can interact with a sharing module, for example, to display the positions of other devices on a screen so that a user can select other devices with which to share a data item. The ranging module 1028 can also interact with a reminder module, which can provide alerts based on the distance from another mobile device.
[0115] The one or more applications 1034 on the device 1000 may include any application installed on the device 1000, including, but not limited to, a browser, an address book, a contact list, email, instant messaging, social networking, word processing, keyboard emulation, widgets, JAVA-enabled applications, encryption, digital rights management, voice recognition, voice duplication, a music player (which plays recorded music stored in one or more files, such as MP3 or AAC files), and the like.
[0116] There may be other modules or instruction sets (not shown), such as a graphics module, a time module, etc. For example, the graphics module may include various conventional software components for rendering, animating, and displaying graphical objects (including, without limitation, text, web pages, icons, digital images, animations, etc.) on a display surface. In another example, the timer module may be a software timer. The timer module may also be implemented in hardware. The time module may maintain various timers for any number of events.
[0117] The I / O subsystem 1006 may be coupled to a display system (not shown), which may be a touch-sensitive display. The display displays visual output to the user in a GUI. This visual output may include text, graphics, video, and any combination thereof. Some or all of the visual output may correspond to user interface objects. The display may use LED (light emitting diode), LCD (liquid crystal display) technology, or LPD (light emitting polymer display) technology, although other display technologies may be used in other embodiments.
[0118] In some embodiments, I / O subsystem 1006 can include a display and user input devices such as a keyboard, a mouse, and / or a trackpad. In some embodiments, I / O subsystem 1006 can include a touch-sensitive display. The touch-sensitive display can also accept input from a user based at least in part on tactile and / or haptic contact. In some embodiments, the touch-sensitive display forms a touch-sensitive surface that accepts user input. The touch-sensitive display / surface (together with any associated modules and / or instruction sets in computer-readable medium 1002) detects contact (and any movement or release of contact) on the touch-sensitive display and translates the detected contact into an interaction with one or more user interface objects, such as one or more soft keys, that are displayed on the touchscreen when the contact occurs. In some embodiments, the point of contact between the touch-sensitive display and the user corresponds to one or more of the user's fingers. The user can contact the touch-sensitive display with any suitable object or appendage, such as a stylus, pen, finger, etc. The touch-sensitive display surface can detect contact and any movement or release thereof using any suitable touch sensitivity technology, including capacitive, resistive, infrared, and surface acoustic wave technologies, as well as other proximity sensor arrays or other elements that determine one or more points of contact with the touch-sensitive display.
[0119] Additionally, I / O subsystem 1006 may be coupled to one or more other physical control devices (not shown), such as pushbuttons, keys, switches, rocker buttons, dials, slider switches, sticks, LEDs, etc., for controlling or performing various functions, such as power control, speaker volume control, ring volume, keyboard input, scrolling, hold, menu, screen lock, clearing and ending communications, etc. In some embodiments, in addition to a touchscreen, device 1000 may include a touchpad (not shown) for activating or deactivating certain functions. In some embodiments, a touchpad is a touch-sensitive area of a device that, unlike a touchscreen, does not display visual output. A touchpad can be a touch-sensitive surface separate from a touch-sensitive display or an extension of the touch-sensitive surface formed by a touch-sensitive display.
[0120] In some embodiments, some or all of the operations described herein may be performed using an application running on a user's device. Circuits, logic modules, processors, and / or other components may be configured to perform the various operations described herein. Those skilled in the art will appreciate that such configuration may be achieved through the design, setup, interconnection, and / or programming of specific components, depending on the implementation, and that configured components may or may not be reconfigurable for different operations, depending on the implementation. For example, a programmable processor may be configured by providing suitable executable code, and dedicated logic circuits may be configured by suitable connections of logic gates and other circuit elements.
[0121] Any of the software components or functions described in this application may be implemented as software code to be executed by a processor, using, for example, conventional or object-oriented techniques, using any suitable computer language, such as, for example, Java, C, C++, C#, Objective-C, Swift, or a scripting language such as Perl or Python. The software code may be stored as a series of instructions or commands on a computer-readable medium for storage and / or transmission. Suitable non-transitory computer-readable media may include random access memory (RAM), read-only memory (ROM), magnetic media such as a hard drive or floppy disk, optical media such as a compact disk (CD) or digital versatile disk (DVD), flash memory, etc. The computer-readable medium may also be any combination of such storage or transmission devices.
[0122] A computer program incorporating various features of the present disclosure may be encoded on a variety of computer-readable storage media, with suitable media including magnetic disks or tapes, optical storage media such as compact discs (CDs) or digital versatile discs (DVDs), and flash memory. A computer-readable storage medium encoded with program code may be packaged with a compatible device or provided separately from other devices. Additionally, the program code may be encoded and transmitted over wired, optical, and / or wireless networks conforming to various protocols, including the Internet, thereby enabling distribution, for example, via Internet download. Any such computer-readable medium may reside on or within a single computer product (e.g., a solid-state drive, hard drive, CD, or an entire computer system) or on or within different computer products within a system or network. A computer system may include a monitor, printer, or other suitable display that provides a user with any of the results described herein.
[0123] As noted above, one aspect of the present technology is the collection, sharing, and use of data, including proximity messages and the data from which proximity messages are derived. The present disclosure contemplates that, in some cases, this collected data may include personal information data that uniquely identifies a particular person or that can be used to contact or locate a particular person. Such personal information data may include demographic data, location-based data, phone numbers, email addresses, Twitter IDs, home addresses, data or records regarding a user's health or fitness level (e.g., vital sign measurements, medication information, exercise information), birth date, or any other identifying or personal information.
[0124] This disclosure recognizes that the use of such personal information data in the present technology can be used to the benefit of the user. For example, the personal information data can be used to determine dwell spots using distance measurements that track the user through their daily routine. Additionally, other uses of personal information data that benefit the user are contemplated by this disclosure.
[0125] This disclosure is intended to ensure that entities involved in the collection, analysis, disclosure, transmission, storage, or other use of such personal information data adhere to robust privacy policies and / or privacy practices. Specifically, such entities should implement and consistently use privacy policies and practices that are generally recognized as meeting or exceeding industry or government requirements for maintaining the strict confidentiality of personal information data. Such policies should be easily accessible to users and should be updated as data collection and / or use changes. Personal information from users should be collected for the entity's lawful and legitimate use and should not be shared or sold except for those lawful uses. Furthermore, such collection / sharing should be carried out only after the user's informed consent is obtained. Furthermore, such entities should consider taking all necessary measures to protect and secure access to such personal information data and to ensure that others with access to the personal information data adhere to their privacy policies and procedures. Furthermore, such entities may be able to undergo third-party assessments to demonstrate their adherence to widely accepted privacy policies and practices. Furthermore, policies and practices should be tailored to the specific types of personal data collected and / or accessed and should comply with applicable laws and standards, including jurisdiction-specific considerations. For example, in the United States, collection of or access to certain health data may be governed by federal and / or state laws, such as the Health Insurance Portability and Accountability Act (HIPAA). Meanwhile, health data in other countries may be subject to other regulations and policies and should be addressed accordingly. Therefore, different privacy practices should be maintained in each country with respect to different types of personal data.
[0126] Notwithstanding the foregoing, the present disclosure also contemplates embodiments in which a user selectively blocks use of or access to personal information data. That is, the present disclosure contemplates that hardware and / or software elements may be provided to prevent or block access to such personal information data. For example, in the case of content sharing and ranging, the present disclosure may be configured to allow a user to choose to "opt in" or "opt out" of participating in the collection of personal information data during registration for the service or at any time thereafter. In addition to providing "opt-in" and "opt-out" options, the present disclosure contemplates providing notice regarding the access or use of personal information. For example, the user may be notified upon downloading an app that will access the user's personal information data, and then again immediately before the app accesses the user's personal information data.
[0127] Furthermore, it is the intent of this disclosure that personal information data should be managed and processed in a manner that minimizes the risk of unintentional or unauthorized access or use. Risk can be minimized by limiting data collection and deleting data when it is no longer needed. Additionally, where applicable in certain health-related applications, data anonymization can be used to protect user privacy. Anonymization can be facilitated, where appropriate, by removing certain identifiers (e.g., date of birth, etc.), controlling the amount or specificity of data stored (e.g., collecting location data at a city level rather than an address level), controlling how data is stored (e.g., aggregating data across users), and / or other methods.
[0128] Thus, while this disclosure broadly covers the use of personal information data to implement one or more of the various disclosed embodiments, it is contemplated that the disclosure may also be implemented without requiring access to such personal information data, i.e., various embodiments of the technology are not rendered inoperable by the absence of all or part of such personal information data.
[0129] Although the present disclosure has been described with reference to specific embodiments, it will be understood that the present disclosure is intended to cover all modifications and equivalents that fall within the scope of the following claims.
[0130] All patents, patent applications, publications, and descriptions referred to herein are incorporated by reference in their entirety for all purposes. None is admitted to be prior art.
[0131] Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense, although it will be apparent that various modifications and changes may be made thereto without departing from the broader spirit and scope of the present disclosure as set forth in the appended claims.
[0132] Other variations are within the spirit and scope of the present disclosure. Accordingly, while the disclosed technology is susceptible to various modifications and alternative constructions, specific example embodiments of the disclosed technology have been shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the disclosure to the particular form or forms disclosed; on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents included within the spirit and scope of the present disclosure as defined in the appended claims.
[0133] In the context of describing the disclosed embodiments (particularly in the context of the claims that follow), use of the terms "a," "an," "the," and similar designations should be construed to encompass both the singular and the plural, unless otherwise indicated herein or clearly contradicted by context. The terms "comprising," "having," "including," and "containing" should be construed as open-ended (i.e., meaning "including, but not limited to"), unless otherwise noted. The term "connected" should be construed as partially or fully contained within, attached to, or joined together, even if there is something intervening. The phrase "based on" should be understood to be open-ended and in no way limiting, and is intended, where appropriate, to be construed as "based at least in part on," or otherwise read. The recitation of ranges of values herein, unless otherwise indicated herein, is merely intended to serve as a shorthand method of referring individually to each individual value falling within the range, and each individual value is hereby incorporated by reference as if it were individually stated herein. All methods described herein may be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context. The use of any and all examples provided herein, or the use of exemplary language (e.g., "etc."), is merely intended to better clarify embodiments of the present disclosure and does not impose limitations on the scope of the disclosure unless specifically claimed. No language herein should be construed as indicating any non-claimed element as essential to the practice of the disclosure. The use of "or" is intended to mean an inclusive or, rather than an exclusive or, unless specifically stated to the contrary. A reference to a "first" element does not necessarily mean that a second element is also provided.Additionally, references to a "first" or "second" element do not limit the referenced elements to a particular location unless expressly stated. The term "based on" is intended to mean "based at least in part on."
[0134] Disjunctive language, such as the phrase "at least one of X, Y, or Z," is understood within the context in which it is generally used to indicate that an item, term, etc., can be either X, Y, or Z, or any combination thereof (e.g., X, Y, and / or Z), unless specifically stated otherwise. Thus, such disjunctive language is generally not intended to, and should not, imply that a particular embodiment requires that at least one of X, at least one of Y, or at least one of Z, respectively, be present. Furthermore, conjunctions such as the phrase "at least one of X, Y, and Z" should also be understood to mean X, Y, Z, or any combination thereof, including "X, Y, and / or Z," unless specifically stated otherwise.
[0135] Preferred embodiments of the present disclosure are described herein, including the best mode known to the inventors for carrying out the disclosure. Variations of these preferred embodiments may become apparent to those of ordinary skill in the art upon reading the foregoing description. The inventors anticipate that such variations will be employed by those of ordinary skill in the art as appropriate, and the inventors intend for the present disclosure to be practiced otherwise than as specifically described herein. Accordingly, this disclosure includes all modifications and equivalents of the subject matter recited in the claims appended hereto as permitted by applicable law. Furthermore, any combination of the above-described elements in all possible variations of the present disclosure is encompassed by the present disclosure unless otherwise indicated herein or otherwise clearly contradicted by context.
[0136] All references, including publications, patent applications, and patents, cited in this specification are herein incorporated by reference to the same extent as if each reference was individually and specifically indicated to be incorporated by reference and to the same extent as if each reference was set forth herein as a whole.
Claims
1. 1. A method implemented by an electronic device having wireless short-range communication circuitry and a system on a chip (SOC), the SOC including a coprocessor, a memory, and a processor, the method comprising: receiving proximity messages in said wireless short-range communication circuit from one or more other devices; transferring the proximity message to the coprocessor of the SOC via a power management bus while the processor is in a low power mode; processing the proximity message by the coprocessor to obtain a processed proximity message; storing the processed proximity message in a proximity buffer in the memory of the SOC; determining whether a trigger event has occurred; waking the processor from the low power mode in response to a trigger event; and analyzing the processed proximity messages using the processor.
2. The method of claim 1 , wherein the processing comprises de-duplicating the proximity messages.
3. De-duplicating the messages includes: identifying a first byte pattern in the proximity message; storing the first byte pattern in the memory of the SOC; finding one or more additional byte patterns that match the first byte pattern; and replacing the one or more additional byte patterns with a reference to the stored first byte pattern.
4. The method of any one of claims 1 to 3, wherein the proximity message includes a unique identifier and a signature generated using a private key corresponding to the second electronic device.
5. Generating the signature includes: calculating a signature value using the unique identifier and the private key; and appending the signature to the unique identifier to generate the proximity message.
6. The method of any one of claims 1 to 5, wherein processing the proximity message comprises verifying the signature using a public key that corresponds to the private key.
7. The method of any one of claims 1 to 6, wherein the trigger event occurs upon expiration of a timer.
8. The method of any one of claims 1 to 7, wherein the trigger event occurs when the amount of used space in the memory of the SOC exceeds a memory threshold.
9. The receiving includes: identifying one or more messages having a signal strength below a signal threshold; The method of any one of claims 1 to 8, further comprising: discarding the identified one or more messages.
10. The processing comprises: identifying one or more messages having a signal strength below a signal threshold; The method of any one of claims 1 to 9, further comprising: discarding the identified one or more messages.
11. 1. A method implemented by a first electronic device, the method comprising: receiving, during a first time period, a plurality of proximity messages, the proximity messages being received via a wireless personal area network, each proximity message including a proximity identifier calculated using a unique identifier of a nearby electronic device that sent the proximity message; retrieving a set of device identifiers from an identifier database, the set of device identifiers corresponding to a set of electronic devices in a contact list of the first electronic device; For each message in the plurality of proximity messages: determining whether the proximity identifier of the nearby electronic device matches a device identifier of the set of electronic devices, thereby determining a matching proximity message; generating an event score for one or more portions of the first time period based on the matching proximity messages, the event score comprising a probability that an event occurred between the first electronic device and one or more neighboring electronic devices; and determining whether an event occurred during said period of time by comparing said event score to an event threshold.
12. generating the event score comprises: retrieving a preceding event score corresponding to a second time period that preceded the first time period; 12. The method of claim 11, further comprising: generating the event score using at least one of the plurality of proximity messages received during the first period of time, the matching proximity messages received from the proximate electronic devices during the first period of time, and the preceding event score.
13. generating the event score comprises: Dividing the first period into a plurality of second periods; For each contact in the contact list of the electronic device: identifying any time periods in the plurality of time periods for which a matching proximity message was received, thereby identifying the number of matching time periods; dividing the number of matching periods by the number of periods in the plurality of second periods, thereby generating an event score for the contact; 13. The method of claim 11 or 12, further comprising summing the event scores for each contact in the contact list to generate an event score for a first time period.
14. The event score is the event score determined from a number of proximity messages received from electronic devices in the contact list during the time period; a density score calculated using the total number of proximity messages received during said time period; and a recency score representing the frequency of interactions between the electronic device and each contact in the contact list; a frequency score representing a frequency of interaction between the electronic device and each contact in the contact list; and a significance score representing the frequency of communication between the electronic device and each contact list.
15. retrieving one or more prior event scores that do not match the plurality of proximity messages; The method of any one of claims 11 to 14, further comprising: subtracting a constant from the retrieved one or more preceding event scores.
16. The method of any one of claims 11 to 15, wherein the event score is generated based on the number of matching proximity messages received during the period of time.
17. retrieving a private key from the identifier database, the private key corresponding to the first electronic device; generating a proximity message by signing the device identifier of the first electronic device with the private key; transmitting the proximity message; The method of any one of claims 11 to 16, further comprising:
18. The method according to any one of claims 11 to 17, wherein the private key corresponding to the first electronic device is changed at regular intervals.
19. The method of any one of claims 11 to 18, wherein the event thresholds are a first event threshold and a second event threshold.
20. 20. The method of any one of claims 11 to 19, wherein if the event score is between the first event threshold and the second event threshold, the event occurred during the period.
21. 1. A computing device comprising: one or more memories; and one or more processors in communication with the one or more memories and configured to execute instructions stored in the one or more memories to perform operations of the method of any one of claims 1 to 20.
22. 21. A computer-readable medium storing a plurality of instructions that, when executed by one or more processors of a computing device, cause the one or more processors to perform operations of the method of any one of claims 1 to 20.
Citation Information
Patent Citations
Wireless communication method and device having wireless communication function
EP4080920A1
Interoperability of discovery and connection protocols between client devices and first screen devices
JP2018511896A
Multi-interface transponder device
JP2020141403A
Open registry for internet of things
US20170345019A1