Patent Description:
The subject technology provides a computer-implemented method for performing actions in a computing device as defined in claim <NUM>. Other aspects include corresponding systems, apparatuses, and computer program products for implementation of the computer-implemented method.

In one or more implementations, the method comprises placing a computing device in a normal mode, the normal mode comprising components of the computing device being powered, and an operational state of the computing device being loaded into memory systems of the computing device, in accordance with normal operation of the computing device, receiving, at the computing device, user interaction associated with a user, the user being associated with a mobile device, monitoring, while in the normal mode, a network for activity data associated with the mobile device, receiving, based on the monitoring for activity data, a first indication that the user intends to discontinue use of the computing device, and switching, based on the first indication, the computing device from the normal mode to a power-saving mode, wherein the power-saving mode comprises saving the operational state of the computing device in connection with limiting power to one or more of the components of the computing device. Other aspects include corresponding systems, apparatuses, and computer program products for implementation of the computer-implemented method.

In one or more implementations, a machine-readable medium includes instructions stored thereon that, when executed by a computing device, cause the computing device to place the computing device in a power-saving mode, the power-saving mode comprising saving an operational state of the computing device in connection with limiting power to one or more components of the computing device, monitor, while in the power-saving mode, a network for activity data associated with a mobile device, receive, based on the monitoring for activity data, a first indication that a user of the mobile device intends to use the computing device, and switch, based on the first indication, the computing device from the power-saving mode to a warming mode, the warming mode comprising restoring power to the one or more components and initiating loading the operational state of the computing device before the user physically interacts with the computing device Other aspects include corresponding methods, systems, apparatuses, and computer program products for implementation of the machine-readable medium.

A detailed description will be made with reference to the accompanying drawings:.

The detailed description set forth below is intended as a description of various configurations of the subject technology and is not intended to represent the only configurations in which the subject technology may be practiced. However, it will be clear and apparent to those skilled in the art that the subject technology is not limited to the specific details set forth herein and may be practiced without these specific details.

The subject technology provides a computer-enabled system and method for performing actions in a computing device (e.g., a laptop) (including, e.g., power management actions) based on sensor data from remote devices. A mobile device (e.g., a smartphone) is equipped with a location sensor such as a GPS and one or more motion sensors including, e.g., an accelerometer. The mobile device is connected to the computing device over a network. The network may encompass one or more of a local area network, WiFi, wide area network, personal area network (e.g., using Bluetooth), etc. In one or more implementations, the computing device and mobile device are linked to the same user account via the network of the Internet.

The computing device is configured to switch between a power-savings mode, a warming mode, and a normal mode depending on activity data it receives from the mobile device via the network. The activity data is compiled from sensors integrated with the mobile device (and other devices linked to the account) and provide an indication as to whether the user of the mobile device is intending to use or not use the computing device. For example, the activity data may include a user location based on a global positioning system (GPS), and the computing device may determine whether the user intends to use the computing device based on whether the user location indicates that the user is moving toward or away from the computing device. In this regard, the computing device, if in a power-saving mode, may wake up as the mobile device moves closer to the computing device, or enter the power-savings mode as the mobile device moves away from the computing device.

When switching from a normal mode to a power-savings mode, the computing device may limit or restrict power to certain components and save the operational state in a persistent memory. While in the power-savings mode, network circuitry (e.g., a wireless network adaptor) of the computing device may be activated without activating other components of the device. For example, the screen, main processor, and storage drives may remain powered-down in the power-saving mode The network circuitry may also be powered-down but periodically activated solely to connect to an access points near the computing device and to query a server to receive the activity data.

When the computing device is in the power-saving mode and receives activity data providing an indication that a user of the mobile device intends to use the computing device, the computing device switches from the power-saving mode to a warming mode. In this mode power is restored to any powered-down components and the operational state of the computing device is loaded before the user physically interacts with the computing device. Application updates may also be initiated, including software version updates, patches, as well as the download of user-notifications, emails, etc. Accordingly, all virtual assets required to begin using the device are loaded into memory, and any initial activities required to place the computing device into normal operational mode are performed.

In one or more implementations, activity data may be used to identify behavior patterns representative of when the computing device is expected to be activated. For example, sensor data may be correlated (e.g., by the server) with computing device usage times to determine patterns of sensor readings (e.g., in addition to location) leading up to use of the computing device. During the power-saving mode, the stored behavior patterns may be used to awaken the computing device before a predicted use of the device so that warming activities may be performed and application updates and content may be downloaded in expectation of the device being used. In one or more implementations, e.g., an update may be replicated to the computing device based on a like update to the mobile device and an indication that the user intends to use the computing device. In this manner, battery life is preserved and the user experience enhanced by making the computing device for ready for use in an up-to-date state when the user intends to use the device.

<FIG> is a diagram of an example system <NUM> for performing actions in a computing device based on sensor data from remote devices, according to one or more aspects of the subject technology. A system <NUM> may include one or more computing devices <NUM>, <NUM> (e.g., a smartphone, tablet or notebook computer, personal computer, PDA, etc.), one or more centralized servers <NUM>, and a remote storage <NUM> (e.g., a database).

According to various implementations, computing devices <NUM> and <NUM> may be tied to a user account <NUM>. Accordingly, a user <NUM> is authorized to use certain features of a respective device <NUM>, <NUM> by authenticating to user account <NUM>. Additionally, as will be described further, each device <NUM>, <NUM> may be authorized to influence the control of certain hardware and/or software features of the other device(s) by way of being associated with and/or authenticating to user account <NUM>.

User account <NUM> may be, e.g., a cloud-based or web-based user account or may be an enterprise account (e.g., LDAP account), and may function as a universal account for multiple devices. In this regard, information stored in connection with the user account may be centrally located on a third computing device, e.g., on a server <NUM> (e.g., in a "data cloud").

The various connections between computing devices <NUM> and <NUM>, server <NUM>, and storage <NUM> may be made over a wired or wireless connection. Server <NUM> may be operably connected to, e.g., first and second computing devices <NUM>, <NUM> over a network <NUM>. Network <NUM> may be a WAN, LAN, or any other network consisting of one or multiple networking technologies (such as satellite, cellular, cable, DSL, optical network, Ethernet over twisted pairs, and others), and which deploys one or multiple networking protocols for transferring data. Network <NUM> may also include, but is not limited to, any one or more of the following network topologies, including a bus network, a star network, a ring network, a mesh network, a star-bus network, a tree or hierarchical network, etc. Network <NUM> may also be a wireless personal area network that is created using, e.g., Bluetooth, Bluetooth Low Energy, infrared, IrDA, Wireless USB, etc..

Remote storage <NUM> may store information in connection with user account <NUM>. As will be described further, remote server may store activity data collected from device <NUM> and/or user-interaction data collected from device <NUM>. The functionality of server <NUM> and remote storage <NUM> may be implemented on the same physical server or distributed among a plurality of servers. Moreover, remote storage <NUM> may take any form such as relational databases, object-oriented databases, file structures, text-based records, or other forms of data repositories.

According to various aspects, computing devices <NUM> and <NUM> may be configured to load and execute one or more user interfaces <NUM> for interaction with one or more software applications, including web-applications provided by, e.g., server <NUM>. A user interface <NUM> may include an interface provided by a desktop or mobile operating system, or an interface provided by a stand-alone application (e.g., a web-browser or web-enabled application) executing on the device and managed by the operating system.

As depicted in <FIG>, computing device <NUM> may be operably connected to network <NUM> and/or server <NUM> by way of a mobile network <NUM>. Mobile network <NUM> may be part of, or operably connected to network <NUM> such that data received from device <NUM> is transmitted to network <NUM> via mobile network <NUM> and then transmitted to server <NUM> using network <NUM>. Mobile network <NUM> may include one or more wireless stations <NUM> for wirelessly communicating with device <NUM> or other similarly situated devices. A wireless station <NUM> may be, e.g., a local WiFi base station, wireless personal area network, or, in some aspects, a cell site (including a cell tower or antennae, or radio receiver/transmitter).

Computing device <NUM> may be configured with a wireless access point <NUM> (e.g., Bluetooth or Bluetooth Low Energy hardware) for establishing a direct wireless connection with devices over a personal area network. Using wireless access point <NUM>, primary computing device <NUM> may be configured to detect when device <NUM> is present within a predetermined range of access point <NUM>, and to connect to device <NUM> when authorized. For example, software operating on device <NUM> may broadcast, over wireless access point <NUM>, a code which when interpreted by corresponding software on a receiving device identifies device <NUM> as a computing device available for connection with other devices, e.g., that are associated with a particular type of user account. In various implementations, device <NUM> may broadcast the code together with a public key for establishing an encrypted connection.

<FIG> depicts an example computing device <NUM>, including example components for generating activity data and performing remote actions based on the activity data, according to one or more aspects of the subject technology. An example computing device <NUM> includes a processor <NUM>, a memory <NUM>, network circuitry <NUM>, WiFi Antennae <NUM>, GPS device <NUM>, and one or more motion sensors <NUM>. As will be described further, motion sensors <NUM> may be configured to detect movement of a mobile device that device <NUM> or one or more components thereof A motion sensor <NUM> may generally refer to any device capable of sensing a physical movement of hardware, including an integrated or connectable accelerometer, gyroscope, a proximity sensor, camera configured to detect motion, etc..

Processor <NUM> may execute instructions <NUM>, stored in memory <NUM>, to operate GPS <NUM> and/or sensors <NUM> to detect motion (e.g., movement) of computing device <NUM>, and to detect patterns of user activity over a period of time. Motion may be detected by any of sensors <NUM>, e.g., an accelerometer, gyroscope, compass, or by GPS-based location sensors <NUM>, or combination thereof. Additionally or in the alternative, device <NUM> may be able to determine a distance and direction of movement based on the sensor data collected by sensors <NUM>, e.g., based on a calculation including a detected acceleration from an accelerometer (<NUM>) over a duration of time. The distance of movement may be supplemented based on an orientation during the acceleration of computing device <NUM> read from the gyroscope or compass.

Data collected from GPS <NUM> and/or sensors <NUM> may be analyzed and patterns of sensor activity may be determined from the data. The determined sensor activity patterns may be anonymously stored (e.g., in memory <NUM> or in remote storage <NUM>). In one or more implementations, sensor activity patterns include sensor data (e.g., raw sensor data). In one or more implementations, a sensor activity pattern includes a signature of a group of sensor data collected from, e.g., one or more sensors <NUM> and/or GPS <NUM>. Device <NUM> may include one or more menus for deactivating or opting out of the storage of sensor activity patterns. These menus may be accessible, e.g., from user interface <NUM>. As will be described further, the sensor activity patterns may be used to anticipate future interactions between a user of device <NUM> and remotely situated device <NUM>, and to further determine whether device <NUM>, or the associated hardware, is or should be in normal, power-saving, or warming state.

With reference to <FIG>, periods of time in which computing device <NUM> is being used may also be determined. For example, device <NUM> may detect patterns of user interaction by way of a group of sensors on device <NUM>. For example, computing device <NUM> may sense touch by way of a touch screen, proximity of a user by way of a proximity sensor or camera activated to detect motion, motion sensors, or input by way of a keyboard or pointing device, or by way of other user-based commands and input These user interactions patterns may be used to determine periods of time in which computing device <NUM> is activated from a light sleep (e.g., only the screen off) or deep sleep with one or more components being provided limited power.

The user-interaction patterns determined by device <NUM> may also be stored (e.g., in memory <NUM> or in remote storage <NUM>). Computing device <NUM> may include one or more menus for deactivating or opting out of the storage of user-interaction patterns.

The sensor activity patterns determined at device <NUM> may be compared to the user-interaction patterns determined at device <NUM> to determine whether one or more of the sensor activity patterns from device <NUM> correlate with the intent of a user to use or discontinue use of computing device <NUM>. For example, a first pattern or sensor readings leading up to a prior use of computing device <NUM> may be determined from sensors <NUM> at computing device <NUM>. The sensor readings may include data from an accelerometer, gyroscope, compass, motion, camera, etc. Additionally or in the alternative, the first pattern may include a series of GPS or other location readings moving closer or farther from device <NUM> immediately before or after it is used, respectively,.

Sensor activity patterns and user interaction patterns may be stored for certain portions of a day or a specific range of time (e.g., hours, minutes, etc.) throughout the day. A different sensor activity patterns may also be associated with different ranges of time. In some aspects, the various patterns may be determined and/or stored for a range of time periods over a number of days. For example, system <NUM> may determine (e.g., by way of sensors <NUM>) that, for Monday through Friday, a user moves away from device <NUM> at or around <NUM>:<NUM> pm and device <NUM> remains in a power-saving mode between <NUM>:<NUM> pm and <NUM>:<NUM> am, at which the user returns. The same may be determined for the hours of <NUM>:<NUM> pm and <NUM>:<NUM> pm. Computing device <NUM> may be determined to be in the power-saving mode at different times on Saturdays and Sundays.

Once a user-interaction pattern for device <NUM> has been established (e.g., after a predetermined number of periods in which the system is in the power-saving mode), system <NUM> may determine appropriate times to wake certain components of device <NUM> during idle times based on the detection of sensor activity patterns. For example, device <NUM> may receive a pattern of sensor readings and correlate the received pattern with a stored pattern to determine that the user of device <NUM> intends to use device <NUM>. Based on this determination, device <NUM> may switch from a power-savings mode to a warming mode to initialize normal operation of the device before the user begins use of device <NUM>.

Computing device <NUM> may be in a normal mode in which most if not all components of device <NUM> are powered and all software activities that ready device <NUM> for use have been completed (e.g., software has been cached and/or loaded into the appropriate places in random-access memory (RAM)). Device <NUM> may enter the normal mode by way of the detection of user interactions (e.g., by way of user input). Device <NUM> may receive a newly detected sensor activity pattern from device <NUM> and correlate the pattern with a stored pattern to determine that the user of device <NUM> intends to discontinue use of device <NUM>. Device <NUM> may then be switched from the normal mode to the power-saving mode based on this determination.

Based on user-interaction patterns determined by device <NUM> (e.g., after a predetermined number of periods in which the system transitions between the powered-down, warming, and/or normal states), device <NUM> may determine periods of time in which device <NUM> is expected to be in power-savings mode. In one example, computing device <NUM> may predict that the system will be in a powered-down state between <NUM>:<NUM> pm and <NUM>:<NUM> am. When in power-savings mode during this time, or a predetermined time before the power-savings mode is anticipated to end, device <NUM> may activate network circuitry <NUM> to facilitate a connection to device <NUM>. Device <NUM> may automatically connect to network <NUM> and, on receiving activity data, including or representative of a predetermined sensor activity pattern, begin warming without waking other components of device <NUM> whose power has been limited.

In one or more implementations, device <NUM> may keep network circuitry <NUM> active while in the power-savings mode to monitor network <NUM> for activity data, including predetermined sensor activity patterns. In one or more implementations, computing device <NUM> may periodically wake network circuitry <NUM> while in the power-savings mode to receive activity data. When communication with device <NUM> during power-savings mode, device <NUM> may not wake (e g. , provide power to) a display during and after communication with device <NUM>. Instead, when a predetermined sensor activity pattern is determined from the activity data, device <NUM> may quietly begin loading all the required programs into memory so that device <NUM> is ready for use by the user. Other components having limited power by way of the power-savings mode may be powered and activated at the same time or when device <NUM> receives user interaction to place device <NUM> in normal mode.

With reference to <FIG>, communication between device <NUM> and device <NUM> during power-savings mode of device <NUM> may occur in various ways. In one or more implementations, activity data may be received by device <NUM> from server <NUM>. In this regard, device <NUM> may periodically upload the activity data to server <NUM>, e.g., for storage in storage <NUM> in connection with user account <NUM>. Device <NUM> may periodically poll server <NUM> for activity data. In one or more implementations, server <NUM> may push activity data to device <NUM> when the activity data becomes available to server <NUM> (e.g., by way of being uploaded by device <NUM>), or when a predetermined pattern is detected within the activity data. In one or more implementations, device <NUM> connects directly to device <NUM>. For example, device <NUM> and device <NUM> may automatically pair over Bluetooth when within range of the Bluetooth connection, or the devices may connect over the same WiFi access point or LAN.

<FIG> depicts a first example process <NUM> for performing actions in a computing device based on sensor data from remote devices, according to aspects of the subject technology. For explanatory purposes, example process <NUM> is described herein with reference to the components of <FIG>, <FIG>, and <FIG>. Further for explanatory purposes, the blocks of example process <NUM> are described herein as occurring in serial, or linearly. However, multiple blocks of example process <NUM> may occur in parallel. In addition, the blocks of example process <NUM> need not be performed in the order shown and/or one or more of the blocks of example process <NUM> need not be performed.

In the depicted example flow diagram, computing device <NUM> is placed into a power-savings mode (<NUM>). When the power-saving mode is initiated, an operational state of the computing device is saved in connection with power to one or more components of the computing device being limited. For example, device <NUM> may turn off or pause a hard drive or optical disc player, and may store one or more open documents and programs in memory in non-volatile memory (e.g., on a hard disk). Device <NUM> then remains in a low-power state to save power while maintaining readiness to activate and power-up quickly upon detection of user-interaction with the device.

While in power-saving mode, device <NUM> may monitor (e.g., by way of network circuitry <NUM>) network <NUM> for activity data associated with device <NUM> (<NUM>). Activity data may include, e.g., data representative of sensor activity patterns or sensor data for which such patterns may be determined. The activity data may be uploaded to server <NUM> by devices (e.g., device <NUM>) linked to user account <NUM>. In various aspects, user <NUM> may, in connection with registering device <NUM> with user account <NUM>, authorize device <NUM> to take sensor readings and upload the sensor readings as the activity data to server <NUM>. Device <NUM> may, e.g., periodically poll server <NUM> to determine if the activity data has been made uploaded or otherwise made available to server <NUM> by device <NUM>.

In one or more implementations, network <NUM> may include personal area networks established by way of direct wireless interaction between device <NUM> and device <NUM>. The devices also may communicate directly through a LAN. In this regard, device <NUM> may monitor network <NUM> for the presence of device <NUM> on the network, automatically connect with device <NUM> (e.g., via Bluetooth) and receive the activity data from device <NUM> directly.

In one or more implementations, placing device <NUM> in a power-saving mode includes limiting power to network circuitry <NUM> of device <NUM>. To monitor network <NUM> for the activity data, network circuitry <NUM> may be activated to facilitate a connection to device <NUM> over network <NUM>, without activating other components of device <NUM> whose power has been limited. For example, power to a display screen of device <NUM> may be suspended. The display screen may remain without power when network circuitry <NUM> is activated to receive the activity data. The display screen may also remain inactive while power is restored to one or more other components when device <NUM> enters warming mode, and during the time that loading of the operational state is initiated. The display screen may remain inactive until user-interaction with device <NUM> is detected, at which time device <NUM> may enter the normal mode.

Based on the monitoring for activity data, device <NUM> may receive (e.g., from device <NUM> or server <NUM>) an indication that a user of device <NUM> intends to use device <NUM> (<NUM>). In this regard, the activity data may be compared to one or more predetermined patterns of user interaction with device <NUM>, and the indication determined based on the comparison.

In one or more implementations, a first pattern of sensor readings received from device <NUM> for a first period of time leading up to a prior use of device <NUM> is determined. For example, the first pattern of sensor readings may be a specific order of readings taken from a specific combination of sensors that is received before device <NUM> receives user interaction. The first pattern may be stored in a form that may be indexed at a later time. The indication that the user intends to use the device may be based on, e.g., receiving a second pattern of sensor readings and correlating the second pattern of sensor readings with the first pattern of sensor readings.

In one or more implementations, device <NUM> may provide location data to server <NUM> and/or device <NUM>. The first indication may be based on, e.g., determining that the location data indicates that mobile device is moving closer to the computing device. In one or more implementations, device <NUM> may determine its current location device using a global positioning system (GPS). For example, device <NUM> may be fitted with a GPS device and receive GPS coordinates for its current location. These coordinates may be provided to server <NUM>. In this regard, determining that the mobile device has moved to within a threshold distance of the current location may be based on the comparing the GPS coordinates for the current location of device <NUM> with GPS coordinates for the current location of device <NUM>. In one or more implementations, the first indication is based on the location data associated with device <NUM> and motion-related activity sensed by device <NUM>.

Based on receiving the first indication that a user of device <NUM> intends to use device <NUM>, device <NUM> switches from the power-saving mode to a warming mode (<NUM>). As described previously, the warming mode may include, e.g., restoring power to the one or more components and initiating loading the operational state of the computing device before the user physically interacts with the computing device.

In one or more implementations, the warming mode may also include receiving one or more updates to one or more respective applications operating on the computing device. For example, an application may periodically poll respective servers associated with the application while the device is in the normal mode. When the device enters into the power-savings mode, such polling may be disabled. However, the polling may be initiated upon the device entering into the warming mode. Additionally or in the alternative, during the warming mode, computing device <NUM> may determine that device <NUM> received an update to one or more applications operating on device <NUM> that are also operating on device <NUM>. For example, user account <NUM> may store version information for each account-lined device and a time in which an update to software was performed on each device. Based on device <NUM> determining that one or more updates were performed on device <NUM> during a period of time (e.g., within a thirty-minute window prior to receiving the indication that the user intends to use device <NUM>), device <NUM> may initiate the same update(s) on device <NUM>.

<FIG> depicts a second example process <NUM> for performing actions in a computing device based on sensor data from remote devices, according to aspects of the subject technology. For explanatory purposes, example process <NUM> is described herein with reference to the components of <FIG>, <FIG>, and <FIG>. Further for explanatory purposes, the blocks of example process <NUM> are described herein as occurring in serial, or linearly. However, multiple blocks of example process <NUM> may occur in parallel. In addition, the blocks of example process <NUM> need not be performed in the order shown and/or one or more of the blocks of example process <NUM> need not be performed.

In the depicted example flow diagram, computing device <NUM> is placed into a normal mode (<NUM>). The normal mode may be initiated or maintained by way of user interaction with device <NUM>. In the depicted example, the normal mode includes the components of device <NUM> being powered and the operational state of device <NUM> being loaded into the memory systems of device <NUM> in accordance with normal operation of the device. In various aspects, user interaction may be received, and results of the user interaction generated, while in the normal mode. While in the normal mode, device <NUM> may monitor (e.g., by way of network circuitry <NUM>) network <NUM> for activity data associated with device <NUM> (<NUM>). Device <NUM> may monitor network <NUM> for the activity data using any of the previously described methods.

According to <FIG>, based on the monitoring for activity data, device <NUM> may receive (e.g., from device <NUM> or server <NUM>) an indication that a user of device <NUM> intends to discontinue use of device <NUM> (<NUM>). As described previously, the activity data may be compared to one or more predetermined patterns of user interaction with device <NUM>, and the indication determined based on the comparison.

In one or more implementations, a first pattern of sensor readings received from device <NUM> for a first period of time following a prior use of device <NUM> is determined. For example, the first pattern of sensor readings may be a specific order of readings taken from a specific combination of sensors that is received after device <NUM> receives user interaction and in which device enters a power-savings mode for some period of time before receiving further user interaction. The first pattern may be stored in a form that may be indexed at a later time. The indication that the user intends to discontinue use of the device may be based on, e.g., receiving a second pattern of sensor readings and correlating the second pattern of sensor readings with the first pattern of sensor readings.

In one or more implementations, device <NUM> may provide location data to server <NUM> and/or device <NUM>. The indication may be based on, e.g., determining that the location data indicates that device <NUM> is moving farther from device <NUM>. In one or more implementations, device <NUM> may determine its current location device using GPS, and GPS coordinates of device <NUM> may be provided to server <NUM>. In this regard, determining that device <NUM> has moved farther from device <NUM> may include determined that device <NUM> has moved outside a threshold distance of the current location based on the comparing the GPS coordinates for the current location of device <NUM> with GPS coordinates for the current location of device <NUM>.

Based on receiving the indication that a user of device <NUM> intends to discontinue use of device <NUM>, device <NUM> switches from the normal mode to the power-saving mode (<NUM>).

The blocks of example process <NUM> may be combined with the blocks of process <NUM>. For example, the indication that the user of device <NUM> intends to discontinue use of device <NUM> may be received after device <NUM> has entered into a normal mode by way of a warming mode initiated from a received indication that the user of device <NUM>. intended to use device <NUM>, and vice versa.

Many of the above-described example processes <NUM> and <NUM>, and related features and applications, may be implemented as software processes that are specified as a set of instructions recorded on a computer readable storage medium (also referred to as computer readable medium). When these instructions are executed by one or more processing unit(s) (e.g., one or more processors, cores of processors, or other processing units), they cause the processing unit(s) to perform the actions indicated in the instructions. Examples of computer readable media include, but are not limited to, CD-ROMs, flash drives, RAM chips, hard drives, EPROMs, etc. The computer readable media does not include carrier waves and electronic signals passing wirelessly or over wired connections.

The term "software" is meant to include, where appropriate, firmware residing in read-only memory or applications stored in magnetic storage, which can be read into memory for processing by a processor. Also, in some implementations, multiple software aspects of the subject disclosure can be implemented as sub-parts of a larger program while remaining distinct software aspects of the subject disclosure. In some implementations, multiple software aspects can also be implemented as separate programs. Finally, any combination of separate programs that together implement a software aspect described here is within the scope of the subject disclosure. In some implementations, the software programs, when installed to operate on one or more electronic systems, define one or more specific machine implementations that execute and perform the operations of the software programs.

<FIG> is a diagram illustrating an example electronic system <NUM> for use in connection with performing actions in a computing device based on sensor data from remote devices, according to one or more aspect of the subject technology. Electronic system <NUM> may be a computing device for execution of software associated with one or more portions or steps of process <NUM> or <NUM>, or components and processes provided by <FIG>. Electronic system <NUM> may be representative of computing device <NUM>. Electronic system <NUM> may be representative, in combination with the disclosure regarding <FIG>, of computing device <NUM>. In this regard, electronic system <NUM> or computing device <NUM> may be a personal computer or a mobile device such as a smartphone, tablet computer, laptop, PDA, or other touch screen or television with one or more processors embedded therein or coupled thereto, or any other sort of computer-related electronic device having network connectivity.

Electronic system <NUM> may include various types of computer readable media and interfaces for various other types of computer readable media. In the depicted example, electronic system <NUM> includes a bus <NUM>, processing unit(s) <NUM>, a system memory <NUM>, a read-only memory (ROM) <NUM>, a permanent storage device <NUM>, an input device interface <NUM>, an output device interface <NUM>, and one or more network interfaces <NUM>. In some implementations, electronic system <NUM> may include or be integrated with other computing devices or circuitry for operation of the various components and processes previously described.

Bus <NUM> collectively represents all system, peripheral, and chipset buses that communicatively connect the numerous internal devices of electronic system <NUM>. For instance, bus <NUM> communicatively connects processing unit(s) <NUM> with ROM <NUM>, system memory <NUM>, and permanent storage device <NUM>.

From these various memory units, processing unit(s) <NUM> retrieves instructions to execute and data to process in order to execute the processes of the subject disclosure. The processing unit(s) can be a single processor or a multi-core processor in different implementations.

ROM <NUM> stores static data and instructions that are needed by processing unit(s) <NUM>. and other modules of the electronic system. Permanent storage device <NUM>, on the other hand, is a read-and-write memory device. This device is a non-volatile memory unit that stores instructions and data even when electronic system <NUM> is off. Some implementations of the subject disclosure use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as permanent storage device <NUM>.

Other implementations use a removable storage device (such as a floppy disk, flash drive, and its corresponding disk drive) as permanent storage device <NUM>. Like permanent storage device <NUM>, system memory <NUM> is a read-and-write memory device. However, unlike storage device <NUM>, system memory <NUM> is a volatile read-and-write memory, such a random access memory. System memory <NUM> stores some of the instructions and data that the processor needs at runtime. In some implementations, the processes of the subject disclosure are stored in system memory <NUM>, permanent storage device <NUM>, and/or ROM <NUM>. From these various memory units, processing unit(s) <NUM> retrieves instructions to execute and data to process in order to execute the processes of some implementations.

Bus <NUM> also connects to input and output device interfaces <NUM> and <NUM>. Input device interface <NUM> enables the user to communicate information and select commands to the electronic system. Input devices used with input device interface <NUM> include, e.g., alphanumeric keyboards and pointing devices (also called "cursor control devices"). Output device interfaces <NUM> enables, e.g., the display of images generated by the electronic system <NUM>. Output devices used with output device interface <NUM> include, e.g., printers and display devices, such as cathode ray tubes (CRT) or liquid crystal displays (LCD). Some implementations include devices such as a touchscreen that functions as both input and output devices.

Finally, as shown in <FIG>, bus <NUM> also couples electronic system <NUM> to a network (not shown) through network interfaces <NUM>. Network interfaces <NUM> may include, e.g., a wireless access point (e.g., Bluetooth or WiFi) or radio circuitry for connecting to a wireless access point. Network interfaces <NUM> may also include hardware (e.g., Ethernet hardware) for connecting the computer to a part of a network of computers such as a local area network ("LAN"), a wide area network ("WAN"), wireless LAN, or an Intranet, or a network of networks, such as the Internet. Any or all components of electronic system <NUM> can be used in conjunction with the subject disclosure.

These functions described above can be implemented in computer software, firmware or hardware. The techniques can be implemented using one or more computer program products. Programmable processors and computers can be included in or packaged as mobile devices. The processes and logic flows can be performed by one or more programmable processors and by one or more programmable logic circuitry. General and special purpose computing devices and storage devices can be interconnected through communication networks.

Some implementations include electronic components, such as microprocessors, storage and memory that store computer program instructions in a machine-readable or computer-readable medium (alternatively referred to as computer-readable storage media, machine-readable media, or machine-readable storage media). Some examples of such computer-readable media include RAM, ROM, read-only compact discs (CD-ROM), recordable compact discs (CD-R), rewritable compact discs (CD-RW), read-only digital versatile discs (e.g., DVD-ROM, dual-layer DVD-ROM), a variety of recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.), flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.), magnetic and/or solid state hard drives, read-only and recordable Blu-Ray® discs, ultra density optical discs, any other optical or magnetic media, and floppy disks. The computer-readable media can store a computer program that is executable by at least one processing unit and includes sets of instructions for performing various operations. Examples of computer programs or computer code include machine code, such as is produced by a compiler, and files including higher-level code that are executed by a computer, an electronic component, or a microprocessor using an interpreter.

While the above discussion primarily refers to microprocessor or multi-core processors that execute software, some implementations are performed by one or more integrated circuits, such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs). In some implementations, such integrated circuits execute instructions that are stored on the circuit itself.

To provide for interaction with a user, implementations of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; e.g., feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; e.g., by sending web pages to a web browser on a user's client device in response to requests received from the web browser.

Examples of communication networks include a local area network ("LAN") and a wide area network ("WAN"), an inter-network (e.g., the Internet), and peer-to-peer network,,,, (e.g., ad hoc peer-to-peer networks).

To illustrate this interchangeability of hardware and software, various illustrative blocks, modules, elements, components, methods, and algorithms have been described above generally in terms of their functionality Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system.

It is understood that the specific order or hierarchy of steps in the processes disclosed is an illustration of example approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged. Some of the steps may be performed simultaneously. The accompanying method claims present elements of the various steps in a sample order, and are not meant to be limited to the specific order or hierarchy presented.

The previous description provides various examples of the subject technology, and the subject technology is not limited to these examples. Thus, the claims are not intended to be limited to the aspects shown herein, but is to be accorded the full scope consistent with the language claims, wherein reference to an element in the singular is not intended to mean "one and only one" unless specifically so stated, but rather "one or more.

The term website, as used herein, may include any aspect of a website, including one or more web pages, one or more servers used to host or store web related content, etc. Accordingly, the term website may be used interchangeably with the terms web page and server. For example, a processor configured to monitor and control an operation or a component may also mean the processor being programmed to monitor and control the operation or the processor being operable to monitor and control the operation. Likewise, a processor configured to execute code can be constated as a processor programmed to execute code or operable to execute code.

A phrase such as an "embodiment" may refer to one or more embodiments and vice versa. A phrase such as a "configuration" may refer to one or more configurations and vice versa.

Claim 1:
A computer-implemented method, comprising:
placing (<NUM>) a computing device (<NUM>) in a power-saving mode, the power-saving mode comprising saving an operational state of the computing device in connection with limiting power to one or more components of the computing device;
monitoring (<NUM>), while in the power-saving mode, a network for activity data associated with a mobile device (<NUM>);
receiving (<NUM>), based on the monitoring for activity data, a first indication that a user of the mobile device intends to use the computing device, the indication being based on a comparison between the activity data and one or more predetermined patterns of user interaction with the computing device; and characterised in that the method further comprises:
switching (<NUM>), based on receiving the first indication, the computing device from the power-saving mode to a warming mode, the warming mode comprising restoring power to the one or more components while at least one other of the one or more components, including a display screen, remain in the power-saving mode and initiating loading the operational state of the computing device before the user physically interacts with the computing device and while the at least one other of the one or more components, including the display screen, remain in the power-saving mode.