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
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
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
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
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
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
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
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
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
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
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
...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
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
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
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
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
Merge commit '57f4503e1a129d6a648f2378d36a060998a577a0' into gingerbread
* commit '57f4503e1a129d6a648f2378d36a060998a577a0':
Work on issue # 2778549: Idle FRF72 is awake 18 mins more than ERE27 in 13hr 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
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
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
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
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
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
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
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
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
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. :(