97 Commits

Author SHA1 Message Date
Mike Lockwood
48358bd5c1 Fix inconsistency in how we handle light sensor when battery is low.
In lightSensorChangedLocked we ignore the light sensor if the battery is low.
But in applyButtonState() and applyKeyboardState() we were still using the previous
mLightSensorScreenBrightness value, which resulted in a race condition that could
leave the button lights on after the screen turns off.
Now we ignore the light sensor value and button brightness override if the battery
is low so the low battery behavior is consistent.

Change-Id: I4943f8904299883211a95596ee207df69d1eaea2
BUG: 2570962

Signed-off-by: Mike Lockwood <lockwood@android.com>
2010-04-17 22:29:20 -04:00
Mike Lockwood
9c90a37c6e Fix wakelock leak in PowerManagerService.sendNotificationLocked()
Change-Id: Ia5f814fe81413dc5350faaf4c79cff47de62d0ed
BUG: 2592894
Signed-off-by: Mike Lockwood <lockwood@android.com>
2010-04-13 15:40:27 -04:00
Mike Lockwood
f5bd092b50 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>
2010-03-22 17:10:15 -04:00
Mike Lockwood
b62f959430 Fix problems with new PowerManager.reboot() implementation.
ShutdownThread.reboot() does return so we need to block after calling it
to prevent PowerManager.reboot() from returning.

Since PowerManager.reboot() can now take significantly longer than before,
we now ignore ANRs during shutdown.

Change-Id: Ibceeb265ae382567215f6a399108d8be3a7bbc95
Signed-off-by: Mike Lockwood <lockwood@android.com>
2010-03-12 12:35:24 -05:00
Suchi Amalapurapu
6ffce2e9a3 Add new shutdown observer for MountService.
Use new observer before rebooting and shutting down.
Add some unit tests for unmount and shutdown code paths
Fix registering/unregistering part in MountService
Use ShutdownThread in PowerManager.reboot()
Add reboot support to ShutdownThread.
Remove MountService code from PowerManagerService.java and Power.java.
Clean shutdown/reboot is handled exclusively by ShutdownThread now.

Change-Id: Iefb157451d3d9c426cb431707b870a873c09123d
2010-03-09 17:00:18 -05:00
Mike Lockwood
b42ab0f41c Delay setting initial screen brightness until after the sensors are initialized.
Some devices will not activate the light sensor properly on boot
unless we do this.

Change-Id: Ia27b6fc2d515c31eb8597e1d52127d70e2643bd7
BUG: 2269307

Signed-off-by: Mike Lockwood <lockwood@android.com>
2010-03-04 08:02:44 -05:00
Mike Lockwood
84a8934673 Don't poke user activity when unplugging unless screen is already on.
Change-Id: I5a5f233541e13b3a916ad0d8b3bf8d6fb49ab7fd
BUG: 1317687

Signed-off-by: Mike Lockwood <lockwood@android.com>
2010-03-01 21:28:58 -05:00
Joe Onorato
8a9b22056b Switch the services library to using the new Slog 2010-03-01 13:06:50 -08:00
Mike Lockwood
ca44df86ac Fix synchronization problem in PowerManagerService.dump()
Fixes a race condition that resulted in an IndexOutOfBoundsException
due to a wakelock being released while dump() was iterating through the
wakelock list.

BUG: 2469910

Change-Id: I10d7a65b9f397934942b290cb047c4ca81214297
Signed-off-by: Mike Lockwood <lockwood@android.com>
2010-02-25 14:08:55 -05:00
San Mehat
b104340496 Framework: Clean up / Refactor Mount APIs
- Move android.storage.* -> android.os.storage.* and refactor users
 - Refactor generic shares back to explicit ums enable/disable/isEnabled
 - Remove media insert/removed event callbacks (not ready for Froyo)
 - Remove 'label' from volume state change callbacks
 - Add public API functions for enabling/disabling USB mass storage (permissions enforced
   in MountSevice)
 - Remove some stray un-needed import lines
 - Move android.os.IMountService / android.os.IMountServiceListener -> android.os.storage
 - Improve code comments

Updated:
  MountService: Add dup state check and move debugging behind a conditional
  UsbStorageActivity: Fix review comments + a TODO
  StorageNotification: Add @Override tags
  StorageManager: Don't use a static Listener list
  MountService: Reduce bloat and fix == where I meant .equals()
  PackageManagerTests: Update for new API

Signed-off-by: San Mehat <san@google.com>
2010-02-09 11:03:16 -08:00
Mike Lockwood
b286541674 Keep automatic screen brightness monotonically increasing until screen is turned off.
This is an experimental change to avoid the light sensor screen fluctuation problem.
We only do this when undocked to since the lighting should be stable in the docked case
and since the dock keeps the screen on we need to be able to adjust the lighting.

Change-Id: I70afcc393f51f2679be8228d6cb993ddc07e5986
BUG: 2387223
Signed-off-by: Mike Lockwood <lockwood@android.com>
2010-02-05 14:33:14 -05:00
Mike Lockwood
ef73162887 Support for triggering the lockscreen while the screen is on:
Add new ALLOW_LOCK_WHILE_SCREEN_ON window manager flag, which when set
causes the window manager to put up the lockscreen after the
normal screen timeout has elapsed.

Add plumbing to pass PowerManager.userActivity() to the window manager policy.

Change-Id: I05adc52bad39c56031a08e8ec3cbcf5c2d9b9827
Signed-off-by: Mike Lockwood <lockwood@android.com>
2010-01-29 17:05:04 -05:00
Dianne Hackborn
254cb446fa More device admin.
- Clean up device policy manager APIs.
- Implement lockNow().  For now this just turns the screen off to lock the device.
2010-01-28 13:15:57 -08:00
Dianne Hackborn
df83afaf29 More device policy manager / admin work.
Update API with some new features, re-arrange how you check for valid
passwords, and start hooking up the back-end implementation.
2010-01-21 14:30:57 -08:00
Doug Zongker
43866e0c48 move some system services from gservices to secure settings
Change-Id: Ie2dfb99a2b42b2cc9310b858c044d8684e3493fa
2010-01-07 14:20:39 -08:00
San Mehat
1e512790bf PowerManagerService: Switch to using MountService shutdown for media
Signed-off-by: San Mehat <san@google.com>
2010-01-07 10:40:29 -08:00
San Mehat
14e69afdfc PowerManagerService: When rebooting, ensure external storage is unmounted
Signed-off-by: San Mehat <san@google.com>
2010-01-06 15:36:01 -08:00
Dan Egnor
60d8762413 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.
2009-12-21 16:03:19 -08:00
Doug Zongker
ab5c49c7e7 move event log tags used by system server into this package
We can now locate event log tag definitions in individual packages
(and java constants for the tag numbers get auto-generated), so move
all the tags used by the system server into the package.
2009-12-04 10:31:43 -08:00
Mike Lockwood
44000eb2a2 am 678c2e35: Merge change I9ef88863 into eclair
Merge commit '678c2e35768a5426b4ad8f67c836008e7751a353' into eclair-mr2

* commit '678c2e35768a5426b4ad8f67c836008e7751a353':
  Add WindowManagerPolicy.OFF_BECAUSE_OF_PROX_SENSOR to indicate screen was turned off by the proximity sensor.
2009-12-03 11:18:48 -08:00
Mike Lockwood
435eb6464c Add WindowManagerPolicy.OFF_BECAUSE_OF_PROX_SENSOR to indicate screen was turned off by the proximity sensor.
Part of a fix for bug b/2300622 (Proximity sensor always blows up the lock screen while in call)

Change-Id: I9ef888638b19540a78a34507d52ff522f505102f
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-12-03 08:56:53 -05:00
Mike Lockwood
3cb67a37f1 LightsService cleanup:
Add Light subclass to replace LightsService light setting methods
Remove LightsService.setAttentionLight() and LightsService.pulseBreathingLight()
Add support for Wifi and Bluetooth lights

Change-Id: I707f53cda27481c25649f402567a665d52e9cb62
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-27 15:02:11 -05:00
Mike Lockwood
b11832de73 Add setAttentionLight() to IPowerManager for the Phone app.
Change-Id: Id7b9903e1efaf56a2336519a8653962b6ae2c13d
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-25 15:25:55 -05:00
Mike Lockwood
3a32213c40 Remove HardwareService and move vibrator support to VibratorService.
The lights support is only needed by PowerManagerService and NotificationManagerService, so we do not need a Binder API for it.
Move backlight and notification light support to new LightsService class.
The camera flash is now handled directly by the camera HAL, so the flash Hardware service flash support is obsolete.

Change-Id: I086d681f54668e7f7de3e8b90df3de19d59833c5
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-25 12:54:58 -05:00
Mike Lockwood
fb73f79340 Add window manager support for overriding button and keyboard backlight values.
The new backlightBrightness field works similarly as the existing WindowManager.LayoutParams.screenBrightness field

Needed for bugs:
    b/2233655 (under low ambient light the touch keys remain illuminated during video playback and never timeout)
    b/2221079 (Backlight for home/search/back/etc buttons should turn off when in dock in night mode)

Change-Id: I60dfecdc7bb653b0db38094464de651220b3d438
2009-11-23 15:16:55 -05:00
Mike Lockwood
401a712e3b IPowerManager: remove some unused methods.
Change-Id: I7c7fa7eaf6c99e723da20939c27fbc172ad51613
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-20 11:50:21 -05:00
Doug Zongker
50a21f4d3b 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.
2009-11-19 17:18:31 -08:00
Mike Lockwood
0e39ea83c5 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>
2009-11-18 18:45:59 -05:00
Mike Lockwood
51b844965b Revert "PowerManagerService: enable logging for when mPowerState changes."
This reverts commit 24ace3395b532e3cbb63d2a6197a91dd9242bb36.

Bug b/2265538 (verbose logging from power manager)
2009-11-16 21:51:18 -05:00
Mike Lockwood
2d7bb81ac4 Keep screen bright until boot completed.
Fixes b/2262575 (device boots into darkness)

Change-Id: Ib1fb3fcfd4a389d8aa5803a60e07660cfbe4fe47
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-15 18:12:22 -05:00
Mike Lockwood
e090281428 Fix a race condition that resulted in the screen coming on without the brightness set to the correct value.
Do not cancel screen brightness animation in forceUserActivityLocked unless screen is turning off.
Also not turn the screen on if PowerManager.preventScreenOn(false) is called while proximity sensor is active.

Fixes b/2254818 (dim display) where due to a race condition the screen is stuck in a dim state.

Change-Id: If6f805609c8d463631b9e22805e5242714ce34c0
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-14 23:12:25 -05:00
Mike Lockwood
0e5bb7f1c9 PowerManagerService: Hold a wakelock while mProximityTask is queued
This prevents the device from sleeping while a deferred proximity sensor
event is pending.
Fixes b/2260005 (Proximity sensor can fail due to missing wakelock)

Change-Id: Ia4825f548b5b7d8a0b184f720b32c2f21b77b96e
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-14 06:41:20 -05:00
Mike Lockwood
cc9a63dbc2 Add support for specifying the current LCD brightness mode to the backlight driver.
This allows the driver to behave differently depending on if the lighting is being
managed by the light sensor or by a user preference.

Change-Id: I4b9325f82b7aded0ce5cfc6c07658666bbdae331
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-10 14:58:15 -05:00
Mike Lockwood
50c548d242 Disabling user activity now resets user power state so the keyguard can set short screen timeout when keyguard is unhidden.
This is part of a fix for bug b/2248320 (Lock screen does not time out after

Change-Id: Iba7f8a7b9997ecb0e4da37667600055f9a35531c
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-10 10:04:21 -05:00
Mike Lockwood
ee2b094de0 Do not deactivate the proximity sensor until after the sensor returns negative.
This ensures that we do not get cheek presses immediately after a call is ended.
Fixes bug b/2246824 (prox sensor subtleties when call ends)

Change-Id: I97d39b7689d9ea2e94ea9aceeb93bf15228ec095
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-10 07:55:32 -05:00
Mike Lockwood
24ace3395b PowerManagerService: enable logging for when mPowerState changes.
Change-Id: Idcd983106d66629070eda15e1160f708c789ab05
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-09 19:54:02 -05:00
Mike Lockwood
ba8eb1efef Use SystemClock.elapsedRealtime() instead of sensor timestamp
when processing light and proximity events.
This should fix loss of 2 second hysterisis for light sensor (b/2243521)

Change-Id: Ia3ce331e67d803eb5e51810cb7161b7c528312d7
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-08 19:31:18 -05:00
Mike Lockwood
497087e33d Ignore the light sensor if the screen is turning off.
Fixes bug b/2202165.  The light sensor was interfering with the screen off animation.

Change-Id: I1bc566a164af689b60b066e6cb3dcbf7959bc50a
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-08 18:43:12 -05:00
Mike Lockwood
20ee6f2dd3 Do not apply light sensor debounce logic while the light sensor is still warming up.
This allows us to adjust immediately when we receive a correct light sensor reading
after the screen turns on.

Change-Id: I627047365640761727348e577c9164a6d6be2772
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-07 20:33:47 -05:00
Mike Lockwood
9b813692f5 Increase light sensor delay from one to two seconds.
Change-Id: I3f0ded49cb447835133cf8d5d693260e8312aa89
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-06 15:53:59 -05:00
Charles Mendis
322591cb4b Expose PowerManager.isScreenOn in the public api.
Change-Id: I6ccd2ebcbf3f8ad9ffa4b86a9c037cb0c25a7b78
2009-11-06 14:37:07 -05:00
Mike Lockwood
0d72f7e9fc Fix a race condition that could result in the screen being forced off indefinitely after a phone call.
This should fix a "black screen" bug that Motorola identified.
mProximitySensorActive was being set to true due to a proximity sensor change being posted
just after we disabled the proximity sensor.
Now we ignore proximity changes after the phone app releases the proximity lock after the call is done.

Change-Id: I417d423de3d43515389b1b7b008cdcb795cd10f6
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-06 08:28:19 -05:00
Mike Lockwood
20f87d7aed Throttle proximity sensor values so we do not process more than one change a second.
This is to prevent a noisy proximity sensor from causing the screen to turn on and off
in rapid succession, which can trigger race conditions in the keyguard manager.

Change-Id: I2c6e54e4b41716e038854ed9a827c901579c8865
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-05 16:13:46 -05:00
Mike Lockwood
27c6dd7aa4 PowerManagerService: Fix manual brightness mode.
Change-Id: I10aec64e3f7ae2715475b9797565747295c19a00
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-04 08:57:07 -05:00
Mike Lockwood
f90ffcc639 Remove obsolete hardware auto-brightness support.
Change-Id: Ibd0ef67f887254f26ce19faf0627f8b246ec0a18
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-03 11:41:27 -05:00
Mike Lockwood
952211b4ae Fix problem with proximity sensor not reawaking screen if the values change too quickly.
The logic that disables user activity while turning off the screen should not affect proximity sensor.

Fixes bug b/2228734 (in-call, prox sensor gets confused)

Change-Id: Ieca126e6f79bf7baa5741981aea72d306ba03edc
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-02 14:17:57 -05:00
Mike Lockwood
f1d14f6a33 Do not advance mLastEventTime when enabling or disabling user activity.
Fixes a race condition between the keyguard and power key that sometimes resulted
in the power key failing to turn off the screen.

Fixes bug b/2212852 (Power button does not put phone to sleep)

Change-Id: I92498c5fddf2bfc32b105ea1a7ea14a06d83888e
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-02 11:56:59 -05:00
Mike Lockwood
9efd523c46 Add warning that hardware auto-brightness is deprecated and will be removed in the next release.
Change-Id: I90eae78f71f377f6479d0aaf7ced38a7b988a7ee
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-01 10:05:50 -05:00
Mike Lockwood
4984e73dc5 Manage button and keyboard backlights with light sensor in both manual and automatic mode.
Now the manual brightness mode only applies to the LCD backlight and
button and keyboard backlights are always managed automatically.

Fixes bug b/2195798 (Passion capacitive key backlights don't always come on)

This change only affects the framework based auto-brightness implementation.
Hardware auto-brightness is not affected.

Change-Id: Ib88310d642d498591e8879c8269d630ff3f7c8af
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-11-01 08:20:42 -05:00
Mike Lockwood
df024920eb Don't turn on keyboard backlights when keyboard is closed in auto brightness mode.
For framework light sensor support (does not affect hardware based approach).

Change-Id: I6896a7c5b3fd3ed136c4f25c63a0e5813c349f68
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-10-31 17:05:00 -04:00