State sharing based on directional profiles
Generating directional profiles from accelerometer data allows for quick and seamless state sharing between electronic devices, addressing the inefficiencies of manual interaction and slow location determination in existing methods.
Patent Information
- Application Number
- JP2025501638
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-07-20
- Filing Date
- 2023-07-13
- Publication Date
- 2025-08-13
- Estimated Expiration
- 2043-07-13
AI Technical Summary
Existing methods for sharing information between electronic devices often require cumbersome manual interaction and are hindered by slow location determination processes.
The solution involves generating directional profiles based on accelerometer movements to quickly determine corresponding devices, allowing for seamless state sharing between devices with low latency.
This approach enables rapid and efficient synchronization of device states without the need for manual intervention, ensuring continuity of user experience across multiple devices.
Smart Images

Figure 2025526293000001_ABST
Abstract
Description
[Technical Field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application is a continuation of U.S. Application No. 17 / 813,824, filed July 20, 2022, the disclosure of which is incorporated herein by reference in its entirety. [Background technology]
[0002] A user may access information through multiple electronic devices, and in some cases, a user may want to switch between electronic devices while continuing to access the same information. Summary of the Invention
[0003] Embodiments relate to sharing information between devices based on correlations of inertial movements of the devices. For example, a user may want to share content and / or application state between different electronic devices. While such sharing can be done manually, it typically requires the use of multiple interfaces, which can be cumbersome. Embodiments provide a technique that uses corresponding inertial movements of multiple devices over time (e.g., within a time window) to trigger the transfer of application state / content. For example, a user may carry an electronic device while walking or while riding in a vehicle. Embodiments generate directional profiles of the electronic devices and trigger state sharing between the devices if the profiles are correlated. A technical problem with sharing state between electronic devices based on location proximity is that determining location with high specific accuracy can be a time-consuming process. A technical solution to the technical problem of slow location determination is sharing state between electronic devices based on directional profiles of the electronic devices. The directional profiles can be based on accelerometer movements, which can be measured and quickly shared between electronic devices. A technical advantage of sharing state based on the directionality profiles of electronic devices is that directionality profile correspondence can be determined quickly and state can be shared between electronic devices with low latency.
[0004] The details of one or more implementations are set forth in the accompanying drawings and the description below. Other features will be apparent from the description and drawings, and from the claims. [Brief explanation of the drawings]
[0005] [Figure 1A] 1 shows a first user walking while holding a first electronic device, a second electronic device, and a third electronic device. [Figure 1B] 1B is a graph illustrating the inertial movement of a first electronic device carried by a first user as a function of time in the example of FIG. 1A. [Figure 1C] 1B is a graph illustrating the inertial movement of a second electronic device carried by a first user as a function of time in the example of FIG. 1A. [Figure 1D] 1B is a graph illustrating the inertial movement of a third electronic device carried by a first user as a function of time in the example of FIG. 1A. [Figure 2A] A first user is shown walking with a first electronic device and a third electronic device, leaving the second electronic device in a vehicle. [Figure 2B] 2B is a graph illustrating the inertial movement of a first electronic device carried by a first user as a function of time in the example of FIG. 2A. [Figure 2C] 2B is a graph illustrating the inertial movement of a third electronic device carried by a first user as a function of time in the example of FIG. 2A. [Figure 2D] 2B is a graph illustrating the inertial movement of a second electronic device left in the vehicle by a first user as a function of time in the example of FIG. 2A. [Figure 3A] A first user is shown walking with a first electronic device and a third electronic device, and a second user is shown walking with a fourth electronic device and a fifth electronic device. [Figure 3B] 3B is a graph illustrating the inertial movement of a third electronic device carried by a first user as a function of time in the example of FIG. 3A. [Figure 3C] 3B is a graph illustrating the inertial movement of a fifth electronic device carried by a second user as a function of time in the example of FIG. 3A. [Figure 4A] 1 illustrates an exemplary process flow for sharing the state of an electronic device based on a corresponding directional profile. [Figure 4B] 1 shows electronic devices grouped into clusters based on their directional profiles. [Figure 5A] FIG. 2 is a timing diagram illustrating processes performed by and messages exchanged by electronic devices according to one embodiment. [Figure 5B]FIG. 10 is a timing diagram illustrating processes performed by and messages exchanged by electronic devices according to another embodiment. [Figure 5C] FIG. 10 is a timing diagram illustrating processes performed by and messages exchanged by electronic devices according to another embodiment. [Figure 6] FIG. 1 is a block diagram illustrating an electronic device according to one embodiment. [Figure 7] 1 is a flowchart illustrating a method according to one embodiment. [Figure 8] 10 is a flowchart illustrating a method according to another embodiment. [Figure 9] 10 is a flowchart illustrating a method according to another embodiment. [Figure 10] 1 illustrates an example of a computing device and a mobile computing device that can be used to implement the techniques described herein. DETAILED DESCRIPTION OF THE INVENTION
[0006] Like reference symbols in the various drawings indicate like elements. Electronic devices can generate directional profiles that, when corresponding (correlated), indicate that a user(s) is carrying or otherwise moving with the electronic device, and can share state or status information to synchronize and / or transfer content between the electronic devices. The state information can include the state of a web browser or game. Sharing the state information can enable a user(s) to seamlessly transition from operating one electronic device to operating another. A device's directional profile can be a series of records over time, each record containing values that convey information about the device's location and / or orientation. A device's directional profile can be used to track the device's movement over time.
[0007] 1A shows a first user 100 walking with a first electronic device 102, a second electronic device 104, and a third electronic device 106. The user 100 may carry the electronic devices 102, 104, 106. One of the electronic devices 102, 104, 106, such as electronic device 104, may transfer content and / or share state 108 among one or more of the other electronic devices 102, 104, 106, such as electronic device 106. The user 100 may carry one or more of the electronic devices 102, 104, 106 in the user's 100's hands. User 100 may carry one or more of electronic devices 102, 104, 106 by, for example, attaching them to user 100's body with a strap, inserting them into his / her ear, or carrying them in a bag, backpack, or the like, as non-limiting examples. In the example shown in FIG. 1A , first electronic device 102 may include a smartphone or earphones. In the example shown in FIG. 1A , second electronic device 104 may include a smartwatch or smartphone. In the example shown in FIG. 1A , third electronic device 106 may include a tablet computing device. First electronic device 102, second electronic device 104, and third electronic device 106 may be associated with user 100 and / or accounts owned or controlled by the user. If the user 100 is carrying three electronic devices 102, 104, 106, the inertial movement and / or acceleration of the three electronic devices 102, 104, 106 will be similar, e.g., corresponding, as measured by accelerometers and / or inertial measurement units (IMUs) (which may each include one or more accelerometers) included in the electronic devices 102, 104, 106. The inertial movement and / or acceleration data is readily available, allowing one or more of the electronic devices 102, 104, 106 to quickly determine the proximity of the other electronic devices 102, 104, 106.
[0008] FIG. 1B is a graph 110 illustrating inertial movement 112 of a first electronic device 102 carried by a first user 100 in the example of FIG. 1A as a function of time 114. In some examples, the inertial movement values 116 can be obtained from an inertial movement unit (IMU) within the first electronic device 102. The inertial movement values 116 can be a triaxial reading, such as (x, y, z) acceleration. The accelerometer and / or IMU measurements represented by the inertial movement values 116 can be measured and / or stored at a sampling rate, such as one hundred hertz (100 Hz). Thus, the inertial movement values 116 represent measurements taken over a sustained period of time. The first electronic device 102 can perform dimensionality reduction, such as principal component analysis (PCA) and / or singular value decomposition (SVD), on the three-dimensional measurements output by the accelerometer included in the first electronic device 102. The inertial movement value 116 may be the first principal component resulting from principal component analysis and / or the most significant dimension resulting from dimension reduction. In some implementations, the inertial movement value 116 may be an embedding of three-dimensional measurements output by an accelerometer in the first electronic device 102.
[0009] 1C is a graph 120 illustrating inertial movement 122 of a second electronic device 104 being carried by a first user 100 in the example of FIG. 1A as a function of time 124 (e.g., duration). The inertial movement values 126 are generated in a manner similar to the inertial movement values 116, so that a correlation process can be performed. For example, the inertial movement values 126 can be principal components of a three-axis accelerometer reading. The second electronic device 104, similar to the first electronic device 102, can perform dimensionality reduction, such as principal component analysis (PCA), on the three-dimensional measurements output by an accelerometer included in the second electronic device 104. The inertial movement values 126 can be principal components resulting from the PCA.
[0010] 1D is a graph 130 illustrating inertial movement 132 as a function of time 134 of a third electronic device 106 carried by the first user 100 in the example of FIG. 1A. The inertial movement values 136 are generated in a manner similar to the inertial movement values 116 and 126, so that a correlation process can be performed. For example, the inertial movement values 136 can be principal components of a three-axis accelerometer reading. The third electronic device 106 can perform a dimensionality reduction, such as principal component analysis (PCA), on the three-dimensional measurements output by an accelerometer included in the third electronic device 106. The inertial movement values 136 can be principal components resulting from the PCA.
[0011] The inertial movements shown as a function of time in Figures 1B, 1C, and 1D can be considered directional profiles. The directional profiles can be based on the direction of movement and / or inertial movement data measured by the electronic devices 102, 104, and 106. Each directional profile can indicate the direction of movement of the respective electronic device 102, 104, and 106. The inertial movement values 116, 126, and 136 shown in Figures 1B, 1C, and 1D (as well as the values 216, 226, 236, 316, and 326 shown in Figures 2B, 2C, 2D, 3B, and 3C) can be considered abstractions of the accelerometer data measured by the respective electronic devices 102, 104, 106, 302, and 306. If dimensionality reduction, such as PCA, is performed on the accelerometer and / or IMU values measured by the electronic devices 102, 104, 106, 302, 306, and the horizontal movement and / or acceleration in a single direction is generally constant because the user is moving at a constant velocity, the values 116, 126, 136, 216, 226, 236, 316, 326 can represent vertical movement and / or acceleration. In some implementations, the inertial movement values 116, 126, 136 shown in Figures 1B, 1C, and 1D (and the values 216, 226, 236, 316, 326 shown in Figures 2B, 2C, 2D, 3B, and 3C) can be embedded, or represent multiple vectors, for each sampling from the IMU, e.g., there are multiple data points for each sample (measurement) represented by a duration.
[0012] Similar (or correlated) directional profiles of the electronic devices 102, 104, 106 may indicate that they are carried by a user. In some examples, an electronic device, such as one of the electronic devices 102, 104, 106, or a remote electronic device, may perform a clustering function to determine which of the electronic devices 102, 104, 106 have corresponding directional profiles. In some examples, electronic devices 102, 104, 106 that are in the same and / or primary cluster may be considered to have corresponding directional profiles. In some examples, electronic devices 102, 104, 106 that are in the same cluster and have non-zero or significant movement and / or acceleration (indicating they are not stationary) may be considered to have corresponding directional profiles. In the examples of FIGS. 1A, 1B, 1C, and 1D, all three electronic devices 102, 104, 106 may be considered to have corresponding, matching, or correlated directional profiles. Other electronic devices not shown may have directional profiles that are not in the same cluster as the directional profiles of electronic devices 102, 104, 106 and may be considered not to have a corresponding directional profile with any of electronic devices 102, 104, 106.
[0013] In some examples, the directional profiles of the electronic devices 102, 104, 106 can be considered to correspond or match (correlate) if their inertial movements as a function of time satisfy a similarity threshold. The similarity threshold may require, by way of non-limiting example, that the sum of the differences between the inertial movement values (or principal components) at each time point be less than or equal to a difference threshold, that the sum of the squares of the differences between the inertial movement values (or principal components) at each time point be less than or equal to a squared difference threshold, or that the sum of the differences or the sum of the squared differences be less than or equal to a predetermined percentage of the average value of the inertial movement values. In some examples, one or more of the electronic devices 102, 104, 106 can shift the time values to account for differences in time measurements between the electronic devices 102, 104, 106 to find a maximum fit or match.
[0014] FIG. 2A shows a first user 100 walking with a first electronic device 102 and a third electronic device 106, leaving a second electronic device 104 in a vehicle 200. In FIG.
[0015] Figure 2B is a graph 210 illustrating inertial movement 212 of a first electronic device 102 carried by a first user 100 in the example of Figure 2A as a function of time 214. The first electronic device 102 can determine the inertial movement 212 in a manner similar to that described above with respect to Figures 1B, 1C, and 1D.
[0016] Figure 2C is a graph 220 illustrating inertial movement 222 of the third electronic device 106 carried by the first user 100 in the example of Figure 2A as a function of time 224. The third electronic device 102 can determine the inertial movement 222 in a manner similar to that described above with respect to Figures 1B, 1C, and 1D.
[0017] 2D is a graph 230 illustrating the inertial movement 232 as a function of time 234 of the second electronic device 104 left in the vehicle 200 by the first user 100 in the example of FIG. 2A. The second electronic device 104 can determine the inertial movement 232 in a manner similar to that described above with respect to FIGS. 1B, 1C, and 1D. The inertial movement 232 of the second electronic device 104 left in the vehicle 200 is smaller and / or less variable than the inertial movement 212 of the first electronic device 102 or the inertial movement 222 of the third electronic device 106 being carried by the walking first user 100. This is either because the vehicle 200 is stationary or because the movement pattern of the vehicle 200 while moving results in less inertial movement.
[0018] The electronic devices 102, 104, 106 can determine their respective directional profiles based on their respective inertial movements 212, 222, 232, as described above. In the examples of Figures 2A, 2B, 2C, and 2D, the first electronic device 102 and the third electronic device 106 carried by the first user 100 have corresponding directional profiles. In the examples of Figures 2A, 2B, 2C, and 2D, the directional profile of the second electronic device 104 does not match and / or correspond to the directional profiles of either the first electronic device 102 or the third electronic device 106.
[0019] 3A shows a first user 100 walking with a first electronic device 102 and a third electronic device 106, and a second user 300 walking with a fourth electronic device 302 and a fifth electronic device 306. The first user 100 and the second user 300 are walking together at a similar speed using the same means of transportation (walking). This example also applies when multiple users share other forms of transportation, such as riding in a vehicle. The first and third electronic devices 102, 106 may be associated with the first user 100 and / or an account owned and / or managed by the first user 100. The fourth and fifth electronic devices 302, 306 may be associated with the second user 300 and / or an account owned and / or managed by the second user 300. The first user 100 and the second user 300 may be included in a group, and / or the first electronic device 102, the third electronic device 106, the fourth electronic device 302, and the fifth electronic device 306 may be included in a group. Groups may include, by way of non-limiting example, groups within a social network, a productivity application, or a gaming application. The users 100, 300 may have joined a group and opted to share the status of their respective electronic devices 101, 106, 302, 306 with other members of the group. A group that may include the users 100, 300 may have been created by either the users 100, 300 or other members of the group, and the members may have opted to share the status of their respective electronic devices 102, 106, 302, 306 with other members of the group.
[0020] Figure 3B is a graph 310 illustrating inertial movement 312 of the third electronic device 106 carried by the first user 100 in the example of Figure 3A as a function of time 314. The third electronic device 102 can determine the inertial movement 312 in a manner similar to that described above with respect to Figures 1B, 1C, and 1D.
[0021] Figure 3C is a graph 320 illustrating inertial movement 322 of a fifth electronic device 306 carried by the second user 300 in the example of Figure 3A as a function of time 324. The fifth electronic device 306 can determine the inertial movement 322 in a manner similar to that described above with respect to Figures 1B, 1C, and 1D.
[0022] The electronic devices 102, 106, 302, 306 can determine their respective directional profiles based on their respective inertial movements 312, 322, as described above. In the examples of Figures 3A, 3B, and 3C, the third electronic device 106 and the fifth electronic device 306 carried by the first user 100 and the second user 300, respectively, have corresponding directional profiles. In some examples, the electronic devices 106, 306 can be considered to have corresponding directional profiles based, at least in part, on the movement tracked by the accelerometers and / or IMUs included in each of the electronic devices 106, 306 indicating that they are being carried by a similar or the same means of transportation, e.g., both electronic devices 106, 306 are being carried by a vehicle (e.g., a bicycle, a car, a truck, an ATV, a snowmobile, etc.) or both electronic devices 106, 306 are being carried by a pedestrian.
[0023] 4A illustrates an exemplary process flow for sharing states of electronic devices based on corresponding directional profiles. Multiple electronic devices, each of which may include inertial measurement units (IMUs) 402, 404, and 406 and / or accelerometers, can measure the acceleration of each electronic device. Each electronic device can perform motion feature embedding 412, 414, and 416 on the acceleration measurements performed by the respective IMUs 402, 404, and 406. The motion feature embedding 412, 414, and 416 can generate a directional profile for each electronic device, such as through dimensionality reduction, such as performing principal component analysis (PCA) on the three-dimensional measurements output by the IMUs 402, 404, and 406 included in each electronic device.
[0024] One or more of the electronic devices can receive directional profiles from other electronic devices and perform clustering (420) on the directional profiles. In some embodiments, the electronic devices can perform K-means clustering on the directional profiles. The clustering (420) can determine which electronic devices have similar and / or corresponding directional profiles. An example set of data points 430 is shown in FIG. 4A and has four distinct clusters.
[0025] In some embodiments, clustering (420) may include performing an elbow method of clustering to determine the number of clusters. The elbow method may include plotting the variation as a function of the number of clusters (K) and selecting the elbow of the curve (or the knee of the curve) as the number of clusters.
[0026] After performing the clustering 420, the electronic devices that performed the clustering may select a primary cluster 440. The primary cluster may be the cluster with the most electronic devices.
[0027] The electronic devices in the primary cluster can be considered to have a corresponding directional profile, and one or more of the electronic devices with the corresponding directional profile can activate a sharing feature (450), such as a browser sharing feature.
[0028] 4B shows electronic devices grouped into clusters based on their directional profiles. The electronic devices are represented by nodes 462, 464, 466, 472, and 474. The electronic devices may have generated their directional profiles based on dimensionality reduction, such as principal component analysis (PCA), on three-dimensional measurements output by an accelerometer and / or an IMU. Nodes 462, 464, 466, 472, and 474 may represent the directional profiles.
[0029] 4B, nodes 462, 464, and 466 representing three electronic devices are grouped into a primary cluster. The primary cluster is the cluster with the largest number of nodes, which in this example is three. One or more of the electronic devices can determine that the three electronic devices represented by nodes 464, 464, and 466 have corresponding directional profiles based on nodes 462, 464, and 466 being grouped into the primary cluster.
[0030] 4B, nodes 472 and 474 representing two electronic devices are not grouped into a primary cluster. One or more of the electronic devices can determine, based on nodes 462, 464, and 466 not being grouped into a primary cluster, that the three electronic devices represented by nodes 464, 464, and 466 do not have corresponding directional profiles with any of the other electronic devices.
[0031] Based on the three electronic devices represented by nodes 464, 464, and 466 having corresponding directional profiles, the electronic devices represented by nodes 464, 464, and 466 can share state. For example, one of the electronic devices represented by nodes 464, 464, and 466 can send state information to one or more of the other two devices, and after receiving the state information, one or more of the other two electronic devices can update their state, such as the state of their browser, based on the received state information. Updating the state can enable the electronic devices to synchronize content, such as browser content. Synchronizing content allows a user to switch devices without losing continuity of experience within multiple instances of an application.
[0032] 5A is a timing diagram illustrating processes performed and messages exchanged by electronic devices 502, 504, 506, and 508 according to one embodiment. In this embodiment, the correlation device 508 may be remote from the other electronic devices 502, 504, and 506 and may determine whether directional profile correlation exists between the other electronic devices 502, 504, and 506. The transmitting device 502, the receiving device 504, and the third device 506 may include any combination of the features and / or functionality of the electronic devices 102, 104, 106, 302, and 306 described above. The transmitting device 502 may be selected because it has been accessed by a user more recently than the receiving device 504, thereby having state information that is transferred to the receiving device 504.
[0033] The electronic devices 502, 504, 506 can generate respective directional profiles (510, 512, 514). The electronic devices 502, 504, 506 can generate their respective directional profiles (510, 512, 514), for example, by measuring their respective accelerations and determining principal components of their respective accelerometer readings, as described above. The electronic devices 502, 504, 506 can transmit their respective directional profiles 516, 518, 520 to the correlation device 508. The electronic devices 502, 504, 506 can transmit their respective directional profiles 516, 518, 520 to the correlation device 508, for example, via the Internet, a wireless LAN (“WiFi”), an IEEE (Institute of Electrical and Electronics Engineers) 802.11 interface, and / or a Bluetooth interface, as non-limiting examples.
[0034] After receiving the directional profiles 516, 518, 520 from the electronic devices 502, 504, 506, the correlation device 508 may determine 522 whether a correlation event has occurred. A correlation event may indicate that the two electronic devices 502, 504, 506 are being carried by the same user, or are moving together (e.g., walking) along a similar route, or are being carried by users in the same vehicle. The correlation device 508 may determine whether a correlation event has occurred between the two or more electronic devices 502, 504, 506 if, based on the IMU data and / or accelerometer data received from the two or more electronic devices 502, 504, 506, the correlation event indicates that a motion similarity condition is met. The similarity conditions may include the inertial movement of the electronic devices 502, 504, 506 where the correlated events occurred meeting a similarity threshold and / or the electronic devices 502, 504, 506 where the correlated events occurred being included in the same cluster based on IMU data and / or accelerometer data received from two or more electronic devices 502, 504, 506.
[0035] In some embodiments, the correlation device 508 can determine 522 whether a correlated event has occurred, for example, based on performing a clustering function and / or cluster analysis on the directional profiles 516, 518, 520 (which may represent movements tracked by the accelerometers of the electronic devices 502, 504, 506). The correlation device 508 can determine that two or more of the electronic devices 502, 504, 506, such as the transmitting device 502 and the receiving device 504, are included in the same cluster and / or primary cluster. In this example, the transmitting device 502 and the receiving device 504 are included in the same cluster and / or primary cluster and have corresponding directional profiles, and a third device 506 is not included in the same cluster and / or primary cluster and has a directional profile that corresponds to either the transmitting device 502 or the receiving device 504. One third device 506 is not included in the same cluster and / or primary cluster and has a directional profile that corresponds to either the transmitting device 502 or the receiving device 504. A third device 506 is shown in FIGS. 5A, 5B, and 5C that is not included in the same cluster and / or primary cluster and has a directional profile that corresponds to either the transmitting device 502 or the receiving device 504. On the other hand, any number of devices that are not included in the same cluster and / or primary cluster and that do not have a directional profile corresponding to either transmitting device 502 or receiving device 504 may be associated with the same user and / or may be included in the same group as transmitting device 502 and receiving device 504.
[0036] Inclusion of two or more electronic devices 502, 504 in the same cluster and / or primary cluster may indicate that the electronic devices 502, 504 included in the same cluster and / or primary cluster have corresponding directional profiles. Based on the inclusion of two or more electronic devices 502, 504 in the same cluster and / or primary cluster, the correlation device 508 may determine that the electronic devices 502, 504 included in the same cluster and / or primary cluster have corresponding directional profiles. Based on determining that the electronic devices 502, 504 have corresponding directional profiles, the correlation device 508 may determine that a correlation event has occurred between the electronic devices 502, 504 having corresponding directional profiles.
[0037] In some examples, the directional profiles of the electronic devices 502, 504, 506 can be considered to correspond and / or match (correlate) if their inertial movement as a function of time meets a similarity threshold. The similarity threshold can be based, by way of non-limiting example, on the sum of cumulative differences between the inertial movement values (or principal components, which may also require the sum of the differences between the inertial movement values) at each time point being less than or equal to a difference threshold, the sum of squares of the differences between the inertial movement values (or principal components) at each time point being less than or equal to a squared difference threshold, or the sum of the differences or sum of squared differences being less than or equal to a predetermined percentage of the average value of the inertial movement values. In some examples, one or more of the electronic devices 502, 504, 506 can shift the time values to account for differences in time measurements between the electronic devices 502, 504, 506 to find the maximum fit or maximum coincidence.
[0038] In response to determining (522) that a correlation event has occurred, the correlation device 508 can transmit correlation notifications 524, 526 to the electronic devices 502, 504 having corresponding directional profiles. One of the electronic devices 502, 504 that receives the correlation notifications 524, 526 can be considered to be the transmitting device 502 based on whether an application running on the transmitting device 502 has recently received input and / or action from a user, such as one of the users 100, 300, and / or the likelihood that the transmitting device 502 will transmit status information to the other electronic device 504. The other of the electronic devices 502, 504 that receives the correlation notifications 524, 526 can be considered to be the receiving device 504 based on whether an application running on the receiving device 504 has earlier received input and / or action from a user and / or the likelihood that the receiving device 504 will receive status information from the transmitting device 502. The correlation notifications can identify the electronic devices 502, 504 having corresponding directional profiles.
[0039] In examples where the transmitting device 502 is a transmitting device 502 (rather than a receiving device), in response to receiving a correlation notification 524 indicating the occurrence of a correlated event, the transmitting device 502 can determine a state (528) of the transmitting device 502. The transmitting device 502 can, for example, determine the state of an application executing on the transmitting device 502. The transmitting device 502 can determine the state of a browser on the transmitting device 502, such as, for example, a web page open on the browser and / or an associated universal resource locator (URL) and / or a location on the page that a user is viewing. The transmitting device 502 can, for example, determine the state of a game executing on the transmitting device 502. The transmitting device 502 can transmit the determined state information to the receiving device 504.
[0040] In response to receiving the state information 530, the receiving device 504 may update the state (532) of the receiving device 504. Based on the state information 530 received from the transmitting device 502, the receiving device 504 may update the state (532) of the receiving device 504 to match the state of the transmitting device 502 when the transmitting device 502 determined the transmitting device state (528). The receiving device 504 may update the state (532), by, as a non-limiting example, updating the state of a browser or game running on the receiving device 504. For example, updating the state (532) may include opening an application corresponding to an application identifier (e.g., operating system intent, deep link) and navigating to an interface within the interface corresponding to a content identifier in the state information.
[0041] 5B is a timing diagram illustrating processes performed and messages exchanged by electronic devices 502, 504, and 506 according to another embodiment. In this embodiment, transmitting device 502 can determine whether a correlation of directional profiles exists between electronic devices 502, 504, and 506.
[0042] The electronic devices 502, 504, and 506 can generate respective directional profiles (540, 542, and 544). The electronic devices 502, 504, and 506 can generate respective directional profiles 540, 542, and 544 in a manner similar to (510), (512), and (514) described above. The electronic devices 504 and 506 other than the transmitting device 502 can transmit respective directional profiles 546 and 548 to the transmitting device 502.
[0043] In response to receiving the directional profiles 546, 548, and based on the directional profiles generated by the transmitting device 502, the transmitting device 502 may determine (550) whether a correlated event has occurred. The transmitting device 502 may determine (550) whether a correlated event has occurred in a manner similar to (522) above. In this example, the transmitting device 502 determines that the transmitting device 502 and the receiving device 504 are correlated and / or correspond and / or have corresponding directional profiles.
[0044] Based on determining that a correlation event has occurred and that the transmitting device 502 has a corresponding directional profile with the receiving device 504, the transmitting device 502 can determine a state (552) of the transmitting device 502. The transmitting device 502 can determine the state (552) of the transmitting device 502 in a manner similar to (528) above. The transmitting device 502 can transmit the determined state information 554 to the receiving device 504. The receiving device 504 can receive the state information 554 and respond to receipt of the state information 554 by updating the state (556) of the receiving device 504. The receiving device 504 can update the state (556) of the receiving device 504 in a manner similar to (532) above.
[0045] 5C is a timing diagram illustrating processes performed and messages exchanged by electronic devices 502, 504, and 506 according to another embodiment. In this embodiment, receiving device 504 can determine whether directional profile correlation exists between electronic devices 502, 504, and 506.
[0046] The electronic devices 502, 504, and 506 can generate respective directional profiles 560, 562, and 564. The electronic devices 502, 504, and 506 can generate respective directional profiles 560, 562, and 564 in a manner similar to 510, 512, and 514 and / or 540, 542, and 544 described above. The devices 502 and 506 can transmit their respective directional profiles 566 and 568 to the receiving device 504, and the receiving device 504 can receive the directional profiles.
[0047] In response to receiving the directional profiles 566, 568, the receiving device 504 can determine a correlation event (570). The receiving device 504 can determine the correlation event (570) in a manner similar to (522), (550) above.
[0048] In this example, the electronic devices 502, 506 can transmit their respective directional profiles 566, 568 to the electronic device 504, which becomes the receiving device 504. The receiving device 504 can receive the directional profiles 566, 568. In response to receiving the directional profiles 566, 568, the receiving device 504 can determine a correlation event (570). The receiving device 504 can determine the correlation event (570) in a manner similar to (522) and / or (550) above. The receiving device 504 can determine that the correlation event (570) indicates that the receiving device 504 and the transmitting device 502 have corresponding directional profiles. The receiving device 504 and / or the transmitting device 502 can determine that the state of the receiving device 504 should be updated to the state of the transmitting device 502 based, for example, on an application executing on the transmitting device 502 being interacted with by the user 100, 300 more recently than the receiving device 504.
[0049] If it is determined that the state of the receiving device 504 should be updated to the state of the transmitting device 502 based on the determination of the correlation event 570 (e.g., based on the occurrence of the correlation event, the transmitting device 502 and the receiving device 504 have corresponding directional profiles), the receiving device 504 may send a state information request 572 to the transmitting device 502, and the transmitting device 502 may receive the state information request 572.
[0050] The transmitting device may respond to the state information request 572 by determining the state (574) of the transmitting device 502. The transmitting device 502 may determine the state in a manner similar to (528), (552). Based on the determined state, the transmitting device 502 may send a state information message 576 to the receiving device 504, and the receiving device 504 may receive the state information message 576 from the transmitting device 502. The state information message 576 may include the determined state of the transmitting device 502. In response to receiving the state information 576, the receiving device 504 may update the state (578) of the receiving device. The receiving device 504 may update the state (578) of the receiving device in a manner similar to (532), (556).
[0051] 6 is a block diagram illustrating an electronic device 600 according to one embodiment. The electronic device 600 may be an example of any of the above-described electronic devices 102, 104, 106, 302, 306, 502, 504, 506, and 508. The electronic device 600 may include any combination of features and / or functionality of any of the above-described electronic devices 102, 104, 106, 302, 306, 502, 504, 506, and 508.
[0052] The electronic device 600 may include a user associator 602. The user associator 602 may associate the electronic device 600 with a user and / or account, determine whether the electronic device is associated with a particular user and / or account, and / or determine whether the electronic device 600 is associated with the same user and / or account as other electronic devices.
[0053] The electronic device 600 may include a group associator 604. The group associator 604 may associate the electronic device 600, and / or a user and / or account associated with the electronic device 600, with a group. The group associator 604 may determine whether the electronic device 600, and / or a user and / or account associated with the electronic device 600, is included in and / or associated with the same group as other electronic devices and / or users or accounts associated with other electronic devices in the group.
[0054] The electronic device 600 may include an accelerometer 606 and / or an inertial measurement unit (IMU), which can measure and report the acceleration, specific force, angular velocity, and / or orientation of the electronic device 600.
[0055] The electronic device 600 may include a location determiner 608. The location determiner 608 may determine the geographic location of the electronic device 600. The location determiner 608 may determine the geographic location of the electronic device 600, for example, by way of non-limiting example, based on Global Positioning System (GPS) signals received from satellites, signals received from a Wireless LAN 802.11 hotspot having a known location, or signals received from a cellular base station having a known location.
[0056] The electronic device 600 may include a directional profile generator 610. The directional profile generator 610 may generate a directional profile of the electronic device 600. The directional profile generator 610 may generate the directional profile based on acceleration data, specific force data, angular velocity data, and / or orientation data measured by the accelerometer 606 and / or the IMU.
[0057] The directional profile generator 610 may generate the directional profile by performing dimensionality reduction, such as principal component analysis (PCA), on any combination of acceleration data, specific force data, angular velocity data, and / or orientation data. In some examples, the directional profile generator 610 may generate the directional profile by performing dimensionality reduction on the three-dimensional measurements output by the accelerometer 606 and / or the IMU.
[0058] In some embodiments, the directional profile generator 610 can buffer and / or store acceleration and / or motion data measured by the accelerometer 606 for a predetermined period of time, such as two seconds of acceleration and / or motion data. In some embodiments, the directional profile generator 610 can convert inertial movement data, such as principal components and time values of the accelerometer data, into vectors. In some embodiments, the directional profile generator 610 can perform a Fourier transform on the direction data to eliminate temporal variations between electronic devices. In some embodiments, the directional profile generator 610 can preserve the amplitude-phase tuples with the highest amplitude frequencies. Concatenation across all channels of the three-axis accelerometer can generate a six-dimensional code vector.
[0059] The electronic device 600 may include a correlator 612. The correlator 612 may determine whether a correlated event has occurred and / or may detect the occurrence of a correlated event. In some embodiments, the correlator 612 may determine whether a correlated event has occurred between two or more devices associated with the same user and / or account. In some embodiments, the correlator 612 may determine whether a correlated event has occurred between two or more devices associated with a user and / or account that are included in the same group. A correlated event may indicate that the two or more devices have corresponding directional profiles. Corresponding directional profiles may indicate that movement tracked by the accelerometers and / or IMUs of the two or more electronic devices is in the same direction and proximate location. For example, non-limiting examples include when a single user carries two or more electronic devices, when multiple users are walking together and each carry an electronic device, or when multiple users are riding in the same vehicle and each carry an electronic device. In some embodiments, determining the correlated event may include identifying a specific movement pattern in each of the device's directional profiles that indicates a suspected correlation. For example, if two or more devices are located near each other and / or have corresponding orientations, a trigger event may be determined only if the motion patterns of each device exhibit a particular pattern, such as shaking, where the direction of the shaking may provide an indication as to the direction of state transfer between the devices.
[0060] In some embodiments, the correlator 612 may perform a clustering analysis and / or function on the directional profiles and / or accelerometer-tracked movements of multiple electronic devices. In some embodiments, multiple electronic devices may be associated with the same user and / or account. In some embodiments, multiple electronic devices may be associated with users and / or accounts that are included in the same group.
[0061] In some embodiments, the clustering function may include k-means clustering. In some embodiments, the correlator 612 may determine the value of k, or the number of clusters, using the elbow method. The correlator 612 may determine that electronic devices in the same cluster and / or in a primary cluster have corresponding directional profiles. The primary cluster may be the cluster with the most and / or highest numerically-valued electronic devices. The electronic devices included in the primary cluster may be considered to have corresponding directional profiles with each other. The electronic devices included in the primary cluster may be considered not to have corresponding directional profiles with each other or with any other electronic devices.
[0062] In some examples, the directional profile generator 610 can generate a directional profile and / or the correlator 612 can determine whether a correlated event has occurred in response to an interaction with the first electronic device and / or the second electronic device. The interaction with the first electronic device can include a user reducing power consumption by and / or by powering off a component of the first electronic device, such as a display included in the first electronic device. The interaction with the second electronic device can include a user initiating an interaction with the second electronic device after interacting with the first electronic device, such as turning on a display included in the second electronic device, activating a power button on the second electronic device, or otherwise powering on the second electronic device, turning on a display included in the second electronic device, or placing a display included in the second electronic device in a higher power state. Generating a directional profile and / or determining whether a correlated event has occurred in response to a user initiating an interaction with the second electronic device and performing these tasks only when a need to synchronize content arises can conserve battery power. In some examples, the second electronic device may send a message to one or more other electronic devices indicating that the second electronic device is interacting with a user, thereby prompting the other one or more electronic devices to generate respective directional profiles and / or determine whether a correlation event has occurred.
[0063] In some examples, the correlator 612 may determine that a correlated event has occurred based on IMU data and / or accelerometer data that indicates two or more electronic devices moved in the same direction, rather than in opposite directions (which may indicate the electronic devices collided or “bumped” into each other, and this is not considered a correlated event). In some examples, IMU data and / or accelerometer data that indicates an elastic collision between the electronic devices may indicate that a correlated event has not occurred. In some examples, the correlator 612 may determine that a correlated event has occurred based on the IMU data and / or accelerometer data that indicates that the two or more electronic devices satisfied the motion similarity condition for at least a threshold duration. The threshold duration may be, for example, 2 seconds or more, 5 seconds or more, 10 seconds or more, 1 minute or more, 5 minutes or more, or 10 minutes or more, as non-limiting examples.
[0064] One or more of electronic devices 102, 104, 106, 302, 306, 502, 504, 506, 508 may be selected as the electronic device that determines whether a correlation event occurs and / or performs the functions of correlator 612. In some embodiments, an electronic device may be selected as the correlation device based on user input and / or user settings. In some embodiments, an electronic device may be selected as the correlation device based on administrator settings, such as settings contained on a server, such as remote correlation device 508.
[0065] The electronic device 600 may include a state determiner 614. The state determiner 614 may determine the state of the electronic device 600, state information, and / or the state of an application executing on the electronic device 600. State information is data that allows a receiving device to navigate to particular content, for example, via a deep link, an operating system intent, a resource locator, etc. Thus, the state information may include application state, including information related to the application stored in the electronic device's memory; resource state, including resources such as files, images, and / or database records stored in association with the application; and session state, which maintains the status of communication between the electronic device 600 and a server. In embodiments where the application is a browser, the state information determined by the state determiner 614 may include a web page or universal resource locator (URL) and a browser intent or deep link. In some embodiments where the application is a browser, the state information may include a web page or URL and a location on the web page that the user is viewing. In examples where the application is a game, the state information may include the state of the game, such as the location of an object, the value of an object's attribute, and / or the player's ID.
[0066] The electronic device 600 may include a status information message processor 616. When the electronic device 600 is a transmitting device 502, the status information processor 616 may generate and transmit status information messages to the receiving device 504. The status information messages may include status information determined by the status determiner 614. When the electronic device 600 is a receiving device 504, the status information processor 616 may receive and process status information messages transmitted by the transmitting device 502.
[0067] The electronic device 600 may include one or more applications 618. The applications 618 may run on the electronic device 600. The applications 618 may include, by way of non-limiting example, a web browser, a game, or a productivity application.
[0068] The electronic device 600 may include a state updater 620. The state updater 620 may update the state of the application 618 in response to receiving a state information message. The state updater 620 may update the state of a browser running on the electronic device 600, for example, by requesting a particular web page and / or instructing the browser to scroll to a particular position on a web page. The state updater 620 may update the state of a game running on the electronic device, for example, by launching the game and / or changing the position and / or value of an object included in the game.
[0069] Electronic device 600 may include at least one processor 622. The at least one processor 622 may execute instructions, such as instructions stored in at least one memory device 624, to cause electronic device 600 to perform any combination of the methods, functions, and / or techniques described herein.
[0070] The electronic device 600 may include at least one memory device 624. The at least one memory device 624 may include a non-transitory computer-readable storage medium. The at least one memory device 624 may store data and instructions that, when executed by at least one processor, such as processor 622, are configured to cause the electronic device 600 to perform any combination of the methods, functions, and / or techniques described herein. Accordingly, in any of the implementations described herein (even if not explicitly mentioned in connection with a particular implementation), the electronic device 102 associated with or included in software (e.g., processing modules, stored instructions) and / or hardware (e.g., processors, memory devices, etc.) may be configured to perform any combination of the methods, functions, and / or techniques described herein, either alone or in combination with any of the electronic devices 102, 104, 106, 302, 306, 502, 504, 506, 508.
[0071] The electronic device 600 may include at least one input / output node 626. The at least one input / output node 626 may receive and / or transmit data, such as from and / or to the electronic device 600, and / or may receive input and provide output from and / or to a user. The input and output functions may be combined in a single node or may be split into separate input and output nodes. The input / output node 626 may include any wired or wireless interface (such as Bluetooth, Institute of Electrical and Electronics Engineers 802.11, or cellular communication interface) for communicating with other electronic devices. The input / output node 626 can communicate with other electronic devices 102, 104, 106, 302, 306, 502, 504, 506, 508, such as by sending messages 516, 518, 520, 524, 526, 530, 546, 548, 554, 566, 568, 572, 576 (which may include directional profiles 516, 518, 520, 546, 548, 566, 568, correlation notifications 524, 526, status information 554, 576, and / or status information requests 572) via Internet Protocol via cellular base stations and relay servers, via 802.11 communication protocols, and / or via peer-to-peer protocols such as Bluetooth.
[0072] In some implementations, the correlated event may be used in other workflows. As one example, detection of the correlated event may be used in a process to suggest content, application launches, or other actions to a user with the user's permission. More specifically, as an example, assume that a user has a habit of jogging between 6:00 and 7:00 AM and listening to a playlist using earphones and a phone. Using the corresponding directional profiles of the phone and earphones, an embodiment may increase the confidence in predicting that the user will open a playlist application if the time falls within (or is close to) the learned 6:00 AM window. Thus, in some implementations, the correlated event may be used to trigger events other than or in addition to a state transfer.
[0073] 7 is a flowchart illustrating a method 700 according to one embodiment. The method may include determining, by a correlated device, that a correlated event has occurred based on at least a first device and a second device having corresponding directional profiles 702. The method 700 may include, in response to the occurrence of the correlated event, causing the first device to transfer a state of the first device by sending a state information message to the second device 704.
[0074] In some examples, determining 702 that a correlated event has occurred may include performing a clustering function on the movements tracked by the accelerometers of the first device and the second device, and determining that the output of the clustering function indicates that the first device and the second device are included in the same cluster, where devices in the same cluster have corresponding directional profiles.
[0075] In some examples, the corresponding directional profile may indicate that the movement tracked by the accelerometer of the first device and the movement tracked by the accelerometer of the second device met a movement similarity condition for at least a threshold duration.
[0076] In some embodiments, a first device may be associated with a first user, a second device may be associated with a second user, and the first user and the second user may be included in the same group.
[0077] In some embodiments, the state information message may include the state of games associated with the same group.
[0078] In some examples, the corresponding directional profiles may indicate that the movements tracked by the accelerometer of the first device and the movements tracked by the accelerometer of the second device exhibited the same means of movement.
[0079] In some embodiments, the first device and the second device may be associated with the same user.
[0080] In some embodiments, the correlation device may be located remotely from the first device and the second device.
[0081] In some embodiments, the correlated device may be the first device. In some embodiments, a first device may send a status information message based on the first device being accessed by a user more recently than a second device.
[0082] 8 is a flowchart illustrating a method 800 according to another embodiment. The method 800 may be performed by a transmitting device, such as transmitting device 502. The method 800 may include detecting a correlated event based on a directional profile of the transmitting device that corresponds to a directional profile of the receiving device (802). The method 800 may include, in response to detecting the correlated event, transmitting a status information message from the transmitting device to the receiving device, the status information message including status information regarding at least one application executing on the transmitting device (804).
[0083] In some embodiments, detecting a correlated event may include performing a clustering function on the movements tracked by the accelerometers of the transmitting and receiving devices, and determining that the output of the clustering function indicates that the transmitting and receiving devices are included in the same cluster, where devices in the same cluster have corresponding directional profiles.
[0084] In some embodiments, the transmitting device and the receiving device may be associated with the same user.
[0085] In some embodiments, the transmitting device may be associated with a first user, the receiving device may be associated with a second user, and the first user and the second user may be included in the same group.
[0086] In some embodiments, the method 800 may further include, after detecting the correlation event and in response to receiving an instruction to power down a component of the transmitting device, the transmitting device transmitting a status information message from the transmitting device to the receiving device.
[0087] 9 is a flowchart illustrating a method 900 according to another embodiment. The method 900 may be performed by a receiving device, such as the receiving device 504. The method 900 may include receiving a state information message from a transmitting device, the state information message being transmitted in response to detecting a correlation event, the correlation event being based on the receiving device and the transmitting device having corresponding directional profiles (902). The method 900 may include updating a state of at least one application executing on the receiving device based on the state information message (904).
[0088] In some embodiments, the transmitting device and the receiving device may be associated with the same user.
[0089] In some embodiments, the transmitting device may be associated with a first user, the receiving device may be associated with a second user, and the first user and the second user may be included in the same group.
[0090] In some examples, the receiving device may detect the correlated event, and the method may further include, in response to detecting the correlated event, sending a status information request to the transmitting device, and receiving a status information message in response to the status information request.
[0091] In some embodiments, the receiving device detects the correlated event, and the method may further include sending a status information request to the transmitting device in response to powering on a component of the receiving device, and receiving a status information message in response to the status information request.
[0092] 10 illustrates an example of a general-purpose computing device 1000 and a general-purpose mobile computing device 1050 that can be used with the techniques described herein. Computing device 1000 is intended to represent various types of digital computers, such as laptops, desktops, tablets, workstations, personal digital assistants, televisions, servers, blade servers, mainframes, and other suitable computing devices. Computing device 1050 is intended to represent various forms of mobile devices, examples of which include personal digital assistants, mobile phones, smartphones, and other similar computing devices. The components, their connections and relationships, and their functions illustrated herein are intended for illustration only and are not intended to limit the implementations described and / or claimed herein.
[0093] The computing device 1000 includes a processor 1002, a memory 1004, a storage device 1006, a high-speed interface 1008 connecting to the memory 1004 and a high-speed expansion port 1010, and a low-speed interface 1012 connecting to a low-speed bus 1014 and the storage device 1006. The processor 1002 may be a semiconductor-based processor. The memory 1004 may be semiconductor-based memory. Each of the components 1002, 1004, 1006, 1008, 1010, and 1012 are interconnected using various buses and may be mounted on a common motherboard or implemented in other manners as desired. The processor 1002 may process instructions for execution within the computing device 1000, including instructions stored in the memory 1004 or the storage device 1006, including instructions for displaying graphical information of a GUI on an external input / output device, such as a display 1016, connected to the high-speed interface 1008. In other implementations, multiple processors and / or multiple buses may be used, along with multiple memories and memory types, as needed, and multiple computing devices 1000 may be connected, each performing some of the required operations (e.g., as a bank of servers, a group of blade servers, or a multiprocessor system).
[0094] The memory 1004 stores information within the computing device 1000. In one implementation, the memory 1004 is a volatile memory unit(s). In other implementations, the memory 1004 is a non-volatile memory unit(s). The memory 1004 may also be other forms of computer-readable media, such as a magnetic disk or optical disk.
[0095] The storage device 1006 can provide mass storage for the computing device 1000. In one embodiment, the storage device 1006 can be or include a computer-readable medium such as a floppy disk device, a hard disk device, an optical disk device, or an array of devices including a tape device, flash memory or other similar solid-state memory device, or a storage area network or other configuration of devices. The computer program product can be tangibly embodied on an information carrier. The computer program product can also include instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer-readable or machine-readable medium, such as the memory 1004, the storage device 1006, or the memory of the processor 1002.
[0096] The high-speed controller 1008 manages the bandwidth-intensive operations of the computing device 1000, while the low-speed controller 1012 manages the less bandwidth-intensive operations. Such an allocation of functionality is by way of example only. In one embodiment, the high-speed controller 1008 is coupled to the memory 1004, the display 1016 (e.g., via a graphics processor or accelerator), and a high-speed expansion port 1010 that can accept various expansion cards (not shown). In an embodiment, the low-speed controller 1012 is coupled to the storage device 1006 and the low-speed expansion port 1014. The low-speed expansion port may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet, etc.) and may connect, via a network adapter or the like, to one or more input / output devices such as a keyboard, pointing device, scanner, or network devices such as a switch or router.
[0097] Computing device 1000 may be implemented in many different forms, as shown. For example, it may be implemented as a standard server 1020, or multiple times in a group of such servers. It may also be implemented as part of a rack server system 1024. Additionally, it may be implemented in a personal computer, such as a laptop computer 1022. Alternatively, components of computing device 1000 may be combined with other components in a mobile device (not shown), such as device 1050. Each such device may include one or more of computing devices 1000, 1050, or an entire system may consist of multiple computing devices 1000, 1050 in communication with each other.
[0098] Computing device 1050 includes, among other components, a processor 1052, memory 1064, input / output devices such as a display 1054, a communications interface 1066, and a transceiver 1068. Device 1050 may also be provided with a storage device such as a microdrive or other device to provide additional storage. Each of components 1050, 1052, 1064, 1054, 1066, and 1068 are interconnected using various buses, and some of the components may be mounted on a common motherboard or implemented in other manners as desired.
[0099] The processor 1052 can execute instructions within the computing device 1050, including instructions stored in the memory 1064. The processor may be implemented as a chipset of chips including separate analog and digital processors. The processor may provide coordination for other components of the device 1050, such as control of a user interface, applications executed by the device 1050, and wireless communication by the device 1050.
[0100] The processor 1052 may communicate with a user via a control interface 1058 and a display interface 1056 coupled to a display 1054. The display 1054 may be, for example, a TFT LCD (thin film transistor liquid crystal display) or an OLED (organic light emitting diode) display, or other suitable display technology. The display interface 1056 may include appropriate circuitry for driving the display 1054 to present graphical and other information to the user. The control interface 1058 may receive commands from the user and translate the commands for submission to the processor 1052. Additionally, an external interface 1062 may be provided in communication with the processor 1052 to enable short-range communication between the device 1050 and other devices. The external interface 1062 may, for example, provide wired communication in some implementations or wireless communication in other implementations, and may use multiple interfaces.
[0101] The memory 1064 stores information within the computing device 1050. The memory 1064 may be implemented as one or more of a computer-readable medium(s), a volatile memory unit(s), or a non-volatile memory unit(s). Additionally, expansion memory 1074 may be provided and connected to the device 1050 via an expansion interface 1072, which may include, for example, a SIMM (single in-line memory module) card interface. Such expansion memory 1074 may provide additional storage space for the device 1050 or may store applications or other information for the device 1050. Specifically, the expansion memory 1074 may include instructions for performing or supplementing the processes described above and may also include secure information. Thus, for example, the expansion memory 1074 may be provided as a security module for the device 1050 and may be programmed with instructions that enable secure use of the device 1050. Additionally, secure applications may be provided via SIMM cards, with additional information, such as identification information, placed on the SIMM card in an unhackable manner.
[0102] The memory may include, for example, flash memory and / or NVRAM memory, as described below. In one embodiment, a computer program product is tangibly embodied on an information carrier. The computer program product includes instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer-readable or machine-readable medium, examples of which include memory 1064, expansion memory 1074, or memory on processor 1052. The information carrier may be received, for example, via transceiver 1068 or external interface 1062.
[0103] Device 1050 may communicate wirelessly via communication interface 1066, which may include digital signal processing circuitry if necessary. Communication interface 1066 may provide for communication in various modes or protocols, such as GSM voice calls, SMS, EMS, or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others. Such communication may occur, for example, via radio frequency transceiver 1068. Additionally, short-range communication may occur using Bluetooth, WiFi, or other such transceivers (not shown). Additionally, GPS (Global Positioning System) receiver module 1070 may provide additional navigation- and location-related wireless data to device 1050, which may be used as needed by applications executing on device 1050.
[0104] Device 1050 may also perform voice communications using audio codec 1060, which may receive voice information from a user and convert it into usable digital information. Audio codec 1060 may also generate sounds that are heard by the user, such as through a speaker (e.g., in the handset of device 1050). Such sounds may include sounds from voice telephone calls, recorded sounds (e.g., voice messages, music files, etc.), and sounds generated by applications running on device 1050.
[0105] The computing device 1050 may be implemented in many different forms, as shown in the figure, For example, it may be implemented as a mobile phone 1080. It may also be implemented as part of a smartphone 1082, personal digital assistant, or other similar mobile device.
[0106] Various implementations of the systems and techniques described herein may be realized in digital electronic circuitry, integrated circuits, specially designed ASICs (application-specific integrated circuits), computer hardware, firmware, software, and / or combinations thereof. These various implementations may include implementation in one or more computer programs executable and / or interpretable by a programmable system including at least one programmable processor, which may be specialized or general-purpose, coupled to receive data and instructions from the storage system, and at least one input device, and at least one output device.
[0107] These computer programs (also known as programs, software, software applications, or code) include machine instructions for a programmable processor and may be implemented in a high-level procedural and / or object-oriented programming language, and / or assembly / machine language. As used herein, the terms "machine-readable medium" and "computer-readable medium" refer to any computer program product, apparatus, and / or device (e.g., magnetic disk, optical disk, memory, programmable logic device (PLD)) used to provide machine instructions and / or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term "machine-readable signal" refers to any signal used to provide machine instructions and / or data to a programmable processor.
[0108] To provide for interaction with a user, the systems and techniques described herein may be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user, and a keyboard and pointing device (e.g., a mouse or trackball) by which the user can provide input to the computer. Other types of devices may also be used to provide for interaction with a user; for example, feedback provided to the user may be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback), and input from the user may be received in any form, including acoustic, verbal, or tactile input.
[0109] The systems and techniques described herein can be implemented in a computing system or device that includes a back-end component (e.g., as a data server), or includes a middleware component (e.g., an application server), or includes a front-end component (e.g., a client computer having a graphical user interface or web browser through which a user can interact with an implementation of the systems and techniques described herein), or any combination of such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication (e.g., a communications network). Examples of communications networks include a local area network ("LAN"), a wide area network ("WAN"), and the Internet.
[0110] A computing system may include clients and servers. Clients and servers are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
[0111] A number of implementations have been described, and it will of course be understood that various modifications can be made without departing from the spirit and scope of the invention.
[0112] Furthermore, the logic flows depicted in the figures do not require the particular order or sequential order shown to achieve desired results. Furthermore, other steps may be provided in or eliminated from the described flows, and other components may be added to or removed from the described systems. Accordingly, other implementations are within the scope of the following claims.
Claims
1. determining, by the correlation device, that a correlation event has occurred based on at least the first device and the second device having corresponding directional profiles; and in response to the occurrence of the correlated event, causing the first device to transfer a state of the first device by sending a state information message to the second device.
2. Determining that the correlated event has occurred includes: performing a clustering function on the movements tracked by the accelerometers of the first device and the second device; and determining that the output of the clustering function indicates that the first device and the second device are included in the same cluster, wherein devices in the same cluster have corresponding directional profiles.
3. 3. The method of claim 1, wherein the corresponding directional profile indicates that the motion tracked by the accelerometer of the first device and the motion tracked by the accelerometer of the second device met a motion similarity condition for at least a threshold duration.
4. the first device is associated with a first user; the second device is associated with a second user; The method according to any one of claims 1 to 3, wherein the first user and the second user are included in the same group.
5. The method of claim 4 , wherein the state information message includes the state of a game associated with the same group.
6. 6. The method of claim 1, wherein the corresponding directional profiles indicate that the movements tracked by the accelerometer of the first device and the movements tracked by the accelerometer of the second device exhibited the same means of movement.
7. The method of any of claims 1 to 6, wherein the first device and the second device are associated with the same user.
8. The method of any of claims 1 to 7, wherein the correlation device is remote from the first device and the second device.
9. The method according to any one of claims 1 to 8, wherein the correlation device is the first device.
10. The method of any one of claims 1 to 9, wherein the first device sends the status information message based on the first device being accessed by a user more recently than the second device.
11. A non-transitory computer-readable storage medium having stored thereon instructions configured, when executed by at least one processor, to cause an electronic device to perform the method of any of claims 1 to 10.
12. 1. An electronic device comprising: at least one processor; and a non-transitory computer-readable storage medium having stored thereon instructions that, when executed by said at least one processor, cause said electronic device to perform the method of any of claims 1 to 10.
13. 1. A method performed by a transmitting device, comprising: Detecting a correlation event based on a directional profile of the transmitting device corresponding to a directional profile of the receiving device; and transmitting a status information message from the sending device to the receiving device in response to detecting the correlated event, the status information message including status information regarding at least one application executing on the sending device.
14. Detecting the correlated event includes: performing a clustering function on the movements tracked by the accelerometers of the sending device and the receiving device; and determining that the output of the clustering function indicates that the transmitting device and the receiving device are included in the same cluster, wherein devices in the same cluster have corresponding directional profiles.
15. The method of claim 13 or 14, wherein the transmitting device and the receiving device are associated with the same user.
16. the transmitting device is associated with a first user; the receiving device is associated with a second user; The method of claim 13 or 14, wherein the first user and the second user are included in the same group.
17. 17. The method of claim 13, wherein the sending of the status information message from the sending device to the receiving device is performed in response to receiving a command to power off a component of the sending device after detecting the correlation event.
18. 18. A non-transitory computer-readable storage medium having stored thereon instructions that, when executed by at least one processor, are configured to cause a transmitting device to perform the method of any of claims 13 to 17.
19. at least one processor; and a non-transitory computer-readable storage medium having instructions stored thereon, the instructions being configured, when executed by the at least one processor, to cause the transmitting device to perform the method of any of claims 13 to 17.
20. 1. A method performed by a receiving device, the method comprising: receiving a status information message from a transmitting device, the status information message being transmitted in response to detecting a correlated event, the correlated event being based on the receiving device and the transmitting device having corresponding directional profiles, the method further comprising: updating a state of at least one application executing on the receiving device based on the state information message.
21. The method of claim 20 , wherein the transmitting device and the receiving device are associated with the same user.
22. the transmitting device is associated with a first user; the receiving device is associated with a second user; The method of claim 20 , wherein the first user and the second user are included in the same group.
23. The receiving device detects the correlated event, and the method comprises: sending a status information request to the sending device in response to detecting the correlated event; The method of any of claims 20 to 22, further comprising receiving the status information message in response to the status information request.
24. The receiving device detects the correlated event, and the method comprises: sending a status information request to the transmitting device in response to powering on a component of the receiving device; The method of any of claims 20 to 23, further comprising receiving the status information message in response to the status information request.
25. 25. A non-transitory computer-readable storage medium having stored thereon instructions that, when executed by at least one processor, cause a transmitting device to perform the method of any of claims 20 to 24.
26. at least one processor; a non-transitory computer-readable storage medium having instructions stored thereon, the instructions being configured, when executed by the at least one processor, to cause the receiving device to perform the method of any of claims 20 to 24.
Citation Information
Patent Citations
Information processing system, information processing program, information processing terminal, information processing method, and conference system
JP2013211675A
Sensor information analyzer, inter-personal digital assistant communication controller, method, and program
JP2014017605A
Automatic authorization for access to an electronic device
JP2017533618A
Glasses-type device, management server, and program
JP2022083918A
Detecting stowing or unstowing of a mobile device
WO2015065494A1