MANAGING POWER CONSUMPTION ON AN ELECTRONIC DEVICE

In one aspect, in general, a method includes, based on a first indication of an amount of battery life of a battery-powered device, calculating a first polling interval for an electronic communication application running on the battery-powered device.

Some applications running on battery-powered devices (e.g., mobile devices such as smartphones) run a timed poll on the device to query a server at regular intervals. The query could be for communications such as messages, updates, or any other data that can be received from the server. For example, the application could be an email client, and the server could be an email server at which a user of the device has an email account. If the email server is polled too frequently, the battery may be drained too quickly. If the server is polled too infrequently, battery life is better maintained but communications might take unacceptably long to arrive to the device.

These factors can be balanced by varying the polling interval based on the battery level. When a battery has a high percentage of life remaining, the interval can be short, and the interval can be increased as the battery is drained. The intervals could be determined based on a linear or non-linear polling curve which can be adapted to profiles describing battery charge behavior. A user could also select one of several polling interval curves which allow users to trade battery life for polling frequency.

FIG. 1shows an electronic device100and associated components. This electronic device100is a mobile device (such as a smartphone) that is powered by a battery102. The electronic device also has a transceiver104that can be used to send data to and receive data from resources available on a network110. For example, the device100may send data to and receive data from a server120that also communicates using the network110. The network110can be any communications network that can be used by electronic devices to communicate, for example, the Internet.

In some examples, the device100regularly sends communications to the server120. By “regularly,” we mean, for example, that the device100sends communications automatically based on a predefined schedule or other defined plan for sending communications. Regularly could, but does not necessarily, mean at identical intervals. For example, the server120may be an email server, and the device100may send a query130to the server requesting any new messages (sometimes referred to as polling the server). In response to the query130, the server120may send one or more messages132to the device100. The query130may be generated by an application106running (e.g., executing) on the device. For example, the application may be an email application. Other examples of the application could be an instant message client, a weather application, a game (e.g., a game that includes a poll to see if an other player has moved), a social media application, a software update application, a news feed application, or any application where the software on the device waits for and react to messages from another person or device.

The transceiver104enables the device100to communicate wirelessly with the network. In some implementations, e.g., if the device100is a smartphone, the transceiver104may operate using a mobile communications standard, of which there are many known by names such as 3G, 4G, LTE, 1xRTT, and WiMAX, among others. In some implementations, the transceiver104may operate using a wireless network standard, such as 802.11 or another wireless network standard. In some implementations, the device100has multiple transceivers104.

The transceiver104draws power from the battery102of the device100. In some examples, the transceiver104draws more power from the battery102when communicating with resources on the network110. For example, when the device100sends a query130to the server120, the transceiver104consumes more power than when the transceiver104is idle, i.e., not communicating with resources on the network110.

The frequency at which the application106sends queries130to the server120can vary based on the remaining life (e.g., remaining charge) of the battery102. For example, when the battery102is mostly or fully charged, the application106can send queries130at a high frequency, e.g., once a minute. When the battery102is mostly depleted, the application106can send queries130at a lower frequency, e.g., once every fifteen minutes. In this way, the frequency at which the server120is polled has a relationship to a characteristic of the energy consumption of the device100.

In some implementations, the frequency of polling can be determined by a polling profile108. The polling profile108can contain any data relevant to the relationship between polling frequency (sometimes called a polling interval) and energy consumption. An application106that engages in polling a server120(or other network resource) can consult the polling profile108to determine a frequency of polling. As the application106polls the server120, the application106can consult the polling profile108to calculate a polling frequency on an ongoing basis. For example, the application106can consult the polling profile after each time the application106sends a query130to the server120to re-calculate the polling interval.

In some examples, the polling profile108contains data pertaining to a relationship between polling frequency and battery life. The relationship could be expressed as a curve, for example, a linear or non-linear curve. For example, a linear curve could be defined according to the following equation:

In the example of equation (1), the polling frequency has a linear relationship to the remaining battery life. For example, if the polling frequency is defined in minutes between queries, the battery life is defined as a percentage, and the constant is 0.5, then a battery life of 50% (0.5) would result in a polling frequency of every minute, while a battery life of 10% (0.1) would result in a polling frequency of every five minutes.

The linear curve could have a minimum or maximum bound. For example, the polling frequency could be defined according to the following equation:

In the example of equation (2), the polling frequency will be no more than once a minute. For example, assuming the same units as equation (1), a battery life of 100% or 75% or 55% would result in a polling frequency of once a minute, while a battery life of 10% would result in a polling frequency of every five minutes.

The polling frequency could also be defined by a non-linear curve. For example, the polling frequency could be defined according to the following equation:

In the example of equation 3, a battery life of 50% would result in a polling frequency of once every two minutes, a battery life of 20% would result in a polling frequency of once every 12.5 minutes, and a battery life of 10% would result in a polling frequency of every fifty minutes. In this way, the polling frequency drops more rapidly as the battery life approaches zero.

The polling frequency could also be defined by a step function. For example, the polling frequency could be defined according to the following equation:

In the example of equation (4), a battery life of 50% or greater would result in a polling frequency of once every minute, while a battery life of less than 50% would result in a polling frequency of once every five minutes.

In some examples, the polling profile108contains data pertaining to a relationship between polling frequency and a communications network. As described above, the device100may engage in network communications using one of several protocols. For example, the device100may be capable of engaging in network communications using a 802.11 (WiFi) network as well as a 4G mobile communications network. Communications using one network, e.g., 4G, may consume more battery power than communications using another network, e.g., WiFi. The polling profile108can indicate that the polling frequency when the device100is connected to the 4G network should be lower than the polling frequency when the device100is connected to the WiFi network. The polling frequency could be expressed as a percentage (e.g., when connected to 4G, reduce polling frequency by 50%), or the polling frequency could be expressed as an absolute value (e.g., when connected to 4G, polling frequency will not exceed once every five minutes), or the polling frequency could be expressed as some other kind of value.

In some examples, the polling profile108contains data pertaining to a relationship between polling frequency and communications network signal strength. For example, the transceiver104may consume more power when it communicates wirelessly using a weak wireless carrier signal. For example, the signal may be weak because a remote device, such as a wireless hub or cellular tower, is at a relatively far distance from the device. The polling profile108can indicate that the polling frequency when the device100is connected to a network with a weak signal should be lower than the polling frequency when the device100is connected a network with a strong signal. The relationship between the polling frequency and communications strength could be expressed by an equation such as any of equations (1) through (4), e.g., substituting signal strength for battery life.

Any of the above relationships between polling frequency and characteristics pertaining to energy consumption could be used independently to calculate a polling frequency, or some or all of them could be combined to calculate a polling frequency. For example, some devices100may be configured to only use information pertaining to battery life when calculating a polling frequency, while other devices100may be configured to only use information pertaining to signal strength when calculating a polling frequency, and other devices100may be configured to use multiple types of information stored in the polling profile108when calculating a polling frequency.

In some implementations, the device100provides a user interface140enabling a user150to configure the polling profile108.FIG. 2shows an example view200of a portion of the user interface140. The user interface140includes a slider202which can be adjusted by a user to indicate a ratio of battery life to polling frequency. If the user150moves the slider202closer to a position204to the left, the polling frequency can be weighted in favor of higher polling frequency (and thus potentially lower battery life). If the user150moves the slider202closer to a position206to the left, the polling frequency can be weighted in favor of lower polling frequency (and thus potentially higher battery life). In some implementations, the user150moves the slider202using an input device of the device100, e.g., an input device such as a touchscreen. In some implementations, the constant value C shown in equations (1) through (4) can be adjusted based on the position of the slider202.

Activities of the user150can be used to configure the polling profile108independent of the user's interaction with the user interface140. For example, the application106can record information describing how frequently the user150sends or receives communications. If the user150frequently sends or receives communications, then the polling profile can indicate a relatively high polling frequency, since a query130to a server120is likely to result in a response that includes new communications. If the user150infrequently sends or receives communications, then the polling profile can indicate a relatively low polling frequency, since a query130to a server120is unlikely to result in a response that includes new communications. In some implementations, the constant value C shown in equations (1) through (4) could be adjusted based on how frequently the user150sends or receives communications. In some implementations, a polling interval can be determined based on how frequently the user150engages in manual polling for new data. For example, an application106may enable the user150to initiate manual polling, e.g., a manual check for email. The polling interval can be calculated based on this behavior, such that more frequent polling interval will be used for devices operated by users who manually check for data frequently.

FIG. 3is a flowchart showing an example process300. The process300can be carried out, for example, by the device100shown inFIG. 1.

A first indication of remaining battery life of a battery-powered device is received302. For example, the battery could be the battery102shown inFIG. 1.

A first polling interval for an electronic communication application running on the battery-powered device is calculated304based on the first indication. The polling interval (e.g., the amount of time between queries communicated by the application) can be calculated based on a stored polling profile, e.g., the polling profile108shown inFIG. 1. In some implementations, the first polling interval is calculated based on an application of the first indication to a non-linear curve. In some examples, the first polling interval is calculated based on a frequency at which the electronic communication application receives communications. In some examples, the first polling interval is calculated based on a user preference indicating a ratio of battery life to polling frequency. In some examples, the first polling interval is calculated based on an indication of a communications network to which the battery-powered device is connected. In some examples, the first polling interval is calculated based on an indication of signal strength of a connection of the battery-powered device to a communications network.

In some implementations, a second indication of remaining battery life of the battery-powered device is received, such that the second indicating a shorter battery life than the first indication. Based on the second indication, a second polling interval for the electronic communication application can be calculated, such that the second polling interval being less frequent than the first polling interval.

FIG. 4is a block diagram of example computing devices400,450. For example one computing device400could be the server120shown inFIG. 1, and one computing device500could be the device100shown inFIG. 1.

The memory404stores information within the computing device400. In one implementation, the memory404is a volatile memory unit or units. In another implementation, the memory404is a non-volatile memory unit or units. The memory404may also be another form of computer-readable medium, such as a magnetic or optical disk.

The storage device406is capable of providing mass storage for the computing device400. In one implementation, the storage device406may 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 memory404, the storage device406, memory on processor402, or a propagated signal.

The high speed controller408manages bandwidth-intensive operations for the computing device400, while the low speed controller412manages lower bandwidth-intensive operations. Such allocation of functions is an example only. In one implementation, the high-speed controller408is coupled to memory404, display416(e.g., through a graphics processor or accelerator), and to high-speed expansion ports410, which may accept various expansion cards (not shown). In the implementation, low-speed controller412is coupled to storage device406and low-speed expansion port414. 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 device400may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server420, or multiple times in a group of such servers. It may also be implemented as part of a rack server system424. In addition, it may be implemented in a personal computer such as a laptop computer422. Alternatively, components from computing device400may be combined with other components in a mobile device, such as mobile computing device450. Each of such devices may contain one or more of computing device400,450, and an entire system may be made up of multiple computing devices400,450communicating with each other.

The mobile computing device450includes a processor452, memory464, an input/output device such as a display454, a communication interface466, and a transceiver468, among other components. The device450may also be provided with a storage device, such as a microdrive or other device, to provide additional storage. Each of the components450,452,464,454,466, and468, are interconnected using various buses, and several of the components may be mounted on a common motherboard or in other manners as appropriate.

The processor452can execute instructions within the computing device450, including instructions stored in the memory464. 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 device450, such as control of user interfaces, applications run by device450, and wireless communication by device450.

The processor452may communicate with a user through control interface458and display interface456coupled to a display454. The display454may 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 interface456may comprise appropriate circuitry for driving the display454to present graphical and other information to a user. The control interface458may receive commands from a user and convert them for submission to the processor452. In addition, an external interface462may be provide in communication with processor452, so as to enable near area communication of device450with other devices. External interface462may provide, for example, for wired communication in some implementations, or for wireless communication in other implementations, and multiple interfaces may also be used.

The memory464stores information within the computing device450. The memory464can 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 memory474may also be provided and connected to device450through expansion interface472, which may include, for example, a SIMM (Single In Line Memory Module) card interface. Such expansion memory474may provide extra storage space for device450, or may also store applications or other information for device450. Specifically, expansion memory474may include instructions to carry out or supplement the processes described above, and may include secure information also. Thus, for example, expansion memory474may be provide as a security module for device450, and may be programmed with instructions that permit secure use of device450. 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 mobile computing device450may communicate wirelessly through communication interface466, e.g., an Ethernet card, a serial communication device, e.g., an RS-232 port, and/or a wireless interface device, e.g., an 802.11 card, a 3G wireless modem, a 4G wireless modem, or another interface, which may include digital signal processing circuitry where necessary. Communication interface466may provide for communications under various modes or protocols, such as GSM voice calls, SMS, EMS, or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, among others. Such communication may occur, for example, through radio-frequency transceiver468. In addition, short-range communication may occur, such as using a Bluetooth, WiFi, or other such transceiver (e.g., the transceiver104shown inFIG. 1). In addition, GPS (Global Positioning System) receiver module470may provide additional navigation- and location-related wireless data to device450, which may be used as appropriate by applications running on device450.

The mobile computing device450may also communicate audibly using audio codec460, which may receive spoken information from a user and convert it to usable digital information. Audio codec460may likewise generate audible sound for a user, such as through a speaker, e.g., in a handset of device450. Such sound may include sound from voice telephone calls, may include recorded sound (e.g., voice messages, music files, and so forth) and may also include sound generated by applications operating on device450.

A server (e.g., the server120shown inFIG. 1) can be realized by instructions that upon execution cause one or more processing devices to carry out processes relevant to the functions described above. Such instructions can comprise, for example, interpreted instructions such as script instructions, or executable code, or other instructions stored in a computer readable medium. A server can be distributively implemented over a network, such as a server farm, or a set of widely distributed servers or can be implemented in a single virtual device that includes multiple distributed devices that operate in coordination with one another. For example, one of the devices can control the other devices, or the devices may operate under a set of coordinated rules or protocols, or the devices may be coordinated in another fashion. The coordinated operation of the multiple distributed devices presents the appearance of operating as a single device.

Although example devices have been described inFIG. 4, implementations of the subject matter and the functional operations described above can be implemented in other types of digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Implementations of the subject matter described in this specification can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a tangible program carrier, for example a computer-readable medium, for execution by, or to control the operation of, a processing system. The computer readable medium can be a physical device such as a machine readable storage device, a machine readable storage substrate, a memory device, a composition of matter effecting a machine readable propagated signal, or a combination of one or more of them.

Computer readable media suitable for storing computer program instructions and data include all forms of non-volatile or volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks or magnetic tapes; magneto optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry. Sometimes a server (e.g., forming a portion of a communications facility100) is a general purpose computer, and sometimes it is a custom-tailored special purpose electronic device, and sometimes it is a combination of these things. Implementations can include a back end component, e.g., a data server, or a middleware component, e.g., an application server, or a front end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described is this specification, or any combination of one or more such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), e.g., the Internet.

Certain features that are described above in the context of separate implementations can also be implemented in combination in a single implementation. Conversely, features that are described in the context of a single implementation can be implemented in multiple implementations separately or in any sub-combinations.

The order in which operations are performed as described above can be altered. In certain circumstances, multitasking and parallel processing may be advantageous. The separation of system components in the implementations described above should not be understood as requiring such separation.