summaryrefslogtreecommitdiff
path: root/services/java/com/android/server/UiModeManagerService.java
AgeCommit message (Collapse)Author
2013-12-19Move some system services to separate directoriesAmith Yamasani
Refactored the directory structure so that services can be optionally excluded. This is step 1. Will be followed by another change that makes it possible to remove services from the build. Change-Id: Ideacedfd34b5e213217ad3ff4ebb21c4a8e73f85
2013-12-12Introduce a Lifecycle for system servicesAdam Lesinski
Provide an abstract class for system services to extend from, similar to the android.app.Service. This will allow services to receive events in a uniform way, and will allow services to be created and started in the correct order regardless of whether or not a particular service exists. Similar to android.app.Service, services are meant to implement Binder interfaces as inner classes. This prevents services from having incestuous access to each other and makes them use the public API. Change-Id: Iaacfee8d5f080a28d7cc606761f4624673ed390f
2013-02-01App ops: vibration, neighboring cells, dialing, etc.Dianne Hackborn
Improve handling of vibration op, so that apps are better blamed (there is now a hidden vibrator API that supplies the app to blame, and the system now uses this when vibrating on behalf of an app). Add operation for retrieving neighboring cell information. Add a new op for calling a phone number. This required plumbing information about the launching package name through the activity manager, which required changing the internal startActivity class, which required hitting a ton of code that uses those internal APIs. Change-Id: I3f8015634fdb296558f07fe654fb8d53e5c94d07
2012-10-11Do not launch Somnambulator as a dock app.Jeff Brown
Fixes a black flash that occurred when the device was docked because the UiModeManagerService was launching the Somnambulator to start the dream when docked. This caused an unnecessary activity transition and could in fact make dreaming less reliable than if the UiModeManagerService started the dream itself. Moved common code from UiModeManagerService and Somnambulator to Sandman to ensure it is kept in sync. Bug: 7328545 Change-Id: I46102784e2ab1acc0241d43a48abf0581278af24
2012-10-11Ensure Binder in-calls to UiModeManagerService are guarded.Jeff Brown
Fixed a couple of problems where locks were not being taken or where the calling identity was being clear deep in the call stack whereas it should be cleared as close to the entry point possible to ensure code correctness. Bug: 7328545 Change-Id: I8ff646a772cd7f4025d5604bc35c6372c3d2428e
2012-10-05Ensure that dreams show while docked.Jeff Brown
Fixed a race between the UiModeManagerService and PowerManagerService both of which are trying to wake the device when docked / powered. Bug: 7281240 Change-Id: Ia41fef48f17f2a2eb56549437d295f9a86c95af2
2012-09-28Fix issue #7255954: API Review: rename Dream to DreamServiceDianne Hackborn
Change-Id: I89ecf2c3ec4fef09c0495aa68de11576f9cfd872
2012-09-26Cure narcolepsy.Jeff Brown
Bug: 7204211 Change-Id: I2c09abaad5d321cec6f62f7ca0ce00c3b61ee211
2012-09-26Make DreamManagerService more robust.Jeff Brown
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
2012-09-24Fix issue #7214090: Need to be able to post notifications to all usersDianne Hackborn
Also fix a bunch of system services that should be doing this. And while doing that, found I needed to fix PendingIntent to evaluate USER_CURRENT at the point of sending, not creation. Note that this may end up with us having some notification shown to non-primary users that lead to settings UI that should only be for the primary user (such as the vpn notification). I'm not sure what to do about this, maybe we need a different UI to come up there or something, but showing the actual notification for those users at least seems less broken than not telling them at all. Change-Id: Iffc51e2d7c847e3d05064d292ab93937646a1ab7
2012-09-07Explicitly specify current user everywhere home is started.Dianne Hackborn
Change-Id: I58d86136de7f9cef1eaf72793d0e200b852d7355
2012-08-31Remove Binder.getOrigCallingUid().Dianne Hackborn
Replaced all remaining places that used it with explicit user specification. While doing this, I ran into stuff that was creating PendingIntent objects (that now need to specify the explicit user they are for), which are also posting notifications... but have no way to specify the user for the notification. So the notification manager in the system process now also gets a formal concept of a user associated with the notification, which is passed in to all the necessary aidl calls. I also removed the old deprecated aidl interface for posting/cancelling notifications, since we now always need a user supplied. There is more work that needs to be done here, though. For example I think we need to be able to specify USER_ALL for a notification that should be shown to all users (such as low storage or low battery). Along with that, the PendingIntent creation needs to be tweaked to be able to handle USER_CURRENT by evaluating the user at the point the pending intent is sent. That's for another change, however. Change-Id: I468e14dce8def0e13e0870571e7c31ed32b6310c
2012-08-30Improve multi-user broadcasts.Dianne Hackborn
You can now use ALL and CURRENT when sending broadcasts, to specify where the broadcast goes. Sticky broadcasts are now correctly separated per user, and registered receivers are filtered based on the requested target user. New Context APIs for more kinds of sending broadcasts as users. Updating a bunch of system code that sends broadcasts to explicitly specify which user the broadcast goes to. Made a single version of the code for interpreting the requested target user ID that all entries to activity manager (start activity, send broadcast, start service) use. Change-Id: Ie29f02dd5242ef8c8fa56c54593a315cd2574e1c
2012-08-22Extract the twilight detection into its own service.Jeff Brown
Moving the detection out of UiModeManagerService will make it easy for other services to register for the information. Fixed a bugs related to updating twilight state when the time is updated. We're using the same algorithm as before for passively tracking the location. Ideally we should update it to use the new location manager features for low-power location requests. Change-Id: I520c53b9946ab6f8d994587d357fd6542c300c07
2012-07-20Improve Location object.Nick Pelly
Add getElapsedRealtimeNano(): Currently Location just has getTime() and setTime() based on UTC time. This is entirely unreliable since it is not guaranteed monotonic. There is a lot of code that compares fix age based on deltas - and it is all broken in the case of a system clock change. System clock can change when switching cellular networks (and in some cases when switching towers). Document the meaning of getAccuracy(): It is the horizontal, 95% confidence radius. Make some fields mandatory if they are reported by a LocationProvider: All Locations returned by a LocationProvider must include at the minimum a lat, long, timestamps, and accuracy. This is necessary to perform fused location. There are no public API's for applications to feed locations into a location provider so this should not cause any breakage. If a LocationProvider does not fill in enough fields on a Location object then it is dropped, and logged. Bug: 4305998 Change-Id: I7df77125d8a64e174d7bc8c2708661b4f33461ea
2012-05-29Dock: Renable desk-dock appsJohn Spurlock
Revert to pre-dreams behavior. DeskClock once again launches the correct activity (instead of Screensaver) when desk-dock is attached. Bug: 6559590 Change-Id: I32a03a25469f17b5e87e16831839ec757d56c90b
2012-05-17Fix issue #6515427: Add android.hardware.television and fix...Dianne Hackborn
...logic for notouch in Configuration Added new TELEVISION feature. We now force the configuration to "television" if the TELEVISION feature is set, and "notouch" if the TOUCHSCREEN feature is not set. Also cleaned up documentation, deprecated some configurations that are not used. Change-Id: If1c7a284b580a8a66bda2a75f0c7fa841b3dc9b7
2012-03-14Add new "options" argument to all startActivity APIs.Dianne Hackborn
This will be used to allow new features to be requested... such as, say, a special kind of animation. Right now there are no options defined. Change-Id: I4eb6f27275cdd4bf186f6da316ab93a2372ad4b7
2011-12-15Add a new ui mode for "appliance"Joe Onorato
The idea is that this is a device which is more-or-less headless. It might have some limited interaction capabilities, but it's not something that you want to rely on having. Change-Id: Ib92f53a120bf83de781728011721a4859def7d9f
2011-11-16Disable desk dock apps.Daniel Sandler
When a device is attached to a desk dock, the CATEGORY_DESK_DOCK intent will no longer be fired. As a side effect, the "dock home" behavior (which captures the home key for the dock app as long as the device is docked) is now disabled for desk docks. Car docks are unchanged. Bug: 5591015 Change-Id: I7884f655913c31cf53b88cb2e2b371987be27f64
2011-11-04Teach UiModeMgr about high-end and low-end desk docks.Daniel Sandler
Should fix dock mode on Stingray, since its docks advertise themselves as EXTRA_DOCK_STATE_LE_DESK and EXTRA_DOCK_STATE_HE_DESK but not EXTRA_DOCK_STATE_DESK. Bug: 5569662 Change-Id: I93197665c0df8dea06ca8fadae97ec267c751c85
2010-06-17am 57f4503e: Work on issue # 2778549: Idle FRF72 is awake 18 mins more than ↵Dianne Hackborn
ERE27 in 13hr test Merge commit '57f4503e1a129d6a648f2378d36a060998a577a0' into gingerbread * commit '57f4503e1a129d6a648f2378d36a060998a577a0': Work on issue # 2778549: Idle FRF72 is awake 18 mins more than ERE27 in 13hr test
2010-06-17Work on issue # 2778549: Idle FRF72 is awake 18 mins more than ERE27 in 13hr ↵Dianne Hackborn
test Modify UIModeManager to not get location updates every thirty minutes. Instead it gets one once a day, and requests a new update when airplane mode is turned off or the time zone changes. Change-Id: I8044c27b5cd77709e4b872e2e8edd352f23e4af1
2010-06-02StatusBarService -> StatusBarManagerServiceJoe Onorato
Change-Id: I7efc245395bd91a656b30d420c9b080877162360
2010-04-09Fix issue #2581524: Car home icon should always go to car homeDianne Hackborn
Rework how switching between modes work so the caller can tell us whether they want to go to home. (So car home launcher can now tell us they always want to go home.) Change-Id: Id4a8129027d6d162b4bae6f983911f1f4bf2578f
2010-04-02Make desk mode work again.Daniel Sandler
Bug: 2564612 Change-Id: I858a86d14a6840f5f587343a64c5d0c4bc5d5263
2010-03-31Fix issue #2560791: Expose API to go in to car mode.Dianne Hackborn
Also fix bug where night mode was being used in desk dock. Change-Id: I56c1cf3d6fe800a4f986d40cc4cb2e70b76ac261
2010-03-29Fix issue #2547337: switching night modesDianne Hackborn
Dumb. Change-Id: Iaa72eaac54422f7fd95cf1050f6b7b6da55af0c3
2010-03-26Fix issue #2544466: Car Home brightness icon comes and goes while phone is ↵Dianne Hackborn
in car dock in FRE83 There was a really dumb bug that was causing us to not always apply the new configuration. As a result of fixing this, there were new glithes in the transition between car and regular mode, so further work here to fix that. And since I was actually working during the night and seeing night mode, I noticed how obnoxiously bright the status bar is compared to the car home at night, so it now nicely dims itself when we switch to the night config. Oh and in doing that I also found and fixed a bug in dispatching config changes to a window (where they wouldn't get dispatched if the window didn't resize). FINALLY... tweak the wallpaper enter/exit animations a bit to make them a little smoother. Change-Id: I4e062093cbcfbc919307799a794846db2920216f
2010-03-22Improve switching to car mode, retain night mode option.Dianne Hackborn
Fiddle with how we go into car mode to try to ensure we get a clean transition. Also have the system take care of remembering the night mode setting so it will stay at what you want. Change-Id: Icb94fdd961c7a192f7707ec71544485a1ea12455
2010-03-17Fix 2514479: Putting phone in car dock ignores security patternTobias Haamel
Don't disable the keylock pattern when the device is in car mode. Instead it should be possible to show the lock pattern at least once and after valid authentication it should be disabled in the system. Since this requires additional discussion it will be moved to the next Android release. Change-Id: I28cddcfb6640e44a29c716b59a3d6e37e8003dca
2010-03-15Fix issue 2512221: Car Dock Notification doesn't go awayTobias Haamel
Bug description: 1) Start Car Dock app. 2) Drop phone into Desk Dock 3) Press back to quit Desk Dock app. Car Dock Notification doesn't go away if I select it from the shade. Change-Id: I9d3ad4dbbe8f886fc8d523d104676194c3943473
2010-03-12Fix: Retrieval of location to caclulate twilightBernd Holzhey
The provider determined by getBestProvider may not have a LastKnownLocation and therefore the system might use a fake location, even if one provider will have a location. Change-Id: Iec4a377b141b0260af5611f51affa5f0c4a84ed2
2010-03-10Further improvements to window management!Dianne Hackborn
Fix issue #2493497: Stuck in the Emergency dialer - Home/Back keys doesn't work This was another case of not updating the window focus when needed, this time when the lock screen was hidden. Also re-arrange the layout/animate flow to address issues where you would see a flicker of whatever was behind the lock screen when showing a new activity that hides the lock screen. This was because we were deciding to hide the lock screen during the layout phase, which meant we had to do it without considering whether it had drawn. So we could hide the lock screen before the window is shown for the first time after being drawn. Now we can do this in the policy during animate, so we can wait until the window is drawn and actually being shown. The flow in perform layout is thus significantly changed, where the layout and animate loops are both under the same repeating loop. The actual flow from this should be the same, but it now allows the policy to request a new layout after the animation loop is done. This actually cleans up a number of things in this code as the complexity has increased. Finally this includes a change to the ui mode manager when switching modes, to do the resource configuration switch at a different time. This makes transitions between modes much cleaner (though not yet perfect). Change-Id: I5d9e75c1e79df1106108dd522f8ffed6058ef82b
2010-03-08Disable car mode should not require DISABLE_KEYGUARD permissionTobias Haamel
Only the system can enable the car mode and the system should already have appropriate permissions. But since we wanna allow all other apps to disable the car mode again, we don't want to enforce them to specify the DISABLE_KEYGUARD permission in their manifest. Change-Id: I1ad244a98d65b7193ea9817bff8406cfc2bce6f3
2010-03-05Keep screen on when in car mode and the device is powered.Mike Lockwood
BUG: 2477103 Signed-off-by: Mike Lockwood <lockwood@android.com>
2010-03-05Disable the keyguard when in car modeMike Lockwood
BUG: 2367912 Signed-off-by: Mike Lockwood <lockwood@android.com>
2010-03-05Refactor car mode.Dianne Hackborn
Extract all UI behavior from dock observer and ACTION_DOCK_EVENT. Also introduce a desk type to go along with the car type all through the resource system, since we now need to have corresponding high-level broadcasts for desk dock mode. As part of that I also reworked some of the logic for switching modes to all funnel through a single update() call that looks all of the current state to decide what to do next, and fixed various locking issues. In addition I found there were bugs in the configuration change handling causing us to only switch into the car mode config and then never get out of it. Unfortunately now that we are actually changing the configuration for each mode change, the transitions between them are really crummy as we restart all kinds of activities. :(