Sharing states based on directional profiles
By sharing inertial movement data between electronic devices, the direction profile is generated and state sharing is triggered, the delay problem of state sharing between different electronic devices is solved, and the continuity of the application and the smoothness of the user experience are achieved.
Patent Information
- Application Number
- CN202380051244.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-07-20
- Filing Date
- 2023-07-13
- Publication Date
- 2025-02-07
AI Technical Summary
The prior art is difficult to quickly share states and contents between different electronic devices, especially to maintain continuity of applications when the user switches the electronic devices.
By generating direction profiles of electronic devices and sharing inertial movement data between devices, the proximity and movement direction of the device are quickly determined using the inertial movement measured by the accelerometer, thereby triggering state sharing.
It realizes sharing state and content with low latency between different electronic devices, ensuring the continuity of applications and the smoothness of user experience when switching devices.
Smart Images

Figure CN119404528A_ABST
Abstract
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation of and claims priority to U.S. application No. 17 / 813,824, filed on July 20, 2022, the disclosure of which is incorporated herein by reference in its entirety. Background Art
[0002] Users can access information via multiple electronic devices. Sometimes, users may want to switch electronic devices while continuing to access the same information. Summary of the invention
[0003] The implementation method involves sharing information between devices based on the correlation on the inertial movement of the device. For example, a user may desire to share the state of content and / or applications between different electronic devices. Although such sharing can be done manually, this usually requires the use of multiple interfaces and can be cumbersome. The implementation method provides a technology for triggering the transmission of application state / content using the corresponding inertial movement of multiple devices over time (e.g., a time window). For example, a user may carry an electronic device while walking or riding in a vehicle. The implementation method generates a direction profile of the electronic device, and when the profile is related, the state sharing between the devices is triggered. The technical problem of sharing state between electronic devices based on the proximity of the location is that it can be a slow process to determine the location at a high level of specificity. The technical solution to the technical problem of slow location determination is to share the state between electronic devices based on the direction profile of the electronic device. The direction profile can be based on accelerometer movement, which can be quickly measured and shared between electronic devices. The technical benefit of sharing the state based on the direction profile of the electronic device is that the correspondence of the direction profile can be quickly determined, thereby allowing the state to 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 DESCRIPTION OF THE DRAWINGS
[0005] Figure 1A A first user is shown walking with a first electronic device, a second electronic device, and a third electronic device.
[0006] Figure 1B It is shown that for Figure 1A FIG. 1 is a graph of inertial movement of a first electronic device carried by a first user as a function of time in an example.
[0007] Figure 1C It is shown that for Figure 1A FIG. 1 is a graph of inertial movement of a second electronic device carried by a first user as a function of time in an example.
[0008] Figure 1D It is shown that for Figure 1A FIG. 1 is a graph of inertial movement of a third electronic device carried by a first user as a function of time in an example.
[0009] Figure 2A The first user is shown walking with the first electronic device and the third electronic device and leaving the second electronic device in the vehicle.
[0010] Figure 2B It is shown that for Figure 2A FIG. 1 is a graph of inertial movement of a first electronic device carried by a first user as a function of time in an example.
[0011] Figure 2C It is shown that for Figure 2A FIG. 1 is a graph of inertial movement of a third electronic device carried by a first user as a function of time in an example.
[0012] Figure 2D It is shown that for Figure 2A FIG. 1 is a graph of inertial movement of a second electronic device of a first user remaining in a vehicle as a function of time in an example.
[0013] Figure 3A It shows a first user walking with a first electronic device and a third electronic device and a second user walking with a fourth electronic device and a fifth electronic device.
[0014] Figure 3B It is shown that for Figure 3A FIG. 1 is a graph of inertial movement of a third electronic device carried by a first user as a function of time in an example.
[0015] Figure 3C It is shown that for Figure 3A FIG. 1 is a graph of inertial movement of a fifth electronic device carried by a second user as a function of time in an example.
[0016] Figure 4A An example process flow for sharing the state of an electronic device based on a corresponding direction profile is shown.
[0017] Figure 4B Electronic devices grouped into clusters based on directional profiles are shown.
[0018] Figure 5A is a timing diagram illustrating processes performed by an electronic device and messages exchanged according to an example.
[0019] Figure 5B is a timing diagram illustrating processes performed by an electronic device and messages exchanged according to another example.
[0020] Figure 5C is a timing diagram illustrating processes performed by an electronic device and messages exchanged according to another example.
[0021] Figure 6 is a block diagram illustrating an electronic device according to an example.
[0022] Figure 7 is a flow chart illustrating a method according to an example.
[0023] Figure 8 is a flow chart illustrating a method according to another example.
[0024] Fig. 9 is a flow chart illustrating a method according to another example.
[0025] Fig.10 Examples of computer devices and mobile computer devices that can be used to implement the techniques described herein are shown.
[0026] Like reference numerals in the various drawings indicate like elements. DETAILED DESCRIPTION
[0027] An electronic device may generate a directional profile and, when the directional profile corresponds (correlated), thereby indicating that a user (user or users) is carrying the electronic device or otherwise traveling with the electronic device, share a state or state information, thereby synchronizing and / or transmitting content between electronic devices. State information may include the state of a web browser or a game. Sharing of state information may enable (one or more) users to seamlessly transition interactions from one electronic device to another. A directional profile for a device may be a sequence of records over time, each record including a value carrying information about the location and / or orientation of the device. A directional profile for a device may be used to track the movement of the device over time.
[0028] Figure 1A A first user 100 is shown 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 status 108 within 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 hands of the user 100. As a non-limiting example, the user 100 may carry one or more of the electronic devices 102, 104, 106 by attaching the electronic devices 102, 104, 106 to the body of the user 100, such as by a strap, inserting into an ear, or carrying in a bag, backpack, etc. In Figure 1A In the example shown in FIG. 1 , the first electronic device 102 may include a smart phone or earbuds. Figure 1A In the example shown in , the second electronic device 104 may include a smart watch or a smart phone. Figure 1A In the example shown in , the third electronic device 106 may include a tablet computing device. The first electronic device 102, the second electronic device 104, and the third electronic device 106 may be associated with the user 100 and / or an account owned or managed by the user. When the user 100 carries three electronic devices 102, 104, 106, the inertial movement and / or acceleration of the three electronic devices 102, 104, 106 measured by the accelerometers and / or inertial measurement units (IMUs) included in the electronic devices 102, 104, 106 (which may each include one or more accelerometers) will be similar, for example, will correspond. Inertial movement and / or acceleration data is easily available, allowing one or more of the electronic devices 102, 104, 106 to quickly determine the proximity of other electronic devices 102, 104, 106.
[0029] Figure 1B It is shown that for Figure 1A 100 is a graph 110 of inertial movement 112 of a first electronic device 102 carried by a first user 100 in an example of FIG. 100 as a function of time 114. In some examples, inertial movement values 116 may be obtained from an inertial movement unit (IMU) in the first electronic device 102. The inertial movement values 116 can be, for example, principal components of a three-axis reading of (x, y, z) acceleration. Accelerometer and / or IMU measurements represented by the inertial movement values 116 can be measured and / or stored at a sampling rate (e.g., a sampling rate of one hundred hertz (100 Hz)). Thus, the inertial movement values 116 represent measurements taken over a certain duration. The first electronic device 102 can, for example, perform dimensionality reduction, such as principal component analysis (PCA) and / or singular value decomposition (SVD), on three-dimensional measurements output by an accelerometer included in the first electronic device 102. The inertial movement values 116 can be the first principal component obtained from the principal component analysis, and / or the most important dimension obtained from the dimensionality reduction. In some implementations, the coasting value 116 can be an embedding of a three-dimensional measurement output by an accelerometer in the first electronic device 102 .
[0030] Figure 1C It is shown that for Figure 1A104 as a function of time 124 (e.g., duration). Inertial movement values 126 are generated in a similar manner to inertial movement values 116 so that a related process can be performed. For example, inertial movement values 126 can be principal components of three-axis accelerometer readings. Similar to first electronic device 102, second electronic device 104 can, for example, perform dimensionality reduction, such as principal component analysis (PCA), on three-dimensional measurements output by an accelerometer included in second electronic device 104. Inertial movement values 126 can be principal components obtained from the principal component analysis.
[0031] Figure 1D It is shown that for Figure 1A 106 as a function of time 134. Inertial movement values 136 are generated in a similar manner to inertial movement values 116 and 126 so that a related process can be performed. For example, inertial movement values 136 can be principal components of three-axis accelerometer readings. The third electronic device 106 can, for example, perform dimensionality reduction, such as principal component analysis (PCA), on three-dimensional measurements output by an accelerometer included in the third electronic device 106. The inertial movement values 136 can be principal components obtained from the principal component analysis.
[0032] Figure 1B , Figure 1C and Figure 1D The inertial movement as a function of time shown in FIG. 1 may be considered a directional profile. The directional profile may be based on the movement direction and / or inertial movement data measured by the electronic devices 102, 104, 106. The respective directional profile may indicate the movement direction of the respective electronic device 102, 104, 106. Figure 1B , Figure 1C and Figure 1D The inertial movement values 116, 126, 136 (and Figure 2B , Figure 2C , Figure 2D , Figure 3B and Figure 3C The values 216, 226, 236, 316, 326 shown in the figure may be considered an abstraction of the accelerometer data measured by the respective electronic device 102, 104, 106, 302, 306. In an example where dimensionality reduction (such as PCA) is performed on the accelerometer and / or IMU values measured by the electronic device 102, 104, 106, 302, 306 and because the user is moving at a constant speed, the horizontal movement and / or acceleration in a single direction is generally constant, the values 116, 126, 136, 216, 226, 236, 316, 326 may represent vertical movement and / or acceleration. In some implementations, Figure 1B , Figure 1C and Figure 1D The coasting values 116, 126, 136 (and Figure 2B , Figure 2C , Figure 2D , Figure 3B and Figure 3C The values 216, 226, 236, 316, 326) shown in may represent multiple vectors embedded in, or for each sample from, the IMU, for example, so there are multiple data points at each sample (measurement) represented over the time duration.
[0033] Similar (or related) directional profiles of electronic devices 102, 104, 106 may indicate that they are being carried by a user. In some examples, an electronic device (such as one of electronic devices 102, 104, 106 or a remote electronic device) may perform a clustering function to determine which (if any) of electronic devices 102, 104, 106 have corresponding directional profiles. In some examples, electronic devices 102, 104, 106 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 that they are not stationary) may be considered to have corresponding directional profiles. Figure 1A , Figure 1B , Figure 1C and Figure 1D In the example of , all three electronic devices 102, 104, 106 may be considered to have corresponding, matching, or related 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 to not have a directional profile corresponding to any one of electronic devices 102, 104, 106.
[0034] In some examples, if the inertial movement of the electronic devices 102, 104, 106 as a function of time satisfies a similarity threshold, then the direction profiles of these electronic devices may be considered to correspond or match (correlated). As a non-limiting example, the similarity threshold may require that the sum of the differences between the inertial movement values (or principal components) at each time point is at or below the difference threshold, or the sum of the squared differences between the inertial movement values (or principal components) at each time point is at or below the squared difference threshold, or the sum of the differences or the sum of the squared differences is at or below a predetermined fraction of the average of the inertial movement values. In some examples, one or more of the electronic devices 102, 104, 106 may shift the time values to find the maximum fit or maximum match to account for the differences in time measurements between the electronic devices 102, 104, 106.
[0035] Figure 2AIt is shown that the first user 100 is walking with the first electronic device 102 and the third electronic device 106 and leaving the second electronic device 104 in the vehicle 200 .
[0036] Figure 2B It is shown that for Figure 2A 210 of the inertial movement 212 of the first electronic device 102 carried by the first user 100 as a function of time 214. The first electronic device 102 may be similar to the above description of Figure 1B , Figure 1C and Figure 1D Coasting movement 212 is determined in a similar manner.
[0037] Figure 2C It is shown that for Figure 2A 220 of the inertial movement 222 of the third electronic device 106 carried by the first user 100 as a function of time 224. The third electronic device 102 may be similar to the above description of Figure 1B , Figure 1C and Figure 1D Coasting movement 222 is determined in a similar manner.
[0038] Figure 2D It is shown that for Figure 2A 230 of the inertial movement 232 of the second electronic device 104 of the first user 100 remaining in the vehicle 200 as a function of time 234. The second electronic device 104 may be similar to the above description of Figure 1B , Figure 1C and Figure 1D The inertial movement 232 is determined in a similar manner. The inertial movement 232 of the second electronic device 104 remaining in the vehicle 200 is lower than the inertial movement 212 of the first electronic device 102 or the inertial movement 222 of the third electronic device 106 carried by the first user 100 while walking, and / or has a smaller change than the inertial movement 212 or the inertial movement 222 because the vehicle 200 is stationary or because the movement pattern of the vehicle 200 while driving results in a smaller inertial movement.
[0039] The electronic devices 102, 104, 106 may determine respective directional profiles based on their respective inertial movements 212, 222, 232 as described above. Figure 2A , Figure 2B , Figure 2C and Figure 2D In the example of , the first electronic device 102 and the third electronic device 106 carried by the first user 100 have corresponding direction profiles. Figure 2A , Figure 2B , Figure 2C and Figure 2DIn the example, the direction profile of the second electronic device 104 does not match and / or correspond to the direction profiles of the first electronic device 102 or the third electronic device 106.
[0040] Figure 3A It is shown that the first user 100 walks with the first electronic device 102 and the third electronic device 106 and the second user 300 walks with the fourth electronic device 302 and the fifth electronic device 306. The first user 100 and the second user 300 walk together at a similar pace using the same mode of transportation (walking). This example can also be applied when multiple users use another same mode of transportation (such as riding in a vehicle together). The first electronic device 102 and the third electronic device 106 can be associated with the first user 100 and / or an account owned and / or managed by the first user 100. The fourth electronic device 302 and the fifth electronic device 306 can 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 can 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 can be included in a group. As a non-limiting example, a group may include a group within a social network, a productivity application, or a game application. The users 100, 300 may have chosen to join a group and share the status of their respective electronic devices 101, 106, 302, 306 with other members of the group. A group that may include users 100, 300 may have been created by one of the users 100, 300, or by another member of the group, and the members may have chosen to share the status of their respective electronic devices 102, 106, 302, 306 with other members of the group.
[0041] Figure 3B It is shown that for Figure 3A 310 of the inertial movement 312 of the third electronic device 106 carried by the first user 100 as a function of time 314. The third electronic device 102 may be similar to the above Figure 1B , Figure 1C and Figure 1D Coasting movement 312 is determined in a similar manner.
[0042] Figure 3C It is shown that for Figure 3A FIG. 3 is a graph 320 of inertial movement 322 of a fifth electronic device 306 carried by a second user 300 as a function of time 324 in the example of FIG. 3. The fifth electronic device 306 may be similar to the above description of FIG. Figure 1B , Figure 1C and Figure 1D Coasting movement 322 is determined in a similar manner.
[0043] The electronic devices 102, 106, 302, 306 may determine respective directional profiles based on their respective inertial movements 312, 322 as described above. Figure 3A , Figure 3B and Figure 3C In the example of , 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 may be considered to have corresponding directional profiles based at least in part on the movement tracked by the accelerometer and / or IMU included in the respective electronic devices 106, 306, indicating that the electronic devices 106 have similar or identical transportation modes (such as both of the electronic devices 106, 306 are being transported by a vehicle (bicycle, car, truck, ATV, snowmobile, etc.) or both of the electronic devices 106, 306 are being transported by pedestrians).
[0044] Figure 4A An example process flow for sharing the state of an electronic device based on a corresponding orientation profile is shown. A plurality of electronic devices, which may each include an inertial measurement unit (IMU) 402, 404, 406 and / or an accelerometer, may measure the acceleration of the respective electronic devices. The respective electronic devices may perform motion feature embedding 412, 414, 416 on the acceleration measurements performed by their respective IMUs 402, 404, 406. The motion feature embedding 412, 414, 416 may generate an orientation profile for the respective electronic device, such as by dimensionality reduction, such as performing principal component analysis (PCA) on three-dimensional measurements output by the IMUs 402, 404, 406 included in the respective electronic devices.
[0045] One or more of the electronic devices may receive directional profiles from other electronic devices and perform clustering on the directional profiles (420). In some examples, the electronic devices may perform K-means clustering on the directional profiles. Clustering (420) may determine which electronic devices have similar and / or corresponding directional profiles. Figure 4A An example set of data points 430 is shown in , having four different clusters.
[0046] In some examples, clustering (420) can include performing an elbow method of clustering to determine the number of clusters. The elbow method can include plotting the change as a function of the number of clusters (K) and picking the elbow of the curve (or the knee of the curve) as the number of clusters.
[0047] After performing clustering (420), the electronic device performing the clustering may select a primary cluster (440). The primary cluster can be a cluster having the largest number of electronic devices.
[0048] The electronic devices within the primary cluster may be considered to have a corresponding directional profile. One or more of the electronic devices having the corresponding directional profile may activate a sharing function (450), such as a browser sharing function.
[0049] Figure 4B Electronic devices grouped into clusters based on directional profiles are shown. The electronic devices are represented by nodes 462, 464, 466, 472, 474. The electronic devices may have generated directional profiles based on dimensionality reduction (such as principal component analysis (PCA)) performed on three-dimensional measurements output by an accelerometer and / or IMU. Nodes 462, 464, 466, 472, 474 may represent directional profiles.
[0050] exist Figure 4B In the example shown in , nodes 462, 464, 466 representing three electronic devices are grouped into a primary cluster. The primary cluster is the cluster with the largest number of nodes (three nodes in this example). One or more of the electronic devices may determine that the three electronic devices represented by nodes 464, 464, 466 have corresponding direction profiles based on the nodes 462, 464, 466 being grouped into the primary cluster.
[0051] exist Figure 4B In the example shown in , nodes 472, 474 representing two electronic devices are not grouped into the primary cluster. One or more of the electronic devices may determine that the three electronic devices represented by nodes 464, 464, 466 do not have a directional profile corresponding to any of the other electronic devices based on the fact that nodes 462, 464, 466 are not grouped into the primary cluster.
[0052] Based on the three electronic devices represented by nodes 464, 464, 466 having corresponding direction profiles, the electronic devices represented by nodes 464, 464, 466 can share states. One of the electronic devices represented by nodes 464, 464, 466 can, for example, send state information to one or more of the other two devices, and one or more of the other two electronic devices can update their states, such as the states of their browsers, based on the received state information after receiving the state information. The update of the state can enable the electronic devices to synchronize content, such as browser content. Synchronizing content enables users to switch devices without losing the continuity of experience within multiple instances of the application.
[0053] Figure 5Ais a timing diagram showing processes performed by electronic devices 502, 504, 506, 508 and messages exchanged according to an example. In this example, the relevant device 508 may be remote from the other electronic devices 502, 504, 506, and may determine whether there is a correlation of directional profiles between the other electronic devices 502, 504, 506. The sending device 502, the receiving device 504, and the third device 506 may include any combination of the features and / or functionalities of the electronic devices 102, 104, 106, 302, 306 described above. The sending device 502 may be selected because it has been accessed by the user more recently than the receiving device 504, thereby causing the sending device 502 to have state information to be transmitted to the receiving device 504.
[0054] The electronic devices 502, 504, 506 may generate their respective directional profiles (510, 512, 514). The electronic devices 502, 504, 506 may generate their respective directional profiles (510, 512, 514) by, for example, measuring their respective accelerations and determining the principal components of their respective accelerometer readings, as described above. The electronic devices 502, 504, 506 may send their respective directional profiles 516, 518, 520 to the associated device 508. As non-limiting examples, the electronic devices 502, 504, 506 may send their respective directional profiles 516, 518, 520 to the associated device 508, for example, via the Internet, a Wireless Fidelity ("WiFi") Institute of Electrical and Electronics Engineers (IEEE) 802.11 interface, and / or a Bluetooth interface.
[0055] After receiving the direction profiles 516, 518, 520 from the electronic devices 502, 504, 506, the correlation device 508 may determine whether a correlation event has occurred (522). The correlation event may indicate that the two electronic devices 502, 504, 506 are moving together, such as being carried by the same user, or carried by users moving together along a similar path (such as walking) or 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 based on IMU data and / or accelerometer data received from the two or more electronic devices 502, 504, 506 indicating that the movement similarity condition has been met. The similarity conditions may include that the inertial movement of the electronic devices 502, 504, 506 where the related events occurred satisfies a similarity threshold, and / or the electronic devices 502, 504, 506 where the related events occurred are included in the same cluster based on IMU data and / or accelerometer data received from two or more electronic devices 502, 504, 506.
[0056] In some examples, the correlation device 508 may determine whether a correlation event has occurred (522) based on, for example, performing a clustering function and / or cluster analysis on the directional profiles 516, 518, 520 (which may represent accelerometer-tracked movements of the electronic devices 502, 504, 506). The correlation device 508 may 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 main cluster. In this example, the transmitting device 502 and the receiving device 504 are included in the same cluster and / or main cluster and have corresponding directional profiles, while the third device 506 is not included in the same cluster and / or main cluster and does have a directional profile corresponding to the transmitting device 502 or the receiving device 504. Although Figure 5A , Figure 5B and Figure 5C A third device 506 is shown that is not included in the same cluster and / or the main cluster and does have a directional profile corresponding to the sending device 502 or the receiving device 504, but any number of devices that are not included in the same cluster and / or the main cluster and do not have a directional profile corresponding to the sending device 502 or the receiving device 504 may be associated with the same user and / or may be included in the same group as the sending device 502 and the receiving device 504.
[0057] Including two or more electronic devices 502, 504 in the same cluster and / or main cluster may indicate that the electronic devices 502, 504 included in the same cluster and / or main cluster have corresponding direction profiles. Based on including two or more electronic devices 502, 504 in the same cluster and / or main cluster, the correlation device 508 may determine that the electronic devices 502, 504 included in the same cluster and / or main cluster have corresponding direction profiles. Based on determining that the electronic devices 502, 504 have corresponding direction profiles, the correlation device 508 may determine that a related event has occurred between the electronic devices 502, 504 having the corresponding direction profiles.
[0058] In some examples, if the inertial movement of the electronic devices 502, 504, 506 as a function of time satisfies a similarity threshold, then the direction profiles of these electronic devices may be considered to correspond and / or match (correlate). As a non-limiting example, the similarity threshold may be based on the cumulative difference of the inertial movement values (or principal components), and may require that the sum of the differences between the inertial movement values (or principal components) at each time point is at or below the difference threshold, or the sum of the squared differences between the inertial movement values (or principal components) at each time point is at or below the squared difference threshold, or the sum of the differences or the sum of the squared differences is at or below a predetermined fraction of the average of the inertial movement values. In some examples, one or more of the electronic devices 502, 504, 506 may shift the time values to find the maximum fit or maximum match to account for the differences in time measurements between the electronic devices 502, 504, 506.
[0059] In response to determining that a relevant event has occurred (522), the relevant device 508 may send a relevant notification 524, 526 to the electronic devices 502, 504 having the corresponding directional profile. One of the electronic devices 502, 504 receiving the relevant notification 524, 526 may be considered as the sending device 502 based on the following: the application executed on the sending device 502 recently received input and / or interaction from a user (such as one of the users 100, 300), and / or the likelihood that the sending device 502 sends state information to the other electronic device 504. One of the other electronic devices 502, 504 receiving the relevant notification 524, 526 may be considered as the receiving device 504 based on the following: the application executed on the receiving device 504 less recently received input and / or interaction from the user, and / or the likelihood that the receiving device 504 receives state information from the sending device 502. The relevant notification may identify the electronic devices 502, 504 having the corresponding directional profile.
[0060] In an example where the sending device 502 is a sending device 502 (rather than a receiving device), in response to receiving a relevant notification 524 indicating the occurrence of a relevant event, the sending device 502 may determine a state of the sending device 502 (528). The sending device 502 may determine, for example, a state of an application executed on the sending device 502. The sending device 502 may determine, for example, a state of a browser on the sending device 502, such as a web page open on the browser and / or an associated uniform resource locator (URL), and / or a location on the page that the user is viewing. The sending device 502 may determine, for example, a state of a game executed on the sending device 502. The sending device 502 may send the determined state information to the receiving device 504.
[0061] In response to receiving the state information 530, the receiving device 504 may update the state of the receiving device 504 (532). The receiving device 504 may update the state of the receiving device 504 (532) based on the state information 530 received from the sending device 502 to match the state of the sending device 502 when the sending device determined the state of the sending device 502 (528). As a non-limiting example, the receiving device 504 may update the state (532) by updating the state of a browser or game executing on the receiving device 504. For example, updating the state (532) may include opening an application corresponding to an application identifier (e.g., an operating system intent, a deep link) and navigating to an interface within the interface corresponding to a content identifier in the state information.
[0062] Figure 5B 506 and 507. FIG. 50 is a timing diagram illustrating processes performed by electronic devices 502, 504, 506 and messages exchanged according to another example. In this example, the transmitting device 502 may determine whether there is a correlation of directional profiles between the electronic devices 502, 504, 506.
[0063] The electronic devices 502, 504, 506 may generate their respective direction profiles 540, 542, 544. The electronic devices 502, 504, 506 may generate their respective direction profiles 540, 542, 544 in a manner similar to (510), (512), (514) described above. The electronic devices 504, 506 other than the transmitting device 502 may transmit their respective direction profiles 546, 548 to the transmitting device 502.
[0064] In response to receiving the direction profiles 546, 548, and based on the direction profile generated by the transmitting device 502, the transmitting device 502 can determine whether a relevant event has occurred (550). The transmitting device 502 can determine whether a relevant event has occurred (550) in a manner similar to (522) described above. In this example, the transmitting device 502 determines that the transmitting device 502 is related to the receiving device 504 and / or has a corresponding and / or corresponding direction profile.
[0065] Based on determining that a relevant event has occurred and that the transmitting device 502 has a directional profile corresponding to the receiving device 504, the transmitting device 502 may determine a state of the transmitting device 502 (552). The transmitting device 502 may determine the state of the transmitting device 502 (552) in a manner similar to (528) described above. The transmitting device 502 may send the determined state information 554 to the receiving device 504. The receiving device 504 may receive the state information 554 and respond to receiving the state information 554 by updating the state of the receiving device 504 (556). The receiving device 504 may update the state of the receiving device 504 (556) in a manner similar to (532) described above.
[0066] Figure 5C 506 , and the like.
[0067] Electronic devices 502, 504, 506 may generate corresponding directional profiles (560), (562), (564). Electronic devices 502, 504, 506 may generate their corresponding directional profiles (560), (562), (564) in a manner similar to (510), (512), (514) and / or (540), (542), (544) described above. Devices 502, 506 may send their corresponding directional profiles 566, 568 to receiving device 504, and receiving device 504 may receive the directional profiles.
[0068] In response to receiving the direction profiles 566, 568, the receiving device 504 may determine a relevant event (570). The receiving device 504 may determine a relevant event (570) in a manner similar to (522), (550) described above.
[0069] In this example, electronic devices 502, 506 may send their respective directional profiles 566, 568 to electronic device 504, which will become receiving device 504. Receiving device 504 may receive directional profiles 566, 568. In response to receiving directional profiles 566, 568, receiving device 504 may determine a relevant event (570). Receiving device 504 may determine a relevant event (570) in a manner similar to (522) and / or (550) described above. Receiving device 504 may determine that the relevant event (570) indicates that receiving device 504 and sending device 502 have corresponding directional profiles. For example, receiving device 504 and / or sending device 502 may determine that the state of receiving device 504 should be updated to the state of sending device 502 based on the fact that user 100, 300 has more recently interacted with an application executed on sending device 502 rather than receiving device 504.
[0070] Based on determining a related event 570 (such as the sending device 502 and the receiving device 504 having corresponding directional profiles based on the occurrence of the related event) and the state of the receiving device 504 should be updated to the state of the sending device 502, the receiving device 504 may send a state information request 572 to the sending device 502, and the sending device 502 may receive the state information request 572.
[0071] The sending device may respond to the status information request 572 by determining the status of the sending device 502 (574). The sending device 502 may determine the status in a manner similar to (528), (552). Based on the determined status, the sending device 502 may send a status information message 576 to the receiving device 504, and the receiving device 504 may receive the status information message 576 from the sending device 502. The status information message 576 may include the determined status of the sending device 502. In response to receiving the status information message 576, the receiving device 504 may update the status of the receiving device (578). The receiving device 504 may update the status of the receiving device (578) in a manner similar to (532), (556).
[0072] Figure 6 is a block diagram illustrating an electronic device 600 according to an example. The electronic device 600 can be an example of any of the electronic devices 102, 104, 106, 302, 306, 502, 504, 506, 508 described above. The electronic device 600 may include any combination of features and / or functionalities of any of the electronic devices 102, 104, 106, 302, 306, 502, 504, 506, 508 described above.
[0073] 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 another electronic device.
[0074] 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 an 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 an account associated with the electronic device 600 is included in and / or associated with the same group as another electronic device and / or a user or an account associated with the other electronic device in the group.
[0075] The electronic device 600 may include an accelerometer 606 and / or an inertial measurement unit (IMU). The accelerometer 606 and / or IMU may measure and report acceleration, specific force, angular rate, and / or orientation of the electronic device 600.
[0076] The electronic device 600 may include a location determiner 608. The location determiner 608 may determine the geographic location of the electronic device 600. As non-limiting examples, the location determiner 608 may determine the geographic location of the electronic device 600 based on, for example, global positioning system (GPS) signals received from satellites, signals received from Wi-Fi 802.11 hotspots with known locations, or based on signals received from cellular base stations with known locations.
[0077] The electronic device 600 may include a direction profile generator 610. The direction profile generator 610 may generate a direction profile of the electronic device 600. The direction profile generator 610 may generate the direction profile based on acceleration data, specific force data, angular rate data, and / or orientation data measured by the accelerometer 606 and / or the IMU.
[0078] Directional profile generator 610 may generate a directional profile by, for example, performing dimensionality reduction, such as principal component analysis (PCA), on any combination of acceleration data, specific force data, angular rate data, and / or orientation data. In some examples, directional profile generator 610 may generate a directional profile by performing dimensionality reduction on three-dimensional measurements output by accelerometer 606 and / or an IMU.
[0079] In some examples, the direction profile generator 610 may buffer and / or store acceleration and / or motion data for a predetermined time period measured by the accelerometer 606, such as two seconds of acceleration and / or motion data. In some examples, the direction profile generator 610 may transform inertial movement data (such as the principal components and time values of the accelerometer data) into a vector. In some examples, the direction profile generator 610 may perform a Fourier transform on the direction data to eliminate time differences between electronic devices. In some examples, the direction profile generator 610 may save the amplitude-phase tuple of the frequency with the highest amplitude. Connecting across all channels in the three-axis accelerometer may generate a six-dimensional code vector.
[0080] The electronic device 600 may include a correlation determiner 612. The correlation determiner 612 may determine whether a correlation event has occurred, and / or detect the occurrence of a correlation event. In some examples, the correlation determiner 612 may determine whether a correlation event has occurred between two or more devices associated with the same user and / or account. In some examples, the correlation determiner 612 may determine whether a correlation event has occurred between two or more devices associated with users and / or accounts included in the same group. A correlation event may indicate that two or more devices have corresponding direction profiles. As a non-limiting example, a corresponding direction profile may indicate that the movement tracked by the accelerometers and / or IMUs of two or more electronic devices is in the same direction and close to the location, such as a single user carrying two or more electronic devices, multiple users walking together and carrying their corresponding electronic devices, or multiple users riding in a vehicle with their corresponding electronic devices. In some implementations, determining a correlation event may include identifying a certain movement pattern suspected to be related in each of the direction profiles of the device. For example, if two or more devices are positioned close to each other and / or have corresponding orientations, a trigger event can be determined only if the movement pattern of each device indicates a specific pattern (e.g., shaking). The direction of the shaking can provide an indication of the direction for state transfer between devices.
[0081] In some examples, the correlation determiner 612 can perform cluster analysis and / or clustering functions on the directional profiles and / or accelerometer-tracked movements of multiple electronic devices. In some examples, the multiple electronic devices can be associated with the same user and / or account. In some examples, the multiple electronic devices can be associated with users and / or accounts included in the same group.
[0082] In some examples, the clustering function may include k-means clustering. In some examples, the correlation determiner 612 may determine the value of k or the number of clusters by an elbow method. The correlation determiner 612 may determine that electronic devices in the same cluster and / or in a primary cluster have corresponding directional profiles. The primary cluster can be the cluster with the most and / or highest number of electronic devices. It can be considered that the electronic devices included in the primary cluster have directional profiles that correspond to each other. It can be considered that electronic devices not included in the primary cluster do not have directional profiles that correspond to each other or to any other electronic device.
[0083] In some examples, in response to the interaction with the first electronic device and / or the second electronic device, the direction profile generator 610 may generate a direction profile, and / or the correlation determiner 612 may determine whether a relevant event has occurred. The interaction with the first electronic device may include the user reducing the power consumed by the component and / or reducing the power consumed by powering off the components of the first electronic device (such as the display included in the first electronic device). The interaction with the second electronic device may include the user initiating the interaction with the second electronic device after interacting with the first electronic device, such as turning on the display included in the second electronic device, activating the power button of the second electronic device or otherwise powering up the second electronic device, and / or waking up the display included in the second electronic device or causing the display to enter a higher power state. Generating a direction profile and / or determining whether a relevant event has occurred in response to the user initiating the interaction with the second electronic device can save battery power by performing these tasks in response to the possible demand for synchronization content. 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 the user, thereby prompting one or more other electronic devices to generate their corresponding direction profiles and / or determine whether a relevant event has occurred.
[0084] In some examples, the correlation determiner 612 may determine that a correlation event has occurred based on IMU data and / or accelerometer data indicating that two or more electronic devices moved in the same direction, rather than in opposite directions (which may indicate that the electronic devices collided or "bumped" into each other, which would not be considered a correlation event). In some examples, IMU data and / or accelerometer data indicating an elastic collision between electronic devices may indicate that a correlation event has not occurred. In some examples, as a non-limiting example, the correlation determiner 612 may determine that a correlation event has occurred based on IMU data and / or accelerometer data indicating that two or more electronic devices have satisfied a movement similarity condition for at least a threshold duration (such as at least two seconds, at least five seconds, at least ten seconds, at least one minute, at least five minutes, or at least ten minutes).
[0085] One or more of the electronic devices 102, 104, 106, 302, 306, 502, 504, 506, 508 may be selected as an electronic device to determine whether a relevant event occurs and / or to perform the functions of the relevant determiner 612. In some examples, the electronic device may be selected as a relevant device based on user input and / or user settings. In some examples, the electronic device may be selected as a relevant device based on administrator settings (such as settings included in a server such as the remote relevant device 508).
[0086] 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 executed on the electronic device 600. State information is data that enables a receiving device to navigate to specific content (e.g., via a deep link, an operating system intent, a resource locator, etc.). Therefore, the state information may include an application state (including information related to the application stored in a memory of the electronic device), a resource state (including resources such as files, images, and / or database records stored in association with the application), and / or a session state that maintains the communication state between the electronic device 600 and the server. In an example where the application is a browser, the state information determined by the state determiner 614 may include a web page or uniform resource locator (URL) and a browser intent or a deep link. In some examples 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 an example 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 attribute of an object, and / or the identity of a player.
[0087] The electronic device 600 may include a status information message processor 616. When the electronic device 600 is the transmitting device 502, the status information processor 616 may generate a status information message and transmit it to the receiving device 504. The status information message may include status information determined by the status determiner 614. When the electronic device 600 is the receiving device 504, the status information processor 616 may receive and process the status information message transmitted by the transmitting device 502.
[0088] The electronic device 600 may include one or more applications 618. The applications 618 may be executed on the electronic device 600. As non-limiting examples, the applications 618 may include a web browser, a game, or a productivity application.
[0089] 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 the state information message. The state updater 620 may update the state of the browser, for example, by instructing the browser executed on the electronic device 600 to request a specific web page and / or scroll to a specific position on the web page. The state updater 620 may update the state of the game, for example, by launching a game executed on the electronic device and / or changing the position and / or value of an object included in the game.
[0090] The 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 the electronic device 600 to perform any combination of the methods, functions, and / or techniques described herein.
[0091] 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 thereon data and instructions that, when executed by at least one processor (such as the processor 622), are configured to cause the electronic device 600 to perform any combination of methods, functions, and / or techniques described herein. Thus, in any of the implementations described herein (even if not explicitly stated in conjunction with a particular implementation), software (e.g., processing modules, stored instructions) and / or hardware (e.g., processors, memory devices, etc.) associated with or included in the electronic device 102 may be configured to perform any combination of 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.
[0092] The electronic device 600 may include at least one input / output node 626. At least one input / output node 626 may receive and / or send data, such as receiving data from the electronic device 600 and / or sending data to the electronic device, and / or may receive input from a user and provide output to the user. The input and output functions may be combined into a single node, or may be divided 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 may communicate with other electronic devices 102, 104, 106, 302, 306, 502, 504, 506, 508, such as by sending any of messages 516, 518, 520, 524, 526, 530, 546, 548, 554, 566, 568, 572, 576 (which may include direction profiles 516, 518, 520, 546, 548, 566, 568, related notifications 524, 526, status information 554, 576, and / or status information requests 572) via an Internet Protocol, via a cellular base station and intermediate server, via an 802.11 communication protocol, and / or via a peer communication protocol such as Bluetooth.
[0093] In some implementations, related events can be used in other workflows. As an example, detection of related events can be used in a process for suggesting content, applications to open, or some other action to a user with user permission. More specifically, as an example, a user may jog regularly between 6 and 7 a.m. and listen to a playlist using earbuds and a phone. Implementations can use corresponding directional profiles for the phone and earbuds to enhance the confidence prediction that the user will open the playlist application if the time of day falls within (or close to) the learned window of 6 to 7 a.m. Thus, in some implementations, related events can be used to trigger events in addition to or in addition to state transfers.
[0094] Figure 7 is a flow chart illustrating a method 700 according to an example. The method may include determining, by a correlation device, that a correlation event has occurred based at least on the first device and the second device having corresponding direction profiles (702). The method 700 may include: in response to the occurrence of the correlation event, causing the first device to transmit a state of the first device by sending a state information message to the second device (704).
[0095] In some examples, determining that a related event has occurred (702) can include performing a clustering function on accelerometer-tracked movements of the first device and the second device, and determining that an 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.
[0096] In some examples, the corresponding direction profile may indicate that movement tracked by the accelerometer of the first device and movement tracked by the accelerometer of the second device satisfy the movement similarity condition for at least a threshold duration.
[0097] In some examples, the first device may be associated with a first user, the second device may be associated with a second user, and the first user and the second user may be included in the same group.
[0098] In some examples, the status information message may include the status of games associated with the same group.
[0099] In some examples, the corresponding direction 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 indicate the same traffic pattern.
[0100] In some examples, the first device and the second device may be associated with the same user.
[0101] In some examples, the related device may be remote from the first device and the second device.
[0102] In some examples, the associated device can be the first device.
[0103] In some examples, the first device may send the status information message based on the first device being accessed by the user more recently than the second device.
[0104] Figure 8 800 according to another example. The method 800 may be performed by a sending device, such as the sending device 502. The method 800 may include detecting a correlation event based on a directional profile of the sending device corresponding to a directional profile of the receiving device (802). The method 800 may include, in response to detecting the correlation event, sending a status information message from the sending device to the receiving device, the status information message including status information about at least one application executed on the sending device (804).
[0105] In some examples, detecting a related event may include performing a clustering function on accelerometer-tracked movements of the transmitting device and the receiving device, and determining that an 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.
[0106] In some examples, the sending device and the receiving device may be associated with the same user.
[0107] In some examples, the sending 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.
[0108] In some examples, method 800 may also include sending a status information message from the sending device to the receiving device after the sending device detects the relevant event and in response to receiving an instruction to power off a component of the sending device.
[0109] Fig. 9 is a flow chart illustrating a method 900 according to another example. 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 sending device, the state information message being sent in response to detection of a relevant event based on the receiving device and the sending device having corresponding direction profiles (902). The method 900 may include updating a state of at least one application executed on the receiving device based on the state information message (904).
[0110] In some examples, the sending device and the receiving device may be associated with the same user.
[0111] In some examples, the sending 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.
[0112] In some examples, the receiving device may detect the relevant event, and the method may further include: in response to detecting the relevant event, sending a status information request to the sending device, and receiving a status information message as a response to the status information request.
[0113] In some examples, the receiving device may detect the relevant event, and the method may further include: in response to powering on a component of the receiving device, sending a status information request to the sending device, and receiving a status information message as a response to the status information request.
[0114] Fig.10Examples of a general purpose computer device 1000 and a general purpose mobile computer device 1050 that can be used with the techniques described herein are shown. Computing device 1000 is intended to represent various forms of digital computers, such as laptops, desktops, tablet computers, workstations, personal digital assistants, televisions, servers, blade servers, mainframes, and other appropriate computing devices. Computing device 1050 is intended to represent various forms of mobile devices, such as personal digital assistants, cellular phones, smart phones, and other similar computing devices. The components shown here, their connections and relationships, and their functions are intended only as examples and are not intended to limit the implementations described and / or claimed in this document.
[0115] The computing device 1000 includes a processor 1002, a memory 1004, a storage device 1006, a high-speed interface 1008 connected to the memory 1004 and a high-speed expansion port 1010, and a low-speed interface 1012 connected to a low-speed bus 1014 and the storage device 1006. The processor 1002 can be a semiconductor-based processor. The memory 1004 can be a semiconductor-based memory. Each of the components 1002, 1004, 1006, 1008, 1010, and 1012 is interconnected using various buses and can be installed on a common motherboard or installed in other ways as appropriate. The processor 1002 can process instructions for execution within the computing device 1000, including instructions stored in the memory 1004 or on the storage device 1006, to display graphical information of a GUI on an external input / output device (such as a display 1016 coupled to the high-speed interface 1008). In other implementations, multiple processors and / or multiple buses may be used, as appropriate, along with multiple memories and multiple memory types. In addition, multiple computing devices 1000 may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, blade server group, or multi-processor system).
[0116] The memory 1004 stores information within the computing device 1000. In one implementation, the memory 1004 is one or more volatile memory units. In another implementation, the memory 1004 is one or more non-volatile memory units. The memory 1004 may also be another form of computer-readable medium, such as a magnetic disk or optical disk.
[0117] The storage device 1006 can provide mass storage for the computing device 1000. In one implementation, 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 a magnetic tape device, a flash memory or other similar solid-state memory device, or a device array, the device array including devices in a storage area network or other configuration. A computer program product can be tangibly embodied in 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 or machine-readable medium, such as the memory 1004, the storage device 1006, or a memory on the processor 1002.
[0118] The high-speed controller 1008 manages bandwidth-intensive operations of the computing device 1000, while the low-speed controller 1012 manages less bandwidth-intensive operations. This allocation of functions is merely an example. In one implementation, the high-speed controller 1008 is coupled to the memory 1004, the display 1016 (e.g., through a graphics processor or accelerator), and a high-speed expansion port 1010 that can accept various expansion cards (not shown). In an implementation, the low-speed controller 1012 is coupled to the storage device 1006 and the low-speed expansion port 1014. The low-speed expansion port, which can include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet), can be coupled to one or more input / output devices, such as a keyboard, a pointing device, a scanner, or a networking device (such as a switch or router), for example, through a network adapter.
[0119] As shown, computing device 1000 can be implemented in a variety of different forms. For example, it can be implemented as a standard server 1020, or multiple implementations in a group of such servers. The computing device can also be implemented as a part of a rack server system 1024. In addition, the computing device can be implemented in a personal computer such as a laptop computer 1022. Alternatively, components from computing device 1000 can be combined with other components in a mobile device (not shown) (such as device 1050). Each of these devices can contain one or more of computing devices 1000, 1050, and the entire system can be composed of multiple computing devices 1000, 1050 that communicate with each other.
[0120] The computing device 1050 includes a processor 1052, a memory 1064, an input / output device such as a display 1054, a communication interface 1066, and a transceiver 1068, among other components. The device 1050 may also be provided with a storage device such as a micro drive or other device to provide additional storage. Each of the components 1050, 1052, 1064, 1054, 1066, and 1068 are interconnected using various buses, and several of the components may be mounted on a common motherboard or otherwise as appropriate.
[0121] Processor 1052 can execute instructions within computing device 1050, including instructions stored in memory 1064. The processor can be implemented as a chipset including separate multiple analog and digital processor chips. The processor can provide, for example, coordination of other components of device 1050, such as controlling a user interface, applications executed by device 1050, and wireless communications performed by device 1050.
[0122] The processor 1052 can communicate with the user through a control interface 1058 and a display interface 1056 coupled to the display 1054. The display 1054 can 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 suitable circuitry for driving the display 1054 to present graphics and other information to the user. The control interface 1058 may receive commands from the user and convert them for submission to the processor 1052. In addition, an external interface 1062 in communication with the processor 1052 may be provided to enable near-field communication of the device 1050 with other devices. The external interface 1062 may, for example, provide wired communication in some implementations, or wireless communication in other implementations, and multiple interfaces may also be used.
[0123] The memory 1064 stores information within the computing device 1050. The memory 1064 may be implemented as one or more of one or more computer-readable media, one or more volatile memory units, or one or more non-volatile memory units. An expansion memory 1074 may also 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 an expansion memory 1074 may provide additional storage space for the device 1050, or may also store applications or other information of the device 1050. Specifically, the expansion memory 1074 may include instructions for executing or supplementing the above-mentioned processes, and may also include security information. Thus, for example, the expansion memory 1074 may be provided as a security module of the device 1050, and may be programmed with instructions that permit secure use of the device 1050. In addition, a security application may be provided via a SIMM card together with additional information, such as placing identification information on the SIMM card in an unbreakable manner.
[0124] The memory may include, for example, flash memory and / or NVRAM memory, as discussed below. In one implementation, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer-readable medium or machine-readable medium, such as memory 1064, expansion memory 1074, or memory on processor 1052, which may be received, for example, via transceiver 1068 or external interface 1062.
[0125] The device 1050 can communicate wirelessly via a communication interface 1066, which may include digital signal processing circuitry, if necessary. The 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, etc. Such communication may occur, for example, via a radio frequency transceiver 1068. In addition, short-range communication may occur, such as using Bluetooth, WiFi, or another such transceiver (not shown). In addition, a GPS (global positioning system) receiver module 1070 may provide the device 1050 with wireless data related to additional navigation and related to location, which may be used as appropriate by applications running on the device 1050.
[0126] Device 1050 may also communicate audibly using audio codec 1060, which may receive verbal information from a user and convert it into usable digital information. Audio codec 1060 may also generate audible sounds for the user, such as through a speaker (e.g., in a handset of device 1050). Such sounds may include sounds from voice phone calls, may include recorded sounds (e.g., voice messages, music files, etc.), and may also include sounds generated by applications operating on device 1050.
[0127] As shown, computing device 1050 can be implemented in a variety of different forms. For example, it can be implemented as a cellular phone 1080. It can also be implemented as part of a smart phone 1082, a personal digital assistant, or another similar mobile device.
[0128] Various implementations of the systems and techniques described herein can be implemented in digital electronic circuit systems, integrated circuit systems, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and / or combinations thereof. These various implementations may include implementations in one or more computer programs that can be executed and / or interpreted on a programmable system that includes at least one programmable processor that can be either special purpose or general purpose and can be coupled to receive data and instructions from and transmit data and instructions to a storage system, at least one input device, and at least one output device.
[0129] These computer programs (also referred to as programs, software, software applications, or code) include machine instructions for a programmable processor and may be implemented in high-level procedural and / or object-oriented programming languages and / or in assembly / machine languages. As used herein, the terms "machine-readable medium," "computer-readable medium," refer to any computer program product, device, and / or device (e.g., disk, optical disk, memory, programmable logic device (PLD)) for providing machine instructions and / or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term "machine-readable signal" refers to any signal for providing machine instructions and / or data to a programmable processor.
[0130] To provide 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) through which the user can provide input to the computer. Other types of devices may also be used to provide interaction with the user; for example, the feedback provided to the user can be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user may be received in any form, including acoustic, verbal, or tactile input.
[0131] The systems and techniques described herein may be implemented in a computing system that includes a back-end component (e.g., as a data server), or includes a middleware component (e.g., an application server), or includes a front-end component (e.g., a client computer having a graphical user interface or a web browser through which a user can interact with an implementation of the systems and techniques described herein), or any combination of such back-end, middleware, or front-end components. The components of the system may be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network ("LAN"), a wide area network ("WAN"), and the Internet.
[0132] 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 through computer programs executed on the respective computers and placing each other in a client-server relationship.
[0133] A number of implementations have been described, however, it will be appreciated that various modifications can be made without departing from the spirit and scope of the invention.
[0134] Furthermore, the logic flows depicted in the accompanying drawings do not require the particular order shown or sequential order to achieve the desired results. In addition, other steps can be provided, or steps can be deleted from the described flows, and other components can be added to or removed from the described systems. Therefore, other implementations are within the scope of the following claims.
Claims
1. A method comprising: determining, by the correlation device, that a correlation event has occurred based at least on the first device and the second device having corresponding direction profiles; as well as In response to the occurrence of the relevant event, the first device is caused to transmit a status of the first device by sending a status information message to the second device.
2. The method of claim 1, wherein determining that the relevant event has occurred comprises: performing a clustering function on the movements tracked by the accelerometers of the first device and the second device; as well as Determining that the output of the clustering function indicates that the first device and the second device are included in a same cluster, wherein devices in the same cluster have corresponding directional profiles.
3. The method of any one of claims 1 or 2, wherein the corresponding direction profile indicates that the movement tracked by the accelerometer of the first device and the movement tracked by the accelerometer of the second device satisfy a movement similarity condition for at least a threshold duration.
4. The method according to any one of claims 1 to 3, wherein: The first device is associated with a first user; The second device is associated with a second user; and The first user and the second user are included in the same group.
5. The method of claim 4, wherein the status information message includes a status of a game associated with the same group.
6. The method of any one of claims 1 to 5, wherein the corresponding direction profile indicates that the movement tracked by the accelerometer of the first device and the movement tracked by the accelerometer of the second device indicate the same traffic pattern.
7. The method of any one of claims 1 to 6, wherein the first device and the second device are associated with the same user.
8. The method of any one of claims 1 to 7, wherein the associated device is remote from the first device and the second device.
9. The method of any one of claims 1 to 8, wherein the associated 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, comprising instructions stored thereon, which when executed by at least one processor are configured to cause an electronic device to perform the method of any one of claims 1 to 10.
12. An electronic device comprising: at least one processor; as well as A non-transitory computer-readable storage medium comprising instructions stored thereon, the instructions being configured to cause the electronic device to perform the method of any one of claims 1 to 10 when executed by the at least one processor.
13. A method performed by a sending device, the method comprising: detecting a related event based on the directional profile of the transmitting device corresponding to the directional profile of the receiving device; as well as In response to detecting the relevant event, a status information message is sent from the sending device to the receiving device, the status information message including status information about at least one application executing on the sending device.
14. The method of claim 13, wherein detecting the relevant event comprises: performing a clustering function on the movements tracked by the accelerometers of the transmitting device and the receiving device; as well as 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. A method as claimed in any one of claims 13 or 14, wherein the sending device and the receiving device are associated with the same user.
16. The method of any one of claims 13 or 14, wherein: The sending device is associated with the first user; The receiving device is associated with a second user; and The first user and the second user are included in the same group.
17. The method of any one of claims 13 to 16, wherein sending the status information message from the sending device to the receiving device is performed after detecting the relevant event in response to receiving an instruction to power off a component of the sending device. 18 . A non-transitory computer-readable storage medium, comprising instructions stored thereon, which when executed by at least one processor are configured to cause a sending device to perform the method according to any one of claims 13 to 17.
19. A sending device, comprising: at least one processor; as well as A non-transitory computer-readable storage medium, comprising instructions stored thereon, which, when executed by the at least one processor, are configured to cause the sending device to perform the method as claimed in any one of claims 13 to 17.
20. A method performed by a receiving device, the method comprising: receiving a status information message from a sending device, the status information message being sent in response to detection of a correlation event based on the receiving device and the sending device having corresponding directional profiles; as well as Based on the status information message, a status of at least one application executed on the receiving device is updated.
21. The method of claim 20, wherein the sending device and the receiving device are associated with the same user.
22. The method of claim 20, wherein: The sending device is associated with the first user; The receiving device is associated with a second user; and The first user and the second user are included in the same group.
23. The method of any one of claims 20 to 22, wherein the receiving device detects the relevant event, and the method further comprises: In response to detecting the relevant event, sending a status information request to the sending device; as well as The status information message is received as a response to the status information request.
24. The method of any one of claims 20 to 23, wherein the receiving device detects the relevant event, and the method further comprises: In response to powering on a component of the receiving device, sending a status information request to the sending device; as well as The status information message is received as a response to the status information request. 25 . A non-transitory computer-readable storage medium, comprising instructions stored thereon, which when executed by at least one processor are configured to cause a sending device to perform the method of any one of claims 20 to 24.
26. A receiving device, comprising: at least one processor; as well as A non-transitory computer-readable storage medium comprising instructions stored thereon, which instructions, when executed by the at least one processor, are configured to cause the receiving device to perform the method as claimed in any one of claims 20 to 24.