SHARING STATE BASED ON DIRECTIONAL PROFILES

A method can include determining, by a correlation device, that a correlation event has occurred based on at least a first device and a second device having corresponding directional profiles, and responsive to occurrence of the correlation event, causing the first device to transfer a state of the first device by sending a state information message to the second device.

BACKGROUND

Users can access information via multiple electronic devices. At times, users may wish to switch electronic devices while continuing to access the same information.

SUMMARY

Implementations relate to sharing of information between devices based on correlations in inertial movements of the devices. For example, a user may desire to share content, and/or a state of an application, between different electronic devices. While such sharing can be done manually, this typically requires use of multiple interfaces and can be cumbersome. Implementations provide a technique for using corresponding inertial movements of multiple devices over time (e.g., a time window) for triggering transfer of an application state/content. For example, the user may be carrying electronic devices while walking or riding in a vehicle. Implementations generate directional profiles for the electronic devices and, when the profiles correlate, trigger state sharing between the devices. A technical problem with sharing a state between electronic devices based on proximity of location is that determination of location, at a high level of specificity, can be a slow process. A technical solution to the technical problem of slow determination of location is to share a 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 shared quickly between electronic devices. A technical benefit of sharing the state based on directional profiles of the electronic devices is that the correspondence of directional profiles can be determined quickly, allowing the states to be shared between electronic devices with low latency.

DETAILED DESCRIPTION

Electronic devices can generate directional profiles and, when the directional profiles correspond (correlate), indicating that a user or users are carrying or otherwise traveling with the electronic devices together, share a state or state information, thereby synchronizing and/or transferring content between the electronic devices. The state information can include a state of a web browser or a game. The sharing of the state information can enable the user or users to seamlessly transition from interacting from one electronic device to another. A directional profile of a device can be a sequence of records over time, each record including values that carry information about a device's position and/or orientation. A directional profile of a device is usable to track the movement of the device over time.

FIG.1Ashows a first user100walking with a first electronic device102, a second electronic device104, and a third electronic device106. The user100can carry the electronic devices102,104,106. One of the electronic devices102,104,106, such as the electronic device104, can transfer content and/or share a state108, within one or more of the other electronic devices102,104,106, such as the electronic device106. The user100can carry one or more of the electronic devices102,104,106in the user's100hand. The user100can carry one or more of the electronic devices102,104,106by attaching the electronic devices102,104,106to the user's100body, e.g., by straps, inserting in-ear, or carrying in a bag, backpack, etc., as non-limiting examples. In the example shown inFIG.1A, the first electronic device102can include a smartphone or an earbud. In the example shown inFIG.1A, the second electronic device104can include a smartwatch or a smartphone. In the example shown inFIG.1A, the third electronic device106can include a tablet computing device. The first electronic device102, the second electronic device104, and the third electronic device106can be associated with the user100and/or an account owned or managed by the user. When the user100is carrying the three electronic devices102,104,106, the inertial movements and/or acceleration of the three electronic devices102,104,106, measured by accelerometers and/or inertial measurement units (IMUs) (that can each include one or more accelerometers) included in the electronic devices102,104,106, will be similar, e.g., will correspond. Inertial movements and/or acceleration data are readily available, enabling one or more of the electronic devices102,104,106to quickly determine proximity of the other electronic devices102,104,106.

FIG.1Bis a graph110showing inertial movement112as a function of time114for the first electronic device102carried by the first user100in the example ofFIG.1A. In some examples, the inertial movement values116can be obtained from an inertial movement unit (IMU) in the first electronic device102. The inertial movement values116can be a principal component of a three-axis reading, e.g., (x, y, z) acceleration. Accelerometer and/or IMU measurements, represented by inertial movement values116, could be measured and/or stored at a sampling rate, e.g., a sampling rate of, for example, one hundred Hertz (100 Hz). Thus, the inertial movement values116represent measurements taken over some duration of time. The first electronic device102could, for example, perform dimensionality reduction such as principal component analysis (PCA) and/or singular value decomposition (SVD) on the three dimensional measurements outputted by an accelerometer included in the first electronic device102. The inertial movement values116can be the first principal component resulting from the principal component analysis, and/or a most important dimension resulting from the dimensionality reduction. In some implementations, the inertial movement values116may be an embedding of the three dimensional measures outputted by an accelerometer in the first electronic device102.

FIG.1Cis a graph120showing inertial movement122as a function of time124(e.g., a time duration) for the second electronic device104carried by the first user100in the example ofFIG.1A. The inertial movement values126are generated in a similar manner as the inertial movement values116so that a correlation process can be performed. For example, the inertial movement values126can be a principal component of a three-axis accelerometer reading. The second electronic device104could, for example, perform dimensionality reduction such as principal component analysis (PCA) on the three dimensional measurements outputted by an accelerometer included in the second electronic device104, similar to the first electronic device102. The inertial movement values126can be the principal component resulting from the principal component analysis.

FIG.1Dis a graph130showing inertial movement132as a function of time134for the third electronic device106carried by the first user100in the example ofFIG.1A. The inertial movement values136are generated in a similar manner as the inertial movement values116and126so that a correlation process can be performed. For example, the inertial movement values136can be a principal component of a three-axis accelerometer reading. The third electronic device106could, for example, perform dimensionality reduction such as principal component analysis (PCA) on the three dimensional measurements outputted by an accelerometer included in the third electronic device106. The inertial movement values136can be the principal component resulting from the principal component analysis.

The inertial movement as functions of time shown inFIGS.1B,1C, and1Dcan be considered directional profiles. The directional profiles can be based on directions of movement and/or inertial movement data measured by the electronic devices102,104,106. The respective directional profiles can indicate directions of movement of the respective electronic devices102,104,106. The inertial movement values116,126,136shown inFIGS.1B,1C, and1D(as well as the values216,226,236,316,326shown inFIGS.2B,2C,2D,3B, and3C) can be considered abstractions of the accelerometer data measured by the respective electronic devices102,104,106,302,306. In examples in which dimensionality reduction, such as PCA, was performed on the accelerometer and/or IMU values measured by the electronic devices102,104,106,302,306and the horizontal movement and/or acceleration in a single direction was generally constant because the user was moving at a constant velocity, the values116,126,136,216,226,236,316,326can represent vertical movement and/or acceleration. In some implementations, the inertial movement values116,126,136shown inFIGS.1B,1C, and1D(as well as the values216,226,236,316,326shown inFIGS.2B,2C,2D,3B, and3C) can represent embeddings, or multiple vectors for each sampling from an IMU, e.g., so there are multiple data points at each sample (measurement) represented in the time duration.

The similar (or correlated) directional profiles of the electronic devices102,104,106can indicate that they are being carried by the user. In some examples, an electronic device, such as one of the electronic devices102,104,106or a remote electronic device, can perform a clustering function to determine which, if any, of the electronic devices102,104,106have corresponding directional profiles. In some examples, electronic devices102,104,106that are in a same and/or primary cluster can be considered to have corresponding directional profiles. In some examples, electronic devices102,104,106that are in a same cluster and have non-zero or significant movement and/or acceleration (indicating that they were not stationary) can be considered to have corresponding directional profiles. In the example ofFIGS.1A,1B,1C, and1D, all three of the electronic devices102,104,106can be considered to have corresponding, matching, or correlated, directional profiles. Other electronic devices, not shown, can have directional profiles that are not in the same cluster as the directional profiles of the electronic devices102,104,106, and can be considered to not have corresponding directional profiles with any of the electronic devices102,104,106.

In some examples, the directional profiles of the electronic devices102,104,106can be considered to correspond or match (correlate) if their inertial movement as functions of time satisfy a similarity threshold. The similarity threshold can require a sum of differences between inertial movement values (or principal components) at each point in time to be at or below a difference threshold, or a sum of squared differences between inertial movement values (or principal components) at each point in time to be at or below a squared difference threshold, or the sum of differences or sum of squared differences to be at or below a predetermined fraction of an average of the inertial movement values, as non-limiting examples. In some examples, one or more of the electronic devices102,104,106can shift the time values to find a maximum fit or maximum match, to account for differences in time measurements between the electronic devices102,104,106.

FIG.2Ashows the first user100walking with the first electronic device102and the third electronic device106, and leaving the second electronic device104in a vehicle200.

FIG.2Bis a graph210showing inertial movement212as a function of time214for the first electronic device102carried by the first user100in the example ofFIG.2A. The first electronic device102can determine the inertial movement212in a similar manner as described above with respect toFIGS.1B,1C, and1D.

FIG.2Cis a graph220showing inertial movement222as a function224of time for the third electronic device106carried by the first user100in the example ofFIG.2A. The third electronic device102can determine the inertial movement222in a similar manner as described above with respect toFIGS.1B,1C, and1D.

FIG.2Dis a graph230showing inertial movement232as a function of time234for the second electronic device104left in the vehicle200by the first user100in the example ofFIG.2A. The second electronic device104can determine the inertial movement232in a similar manner as described above with respect toFIGS.1B,1C, and1D. The inertial movement232of the second electronic device104left in the vehicle200is lower, and/or has less variation, than the inertial movement212of the first electronic device102or the inertial movement222of the third electronic device106carried by the first user100while walking, either because the vehicle200is stationary or because the movement patterns of the vehicle200while driving result in less inertial movement.

The electronic devices102,104,106can determine respective directional profiles based on their respective inertial movements212,222,232as described above. In the example ofFIGS.2A,2B,2C, and2D, the first electronic device102and third electronic device106, which are carried by the first user100, have corresponding directional profiles. In the example ofFIGS.2A,2B,2C, and2D, the directional profile of the second electronic device104does not match and/or correspond to the directional profile of either the first electronic device102or the third electronic device106.

FIG.3Ashows the first user100walking with the first electronic device102and the third electronic device106, and a second user300walking with a fourth electronic device302and a fifth electronic device306. The first user100and the second user300are walking together, at a similar pace, using a same mode of transportation (walking). This example can also apply when multiple users are using another, same mode of transportation, such as riding in a vehicle together. The first and third electronic devices102,106can be associated with the first user100and/or an account owned and/or managed by the first user100. The fourth and fifth electronic devices302,306can be associated with the second user300and/or an account owned by and/or managed by the second user300. The first user100and the second user300can be included in a group, and/or the first electronic device102, third electronic device106, fourth electronic device302, and fifth electronic device306can be included in a group. A group can include a group within a social network, a productivity application, or a gaming application, as non-limiting examples. The users100,300may have opted to join the group and share the states of their respective electronic devices101,106,302,306with other members of the group. The group, which can include users100,300may have been created by one of the users100,300, or by another member of the group, and members may have opted in to share the states of their respective electronic devices102,106,302,306with other members of the group.

FIG.3Bis a graph310showing inertial movement312as a function of time314for the third electronic device106carried by the first user100in the example ofFIG.3A. The third electronic device102can determine the inertial movement312in a similar manner as described above with respect toFIGS.1B,1C, and1D.

FIG.3Cis a graph320showing inertial movement322as a function of time324for the fifth electronic device306carried by the second user300in the example ofFIG.3A. The fifth electronic device306can determine the inertial movement322in a similar manner as described above with respect toFIGS.1B,1C, and1D.

The electronic devices102,106,302,306can determine respective directional profiles based on their respective inertial movements312,322as described above. In the example ofFIGS.3A,3B, and3C, the third electronic device106and fifth electronic device306, which are carried by the first user100and second user300, respectively have corresponding directional profiles. In some examples, the electronic devices106,306can be considered to have corresponding directional profiles based at least in part on movements tracked by accelerometers and/or IMUs included in the respective electronic devices106,306indicating that the electronic devices106have similar or same modes of transportation, such as both of the electronic devices106,306being transported by a vehicle (bike, car, truck, ATV, snowmobile, etc.) or both of the electronic devices106,306being transported by pedestrians.

FIG.4Ashows an example processing flow for sharing a state of an electronic device based on corresponding directional profiles. Multiple electronic devices, which can each include an inertial measurement unit (IMU)402,404,406and/or accelerometer, can measure acceleration of the respective electronic device. The respective electronic devices can perform motion feature embedding412,414,416on the acceleration measurements performed by their respective IMUs402,404,406. The motion feature embedding412,414,416can generate a directional profile for the respective electronic devices, such as by dimensionality reduction such as performing principal component analysis (PCA) on three dimensional measurements outputted by the IMU402,404,406included in the respective electronic device.

One or more of the electronic devices can receive the directional profiles from the other electronic devices and perform clustering (420) on the directional profiles. In some examples, the electronic device 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 points430is shown inFIG.4A, with four distinct clusters.

In some examples, the clustering (420) can include performing the elbow method of clustering to determine the number of clusters. The elbow method can include plotting variation as a function of the number of clusters (K), and picking the elbow of the curve (or knee of the curve) as the number of clusters.

After performing the clustering (420), the electronic device that performed the clustering can select a primary cluster (440). The primary cluster can be the cluster with the largest number of electronic devices.

The electronic devices within the primary cluster can be considered to have corresponding directional profiles. One or more of the electronic devices that have corresponding directional profiles can activate a sharing function (450), such as a browser sharing function.

FIG.4Bshows electronic devices grouped into clusters based on directional profiles. The electronic devices are represented by nodes462,464,466,472,474. The electronic devices may have generated the directional profiles based on dimensionality reduction such as principal component analysis (PCA) on three dimensional measurements outputted by the accelerometer and/or IMU. The nodes462,464,466,472,474can represent the directional profiles.

In the example shown inFIG.4B, the nodes462,464,466, representing three electronic devices, are grouped into a primary cluster. The primary cluster is the cluster with the greatest number of nodes, in this example three. One or more of the electronic devices can determine, based on the nodes462,464,466being grouped into the primary cluster, that the three electronic devices represented by the nodes464,464,466have corresponding directional profiles.

In the example shown inFIG.4B, the nodes472,474, representing two electronic devices, are not grouped into the primary cluster. One or more of the electronic devices can determine, based on the nodes462,464,466not being grouped into the primary cluster, that the three electronic devices represented by the nodes464,464,466do not have corresponding directional profiles with any of the other electronic devices.

Based on the three electronic devices represented by the nodes464,464,466having corresponding directional profiles, the electronic devices represented by the nodes464,464,466can share a state. One of the electronic devices represented by the nodes464,464,466can, for example, send state information to the one or more of the other two devices, and one or more of the other two electronic devices can, after receiving the state information update their state, such as the state of their browser, based on the received state information. The updating of the state can enable the electronic devices to synchronize content, such as browser content. The synchronizing content enables a user to switch devices without loss of continuity of experience within multiple instances of an application.

FIG.5Ais a timing diagram showing processes performed, and messages exchanged, by electronic devices502,504,506,508according to an example. In this example, a correlation device508can be remote from other electronic devices502,504,506, and can determine whether a correlation of directional profiles exists between the other electronic devices502,504,506. A sending device502, a receiving device504, and a third device506can include any combination of features and/or functionalities of the electronic devices102,104,106,302,306described above. The sending device502may be selected due to having been accessed by a user more recently than the receiving device504, causing the sending device502to have state information to be transferred to the receiving device504.

The electronic devices502,504,506can generate their respective directional profiles (510,512,514). The electronic devices502,504,506can generate their respective directional profiles (510,512,514) by, for example, measuring their respective acceleration and determining a principal component of their respective accelerometer readings, as described above. The electronic devices502,504,506can send their respective directional profiles516,518,520to the correlation device508. The electronic devices502,504,506can send their respective directional profiles516,518,520to the correlation device508via, for example, the Internet, a Wireless Fidelity (“WiFi)” Institute for Electrical and Electronics Engineers (IEEE) 802.11 interface, and/or a Bluetooth interface, as non-limiting examples.

After receiving the directional profiles516,518,520from the electronic devices502,504,506, the correlation device508can determine whether a correlation event has occurred (522). A correlation event can indicate that two electronic devices502,504,506are moving together, such as being carried by a same user, or carried by users who are moving (such as walking) together along a similar path or in a same vehicle. The correlation device508can determine whether a correlation event has occurred between two or more electronic devices502,504,506based on IMU data and/or accelerometer data received from two or more electronic devices502,504,506indicating that a movement similarity condition has been met. The similarity condition can include inertial movements of the electronic devices502,504,506for which the correlation event has occurred satisfying a similarity threshold, and/or the electronic devices502,504,506for which the correlation event has occurred being included in a same cluster based on IMU data and/or accelerometer data received from two or more electronic devices502,504,506.

In some examples, the correlation device508can determine whether the correlation event has occurred (522) based on, for example, performing a clustering function and/or cluster analysis on the directional profiles516,518,520(which can represent accelerometer-tracked movements of the electronic devices502,504,506). The correlation device508can determine that two or more of the electronic devices502,504,506such as the sending device502and the receiving device504, are included in a same cluster and/or a primary cluster. In this example, the sending device502and receiving device504are included in the same cluster and/or primary cluster and have corresponding directional profiles, and the third device506is not included in the same cluster and/or primary cluster and does have a corresponding directional profile with either the sending device502or the receiving device504. While one third device506that is not included in the same cluster and/or primary cluster and does have a corresponding directional profile with either the sending device502or the receiving device504is shown inFIGS.5A,5B, and5C, any number of devices that are not included in the same cluster and/or primary cluster and do not have a corresponding directional profile with either the sending device502or the receiving device504can be associated with a same user and/or be included in a same group as the sending device502and receiving device504.

The inclusion of the two or more electronic devices502,504in the same cluster and/or primary cluster can indicate that the electronic devices502,504that are included in the same cluster and/or primary cluster having corresponding directional profiles. Based on the inclusion of the two or more electronic devices502,504in the same cluster and/or primary cluster, the correlation device508can determine that the electronic devices502,504that are included in the same cluster and/or primary cluster have corresponding directional profiles. Based on determining that the electronic devices502,504have corresponding directional profiles, the correlation device508can determine that a correlation event has occurred between the electronic devices502,504that have corresponding directional profiles.

In some examples, the directional profiles of the electronic devices502,504,506can be considered to correspond and/or match (correlate) if their inertial movement as functions of time satisfy a similarity threshold. The similarity threshold can be based on cumulative differences in inertial movement values (or principal components, and can require a sum of differences between inertial movement values (or principal components) at each point in time to be at or below a difference threshold, or a sum of squared differences between inertial movement values (or principal components) at each point in time to be at or below a squared difference threshold, or the sum of differences or sum of squared differences to be at or below a predetermined fraction of an average of the inertial movement values, as non-limiting examples. In some examples, one or more of the electronic devices502,504,506can shift the time values to find a maximum fit or maximum match, to account for differences in time measurements between the electronic devices502,504,506.

Responsive to the determination that the correlation event has occurred (522), the correlation device508can send correlation notifications524,526to the electronic devices502,504that have corresponding directional profiles. One of the electronic devices502,504that received the correlation notification524,526can be considered a sending device502based on an application executing on the sending device502having recently received input and/or interaction from a user, such as one of the users100,300, and/or the likelihood of the sending device502sending state information to the other electronic device504. One of the other electronic devices502,504that received the correlation notification524,526can be considered a receiving device504based on an application executing on the receiving device504having less recently received input and/or interaction from the user, and/or the likelihood of the receiving device504receiving state information from the sending device502. The correlation notification can identify the electronic devices502,504that have corresponding directional profiles.

In response to receiving the correlation notification524indicating the occurrence of a correlation event in an example in which the sending device502is the sending device502(rather than a receiving device), the sending device502can determine a state (528) of the sending device502. The sending device502can determine, for example, a state of an application executing on the sending device502. The sending device502can determine, for example, a state of a browser on the sending device502, such as a webpage open on the browser and/or associated Universal Resource Locator (URL), and/or a location on the page that the user is viewing. The sending device502can determine, for example, a state of a game executing on the sending device502. The sending device502can send the determined state information to the receiving device504.

In response to receiving the state information530, the receiving device504can update a state (532) of the receiving device504. The receiving device504can update the state (532) of the receiving device504, based on the state information530receiving from the sending device502, to match the state of the sending device502when the sending device determined the state (528) of the sending device502. The receiving device504can update the state (532) by updating a state of a browser or game executing on the receiving device504, as non-limiting examples. For example, updating the state (532) can include opening an application that corresponds to an application identifier (e.g., operating system intent, deep link) and navigating to an interface within the interface that corresponds to a content identifier in the state information.

FIG.5Bis a timing diagram showing processes performed, and messages exchanged, by electronic devices502,504,506according to another example. In this example, the sending device502can determine whether a correlation of directional profiles exists between the electronic devices502,504,506.

The electronic devices502,504,506can generate their respective directional profiles540,542,544. The electronic devices502,504,506can generate their respective directional profiles540,542,544in a similar manner to (510), (512), (514) described above. The electronic devices504,506other than the sending device502can send their respective directional profiles546,548to the sending device502.

In response to receiving the directional profiles546,548, and based on the directional profile generated by the sending device502, the sending device502can determine whether a correlation event occurred (550). The sending device502can determine whether the correlation event occurred (550) in a similar manner to (522) described above. In this example, the sending device502determines that the sending device502and the receiving device504are correlated and/or have corresponding and/or corresponding directional profiles.

Based on determining that a correlation event occurred and that the sending device502has a corresponding directional profile with the receiving device504, the sending device502can determine the state (552) of the sending device502. The sending device502can determine the state (552) of the sending device502in a similar manner to (528) described above. The sending device502can send the determined state information554to the receiving device504. The receiving device504can receive the state information554, and respond to receiving the state information554by updating a state (556) of the receiving device504. The receiving device504can update the state (556) of the receiving device504in a similar manner to (532) described above.

FIG.5Cis a timing diagram showing processes performed, and messages exchanged, by electronic devices502,504,506according to another example. In this example, the receiving device504can determine whether a correlation of directional profiles exists between the electronic devices502,504,506.

The electronic devices502,504,506can generate respective directional profiles (560), (562), (564). The electronic devices502,504,506can generate their respective directional profiles (560), (562), (564) in a similar manner to (510), (512), (514) and/or (540), (542), (544) described above. The devices502,506can send their respective directional profiles566,568to the receiving device504, and the receiving device504can receive the directional profiles.

In response to receiving the directional profiles566,568, the receiving device504can determine a correlation event (570). The receiving device504can determine the correlation event (570) in a similar manner to (522), (550) described above.

In this example, the electronic devices502,506can send their respective directional profiles566,568to the electronic device504that will become the receiving device504. The receiving device504can receive the directional profiles566,568. In response to receiving the directional profiles566,568, the receiving device504can determine the correlation event (570). The receiving device504can determine the correlation event (570) in a similar manner to (522) and/or (550) described above. The receiving device504can determine that the correlation event (570) indicates that the receiving device504and sending device502have corresponding directional profiles. The receiving device504and/or sending device502can determine that the state of the receiving device504should be updated to the state of the sending device502based on the user100,300having more recently interacted with an application executing on the sending device502than the receiving device504, for example.

Based on determining the correlation event570(such as that the sending device502and receiving device504have corresponding directional profiles based on the occurrence of a correlation event) and that the state of the receiving device504should be updated to the state of the sending device502, the receiving device504can send a state information request572to the sending device502, and the sending device502can receive the state information request572.

The sending device can respond to the state information request572by determining a state (574) of the sending device502. The sending device502can determine the state in a similar manner to (528), (552). Based on the determined state, the sending device502can send a state information message576to the receiving device504, and the receiving device504can receive the state information message576from the sending device502. The state information message576can include the determined state of the sending device502. In response to receiving the state information message576, the receiving device504can update a state of the receiving device (578). The receiving device504can update the state of the receiving device (578) in a similar manner to (532), (556).

FIG.6is a block diagram showing an electronic device600according to an example. The electronic device600can be an example of any of the electronic devices102,104,106,302,306,502,504,506,508described above. The electronic device600can include any combination of features and/or functionalities of any of the electronic devices102,104,106,302,306,502,504,506,508described above.

The electronic device600can include a user associator602. The user associator602can associate the electronic device600with 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 device600is associated with a same user and/or account as another electronic device.

The electronic device600can include a group associator604. The group associator604can associate the electronic device600, and/or a user and/or account associated with the electronic device600, with a group. The group associator604can determine whether the electronic device600, and/or a user and/or account associated with the electronic device600, is included in and/or associated with a same group as another electronic device and/or a user or account associated with the other electronic device in the group.

The electronic device600can include an accelerometer606and/or inertial measurement unit (IMU). The accelerometer606and/or IMU can measure and report acceleration, specific force, angular rate, and/or orientation of the electronic device600.

The electronic device600can include a location determiner608. The location determiner608can determine a geographic location of the electronic device600. The location determiner608can determine a geographic location of the electronic device600based, or example, on global positioning system (GPS) signals received from satellites, signals received from Wireless Fidelity 802.11 hotspots with known locations, or based on signals received from cellular base stations with known locations, as non-limiting examples.

The electronic device600can include a directional profile generator610. The directional profile generator610can generate a directional profile for the electronic device600. The directional profile generator610can generate the directional profile based on acceleration data, specific force data, angular rate data, and/or orientation data measured by the accelerometer606and/or IMU.

The directional profile generator610can generate the directional profile by, for example, performing dimensionality reduction such as principal component analysis (PCA) on any combination of the acceleration data, specific force data, angular rate data, and/or orientation data. In some examples, the directional profile generator610can generate the directional profile by performing dimensionality reduction on the three dimensional measurements outputted by an accelerometer606and/or IMU.

In some examples, the directional profile generator610can buffer and/or store a predetermined time period of acceleration and/or motion data measured by the accelerometer606, such as two seconds of acceleration and/or motion data. In some examples, the directional profile generator610can transform the inertial movement data, such as the principal component of the accelerometer data and the time values, into a vector. In some examples, the directional profile generator610can perform a Fourier transformation on the directional data to eliminate time variances between the electronic devices. In some examples, the directional profile generator610can save an amplitude phase tuple for a frequency with a highest amplitude. Concatenation over all channels in a three-axis accelerometer can generate a six-dimensional code vector.

The electronic device600can include a correlation determiner612. The correlation determiner612can determine whether a correlation event has occurred, and/or detect the occurrence of a correlation event. In some examples, the correlation determiner612can determine whether a correlation event has occurred between two or more devices that are associated with the same user and/or account. In some examples, the correlation determiner612can determine whether a correlation event has occurred between two or more devices that are associated with users and/or accounts that are included in a same group. A correlation event can indicate that two or more devices have corresponding directional profiles. Corresponding directional profiles can indicate that movements tracked by accelerometers and/or IMUs of two or more electronic devices are in same directions and proximal locations, such as a single user carrying the two or more electronic devices, multiple users walking together and carrying their respective electronic devices, or multiple users riding in a vehicle together with their respective electronic devices, as non-limiting examples. In some implementations, determining a correlation event may include identifying a certain movement pattern in each of the devices' directional profiles, for which a correlation is suspected. For example, if two or more devices are positioned close to each other and/or have corresponding orientations, then a trigger event may be determined only if the movement pattern of each device indicates a specific pattern, for example, shaking. The direction of the shaking may provide an indication for the direction of a state transfer between the devices.

In some examples, the correlation determiner612can perform clustering analysis, and/or a clustering function, 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 that are included in a same group.

In some examples, the clustering function can include k-means clustering. In some examples, the correlation determiner612can determine the value of k, or the number of clusters, by the elbow method. The correlation determiner612can determine that electronic devices that are in a same cluster, and/or are in a primary cluster, having corresponding directional profiles. The primary cluster can be a cluster that has the most and/or highest number of electronic devices. The electronic devices that are included in the primary cluster can be considered to have corresponding directional profiles with each other. The electronic devices that are not included in the primary cluster can be considered to not have corresponding directional profiles with each other or any other electronic devices.

In some examples, the directional profile generator610can generate a directional profile, and/or the correlation determiner612can determine whether a correlation event occurred, in response to interactions with a first electronic device and/or a second electronic device. Interactions with the first electronic device can include a user reducing power consumed by a component and/or by powering down a component of the first electronic device, such as a display included in the first electronic device. Interactions with the second electronic device can include a user initiating interaction with a second electronic device after interacting with a first electronic device, such as turning on a display included in the second electronic device, activating a power button of or otherwise powering on the second electronic device, and/or waking up or bringing the display included in the second electronic device into a higher power state. The generation of the directional profile and/or determination of whether the correlation event occurred in response to the user initiating interaction with the second electronic device can save battery power by performing these tasks in response to a possible need for synchronizing content. In some examples, the second electronic device can send a message to one or more other electronic devices indicating that the second electronic device is interacting with the user, prompting the one or more other electronic devices to generate their respective directional profiles and/or determine whether a correlation event has occurred.

In some examples, the correlation determiner612can determine that a correlation event has occurred based on IMU data and/or accelerometer data indicating that two or more electronic devices moved in same directions, rather than in opposite directions (which could 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 can indicate that a correlation event has not occurred. In some examples, the correlation determiner612can determine that a correlation event has occurred based on IMU data and/or accelerometer data indicating that two or more electronic devices have met a movement similarity condition for at least a threshold duration of time, 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, as non-limiting examples.

One or more of the electronic devices102,104,106,302,306,502,504,506,508can be selected as the electronic device that determines whether a correlation event occurs, and/or performs the functions of the correlation determiner612. In some examples, the electronic device can be selected as the correlation device based on user input and/or a user setting. In some examples, the electronic device can be selected as the correlation device based on administrator settings, such as a setting included in a server such as the remote correlation device508.

The electronic device600can include a state determiner614. The state determiner614can determine a state of the electronic device600, state information, and/or a state of an application executing on the electronic device600. The state information is data that enables the receiving device to navigate to specific content, e.g., via a deep link, an operating system intent, a resource locator, and the like. Thus, the state information can include an application state, including information related to the application that is stored in 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 a status of communication between the electronic device600and a server. In an example in which the application is a browser, the state information that the state determiner614determines can include a webpage or universal resource locator (URL) and a browser intent or a deeplink. In some examples in which the application is a browser, the state information can include the webpage or URL and a location on a webpage that the user is viewing. In an example in which the application is a game, the state information can include a state of the game, such as locations of objects, values of attributes of objects, and/or identities of players.

The electronic device600can include a state information message processor616. When the electronic device600is the sending device502, the state information processor616can generate and send a state information message to the receiving device504. The state information message can include the state information determined by the state determiner614. When the electronic device600is the receiving device504, the state information processor616can receive and process the state information message sent by the sending device502.

The electronic device600can include one or more applications618. The applications618can execute on the electronic device600. The applications618can include web browsers, games, or productively applications, as non-limiting examples.

The electronic device600can include a state updater620. The state updater620can update the state of the application618in response to receiving the state information message. The state updater620can, for example, update a state of a browser executing on the electronic device600by instructing the browser to request a particular webpage and/or scroll to a particular location on the webpage. The state updater620can, for example, update a state of a game executing on the electronic device by launching the game and/or changing locations and/or value of objects included in the game.

The electronic device600can include at least one processor622. The at least one processor622can execute instructions, such as instructions stored in at least one memory device624, to cause the electronic device600to perform any combination of methods, functions, and/or techniques described herein.

The electronic device600can include at least one memory device624. The at least one memory device624can include a non-transitory computer-readable storage medium. The at least one memory device624can store data and instructions thereon that, when executed by at least one processor, such as the processor622, are configured to cause the electronic device600to perform any combination of methods, functions, and/or techniques described herein. Accordingly, in any of the implementations described herein (even if not explicitly noted in connection with a particular implementation), software (e.g., processing modules, stored instructions) and/or hardware (e.g., processor, memory devices, etc.) associated with, or included in, the electronic device102can be configured to performed alone, or in combination with any of the electronic devices102,104,106,302,306,502,504,506,508, any combination of methods, functions, and/or techniques described herein.

The electronic device600can include at least one input/output node626. The at least one input/output node626may receive and/or send data, such as from and/or to, the electronic device600, and/or may receive input and provide output from and to a 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 node626can include any wired or wireless interfaces (such as Bluetooth, Institute for Electrical and Electronics Engineers 802.11, or a cellular communication interface) for communicating with other electronic devices. The input/output node626can communicate with other electronic devices102,104,106,302,306,502,504,506,508, such as sending any of the messages516,518,520,524,526,530,546,548,554,566,568,572,576(which can include directional profiles516,518,520,546,548,566,568, correlation notifications524,526, state information554,576, and/or state information requests572), via Internet Protocol via cellular base stations and intervening servers, via 802.11 communication protocols, and/or via peer-to-peer communication protocols such as Bluetooth.

In some implementations, the correlation event can be used in other workflows. As an example, the detection of a correlation event can be used in a process for suggesting content, an application to open, or some other action to the user, with user permission. More specifically, by way of example, a user may go jogging between 6 am and 7 am on a regular basis and listen to a playlist using earbuds and a phone. Implementations can use corresponding directional profiles for the phone and the earbuds to boost a 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 am to 7 am. Thus, in some implementations the correlation event may be used to trigger events other than or in addition to the state transfer.

FIG.7is a flowchart showing a method700according to an example. The method can include determining, by a correlation device, that a correlation event has occurred based on at least a first device and a second device having corresponding directional profiles (702). The method700can include, responsive to occurrence of the correlation event, causing the first device to transfer a state of the first device by sending a state information message to the second device (704).

In some examples, determining that the correlation 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 a same cluster, wherein devices in the same cluster have corresponding directional profiles.

In some examples, the corresponding directional profiles can indicate that movements tracked by an accelerometer of the first device and movements tracked by an accelerometer of the second device satisfied a movement similarity condition for at least a threshold duration of time.

In some examples, the first device can be associated with a first user, the second device can be associated with a second user, and the first user and the second user can be included in a same group.

In some examples, the state information message can include a state of a game associated with the same group.

In some examples, the corresponding directional profiles can indicate that movements tracked by an accelerometer of the first device and movements tracked by an accelerometer of the second device indicated same modes of transportation.

In some examples, the first device and the second device can be associated with a same user.

In some examples, the correlation device can be remote from the first device and the second device.

In some examples, the correlation device can be the first device.

In some examples, the first device can send the state information message based on the first device being accessed by a user more recently than the second device.

FIG.8is a flowchart showing a method800according to another example. The method800can be performed by a sending device, such as the sending device502. The method800can include detecting a correlation event based on a directional profile of the sending device corresponding to a directional profile of a receiving device (802). The method800can include, responsive to detecting the correlation event, sending a state information message from the sending device to the receiving device, the state information message including state information about at least one application executing on the sending device (804).

In some examples, detecting the correlation event can include performing a clustering function on accelerometer-tracked movements of the sending device and the receiving device, and determining that an output of the clustering function indicates that the sending device and the receiving device are included in a same cluster, wherein devices in the same cluster have corresponding directional profiles.

In some examples, the sending device and the receiving device can be associated with a same user.

In some examples, the sending device can be associated with a first user, the receiving device can be associated with a second user, and the first user and the second user can be included in a same group.

In some examples, the method800can further include the sending device sending the state information message from the sending device to the receiving device subsequent to detecting the correlation event and responsive to receiving an instruction to power down a component of the sending device.

FIG.9is a flowchart showing a method900according to another example. The method900can be performed by a receiving device, such as the receiving device504. The method900can include receiving a state information message from a sending device, the state information message being sent in response to detection of a correlation event, the correlation event being based on the receiving device and the sending device having corresponding directional profiles (902). The method900can include, based on the state information message, updating a state of at least one application executing on the receiving device (904).

In some examples, the sending device and the receiving device can be associated with a same user.

In some examples, the sending device can be associated with a first user, the receiving device can be associated with a second user, and the first user and the second user can be included in a same group.

In some examples, the receiving device can detect the correlation event and the method can further include, responsive to detecting the correlation event, sending, to the sending device, a state information request, and receiving the state information message as a response to the state information request.

In some examples, the receiving device can detect the correlation event and the method can further include, responsive to powering on a component of the receiving device, sending, to the sending device, a state information request, and receiving the state information message as a response to the state information request.

FIG.10shows an example of a generic computer device1000and a generic mobile computer device1050, which may be used with the techniques described here. Computing device1000is intended to represent various forms of digital computers, such as laptops, desktops, tablets, workstations, personal digital assistants, televisions, servers, blade servers, mainframes, and other appropriate computing devices. Computing device1050is intended to represent various forms of mobile devices, such as personal digital assistants, cellular telephones, smart phones, and other similar computing devices. The components shown here, their connections and relationships, and their functions, are meant to be examples only, and are not meant to limit implementations described and/or claimed in this document.

Computing device1000includes a processor1002, memory1004, a storage device1006, a high-speed interface1008connecting to memory1004and high-speed expansion ports1010, and a low speed interface1012connecting to low speed bus1014and storage device1006. The processor1002can be a semiconductor-based processor. The memory1004can be a semiconductor-based memory. Each of the components1002,1004,1006,1008,1010, and1012, are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate. The processor1002can process instructions for execution within the computing device1000, including instructions stored in the memory1004or on the storage device1006to display graphical information for a GUI on an external input/output device, such as display1016coupled to high speed interface1008. In other implementations, multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Also, multiple computing devices1000may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).

The memory1004stores information within the computing device1000. In one implementation, the memory1004is a volatile memory unit or units. In another implementation, the memory1004is a non-volatile memory unit or units. The memory1004may also be another form of computer-readable medium, such as a magnetic or optical disk.

The storage device1006is capable of providing mass storage for the computing device1000. In one implementation, the storage device1006may be or contain a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations. A computer program product can be tangibly embodied in an information carrier. The computer program product may also contain 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 memory1004, the storage device1006, or memory on processor1002.

The high speed controller1008manages bandwidth-intensive operations for the computing device1000, while the low speed controller1012manages lower bandwidth-intensive operations. Such allocation of functions is an example only. In one implementation, the high-speed controller1008is coupled to memory1004, display1016(e.g., through a graphics processor or accelerator), and to high-speed expansion ports1010, which may accept various expansion cards (not shown). In the implementation, low-speed controller1012is coupled to storage device1006and low-speed expansion port1014. The low-speed expansion port, which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet) may 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, e.g., through a network adapter.

The computing device1000may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server1020, or multiple times in a group of such servers. It may also be implemented as part of a rack server system1024. In addition, it may be implemented in a personal computer such as a laptop computer1022. Alternatively, components from computing device1000may be combined with other components in a mobile device (not shown), such as device1050. Each of such devices may contain one or more of computing device1000,1050, and an entire system may be made up of multiple computing devices1000,1050communicating with each other.

Computing device1050includes a processor1052, memory1064, an input/output device such as a display1054, a communication interface1066, and a transceiver1068, among other components. The device1050may also be provided with a storage device, such as a microdrive or other device, to provide additional storage. Each of the components1050,1052,1064,1054,1066, and1068, are interconnected using various buses, and several of the components may be mounted on a common motherboard or in other manners as appropriate.

The processor1052can execute instructions within the computing device1050, including instructions stored in the memory1064. The processor may be implemented as a chipset of chips that include separate and multiple analog and digital processors. The processor may provide, for example, for coordination of the other components of the device1050, such as control of user interfaces, applications run by device1050, and wireless communication by device1050.

Processor1052may communicate with a user through control interface1058and display interface1056coupled to a display1054. The display1054may be, for example, a TFT LCD (Thin-Film-Transistor Liquid Crystal Display) or an OLED (Organic Light Emitting Diode) display, or other appropriate display technology. The display interface1056may comprise appropriate circuitry for driving the display1054to present graphical and other information to a user. The control interface1058may receive commands from a user and convert them for submission to the processor1052. In addition, an external interface1062may be provided in communication with processor1052, so as to enable near area communication of device1050with other devices. External interface1062may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used.

The memory1064stores information within the computing device1050. The memory1064can be implemented as one or more of a computer-readable medium or media, a volatile memory unit or units, or a non-volatile memory unit or units. Expansion memory1074may also be provided and connected to device1050through expansion interface1072, which may include, for example, a SIMM (Single In Line Memory Module) card interface. Such expansion memory1074may provide extra storage space for device1050, or may also store applications or other information for device1050. Specifically, expansion memory1074may include instructions to carry out or supplement the processes described above, and may include secure information also. Thus, for example, expansion memory1074may be provided as a security module for device1050, and may be programmed with instructions that permit secure use of device1050. In addition, secure applications may be provided via the SIMM cards, along with additional information, such as placing identifying information on the SIMM card in a non-hackable manner.

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- or machine-readable medium, such as the memory1064, expansion memory1074, or memory on processor1052, that may be received, for example, over transceiver1068or external interface1062.

Device1050may also communicate audibly using audio codec1060, which may receive spoken information from a user and convert it to usable digital information. Audio codec1060may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset of device1050. Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, etc.) and may also include sound generated by applications operating on device1050.

The computing device1050may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a cellular telephone1080. It may also be implemented as part of a smart phone1082, personal digital assistant, or other similar mobile device.