History log of /frameworks/base/core/java/android/os/PowerManager.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
4b17e984b6e41fbef80c9b0071b52f925567f0c9 26-Sep-2016 Christopher Tate <ctate@google.com> Don't leak wakelock instances

Bug 31247436

Change-Id: I7c2ad956c43233b37e53856e9321cb87b01c35da
/frameworks/base/core/java/android/os/PowerManager.java
7445c0bb86c57172eb88a4e37183634abce2e37b 07-Sep-2016 Adrian Roos <roosa@google.com> Hold WakeLock while DreamService starts

Fixes a bug where DozeService would not properly initialize
because the CPU went to sleep before onDreamingStarted completed,
causing the pickup gesture to not work.

Change-Id: I85955a2b7d6bad5171accbc336117a9660b1b198
Fixes: 31044352
/frameworks/base/core/java/android/os/PowerManager.java
c45908d19612e6ccc014b19f5963d06dbe066028 16-May-2016 Ruchi Kandoi <kandoiruchi@google.com> PowerManager: Adds Documentation to
isSustainedPerformanceModeSupported()

Bug: 28775592
Change-Id: Iea4f77d2508141ac0748165f68e6e1ca235ab804
Signed-off-by: Ruchi Kandoi <kandoiruchi@google.com>
/frameworks/base/core/java/android/os/PowerManager.java
a2689dcf71d8c2774c8682cc8281135f01a748c7 21-Apr-2016 Ruchi Kandoi <kandoiruchi@google.com> fix build: remove SUSTAINED_PERFORMANCE_WAKE_LOCK link

Change-Id: Ic12b98cbafcc8c81eadba119ab416a9eddb7214a
Signed-off-by: Ruchi Kandoi <kandoiruchi@google.com>
/frameworks/base/core/java/android/os/PowerManager.java
9c36c02f0ea5f54bcb7cdf2a6175f4b8f92205a2 20-Apr-2016 Ruchi Kandoi <kandoiruchi@google.com> Revert "PowerManager: Adds the Sustained performance API."

This reverts commit 0abc001275d6cf0af4990f521ccff7346a7cd2bf.

Bug: 28150358
Change-Id: I99c71b3d6641310a33e898d6fd475d37c79ba9d0
Signed-off-by: Ruchi Kandoi <kandoiruchi@google.com>
/frameworks/base/core/java/android/os/PowerManager.java
5cb05f810b618112443271fdc8f1cf731593657e 05-Apr-2016 Glenn Kasten <gkasten@google.com> Merge "Fix typo" into nyc-dev
570f1c8b2395127a966832e1e2d8a8521cdb90f6 04-Apr-2016 Glenn Kasten <gkasten@google.com> Fix typo

Change-Id: I973dfaa17adbb7dce4ceda2e6985937823ef039c
/frameworks/base/core/java/android/os/PowerManager.java
b4aa2e9c37881197fa939d8ee29d21dfdc962e40 30-Mar-2016 Ruchi Kandoi <kandoiruchi@google.com> PowerManager: Adds isSustainedPerformanceModeSupported()

isSustainedPerformanceModeSupported() returns true if the device
supports the mode. It checks for the boolean config
"config_sustainedPerformanceModeSupported" to be set.

Bug: 22864186
Change-Id: I0f9f0bcbb8c02b19f37e9c87570d88e8f78f7992
Signed-off-by: Ruchi Kandoi <kandoiruchi@google.com>
/frameworks/base/core/java/android/os/PowerManager.java
7ef20dd340708f6a542aa0859b3dd2652a0e9385 30-Mar-2016 Ruchi Kandoi <kandoiruchi@google.com> Revert "PowerManager: Hide the SUSTAINED_PERFORMANCE API."

This reverts commit 302710deaa02ad5fba5e39d9f0f652d3587b8b91.

Change-Id: I3e7e071838bae9460e126aac099b31f5213e3c6c
/frameworks/base/core/java/android/os/PowerManager.java
e6e08b4a5aa6da2bd8234632e030023bcdb7e9e7 18-Mar-2016 Tony Mantler <nicoya@google.com> Merge "Add safe-mode reboot to PowerManager" into nyc-dev
b8009fddd85aa5ecd6b2321f92a1ae0568089a54 14-Mar-2016 Tony Mantler <nicoya@google.com> Add safe-mode reboot to PowerManager

b/12787723

Change-Id: If7e6ff63532b49b9e758db290a877f7dbfa8a8b7
/frameworks/base/core/java/android/os/PowerManager.java
da80d676c70fa07d4efe566b2c74b3fbc61805b0 16-Mar-2016 Phil Weaver <pweaver@google.com> Treat accessibility actions as user activity

Resurrecting ag/665912.

Bug: 19531976
Change-Id: Ibdddd507215e61b9f4313c36eab8845e9940a7ac
/frameworks/base/core/java/android/os/PowerManager.java
c53962d4ede82a03b62f0c8bb86bd0da090a15eb 02-Mar-2016 Jeff Sharkey <jsharkey@android.com> When system server goes down, crash apps more.

Apps making calls into the system server may end up persisting
internal state or making security decisions based on the perceived
success or failure of a call, or the default values returned.

The reality is that if the system process just died, init will be
along shortly to kill all running apps, so we should have no problem
rethrowing the RemoteException as a RuntimeException.

Bug: 27364859
Change-Id: Ife0bcb079636c88d54c44d17eb580409fd79028b
/frameworks/base/core/java/android/os/PowerManager.java
302710deaa02ad5fba5e39d9f0f652d3587b8b91 26-Feb-2016 Ruchi Kandoi <kandoiruchi@google.com> PowerManager: Hide the SUSTAINED_PERFORMANCE API.

Bug: 27365880
Change-Id: Ia84a5af85f6e8ef0740ce4b41dbc5bab4cbeef05
/frameworks/base/core/java/android/os/PowerManager.java
e8a403d57c8ea540f8287cdaee8b90f0cf9626a3 31-Dec-2015 Tao Bao <tbao@google.com> Add support for update-on-boot feature.

Add a separate system service RecoverySystemService to handle recovery
related requests (calling uncrypt to de-encrypt the OTA package on the
/data partition, setting up bootloader control block (aka BCB) and etc).

We used to trigger uncrypt in ShutdownThread before rebooting into
recovery. Now we expose new SystemApi (RecoverySystem.processPackage())
to allow the caller (e.g. GmsCore) to call that upfront before
initiating a reboot. This will reduce the reboot time and get rid of the
progress bar ("processing update package"). However, we need to reserve
the functionality in ShutdownThread to optionally call uncrypt if
finding that's still needed.

In order to support the update-on-boot feature, we also add new
SystemApis scheduleUpdateOnBoot() and cancelScheduledUpdate() into
android.os.RecoverySystem. They allow the caller (e.g. GmsCore) to
schedule / cancel an update by setting up the BCB, which will be read by
the bootloader and the recovery image. With the new SystemApis, an
update package can be processed (uncrypt'd) in the background and
scheduled to be installed at the next boot.

Bug: 26830925
Change-Id: Ic606fcf5b31c54ce54f0ab12c1768fef0fa64560
/frameworks/base/core/java/android/os/PowerManager.java
0abc001275d6cf0af4990f521ccff7346a7cd2bf 12-Jan-2016 Ruchi Kandoi <kandoiruchi@google.com> PowerManager: Adds the Sustained performance API.

Adds a new type of wakelock - SUSTAINED_PERFORMANCE_WAKELOCK. This
wakelock can only be acquired when the application is in the foreground.
And it is not effective when the application is no longer in the
foreground.

Acquiring this wakelock enables the Sustained performance mode which
guarantees a certain level of performance.

Bug: 22864186

Change-Id: Id0ececc756fe014779db6efde7aede23ea181dc5
Signed-off-by: Ruchi Kandoi <kandoiruchi@google.com>
/frameworks/base/core/java/android/os/PowerManager.java
5a5d6aeec0ee6b3f9ffea55a4f015edc84828b1e 07-Jan-2016 Jason Monk <jmonk@google.com> Merge "Add internal power mode changed broadcast"
1ce53bc571563d8bf448a81a38da342ed5413ee4 14-Dec-2015 Mahaver Chopra <mahaver@google.com> Adding DPM.reboot

Adding new policy in DPM to trigger reboot on the device.
Requirement: Device owner can reboot the device if it is stuck or is
not useable due to some unresponsive UI.

Bug: 25304994
Change-Id: I7a6d5c8ad611de9c1cf6619378e492a306b41626
/frameworks/base/core/java/android/os/PowerManager.java
afae4bd437563c3997740ff6a537108409f7884c 15-Dec-2015 Jason Monk <jmonk@google.com> Add internal power mode changed broadcast

This broadcast allows settings to be (rarely) be started by a power
change event.

Settings will have a conditional item informing the user of battery
saving mode, when they dismiss it, the item will not show up again
until after power saving mode has been exited and re-entered.
Settings will catch the exit of power saving mode by enabling a
receiver for this broadcast only when in this state.

Change-Id: I62385413e4b8b004d4e1e0e5ba250730848ba013
/frameworks/base/core/java/android/os/PowerManager.java
71fbb81b14958b80fe55738607740c6630e4e9da 30-Nov-2015 Neil Fuller <nfuller@google.com> Fix @code escapes

The body of {@code} must not be HTML escaped. This is one of
several changes that fix the source in conjunction with a
doclava fix.

Bug: 25757239
Change-Id: Ib38a0fa2dd2a3d68e467f78a812071e763d7e881
/frameworks/base/core/java/android/os/PowerManager.java
08c47a5dece977a55d250d98bda9e2a8df8b6ed0 15-Oct-2015 Dianne Hackborn <hackbod@google.com> Initial implementation of light-weight idle mode.

This mode turns on after the screen has been off for 15 minutes,
and then cycles through 15 minutes of idle and 1 minute of
maintenance, ragardless of whether the device is moving around.

It currently only impacts network access and sync/job scheduling.
It does not remove access to wake locks or alarms for any apps.
It also doesn't report in the public API that the device is in
idle mode (since it isn't modifying the behavior of the power
manager) -- this is probably what we desire, since we don't want
stuff like GCM to be reporting these frequent changes.

We'll probably at least want to have the alarm manager do some
kind of more aggressive batching of alarms in this most (not allowing
more than one wakeup every minute?). That's for the future.

Also updated batterystats to include this new information, which
means the format of some of the data has changed -- device_idle
is no longer a flag, but an enum of (off, light, full), and there
is no information about time spent in light modes.

Also added new data about the maximum duration spent in both light
and full idle modes, to get a better understanding of how those
are behaving.

And did a little cleanup of DeviceIdleController, removing the
sensing alarm which was redundant with the regular alarm.

Change-Id: Ibeea6659577dc02deff58f048f97fcd9b0223307
/frameworks/base/core/java/android/os/PowerManager.java
82e780743046e620b724c28023b580e0e624bb15 03-Aug-2015 Yusuke Sato <yusukes@google.com> am b98e2353: am 158560ad: Merge "Distinguish user-requested shutdown from power-related ones"

* commit 'b98e235364c2b221521f622c546733b2862e4677':
Distinguish user-requested shutdown from power-related ones
705ffd1efe529bb291e90fa06e92c8090ee98627 22-Jul-2015 Yusuke Sato <yusukes@google.com> Distinguish user-requested shutdown from power-related ones

With this patch, when the user requested shutdown,
PowerManagerService sets sys.powerctl is set to
"shutdown,userrequested", and init runs fsck on shutdown.

When shutdown is triggered due to a low power state etc.,
the service sets the property to "shutdown,", and init
immediately shuts down the system without running the
command.

This is a follow-up CL for http://r.android.com/158525.

Bug: 21853106
Change-Id: Iae72990130fe9aa479c802f77301438190dbbfb3
/frameworks/base/core/java/android/os/PowerManager.java
280a64e793d081847c5dcea23ed9be38aa5332d2 13-Jul-2015 Dianne Hackborn <hackbod@google.com> Improve tracking of screen on reasons.

- New screen on app op to record the last time each app has
caused the screen to be turned on.
- New battery stats event that tells us the reason the screen
has been asked to turn on.
- Propagate out power manager API to specify the reason a caller
is asking to have the screen turned on.

Note that currently the window flag to turn the screen on bypasses
much of this because it is being handled in the window manager by
just directly telling the power manager to turn the screen on. To
make this better we need a new API where it can specify who it is
calling the API for.

Change-Id: I667e56cb1f80508d054da004db667efbcc22e971
/frameworks/base/core/java/android/os/PowerManager.java
1958e5e7870579337f1d1d3e6c6fae096ba3abb9 13-Jun-2015 Dianne Hackborn <hackbod@google.com> Fix issue #21813831: Need API for asking to be added to power whitelist

Add the API. Clean up a few related things.

Change-Id: I190adad1812f36f6095b98a1001fedb94874e8b5
/frameworks/base/core/java/android/os/PowerManager.java
ece0f4f5198e9e9cb60e96f036baf22c73411bec 11-Jun-2015 Dianne Hackborn <hackbod@google.com> Fix APIs.

Issue #21039494: API Review: android.os.PowerManager.isDeviceIdleMode()
Issue #21347000: API Review: android.content.IntentFilter
Issue #20654534: API Review: android.app.assist

Also allow use of ActivityManager.setWatchHeapLimit on any platform
build as long as the calling app is debuggable.

Change-Id: Ic597e596fa772fcdf2553b64f444b3d9269e8b92
/frameworks/base/core/java/android/os/PowerManager.java
af575b9f8e1b59be9c8862b6a65c0dcb88145a23 30-May-2015 Amith Yamasani <yamasani@google.com> Temporarily whitelist an app for network during doze

API to allow an app to be whitelisted for network and wakelock
access for a short period. So even if the device is in idle
mode, such apps can be given a chance to download the payload
related to a high priority cloud-to-device message.

This API is meant for system apps only.

A new permission CHANGE_DEVICE_IDLE_TEMP_WHITELIST is required
to make this call.

Bug: 21525864
Change-Id: Id7a761a664f21af5d7ff55aa56e8df98d15511ca
/frameworks/base/core/java/android/os/PowerManager.java
0b4daca9ba54b7252ea8c159218391380eb00c8a 27-Apr-2015 Dianne Hackborn <hackbod@google.com> Implement user-settable power save whitelist.

The whitelist is now maintained by DeviceIdleController,
which is moving out into its own independent system service.
Network stats now queries it for the whitelist, instead of
collecting that itself.

Also did a few improvements in alarm manager -- made the
code for moving alarms out of the pending list more robust,
and fixed the debug output to always print the contents of
the pending list even if we aren't in a pending state. (That
would have helped me identify the problem much earlier.)

Change-Id: I0f7119d4c553c3af4d77b2f71246fa6e2c13c561
/frameworks/base/core/java/android/os/PowerManager.java
a223d658306fea5c0a6d30c9850058d5afadb2d1 25-Mar-2015 Bryce Lee <brycelee@google.com> am 3309be5e: am 21b7e6de: am c831b978: Merge "Add isScreenBrightnessBoosted and a broadcast when underlying value changes." into lmp-mr1-modular-dev

* commit '3309be5e7bc782d89adaf4abca5f1f81649c655f':
Add isScreenBrightnessBoosted and a broadcast when underlying value changes.
c831b978238d5ed200ca329c540eff00faba77e3 25-Mar-2015 Bryce Lee <brycelee@google.com> Merge "Add isScreenBrightnessBoosted and a broadcast when underlying value changes." into lmp-mr1-modular-dev
88e98dfa59e68a860d8c3b462ec03bc0b06d6b5c 23-Mar-2015 Dianne Hackborn <hackbod@google.com> More work on device idle mode.

- There is now an API for people to find out about
its state.
- Moved DeviceIdleController to be closer to the
power manager implementation, since they are
closely related.
- Job scheduler now knows about idle state and doesn't
run jobs while the device is idle.
- Battery stats now keeps track of "idling" vs "idle mode".
Idling is when we consider the device to be idle,
independent of whether we are actually in deep idle mode.
This allows us to keep track of longer-term changes
independently of cycling in and out of idle mode.
- Battery stats also now keeps track of package changes in
its daily stats.
- Small optimization to network policy manager service to
not touch uids that do not have the NETWORK permission.

Change-Id: I0b3304fb3722c78cdfdd0c1eada7369ece7cbcf9
/frameworks/base/core/java/android/os/PowerManager.java
84d6c0fbf6e513d68330234503b809751d0e3564 17-Mar-2015 Bryce Lee <brycelee@google.com> Add isScreenBrightnessBoosted and a broadcast when underlying
value changes.

Bug: 18334219
Change-Id: I20051e97633017711574a063b8061f95c3b616c5
/frameworks/base/core/java/android/os/PowerManager.java
9779e128d611f13cdb44d31b0509ff43c62a35f6 14-Mar-2015 Filip Gruszczynski <gruszczy@google.com> Option for going home when going to sleep for devices without physical button.

Bug: 19623388
Change-Id: Iec16f83c64646ded12ec97d4b540510b7f9dfd47
/frameworks/base/core/java/android/os/PowerManager.java
c2932a1be3e320679034212698aff376d5104dbe 21-Nov-2014 Jeff Brown <jeffbrown@google.com> Hold a wake lock while dozing when display updates are pending.

When the display state is DOZE or DOZE_SUSPEND, assume this means
that the AP may go to sleep at any time so hold a wake lock for
a little while starting when traversals are scheduled to ensure
that the AP remains awake long enough to draw and post the frame
to the display hardware.

This patch is somewhat approximate but should be good enough for
most devices today.

Note that the implementation uses the window manager to ensure that
the window which wants to draw is actually visible before acquiring
the wake lock. There is a cost to this test (a round-trip) which
should not be significant today since we do not expect apps to draw
more than one frame or two while dozing. However, if we wanted to
support animations in general, we might want to optimize it or
eliminate the check altogether (since we can already account for
the app's use of the wake lock).

Another way to implement this functionality might be for the view
hierarchy to listen for the power manager to report that it has entered
a non-interactive power state before deciding to poke draw locks.
This would be somewhat more accurate than watching the display state.
Also, the draw lock timeout logic could be implemented more directly
instead of using an ordinary timed wake lock.

Bug: 18284212
Change-Id: I84b341c678303e8b7481bd1620e634fe82cc4350
/frameworks/base/core/java/android/os/PowerManager.java
d05af86e6e361f574afac060811909c8fb83b1a7 04-Feb-2015 Filip Gruszczynski <gruszczy@google.com> Add hidden shutdown method to PowerManager.

Bug: 17420540

We need to be able to shutdown some of wearable devices programatically.
We should be able to do it by connecting to PowerManagerService directly,
but it would be nice to go through the official interface.

Change-Id: Id0cf3b36c03447356fc60fb90cbb2f4b47d8265e
/frameworks/base/core/java/android/os/PowerManager.java
e333e674a758c39885d4d9779a1aad387fb0e6aa 28-Oct-2014 Jeff Brown <jeffbrown@google.com> Add a function to boost screen brightness temporarily.

When PowerManager.boostScreenBrightness() is called, the screen
brightness is set to maximum for 5 seconds. This action is
also considered to be user activity.

Bug: 17934954
Change-Id: I1cb4a03a60705c6c1c5cc9ff84b1c5dbd2932fcd
/frameworks/base/core/java/android/os/PowerManager.java
8d4e6cb06005a2ce994360340a6191f0690db8f4 14-Sep-2014 John Spurlock <jspurlock@google.com> Saver: PowerManager call to set low power mode.

- Add an explicit power manager call to set the low power mode state,
instead of trying manage everything around a single setting.
- When low-power mode is triggered by falling below the configured
threshold, it does not update the setting.
- The "is-enabled" api returns setting || below configured trigger.
- Move the snooze management into the new api call.
- Callers (sysui + settings) updated to use the api instead of the
setting.
- Handles the case where the level does an unpowered leap out of the
low battery level. (Possible if powered in-between while the device
is off)

Bug:17460535
Change-Id: Ic030504c9cad9868a7137abbe837b170da37852b
/frameworks/base/core/java/android/os/PowerManager.java
1208e2718daeae538dc89c37198092ccb32798a2 09-Sep-2014 Michael Wright <michaelwr@google.com> Change constant to PowerManager.RELEAES_FLAG_WAIT_FOR_NO_PROXIMITY

Bug: 17290118
Change-Id: Iae3866bf3f7ac24f756ec4c183e848a79d1f779b
/frameworks/base/core/java/android/os/PowerManager.java
219857b900e2a15464c6254d8d64b68db7d548c0 28-Aug-2014 Michael Wright <michaelwr@google.com> Change constant to PowerManager#FLAG_WAIT_FOR_DISTANT_PROXIMITY

Also add docs to PowerManager.WakeLock#release(int)

Bug: 17290118
Change-Id: Ibcbc4279efdd0f275808042356e6ff843958e23f
/frameworks/base/core/java/android/os/PowerManager.java
7d82751530db56841f7e767fe752abe5faa06e0c 22-Aug-2014 Jeff Brown <jeffbrown@google.com> Hide PowerManager methods that third-party apps can't use.

Change-Id: I9c4dbdef913f68939eb29f2c250c5fe3afc67399
/frameworks/base/core/java/android/os/PowerManager.java
0a571123544058578b4ef1558c276a4050519652 22-Aug-2014 Jeff Brown <jeffbrown@google.com> Poke interactive hint from userActivity and add @SystemApi.

Previously we only poked the interactive hint for input events that
were dispatched through the regular input system. However, when
using a car dock in projection mode input events are directly
delivered to apps by other system components, bypassing user activity.
So now we poke the interactive hint on all user activity.

Added an @SystemApi version of userActivity.

Added a new signature|system permission called USER_ACTIVITY
to allow system apps to poke userActivity. For now it seems
prudent to keep DEVICE_POWER signature only.

Bug: 17043684
Change-Id: Ia84bd03083065b8938a9853c08901fbf71b2e56b
/frameworks/base/core/java/android/os/PowerManager.java
72671fbb2036e13fccb0b8eeb98be606de1819dd 22-Aug-2014 Jeff Brown <jeffbrown@google.com> Require DEVICE_POWER permission for DOZE_WAKE_LOCK.

This wake lock is only intended to be used internally.

Change-Id: I8d109c492605673616cf7f4f31f082a42fb1d912
/frameworks/base/core/java/android/os/PowerManager.java
a71f03c48160ee82aad8d05edeb39faaf95ae137 22-Aug-2014 Jeff Brown <jeffbrown@google.com> Unhide the proximity sensor wakelock.

Bug: 5354313
Change-Id: I59c6bfcd8ff2cebe264f69c49032737a45326373
/frameworks/base/core/java/android/os/PowerManager.java
3edf5272fb2185403dfe64b9722b9fc9b9de80f8 15-Aug-2014 Jeff Brown <jeffbrown@google.com> Add trace tag for power management.

Instrumented the basic power manager state transitions,
calling into the Power HAL, setting the display power mode,
and setting the backlight.

Bug: 17004602
Change-Id: I4e362162ddfd7292a7eea8b5d029ce3f6593c4a9
/frameworks/base/core/java/android/os/PowerManager.java
f0433e50c7855579ad9847e939bb2c84e576e9d0 14-Aug-2014 Doug Zongker <dougz@google.com> Merge "@hide RECOVERY permission" into lmp-dev
c12035cd40d01b032013f515cb509e6c8791cf65 14-Aug-2014 Jeff Brown <jeffbrown@google.com> Log who is calling goToSleep().

Change-Id: Ibae61c90ee115735835e878bb3bf79eedaa0ae44
/frameworks/base/core/java/android/os/PowerManager.java
183415e521d599ca5e33e5022fec5ec7dfe1c055 12-Aug-2014 Doug Zongker <dougz@google.com> @hide RECOVERY permission

Bug: 16959027
Change-Id: I99fbdf24d5e8bce4beb32fa872e0caa6bfdbe1e9
/frameworks/base/core/java/android/os/PowerManager.java
1bb480a3a4ce2ce63c5d09fa7f5cc38ec160ebf4 02-Aug-2014 John Spurlock <jspurlock@google.com> Battery saver: new policy changes + SystemUI tweaks.

- Service policy changes: allow the user to turn off (snooze)
saver mode below the auto-trigger level. Plugging in the
device always exits saver mode.
- Default trigger level is now 0 (never) instead of 15.
- SystemUI now also listens to a new POWER_SAVE_MODE_CHANGING,
since waiting for _CHANGED can take seconds.
- Move shared feature description text into the framework so it
can be shared.
- Tweak dialog title + action strings.
- Remove trigger-level from SystemUI, it no longer needs it.
- Add the ability to turn off saver mode directly from the
notification.
- Migrate saver confirmation dialog to common system UI dialog
helper, and add a few convenience methods.
- Fix bug where the status bar area would be orange over the keyguard
in SHADE_LOCKED mode.

Bug:16214395
Change-Id: I3d1ded1eec9e63e7d97469486f6a320e1bebbccd
/frameworks/base/core/java/android/os/PowerManager.java
970d4132ea28e748c1010be39450a98bbf7466f3 19-Jul-2014 Jeff Brown <jeffbrown@google.com> Allow dreams to control screen state and brightness.

Added setDozeScreenState() and setDozeScreenBrightness() methods to
DreamService. The values specified here only take effect once
startDozing is called and can be changed while dozing.

This required some significant rework of the display power controller
but the result seems quite nice and better represents the policy
we want to apply.

Changed the test dream a little bit to make it flash the screen
every minute using the new functions.

Bug: 15903322
Change-Id: I83bcc34503f1b87727d2b2b3c0ef08507f9f0808
/frameworks/base/core/java/android/os/PowerManager.java
eb94fa7975b1e8742f3b00cec6bd4f9d6b329e3a 04-Jun-2014 Dianne Hackborn <hackbod@google.com> Improvements to low power mode.

Add new public API for monitoring low power mode.

BatteryService now puts device in to low power mode when
battery level is low.

Window manager now watches low power mode to turn off
animations.

Modifying the animator scale now gets propagated to all
processes.

Change-Id: I8fa566994764ddd4e1977631e28381ab9409f8ee
/frameworks/base/core/java/android/os/PowerManager.java
d862ebb6036a769cb3be371b396e9e33f89ee365 21-May-2014 Narayan Kamath <narayan@google.com> resolved conflicts for merge of fcc4fed3 to master

Change-Id: Icebca982b01debd67a1470c02651ef8936f6e5b0
6d8fd27e51d799cf7418b14092b5e806d9792812 21-May-2014 Jeff Brown <jeffbrown@google.com> Make power button behavior configurable.

Allow power button to be used to either go to sleep as usual,
which may doze, or skip that completely and really go to sleep.
May also really go to sleep and go home all at once.

Bug: 14406056
Change-Id: Ia19e2551b9c2a72271bb2eddd5c0d1749761e019
/frameworks/base/core/java/android/os/PowerManager.java
daf7d410fc97647f2b3ab4254f73c09c923018de 13-May-2014 Adrian Roos <roosa@google.com> A better auto brightness

Bug: 14927472
Change-Id: I62d0695b7da16ffa7a27c465c3b6bc4b1515f9c0
/frameworks/base/core/java/android/os/PowerManager.java
4e5c089ef3e62e7f658e71c0be262d09bd3e399b 11-Apr-2014 Jeff Brown <jeffbrown@google.com> resolved conflicts for merge of 337e764d to master

Change-Id: I8168dbf42b68c2f7b5ccb300e0080dddc627af26
037c33eae74bee2774897d969d48947f9abe254f 09-Apr-2014 Jeff Brown <jeffbrown@google.com> Plumb display power state through display manager.

Declare a new method, Display.getState() to retrieve the actual
power state of a display.

Improved documentation for Intent.ACTION_SCREEN_ON and
Intent.ACTION_SCREEN_OFF to clarify what they really mean in
terms of the interactive state of the device.

Deprecated PowerManager.isScreenOn() and replaced it with
PowerManager.isInteractive() with a more suggestive name and
better documentation.

Redirect display power state changes to go through the display
manager first and only then head over to the power manager for
legacy compatibility.

Eliminated the bright here and woke here policy flags since they
were unused. Simplified the input dispatch policy somewhat.

Ensure that screen wake locks are respected up until the point
when dozing really begins.

Fixed a regression in DreamService where onDreamingStarted
might be called before onWindowAttached.

Bug: 13133142
Bug: 13472578
Bug: 13929355
Bug: 13760290
Change-Id: Iabef96921dd554ce3768fb18619cefc3230b5fb0
/frameworks/base/core/java/android/os/PowerManager.java
4590e52f3d0558e01322fe4dd55bb612afdfb079 24-Mar-2014 Dianne Hackborn <hackbod@google.com> Battery stats: wake locks, radio active, cleanup.

- Improve wake lock work source updates to also update the current
history tag, in case the new work source gets recorded in the
history.

- Fix bug in recording radio active time that was not distributing
any time to apps.

- No longer hold a wake lock while dispatching data conn active call,
since it comes with its own timestamp.

- Fix issue where the top app was not being cleared while the screen
was off.

- Remove obsolete STATS_LAST stats type.

- Fix bug that was not clearing the total run time when resetting
the stats.

Change-Id: Iabe17a9edf34f762374ae09fcffb8a819cf72e30
/frameworks/base/core/java/android/os/PowerManager.java
a1f1a3c573acd91024fda0ceb3b921c73b186963 25-Feb-2014 Dianne Hackborn <hackbod@google.com> More battery stats.

- Add events for sync.
- Add more descriptive tags for wake events.
- Fix battery reset.
- Fix tracking of wifi data.

Change-Id: Ic07f2a86a5ed33e7da57eb1108c31c777ecd801f
/frameworks/base/core/java/android/os/PowerManager.java
10102e4c0e501333a12b38a5cfe709d1558d84dd 21-Feb-2014 Jeff Brown <jeffbrown@google.com> resolved conflicts for merge of baaa080b to master

Change-Id: I3ee12321e298f7a2ea577a99f30c49f3bb497fae
2687550272ba061448f5d5b914700dc335299ee7 31-Jan-2014 Jeff Brown <jeffbrown@google.com> Add a new "doze mode" based on Dream components.

When a doze component has been specified in a config.xml resource
overlay, the power manager will try to start a preconfigured dream
whenever it would have otherwise gone to sleep and turned the
screen off. The dream should render whatever it intends to show
then call startDozing() to tell the power manager to put the display
into a low power "doze" state and allow the application processor
to be suspended. The dream may wake up periodically using the
alarm manager or other features to update the contents of the display.

Added several new config.xml resources related to dreams and dozing.
In particular for dozing there are two new resources that pertain to
decoupling auto-suspend mode and interactive mode from the display
state. This is a requirement to enable the application processor
and other components to be suspended while dozing. Most devices
do not support these features today.

Consolidated the power manager's NAPPING and DREAMING states into one
to simplify the logic. The NAPPING state was mostly superfluous
and simply indicated that the power manager should attempt to start
a new dream. This state is now tracked in the mSandmanSummoned field.

Added a new DOZING state which is analoguous to DREAMING. The normal
state transition is now: AWAKE -> DREAMING -> DOZING -> ASLEEP.
The PowerManager.goToSleep() method now enters the DOZING state instead
of immediately going to sleep.

While in the doze state, the screen remains on. However, we actually
tell the rest of the system that the screen is off. This is somewhat
unfortunate but much of the system makes inappropriate assumptions
about what it means for the screen to be on or off. In particular,
screen on is usually taken to indicate an interactive state where
the user is present but that's not at all true for dozing (and is
only sometimes true while dreaming). We will probably need to add
some more precise externally visible states at some point.

The DozeHardware interface encapsulates a generic microcontroller
interface to allow a doze dream for off-loading rendering or other
functions while dozing. If the device possesses an MCU HAL for dozing
then it is exposed to the DreamService here.

Removed a number of catch blocks in DreamService that caught Throwable
and attempted to cause the dream to finish itself. We actually just
want to let the process crash. Cleanup will happen automatically if
needed. Catching these exceptions results in mysterious undefined
behavior and broken dreams.

Bug: 12494706
Change-Id: Ie78336b37dde7250d1ce65b3d367879e3bfb2b8b
/frameworks/base/core/java/android/os/PowerManager.java
3d658bf20e2d56e36941e7407deebeec1276fbcf 05-Feb-2014 Dianne Hackborn <hackbod@google.com> Improve logging of first wake lock, history size.

We now try to have a better label for the first wake lock
that is acquired in the log. This is done in two ways:

- The alarm manager now sorts the alarms it is going to
execute so that wakeup alarms are first, which are more
important w.r.t. which one should be logged.
- There is a new power manager facility to make a wake lock
as "unimportant for logging," which just means in battery
stats that a wake lock acquired after that can be considered
the actual one to log. This is only used by the alarm manager
to mark its TIME_TICK alarms as unimportant for logging.

Also reworked the battery history code to be cleaner and a bit
smaller. There is no longer a separate EVENT command, instead
the event code and tag are just another thing that can be included
in an UPDATE command.

The bits used in the first history int are also re-arrange, so
that only the ones that really change a fair amount in the state
bits are up at the top and there is no longer space used for
the command code (since now it is always just UPDATE). This
allows us to have more room for the time delta at the bottom,
to better avoid situations where we need to write an int delta.

Change-Id: I1bb860ae5b558a248800b090b03a84fbf7acd68a
/frameworks/base/core/java/android/os/PowerManager.java
3b0218b0ae1fad67f539ff3c10d6d2f3abec1a11 14-Jan-2014 Doug Zongker <dougz@android.com> boot into recovery via the pre-recovery service

Change PowerManagerService to start the pre-recovery service rather
than rebooting directly, when requested to reboot into recovery. Add
a new RECOVERY permission which a caller needs (in addition to REBOOT)
in order to go to recovery.

Bug: 12188746
Change-Id: I39121b701c4724558fe751adfbad79f8567faa43
/frameworks/base/core/java/android/os/PowerManager.java
95d785346b4dae808a2d8f77356175e55a572d96 11-Sep-2013 Dianne Hackborn <hackbod@google.com> Fix issue #10688644: Java crash in com.android.phone:

java.lang.SecurityException: Operation not allowed

There was a situation I wasn't taking into account -- components
declared by the system has a special ability to run in the processes
of other uids. This means that if that code loaded into another
process tries to do anything needing an app op verification, it will
fail, because it will say it is calling as the system package name but
it is not actually coming from the system uid.

To fix this, we add a new Context.getOpPackageName() to go along-side
getBasePackageName(). This is a special call for use by all app ops
verification, which will be initialized with either the base package
name, the actual package name, or now the default package name of the
process if we are creating a context for system code being loaded into
a non-system process.

I had to update all of the code doing app ops checks to switch to this
method to get the calling package name.

Also improve the security exception throw to have a more descriptive
error message.

Change-Id: Ic04f77b3938585b02fccabbc12d2f0dc62b9ef25
/frameworks/base/core/java/android/os/PowerManager.java
713df150b92a0a5eea877f99405e31eefbf93a09 17-May-2013 Dianne Hackborn <hackbod@google.com> Add app ops for wake locks.

Currently only supports auditing, not disabling.

Change-Id: Ie85f02c29b490d96e073f54d59e165d48c7c00c9
/frameworks/base/core/java/android/os/PowerManager.java
6edb6db512198aa0eef66341d163926b3531bca3 21-Nov-2012 Craig Mautner <cmautner@google.com> Ignore invalid combination of PowerManager flags.

ACQUIRE_CAUSES_WAKEUP is supposed to be ignored if combined with
PARTIAL_WAKE_LOCK. Instead it was being carried out for any values
of the WakeLock level.

This change reverts behavior to closely match
previous releases of the framework by only honoring
ACQUIRE_CAUSES_WAKEUP for screen wake lock levels. The only
difference being that in previous releases ACQUIRE_ could have been
combined with PROXIMITY_SCREEN_OFF_WAKE_LOCK (it never was) and
now such a combination will ignore the ACQUIRE_ flag.

Bug 7532258 fixed.

Change-Id: I46e848d8fd1b57e54c63141bf3d4f353986b5bdf
/frameworks/base/core/java/android/os/PowerManager.java
7b9a28892b1821a657bc9de5245528557d15a154 28-Oct-2012 Dirk Dougherty <ddougherty@google.com> Doc change: fix some table formatting.

Change-Id: I1533be695347697f5afd5c8d2719a0ff0b07abaa
/frameworks/base/core/java/android/os/PowerManager.java
93cbbb25a56356cd36523809783a277fe92e312e 04-Oct-2012 Jeff Brown <jeffbrown@google.com> Allow phone to go to sleep while in call.

Bug: 7279383
Change-Id: Ia05490218f40a1843507b95ff48fa07910e582d4
/frameworks/base/core/java/android/os/PowerManager.java
c428aae6429c3fd5e2037c3793af399d9f6e23bf 04-Oct-2012 Dianne Hackborn <hackbod@google.com> Fix issue #7267494, issue #7212347

7267494 Calendar is not syncing
Check for whether a content provider is dead before returning
it. This is kind-of a band-aid, but probably the right thing
to do; I'm just not sure exactly the full details of why this
problem is happening. Hopefully this "fixes" it, though I don't
have a way to repro to tell.

7212347 System power off dialog is only visible to user 0
Make it visible. Also turn on some battery debugging stuff and
clean it up so we can just keep it.

Change-Id: I5add25bf2a763c8dfe1df23bc5c753a9ea5d157a
/frameworks/base/core/java/android/os/PowerManager.java
db21284a7fb081065d26137891594bd8495b116f 01-Oct-2012 Jeff Brown <jeffbrown@google.com> Disable use of twilight mode for auto-brightness.

This adjustment is still experimental.

Bug: 7165399
Change-Id: I3fcf361933995d02a5329eeaec80155b39371ba3
/frameworks/base/core/java/android/os/PowerManager.java
62c82e4d92cc0b856059f905d81885f7808a0e7d 26-Sep-2012 Jeff Brown <jeffbrown@google.com> Make DreamManagerService more robust.

Clearly isolated the DreamManagerService and DreamController
responsibilities. DreamManagerService contains just enough logic to
manage the global synchronous behaviors. All of the asynchronous
behaviors are in DreamController.

Added a new PowerManager function called nap() to request the device
to start napping. If it is a good time to nap, then the
PowerManagerService will call startDream() on the DreamManagerService
to start dreaming.

Fixed a possible multi-user issue by explicitly tracking for
which user a dream service is being started and stopping dreams
when the current user changes. The user id is also passed to
bindService() to ensure that the dream has the right environment.

Fix interactions with docks and the UI mode manager. It is
important that we always send the ACTION_DOCK_EVENT broadcast
to the system so that it can configure audio routing and the like.
When docked, the UI mode manager starts a dock app if there is
one, otherwise it starts a dream.

This change resolves issues with dreams started for reasons other
than a user activity timeout.

Bug: 7204211
Change-Id: I3193cc8190982c0836319176fa2e9c4dcad9c01f
/frameworks/base/core/java/android/os/PowerManager.java
631938f26dbc89e7e9530bb85d9f37706dba59f3 09-Sep-2012 Jeff Brown <jeffbrown@google.com> Enable auto-brightness adjustment feature with system prop.

This feature is experimental and disabled by default.

Change-Id: I183534370da7613557e4d1535f556873f8a763df
/frameworks/base/core/java/android/os/PowerManager.java
b9b56954ec5a242f7c4945942539106539f98ffb 22-Aug-2012 Craig Mautner <cmautner@google.com> Merge "Eliminate special battery calls by WindowManager" into jb-mr1-dev
259328c04ce16c554b48a14f68d8af94dc54d7ec 22-Aug-2012 Craig Mautner <cmautner@google.com> Eliminate special battery calls by WindowManager

Previous to this change the WindowManager was notifying the
BatteryDtatsService about windows that keep the screen on. WM used a
custom WakeLock tag to indicate to PowerManagerService that it had
already notified the BatteryStatsService.

This change eliminates WindowManager notifying the BatteryStatsService
and lets PowerManagerService do the job.

Fixes bug 7030326.

Change-Id: I666dc6ef8f094b8d3d109fea6876be058e057b4f
/frameworks/base/core/java/android/os/PowerManager.java
f9bba13692c10ff99a52f79d6d0f04c96117ff57 22-Aug-2012 Jeff Brown <jeffbrown@google.com> Make the screen brightness setting limits configurable.

Change-Id: Ica84951c482edef6b7faebe1af22c609a1b9e8be
/frameworks/base/core/java/android/os/PowerManager.java
9630704ed3b265f008a8f64ec60a33cf9dcd3345 28-Jul-2012 Jeff Brown <jeffbrown@google.com> Power manager rewrite.

The major goal of this rewrite is to make it easier to implement
power management policies correctly. According, the new
implementation primarily uses state-based rather than event-based
triggers for applying changes to the current power state.

For example, when an application requests that the proximity
sensor be used to manage the screen state (by way of a wake lock),
the power manager makes note of the fact that the set of
wake locks changed. Then it executes a common update function
that recalculates the entire state, first looking at wake locks,
then considering user activity, and eventually determining whether
the screen should be turned on or off. At this point it may
make a request to a component called the DisplayPowerController
to asynchronously update the display's powe state. Likewise,
DisplayPowerController makes note of the updated power request
and schedules its own update function to figure out what needs
to be changed.

The big benefit of this approach is that it's easy to mutate
multiple properties of the power state simultaneously then
apply their joint effects together all at once. Transitions
between states are detected and resolved by the update in
a consistent manner.

The new power manager service has is implemented as a set of
loosely coupled components. For the most part, information
only flows one way through these components (by issuing a
request to that component) although some components support
sending a message back to indicate when the work has been
completed. For example, the DisplayPowerController posts
a callback runnable asynchronously to tell the PowerManagerService
when the display is ready. An important feature of this
approach is that each component neatly encapsulates its
state and maintains its own invariants. Moreover, we do
not need to worry about deadlocks or awkward mutual exclusion
semantics because most of the requests are asynchronous.

The benefits of this design are especially apparent in
the implementation of the screen on / off and brightness
control animations which are able to take advantage of
framework features like properties, ObjectAnimator
and Choreographer.

The screen on / off animation is now the responsibility
of the power manager (instead of surface flinger). This change
makes it much easier to ensure that the animation is properly
coordinated with other power state changes and eliminates
the cause of race conditions in the older implementation.

The because of the userActivity() function has been changed
so that it never wakes the device from sleep. This change
removes ambiguity around forcing or disabling user activity
for various purposes. To wake the device, use wakeUp().
To put it to sleep, use goToSleep(). Simple.

The power manager service interface and API has been significantly
simplified and consolidated. Also fixed some inconsistencies
related to how the minimum and maximum screen brightness setting
was presented in brightness control widgets and enforced behind
the scenes.

At present the following features are implemented:

- Wake locks.
- User activity.
- Wake up / go to sleep.
- Power state broadcasts.
- Battery stats and event log notifications.
- Dreams.
- Proximity screen off.
- Animated screen on / off transitions.
- Auto-dimming.
- Auto-brightness control for the screen backlight with
different timeouts for ramping up versus ramping down.
- Auto-on when plugged or unplugged.
- Stay on when plugged.
- Device administration maximum user activity timeout.
- Application controlled brightness via window manager.

The following features are not yet implemented:

- Reduced user activity timeout for the key guard.
- Reduced user activity timeout for the phone application.
- Coordinating screen on barriers with the window manager.
- Preventing auto-rotation during power state changes.
- Auto-brightness adjustment setting (feature was disabled
in previous version of the power manager service pending
an improved UI design so leaving it out for now).
- Interpolated brightness control (a proposed new scheme
for more compactly specifying auto-brightness levels
in config.xml).
- Button / keyboard backlight control.
- Change window manager to associated WorkSource with
KEEP_SCREEN_ON_FLAG wake lock instead of talking
directly to the battery stats service.
- Optionally support animating screen brightness when
turning on/off instead of playing electron beam animation
(config_animateScreenLights).

Change-Id: I1d7a52e98f0449f76d70bf421f6a7f245957d1d7
/frameworks/base/core/java/android/os/PowerManager.java
b696de5c10ebcc7bf42d8487fc0e56e0e937754d 28-Jul-2012 Jeff Brown <jeffbrown@google.com> Move and rename user activity event type constants.

Change-Id: Ie565808796773b6896e71ddfac6aaaf8031de846
/frameworks/base/core/java/android/os/PowerManager.java
155fc70252fd9ccee1f05da4e6966a99ec86d499 27-Jul-2012 Jeff Brown <jeffbrown@google.com> Flatten power manager wake lock constants.

We only support a few basic kinds of wake locks. Rather than
pretend that we could support other weird combinations of features,
just get rid of the feature bits.

Deprecated other wake lock types. We really want to encourage
developers to use FLAG_KEEP_SCREEN_ON instead of managing
their own wake locks, even though its behavior is not
exactly equivalent.

Change-Id: Idfeb0bc6efff0ef2736e47f72a06e69e5a16996e
/frameworks/base/core/java/android/os/PowerManager.java
ff1baef86c3b34fe2aec33a22bc2d06112af4c03 20-Jul-2012 Jeff Brown <jeffbrown@google.com> Fix keyguard wake-up issue.

Bug: 6835809
Change-Id: I7a23b50286592b4c4b104b0b6429f2d05fb5e01b
/frameworks/base/core/java/android/os/PowerManager.java
1244cdaedd5bb4518fc75c9a25b834190ea31877 20-Jun-2012 Jeff Brown <jeffbrown@google.com> Clean up PowerManager API.

Mostly just moved the code around and improved the docs.

Fixed a minor inefficiency in WakeLock.setWorkSource() where
we would tell the power manager that the work source was changed
even when the old work source and new work source were both null.

Fixed a bug in WakeLock.setWorkSource() where we would not
notify the power manager that the work source was changed if
there was no work source previously specified.

Added synchronized to WakeLock.setReferenceCounted.

Added a checked in WakeLock.acquireLocked() and WakeLock.release()
to check whether the wake lock is actually not held / held
before performing the corresponding operation. This change avoids
making redundant calls into the power manager service in the
case where the wake lock is not reference counted and acquire()
or release() have been called multiple times.

Made the PowerManager and WakeLock classes final. They are not
directly instantiable by applications so this change does not
break the API.

Removed a little dead code (one private constructor and an
unused constant).

Change-Id: I4e10cf893506115938a35756136c101256dccf30
/frameworks/base/core/java/android/os/PowerManager.java
7304c343821309dd15f769b18f1de2fa43751573 12-May-2012 Jeff Brown <jeffbrown@google.com> Move power HAL interactions to PowerManagerService.

This refactoring sets the stage for a follow-on change that
will make use additional functions of the power HAL.

Moved functionality from android.os.Power into PowerManagerService.
None of these functions make sense being called outside of the
system server. Moving them to the PowerManagerService makes it
easier to ensure that the power HAL is initialized exactly once.

Similarly, moved ShutdownThread out of the policy package and into
the services package where it can tie into the PowerManagerService
as needed.

Bug: 6435382
Change-Id: I958241bb124fb4410d96f5d5eb00ed68d60b29e5
/frameworks/base/core/java/android/os/PowerManager.java
b5962e73e841455b8e2a4e2d5c0ef0a19d62a803 16-Jun-2011 Jake Hamby <jhamby@google.com> Fix race condition in WakeLocks.

A previous fix to PowerManager.WakeLock introduced a new bug. When
a reference counted wakelock (such as SMSDispatcher) is acquired
multiple times in quick succession with a timeout, the first timeout
would remove the second callback from the handler, decrement the
reference count, but then the wakelock never gets released because
the second callback has been removed.

Bug: 4535237
Change-Id: I4f1240189bf3ed3396c86200c687282597b107d6
/frameworks/base/core/java/android/os/PowerManager.java
d7350e3a56daa44e2d2c6e5175e6430492cf0dc9 05-May-2011 Joe Onorato <joeo@google.com> Fix race conditions in WakeLocks.

Bug: 3439332
Change-Id: I70c583e6a73960df8faad69675947b87642c6228
/frameworks/base/core/java/android/os/PowerManager.java
9567a66a5e6f49dd8495fb5f6e2efb9f32e84b35 20-Apr-2011 Dianne Hackborn <hackbod@google.com> Deprecate a bunch of APIs.

And clean up some documentation.

Change-Id: I7882183b3daf883b7ac6098d19f88dc7cfbcdf61
/frameworks/base/core/java/android/os/PowerManager.java
d710fb500c121b3f9563ccfbe488f7c9d3ec4985 16-Mar-2011 Kenny Root <kroot@google.com> Update WakeLock-related docs to mention permissions

android.permission.WAKE_LOCK permission is required to use WakeLock or
WifiLock, but nowhere is it mentioned that you must declare that
permission to use it.

Change-Id: Ib5f5294d37e39169fe5678743f380d95c4e5a842
/frameworks/base/core/java/android/os/PowerManager.java
36e52dce7f63881dd8061b6d4a6bed7c0721911e 13-Dec-2010 Mike Lockwood <lockwood@android.com> PowerManager: remove unused import

Change-Id: I0cfd48bd7ec0af3be7721994ab31d6f00634a4e0
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/core/java/android/os/PowerManager.java
8310b42fbc086b0f05fc8ef45ac34c7e099c485e 23-Sep-2010 Joe Onorato <joeo@android.com> Add javadoc saying that wake locks are ref counted by default.

Bug: 3012561
Change-Id: I441a42fdb12ba6d87d6f5a49463d6ddcc300acb7
/frameworks/base/core/java/android/os/PowerManager.java
7e9f4eb2608148436cef36c9969bf8a599b39e72 11-Sep-2010 Dianne Hackborn <hackbod@google.com> Track client requests through location manager.

This fixes a problem where applications could ask the location
manager to do very heavy-weight things (like... say... update
location every minute), which would get accounted against the
system instead of the application because ultimately it is the
system making the heavy calls (wake locks, etc).

To solve this, we introduce a new class WorkSource representing
the source of some work. Wake locks and Wifi locks allow you
to set the source to use (but only if you are system code and thus
can get the permission to do so), which is what will be reported
to the battery stats until the actual caller.

For the initial implementation, the location manager keeps track
of all clients requesting periodic updates, and tells its providers
about them as a WorkSource param when setting their min update time.
The network location provider uses this to set the source on the
wake and wifi locks it acquires, when doing work because of the
update period.

This should also be used elsewhere, such as in the GPS provider,
but this is a good start.

Change-Id: I2b6ffafad9e90ecf15d7c502e2db675fd52ae3cf
/frameworks/base/core/java/android/os/PowerManager.java
f5bd092b5099cf43f031c3f53ad01592dda57f4b 22-Mar-2010 Mike Lockwood <lockwood@android.com> Improve wakelock debugging:

Throw NullPointerException if tag is null in PowerManager.newWakelock()
Print wakelock owner's uid and pid in dumpsys power output.

BUG: 2522675

Change-Id: I462c7f8c49f9896b2f58cef5a678ebd2c062a8f7
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/core/java/android/os/PowerManager.java
60d8762413e8daba5f73559786312a9ec5e3b827 17-Dec-2009 Dan Egnor <egnor@google.com> DropBox logging of app & system server crashes.

The crashes are also reported to the event log (and of course the
main logcat, like they always have been). Ordinary Log.e(t,m,e) isn't dropboxed
but there's a new Log.wtf() which always is. (Still @pending in this change.)

Add a hook to IPowerManager to crash the system server on demand
(only for apps with REBOOT permission, since it's basically a restart).
This is not exposed in PowerManager, must be invoked directly -- mostly
this is there so "Bad Behavior" in dev tools can do it.
/frameworks/base/core/java/android/os/PowerManager.java
6fd4e76ca1866772d125089e8f2e3f1d54fcae08 20-Nov-2009 Doug Zongker <dougz@android.com> fix bad link in javadoc that's breaking SDK build
/frameworks/base/core/java/android/os/PowerManager.java
50a21f4d3b70360b36acad20e234c380654fd59f 19-Nov-2009 Doug Zongker <dougz@android.com> add reboot() method to PowerManager

In order to unbundle System Update, we need some to expose in the SDK
some way to reboot the device into recovery. Add a reboot() method to
PowerManager, protected by the android.permission.REBOOT permission.
/frameworks/base/core/java/android/os/PowerManager.java
0e39ea83c5578e0d55e120c91ff7cfeeb0c1cb2f 18-Nov-2009 Mike Lockwood <lockwood@android.com> Fixes for proximity sensor behavior:

Add optional flag to Wakelock.release() to specify whether we should wait for proximity sensor to go negative before turning on the screen.
Clear the "waiting for proximity sensor to go negative" state when the power key is pressed.

Part of the fix for b/2243198 (Black screen lockup after ending call)

Change-Id: I813fdb7aa4192cd3384a25be9e59d7d4b90da53a
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/core/java/android/os/PowerManager.java
322591cb4b158dc2edbc3d95cd02e44f132feb5f 29-Oct-2009 Charles Mendis <cmendis@google.com> Expose PowerManager.isScreenOn in the public api.

Change-Id: I6ccd2ebcbf3f8ad9ffa4b86a9c037cb0c25a7b78
/frameworks/base/core/java/android/os/PowerManager.java
237a29923a05663a2195bf93b392768dbaf31ebf 15-Sep-2009 Mike Lockwood <lockwood@android.com> Move backlight brightness from HardwareService to PowerManager

to prevent apps from changing the hardware behind its back.
Fixes b/2041941 Lock screen flashes the screen very bright before dimming

Change-Id: Ice757f7ae87902bdfb3634471cf44f020ebfaae4
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/core/java/android/os/PowerManager.java
bc706a03a25f0dfe2cb0ecd1f6e4f7be905592a7 27-Jul-2009 Mike Lockwood <lockwood@android.com> PowerManager: Add proximity sensor support.

Add new wakelock flag PROXIMITY_SCREEN_OFF_WAKE_LOCK.
If you create a wakelock with this flag, while the wakelock is acquired,
the screen will turn off automatically when the sensor detects an object close to the screen.
Removing the object will cause the screen to wake up again.

Added PowerManager.getSupportedWakeLockFlags(), which can be used to determine
if proximity screen off wakelocks are supported by the hardware.

Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/core/java/android/os/PowerManager.java
9066cfe9886ac131c34d59ed0e2d287b0e3c0087 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/frameworks/base/core/java/android/os/PowerManager.java
d83a98f4ce9cfa908f5c54bbd70f03eec07e7553 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/frameworks/base/core/java/android/os/PowerManager.java
54b6cfa9a9e5b861a9930af873580d6dc20f773c 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution
/frameworks/base/core/java/android/os/PowerManager.java