# Patent

## Title
System and method for automatically adjusting an idle time of a computing device based on a pattern of user activity that indicates a period of time that the user is not in a predetermined area

## Abstract

A system and method is disclosed for adjusting power consumption of a computing device. The computing device is configured with one or more sensors to sense when a user moves away and returns to the computing device. Over a period of time, the computing device determines a pattern of activity related to how long the user is normally away from the computing device during particular times of the day. The computing device may then adjust power consumption of the device or associated components during times of the day for which a pattern of activity has been determined. For example, the computing device may adjust a duration that the computing device will remain idle before power to the computing device is limited.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
The present application is a continuation of U.S. patent application Ser. No. 13/475,886 entitled “System and Method for Adjusting an Idle Time of a Hardware Device Based on a Pattern of User Activity that Indicates a Period of Time That the User is Not in a Predetermined Area,” filed on May 18, 2012, the disclosures of which is hereby incorporated by reference in its entirety for all purposes.


BACKGROUND
To save battery power, laptops and other computing devices may turn off an associated display screen and to into a suspended mode, or power down, after a predetermined amount of time being idle. However, just because a user is not interacting with a computing device does not mean that the device is “idle.” For example, the user may merely be reading lengthy content of a document or webpage displayed on the device. In this case, turning off or lowering the brightness of the display screen may annoy the user. Alternatively, when the device is truly not being used, the device or components thereof may not need to be operating at full power.
SUMMARY
The subject technology provides a system and computer-implemented method for managing power consumption in a computing device. According to some aspects, a computer-implemented method may include providing a duration of time that the computing device will remain idle, for a predetermined period, before power to one or more components of the computing device is limited, sensing a user move away from and return to the computing device one or more times during the predetermined time period, determining an average length of time that the user is not proximate to the computing device during the predetermined time period, and adjusting, based on the average length of time, the duration that the computing device will remain idle, during the predetermined time period, before power to the one or more components is otherwise limited. Other aspects include corresponding systems, apparatus, and computer program products for implementation of the computer implemented method.
In other aspects, a machine-readable media may include instructions thereon that, when executed, perform a method. In this regard, the method may include receiving, from one or more sensors associated with a computing device, one or more sensing signals, determining, from the sensing signals, one or more periods of time that a user is not proximate to the computing device, and adjusting a power consumption associated with the hardware device based on the one or more periods of time. Other aspects include corresponding systems, apparatus, and computer program products for implementation of the computer implemented method.
A system may include a power regulator associated with a hardware device, one or more sensors configured to determine the presence of a user in a predetermined area, a processor, and a memory. The memory may include instructions thereon that, when executed by the processor, cause the processor to receive, from the one or more sensors, one or more presence signals, determine, from the presence signals, one or more periods of time that a user is not in the predetermined area, determine, from the periods of time, a pattern of user activity, and adjust the power consumption associated with the hardware device based on the pattern of user activity.
The previously described aspects and other aspects may provide one or more advantages, including, but not limited to, providing a mechanism to prevent unnecessarily limiting the power to a computing device, thereby decreasing the annoyance of a user having to interact with or restart the computing device, and to save power resources that would otherwise be expended during a restart of the device after an unnecessary shutdown, or from an anticipated subsequent extended absence of the user from the device.
It is understood that other configurations of the subject technology will become readily apparent from the following detailed description, wherein various configurations of the subject technology are shown and described by way of illustration. As will be realized, the subject technology is capable of other and different configurations and its several details are capable of modification in various other respects, all without departing from the scope of the subject technology. Accordingly, the drawings and detailed description are to be regarded as illustrative in nature and not as restrictive.



BRIEF DESCRIPTION OF THE DRAWINGS
A detailed description will be made with reference to the accompanying drawings:
FIG. 1 is a diagram of example system for managing power consumption based on an anticipated interaction with a user.
FIG. 2 is a diagram of example system for managing power consumption in a computing device.
FIG. 3 is a flowchart illustrating an example process for managing power consumption in a computing device.
FIG. 4 is a diagram illustrating an example machine or computer that self-manages power consumption based on an anticipated interaction with a user.



DETAILED DESCRIPTION
FIG. 1 is a diagram of example system for managing power consumption based on an anticipated interaction with a user according to some aspects of the subject technology. A system 100 may include a computing device 101 (for example, a smart phone, tablet or notebook computer, personal computer, game console, PDA, a television or other display device with one or more computing devices embedded therein or attached thereto, or the like), operably connected to a sensor device 102. Sensor device 102 may generally refer to any device capable of sensing a user 103, including an integrated or connectable a proximity sensor, inductive sensor, pressure sensor, webcam, CCD camera, portable digital camera, camcorder, or the like. As will be described further with regard to FIG. 2, sensor device 102 may be configured to detect the presence of user 103, and a pattern of user activity based on the user presence over a period of time. In this manner, the determined pattern of activity may be used to anticipate an interaction between user 103 and computing device 101 (or a hardware device operably connected thereto), and to further determine whether computing device 101, or the associated hardware, is or should be in an idle state.
Computing device 101 may include several associated or integrated hardware devices 104, for example, a power supply, a display screen, optical media player (Blu-Ray, DVD, CD-ROM, or the like), WiFi or other network adapter, printer, webcam, and the like. Each of these hardware devices may be associated with a power consumption. The power consumption may include a rate of consumption or a power timeout period. For example, the power timeout period may be a time duration that computing device 101 or an associated hardware device may be idle before power to computing device 101 or the hardware device is limited (for example, suspended or powered down). For example, on computing device 101 being idle for an period of time greater than the power timeout period, computing device 101 may initiate a suspension or power down of the device's power supply, thereby shutting down other related systems of the device. Which hardware devices 104 are selected to be suspended or powered down may, in some aspects, depend on the anticipated user interaction, the time of day, and/or type of programs currently being executed by computing device 101. For example, if computing device 101 is playing audio files, and has been unattended for a period of time, the display screen or WiFi may be suspended on exceeding power timeout periods related to those components, but power to audio systems may be retained.
FIG. 2 is a diagram of example system 200 for managing power consumption in a computing device according to some aspects of the subject technology. System 200 may include a processor 201, a memory unit 202, a power regulator 203, one or more hardware components 204, and one or more sensors 205 configured to determine the presence of a user. Power regulator 204 may be implemented as hardware or software. For example, power regulator 204 may be a power supply operably connected to hardware components 204 for proving power to hardware components 204, or may be software (for example, stored on memory unit 202) that, when executed by processor 201, adjusts (for example, regulates) power supplied to a power supply or other individual hardware components 204. In this regard, power regulator 204, memory unit 202, and/or a hardware power supply may be a single component or distributed across a group of components. In one example, power regulator 204 instructs a power supply (for example, as a hardware component 204) to supply a predetermined or adjusted amount of power to one or more hardware components 204.
One or more sensors 205 may be configured to determine the presence of a user (for example, user 103) proximate to a computing device associated with system 200. For example, a sensor 205 may include a proximity, inductive, or pressure sensor operably connected to the computing device. Accordingly, sensor 205 may be mounted on a chassis or bezel of a laptop or other computing device, or positioned near or around a keyboard. Sensor 205, when implemented as a proximity sensor, may determine when a user is within a predetermined area (including, for example, a location), or has moved away from and returned to the predetermined area. The predetermined area may include, for example, an area in front of or proximate to the computing device, or a predetermined distance away from the device. Sensor 205, when implemented as an inductive or pressure sensor, may determine when the user is touching or otherwise interacting with the computing device (for example, resting at least a portion of one or both of the user's hands on the keyboard or bezel of the device). In other aspects, sensor 205 may be camera circuitry operably connected to the computing device (for example, mounted on or connected to a display screen). In this regard, the camera circuitry may be configured to provide the one or more presence signals to processor 201 based on visual data collected from a viewing of the predetermined area. For example, the camera may use facial recognition techniques to identify the presence of the user. In some aspects, sensor 205 may further provide a signal when the user is present, and the length of time that the signal is absent may be recorded to determine how long the user normally spends away from the computer over the course of a day, or portions thereof.
Memory unit 202 may be implemented as a read-only memory (for example, ROM 403) or a system memory (for example, system memory 404). Memory unit 202 may include instructions 206 stored thereon that, when executed by processor 201, cause processor 201 to receive, from sensor 205, one or more presence signals (for example, a signal or data instructing processor 201 on whether a user has been detected), and determine, from the one or more presence signals, one or more periods of time that a user is not present (for example, not proximate to the device). Memory unit 202 may further include, stored thereon, a power consumption value, for example, a time duration that one or more associated hardware components 204 will remain idle before power regulator 203 is instructed to adjust (for example, limit) power consumption to the hardware components.
Periods of time that sensor 205 detects that a user is not presence may be recorded (for example, on memory 202) and analyzed to determine a pattern of user activity. The pattern of activity may include an average length of time that the user is not in a predetermined area during a predetermined time of the day. In one example, memory 202 may store activity data for certain portions of a day or a specific range of time (for example, hours, minutes, or the like) throughout the day. A different pattern of activity may also be associated with different ranges of time. In some aspects, the pattern of activity may be determined for a range of time periods over a number of days. For example, system 200 may determine that, for Monday through Friday, the user normally spends a first amount of time away from the computing device during the hours of 9:00 am and 12:00 pm, and 1:00 pm and 5:00 pm, and a second amount of time between the hours of 12:00 pm and 1:00 pm. A third amount of time may be spent away from the computing device on Saturdays and Sundays.
Once a pattern of user activity has been established (for example, after a predetermined number of periods in which the user moved away from the device), system 200 may adjust power consumption based on the pattern of user activity. In one example, a power timeout period may be increased (for example, extended) on the pattern showing that the user generally returns within a predetermined period of time after an expiration of the power timeout.
In this manner, for a predetermined period of the day, if the user normally returns to the computer just after the currently set power timeout period expires, the system may automatically adjust the power timeout period so that the associated hardware component 204 is not suspended or powered-down before the user is expected to return on a subsequent absence of the user. Additionally or in the alternative, the power timeout period may be shortened on the pattern showing that the user generally returns after a predetermined period of time after an expiration of the power timeout. For example, if a current power timeout period is set at 15 minutes, and the user is always absent for more than a 30 minutes, the power timeout period may be shortened to 5 minutes to save power resources that would otherwise be expended during an expected subsequent extended absence of the user from the associated computing device. Similarly, the power timeout period may be shortened on the pattern showing that the user generally returns within a predetermined period of time before the expiration of the power timeout period.
In some aspects, the adjustment to the power timeout period may be incremental. For example, the power timeout period may be increased or decreased in 5 minute increments. In this regard, the adjustment may be implemented after a predetermined number of periods of time that the user was determined to be not present, a predetermined number of times the user was determined to be present, or after a predetermined period of time (for example, every 3 hours). Additionally or in the alternative, adjustments to other forms of power consumption may be implemented based on a determined pattern of user activity. For example, system 200 may adjust total power or a rate of power compensation, or the like.
In other aspects, system 200, on determining the presence of the user, may adjust power consumption based on current presence of the user. For example, system 200 may adjust (for example, increase) the power timeout period to delay a suspension of a hardware device that would otherwise be suspended for lack of user interaction with the device. In some aspects, if a user is detected, a power timeout period associated with one or more hardware components 204 may be disabled or extended. If no user is detected (for example, after a predetermined period of time), the power timeout period may be reduced or the associated hardware components immediately placed into a suspended mode or powered down. If the user is detected as moving away from the associated computing device, and system 100 does not detect the user return within a predetermined amount of time (for example, x seconds), system 100 may place the associated hardware components into the suspended mode or powered down. If a user is detected before a hardware component is suspended or powered down, the power timeout period may be reset or extended.
FIG. 3 is a flowchart illustrating an example process for managing power consumption in a computing device. According to some aspects, the process of FIG. 3 may be executed by the previously described system 200, and/or by the interaction of instructions 206 with system 200. In block 301, a duration of time is provided, the duration of time being a duration that the computing device will remain idle, for a predetermined time period (for example, during a day), before power to one or more components of the computing device is automatically adjusted (for example, limited). In block 302, one or more sensors sense that a user moved away from and returned to a computing device one or more times during the predetermined time period. As described previously, the one or more sensors may include proximity, inductive, or pressure sensors, or a camera, operably connected to the computing device.
In block 303, an average length of time that the user is not proximate to the computing device during the predetermined time period is determined. The average length of time may be based on one or more periods of time that a user is determined to be not proximate to the computing device by the one or more sensors. In block 304, the duration that the computing device will remain idle is automatically adjusted, based on the average length of time, before power to the one or more components is otherwise adjusted (for example, limited). In one example, if system 200 determines that the average length of time shows that the user normally begins using the computing device within a predetermined period of time after an expiration of the duration provided by block 301, then the duration may be increased. In this regard, the duration may be increased based on an average time that the user was not proximate to the computing device after the expiration of a power timeout up until the user began using the computing device.
In another example, if system 200 determines that the average length of time shows that the user normally begins using the computing device more than a predetermined period of time after an expiration of the duration provided by block 301, then the duration may be decreased. Similarly, if system 200 determines that the average length of time shows that the user normally begins using the computing device more than a predetermined period of time before the expiration of the duration provided by block 301, then the duration may be decreased. In this manner, power resources that would otherwise be expended while the user is away from the device for an extended amount of time may be saved. It is noted that, while the preceding example is based on an average length of time that the user is not proximate to the computing device, the previously described duration may be adjusted on other determined time periods. For example, the duration may be adjusted based on one or more selected periods of time in a group of times that the user was determined to be away from the device.
FIG. 4 is a diagram illustrating an example machine or computer that self-manages power consumption based on an anticipated interaction with a user, including a processor and other internal components, according to some aspects of the subject technology. In some aspects, a computerized device 400 (for example, an embodiment of system 100 or system 200) includes several internal components, for example, a processor 401. a system bus 402, read-only memory 403, system memory 404, network interface 405, I/O interface 406, and the like. In some aspects, processor 401 may also be in communication with a storage medium 407 (for example, a hard drive, database, or data cloud) via I/O interface 406. In some aspects, all of these elements of device 400 may be integrated into a single device. In other aspects, these elements may be configured as separate components.
Processor 401 may be configured to execute code or instructions to perform the operations and functionality described herein, manage request flow and address mappings, and to perform calculations and generate commands. Processor 401 is configured to monitor and control the operation of the components in server 400. The processor may be a general-purpose microprocessor, a microcontroller, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a programmable logic device (PLD), a controller, a state machine, gated logic, discrete hardware components, or a combination of the foregoing. One or more sequences of instructions may be stored as firmware on a ROM within processor 401. Likewise, one or more sequences of instructions may be software stored and read from system memory 405, ROM 403, or received from a storage medium 407 (for example, via I/O interface 406). ROM 403, system memory 405, and storage medium 407 represent examples of machine or computer readable media (for example, non-transitory media) on which instructions/code may be executable by processor 401. Machine or computer readable media may generally refer to any medium or media used to provide instructions to processor 401, including both volatile media, for example, dynamic memory used for system memory 404 or for buffers within processor 401, and non-volatile media, for example, electronic media, optical media, and magnetic media. The features and/or functionality of ROM 403, system memory 405, and storage medium 407 may be implemented as a single component or distributed among a group of components. Moreover, ROM 403, system memory 405, and/or storage medium 407 may include the same or similar features and/or functionality of previously described memory unit 202, and vice versa. Accordingly, ROM 403, system memory 405, and storage medium 407, and memory unit 202, as used herein, may be interchangeable for the purposes of describing the features and/or functionality of the subject technology.
In some aspects, processor 401 is configured to communicate with one or more external devices (for example, via I/O interface 406). Processor 401 is further configured to read data stored in system memory 404 or storage medium 407 and to transfer the read data to the one or more external devices in response to a request from the one or more external devices. The read data may include one or more web pages or other software presentation to be rendered on the one or more external devices. The one or more external devices may include a computing system, for example, a personal computer, a server, a workstation, a laptop computer, PDA, smart phone, and the like.
In some aspects, system memory 404 represents volatile memory used to temporarily store data and information used to manage device 400. According to some aspects of the subject technology, system memory 404 is random access memory (RAM), for example, double data rate (DDR) RAM. Other types of RAM also may be used to implement system memory 404. Memory 404 may be implemented using a single RAM module or multiple RAM modules. While system memory 404 is depicted as being part of device 400, it will be recognized that system memory 404 may be separate from device 400 without departing from the scope of the subject technology. Alternatively, system memory 404 may be a non-volatile memory, for example, a magnetic disk, flash memory, peripheral SSD, and the like.
I/O interface 406 may be configured to be coupled to one or more external devices, to receive data from the one or more external devices and to send data to the one or more external devices. I/O interface 406 may include both electrical and physical connections for operably coupling I/O interface 406 to processor 401, for example, via the bus 402. I/O interface 406 is configured to communicate data, addresses, and control signals between the internal components attached to bus 402 (for example, processor 401) and one or more external devices (for example, a hard drive). I/O interface 406 may be configured to implement a standard interface, for example, Serial-Attached SCSI (SAS), Fiber Channel interface, PCI Express (PCIe), SATA, USB, and the like. I/O interface 406 may be configured to implement only one interface. Alternatively, I/O interface 406 may be configured to implement multiple interfaces, which are individually selectable using a configuration parameter selected by a user or programmed at the time of assembly. I/O interface 406 may include one or more buffers for buffering transmissions between one or more external devices and bus 402 or the internal devices operably attached thereto.
Various illustrative blocks, modules, elements, components, methods, and algorithms described herein may be implemented as electronic hardware, computer software, or combinations of both. 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. Skilled artisans may implement the described functionality in varying ways for each particular application. Various components and blocks may be arranged differently (e.g., arranged in a different order, or partitioned in a different way) all without departing from the scope of the subject technology.
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. Various modifications to these aspects will be readily apparent, and the generic principles defined herein may be applied to other aspects. 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.” Unless specifically stated otherwise, the term “some” refers to one or more. Pronouns in the masculine (e.g., his) include the feminine and neuter gender (e.g., her and its) and vice versa. Headings and subheadings, if any, are used for convenience only and do not limit the disclosure.
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, and the like. Accordingly, the term website may be used interchangeably with the terms web page and server. The predicate words “configured to”, “operable to”, and “programmed to” do not imply any particular tangible or intangible modification of a subject, but, rather, are intended to be used interchangeably. 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 construed as a processor programmed to execute code or operable to execute code.
A phrase such as an “aspect” does not imply that such aspect is essential to the subject technology or that such aspect applies to all configurations of the subject technology. A disclosure relating to an aspect may apply to all configurations, or one or more configurations. An aspect may provide one or more examples. A phrase such as an aspect may refer to one or more aspects and vice versa. A phrase such as a “configuration” does not imply that such configuration is essential to the subject technology or that such configuration applies to all configurations of the subject technology. A disclosure relating to a configuration may apply to all configurations, or one or more configurations. A configuration may provide one or more examples. A phrase such as a “configuration” may refer to one or more configurations and vice versa.
The word “exemplary” is used herein to mean “serving as an example or illustration.” Any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs.

## Claims

1. A computer-implemented method for managing power consumption in a computing device, comprising:
providing, for a reoccurring period of time, a duration of time that the computing device will remain idle before power to one or more components of the computing device is automatically limited;
sensing a user move away from and return to a predetermined area proximate the computing device a plurality of times without the user providing physical input to the computing device;
determining, based on the sensing, a pattern of activity comprising the user returning to the predetermined area more than a predetermined period of time before the duration of time expires, or more than a predetermined period of time after the duration of time expires; and
automatically adjusting the duration of time based on the pattern of activity.

2. The computer-implemented method of claim 1, wherein determining that the user moved away from the predetermined area comprises determining that the user moved a predetermined distance away from the computing device.

3. The computer-implemented method of claim 1, wherein the pattern of activity comprises the user returning to the predetermined area more than the predetermined period of time after the duration of time expires, and wherein adjusting the duration of time comprises decreasing the duration of time.

4. The computer-implemented method of claim 3, wherein the duration of time is decreased based on an average time that the user was not in the predetermined area after the duration of time expires up until the user began using the computing device.

5. The computer-implemented method of claim 1, wherein the pattern of activity comprises the user returning to the predetermined area more than a predetermined period of time before the duration of time expires, and wherein adjusting the duration of time comprises decreasing the duration of time.

6. The computer-implemented method of claim 1, wherein the duration of time is adjusted after the user returns to the predetermined area more than a predetermined number of times before the duration of time expires, or after the duration of time expires.

7. The computer-implemented method of claim 1, wherein sensing a user move away from and return to a predetermined area comprises:
detecting a presence of the user based on visual data collected from a viewing of the predetermined area by a camera associated with the computing device.

8. The computer-implemented method of claim 7, wherein the presence of the user is detected using facial recognition.

9. The computer-implemented method of claim 1, wherein sensing a user move away from and return to a predetermined area comprises:
detecting a presence of the user based on one or more signals received from an inductive or pressure sensor operably connected to the computing device.

10. The computer-implemented method of claim 1, wherein the reoccurring period of time is a range of time in a day that reoccurs over a number of days.

11. A system, comprising:
a powered hardware device;
one or more sensing devices;
one or more processors; and
a memory having instructions thereon that, when executed by the one or more processors, cause the one or more processor to:
set, for a reoccurring period of time, a duration of time that the powered hardware device will remain idle before power to the powered hardware device is automatically limited;
detect, using the one or more sensing devices, a user move away from and return to a predetermined area proximate the system a plurality of times without the user providing physical input to the system;
determine, based on the detecting, a pattern of activity comprising the user returning to the predetermined area more than a predetermined period of time before the duration of time expires, or more than a predetermined period of time after the duration of time expires; and
automatically adjust the duration of time based on the pattern of activity.

12. The system of claim 11, wherein determining that the user moved away from the predetermined area comprises determining that the user moved a predetermined distance away from the system.

13. The system of claim 11, wherein the pattern of activity comprises the user returning to the predetermined area more than the predetermined period of time after the duration of time expires, and wherein adjusting the duration of time comprises decreasing the duration of time.

14. The system of claim 11, wherein the pattern of activity comprises the user returning to the predetermined area more than a predetermined period of time before the duration of time expires, and wherein adjusting the duration of time comprises decreasing the duration of time.

15. The system of claim 14, wherein the duration of time is decreased based on an average time that the user was in the predetermined area before the duration of time expires.

16. The system of claim 11, wherein the one or more sensing devices comprise a camera, and wherein detecting a user move away from and return to a predetermined area comprises:
detecting a presence of the user based on visual data collected from a viewing of the predetermined area by the camera.

17. The system of claim 16, wherein a presence of the user is detected using facial recognition.

18. The system of claim 11, wherein the one or more sensing devices comprise an inductive or pressure sensor, and wherein detecting a user move away from and return to a predetermined area comprises:
detecting a presence of the user based on one or more signals received from the inductive or pressure sensor.

19. The system of claim 11, wherein the reoccurring period of time is a range of time in a day that reoccurs over a number of days.

20. A computer program product tangibly embodied in a computer-readable storage device and comprising instructions that, when executed by a computing device, cause the computing device to:
provide, for a reoccurring period of time, a duration of time that the computing device will remain idle before power to one or more components of the computing device is automatically limited;
sense a user move away from and return to a predetermined area proximate the computing device a plurality of times without the user providing physical input to the computing device;
determine, based on the sensing, a pattern of activity comprising the user returning to the predetermined area more than a predetermined period of time before the duration of time expires, or more than a predetermined period of time after the duration of time expires; and
automatically adjust the duration of time based on the pattern of activity.