134 Commits

Author SHA1 Message Date
Sascha Prueter
98c958097b am 8f7eddbe: am 652d8fc9: Merge "PRIORITY_MIN notifications should be truly ambient." into jb-mr1.1-dev
* commit '8f7eddbef33f97e7d4439707ac0039be4c81ef0e':
  PRIORITY_MIN notifications should be truly ambient.
2012-12-04 16:35:12 -08:00
Daniel Sandler
526fa0e6d5 PRIORITY_MIN notifications should be truly ambient.
If your notification is set to MIN priority, it will never
attempt to interrupt the user, either by an icon (already
implemented), or (new in this patch) by LED, vibration, or
sound.

Bug: 7648785
Change-Id: Ia0f8e010e62029d8d8ef1955dd20b7c79fb68398
2012-12-04 17:01:12 -05:00
Daniel Sandler
69d13491ea am 8fef4a82: am 15db00eb: Merge "DEFAULT_VIBRATE must always use the default vibe pattern" into jb-mr1.1-dev
* commit '8fef4a820ee217f25fbf29234e90d68dff448222':
  DEFAULT_VIBRATE must always use the default vibe pattern
2012-11-20 15:53:09 -08:00
Daniel Sandler
4a7a9b963b DEFAULT_VIBRATE must always use the default vibe pattern
The logic here was backwards, causing the (softer) fallback vibe
pattern to be applied if the notification specified a sound
(or DEFAULT_SOUND) and also DEFAULT_VIBRATE. The fallback
vibe should only play if you have *no* vibration set.

Bug: 7588655
Change-Id: Iecdd362729bccedf779b51cc9b90a12014328aff
2012-11-20 12:59:41 -05:00
Daniel Sandler
8ff32d8113 am 00679b5b: am 020d6529: Merge "Do not vibe when the default notification sound is Silent." into jb-mr1.1-dev
* commit '00679b5b467dbc19ce2223b5501976c5c3f66fa9':
  Do not vibe when the default notification sound is Silent.
2012-11-15 06:17:35 -08:00
Daniel Sandler
1812b34503 am 2bb5dc6a: am 83b25961: Merge "Notification vibration improvements:" into jb-mr1.1-dev
* commit '2bb5dc6a367ce869939728b2978be7ca61a4b8b8':
  Notification vibration improvements:
2012-11-15 06:17:31 -08:00
Daniel Sandler
d4d2de2a77 Do not vibe when the default notification sound is Silent.
(This relates to the new vibration fallback behavior, where
notifications that expect to make a sound should always
vibrate in vibrate mode. We should not vibrate if the
notification's sound is silent, but we should also not
vibrate if the notification uses the default sound and the
default is silent.)

Bug: 7537077
Change-Id: I08e149c8c00ef2d2f61e418d88a086cb5e9cf241
2012-11-14 16:42:04 -05:00
Daniel Sandler
edbb380950 Notification vibration improvements:
- When notifications vibrate as a fallback (that is,
   because they want to play a sound but the device is in
   vibrate mode), this no longer requires the VIBRATE
   permission.
 - As a bonus, if your notifications use DEFAULT_VIBRATE,
   you don't need the VIBRATE permission either.
 - If you specify a custom vibration pattern, you'll still
   need the VIBRATE permission for that.
 - Notifications vibrating in fallback mode use a different
   vibration pattern.
 - The DEFAULT_VIBRATE and fallback vibrate patterns are now
   specified in config.xml.

Bug: 7531442
Change-Id: I7a2d8413d1becc53b9d31f0d1abbc2acc3f650c6
2012-11-14 11:50:11 -08:00
Ed Heyl
ffea917025 am 5ec97f4e: am 4f017e75: Merge "When in vibrate mode, all notifications will vibrate." into jb-mr1.1-dev
* commit '5ec97f4e82e1adc3bffb9c998b302464517e1f04':
  When in vibrate mode, all notifications will vibrate.
2012-11-09 23:54:08 -08:00
David Agnew
71789e11cc When in vibrate mode, all notifications will vibrate.
(Unless the notification specifies no ringtone AND no
vibration, in which case it will remain silent.)

Change-Id: I926d0fe0165b9622cd117e6c3ef6e3637772b444
2012-11-10 00:01:04 -05:00
Amith Yamasani
807dc6f038 am 081c36de: am bfb8a7b1: am 3fe2cb4d: Merge "Don\'t cancel any notifications that are meant for all users, if no package is specified." into jb-mr1-dev
* commit '081c36ded6a562ae2bde4238592a1e7bc13ba151':
  Don't cancel any notifications that are meant for all users, if no package is specified.
2012-11-08 15:44:40 -08:00
Amith Yamasani
5ec00e930f Don't cancel any notifications that are meant for all users, if no package is specified.
Bug: 7490028

Otherwise notifications such as the USB debugging and OTA notifications will be
dismissed when any user is stopped.

Change-Id: I0ae0c1136a999dd3aade99ca9e71c714b359eab4
2012-11-07 16:58:30 -08:00
Kenny Root
58ed5d748c am 768d9e1a: Merge "Correct executable bit for source files"
* commit '768d9e1a72ceee7d4a5f608776b87b62d6ce4a04':
  Correct executable bit for source files
2012-11-07 11:52:12 -08:00
Kenny Root
3a084af2e9 Correct executable bit for source files
Many media files and source code files were marked as executable in Git.
Remove those.

Also a shell script and python script were not marked as executable.

Change-Id: Ieb51bafb46c895a21d2e83696f5a901ba752b2c5
2012-11-07 10:27:31 -08:00
Amith Yamasani
2c7ebeae9f Relax permission requirements for posting notifications across users
Bug: 7430689
Change-Id: I2430b20137705ed2d6dc0f870690acda0662392b
2012-10-30 16:12:54 -07:00
Daniel Sandler
321e9c562b Allow any user to clear a notification targeted at USER_ALL.
This also adds the userid to notification_* eventlogs.

Bug: 7325802
Change-Id: I48055caf1344acd58b61607bf0be38cc299fc7be
2012-10-15 14:38:39 -04:00
Jean-Michel Trivi
bcfc1ca8ab Merge "Don't play notifications during speech recognition" into jb-mr1-dev 2012-10-10 16:30:56 -07:00
Svetoslav Ganov
c31ed39e7a Send accessibility notification events only for the current user.
1. The notification manager service is firing accessibility events
   for notification for a background user. Events for the current
   user's notifications should be sent.

bug:7326302

Change-Id: I00665385ba2106f161928dad1b76536c93c17f27
2012-10-10 14:58:33 -07:00
Jean-Michel Trivi
d677054ca6 Don't play notifications during speech recognition
Add support for querying AudioManager to know whether speech
 recognition is currently underway.

Don't play a notification if speech recognition is underway.

Bug 7314859

Change-Id: I1bd013a3168cfe1a6b6dcfd28565e1c3c512eb6a
2012-10-10 12:03:41 -07:00
Jeff Sharkey
b78738fa06 Clear identity when requesting current user.
Bug: 7298189
Change-Id: Ie9c160f12067f1b9426acbfee67ef81e8f5f7992
2012-10-05 16:03:01 -07:00
Jeff Sharkey
8637bd9766 Only play notification sounds for active user.
Bug: 7298302
Change-Id: I1e176f7b17bb51b878f2e8b345804780df92d487
2012-10-05 15:29:01 -07:00
John Spurlock
078a490c22 Clear notifications properly on ACTION_USER_STOPPED.
Which also takes care of the ACTION_USER_REMOVED case.

Bug:7277853
Change-Id: I0a6bade11bd0d420df03e16e69a386cfccfa07cc
2012-10-04 12:00:53 -04:00
Jeff Sharkey
1951db86f5 Merge "Multi-user ringtone playback." into jb-mr1-dev 2012-09-26 13:38:22 -07:00
Jeff Sharkey
65c4a2b26c Multi-user ringtone playback.
Change RingtonePlayer to open content:// Uris based on requesting
UserHandle.  Grant SystemUI visibility to all emulated storage so
it can play ringtones for apps without READ_EXTERNAL_STORAGE.

Resolve canonical file:// Uris before passing out of source app,
replacing any /emulated_legacy/-style paths with user-specific
variant so they can be opened by SystemUI.  Calling for RemoteViews,
Ringtones, and Notifications.

Bug: 7202982
Change-Id: Ibf0eca8df80c1486711144a7b648f464aadfe099
2012-09-26 10:49:35 -07:00
Jeff Brown
bf6f6f9de7 Update references to migrated global settings.
Fixed one setting that was migrated but not marked deprecated.

Removed a hidden setting that is no longer used by the new
power manager service.

Bug: 7231172
Change-Id: I332f020f876a18d519a1a20598a172f1c98036f7
2012-09-25 15:27:51 -07:00
Dianne Hackborn
50cdf7c306 Fix issue #7214090: Need to be able to post notifications to all users
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-24 10:55:46 -07:00
Jeff Sharkey
6d51571835 Allow acquiring ContentProviders across users.
Otherwise services like SystemUI will always open content://-style
Uris as USER_OWNER.  Surfaces through createPackageContextAsUser()
which points all ContentResolver operations towards a given user.

Start using in RemoteViews, so that Notifications correctly resolve
image Uris to the sending user.  Also add user support for "content"
shell tool.

Bug: 7202982
Change-Id: I8cb7fb8a812e825bb0b5833799dba87055ff8699
2012-09-21 19:49:43 -07:00
Daniel Sandler
c9ce0abe29 Make the SystemUI stop the screen saver when a full-screen notification is posted.
This keeps all the fullScreenIntent logic (including
multiuser implications) in one place.

Change-Id: I4ef284daf90464f105780ade1d971e9e081fbbb5
2012-09-05 08:41:07 -04:00
Daniel Sandler
24518e466a Do not play sounds or vibes for background users' notifications.
USER_ALL notifications will still play/vibe for any user.

Change-Id: Ie8cc69bd1541193ed9c4207ef38a8d4898af0a9d
2012-09-05 08:41:07 -04:00
Dianne Hackborn
4120375d46 Remove Binder.getOrigCallingUid().
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-31 15:11:13 -07:00
Amith Yamasani
f203aeef99 Enforce permissions for calls with specified userId
Fix a couple of places where incorrect userIds were being passed in.

Change-Id: I398c676e0488ff7e584be96e96c8b32652134238
2012-08-30 16:08:23 -07:00
Dianne Hackborn
80a4af2bbc Start implementing concept of "running" users.
The activity manager now keeps track of which users are running.

Initially, only user 0 is running.

When you switch to another user, that user is started so it is
running.  It is only at this point that BOOT_COMPLETED is sent
for that user and it is allowed to execute anything.

You can stop any user except user 0, which brings it back to the
same state as when you first boot the device.  This is also used
to be able to more cleaning delete a user, by first stopping it
before removing its data.

There is a new broadcast ACTION_USER_STOPPED sent when a user is
stopped; system services need to handle this like they currently
handle ACTION_PACKAGE_RESTARTED when individual packages are
restarted.

Change-Id: I89adbd7cbaf4a0bb72ea201385f93477f40a4119
2012-08-28 16:30:55 -07:00
Dianne Hackborn
0c38049502 Improve multi-user app management.
Introduce API to get per-user storage information, keep track
of services associated with users, and various small cleanup.

Change-Id: I5d4e784e7ff3cccfed627d66a090d2f464202634
2012-08-21 10:34:20 -07:00
Dianne Hackborn
f02b60aa4f Rename UserId to UserHandle.
This is the start of turning this into a formal public API.

Change-Id: I5786d2c320f1de41a06ed5d0f65adb68967287a0
2012-08-16 12:46:38 -07:00
John Spurlock
7be1a3d67c Stop screensaver on incoming phone call.
Use notification manager as an indicator of when to stop the screensaver
due to immediately-needed user interaction.

Any notification with a fullScreenIntent will now exit the screensaver.

Bug: 6976796
Change-Id: Id91cd4c32f3fad018b56f4dfe24b37110bab32d8
2012-08-13 16:45:12 -04:00
Dianne Hackborn
39606a007a Make AtomicFile a public API. It's about time!
Change-Id: Ib34e294747405b7ab709cb0bbb2d9a0cc80ce86a
2012-07-31 17:54:52 -07:00
Daniel Sandler
26ece57dad Be more discriminating when canceling notifications on changing packages.
Specifically: don't do it if the package is enabled at the
time the PACKAGE_CHANGED broadcast is sent. (We only want to
cancel notifications when packages enter the disabled
state.)

Bug: 6589355
Change-Id: Iba754cef27e2bdff35a13e403a867933c996f562
2012-06-01 16:26:46 -04:00
Eric Laurent
bffc3d1bd3 Silent and Vibrate mode clean up
Clean up related to new Vibration policy.
The vibrate behavior is now only derived from:
 - presence of a vibrator on the device
 - current ringer mode selected: NORMAL, VIBRATE or SILENT
If no vibrator is present the ringer mode can only be NORMAL or SILENT.

The control of ringer mode via volume keys when volume keys control the "master"
stream type (RING on phones, MUSIC on tablets) is as follows:
If a vibrator is present:
 VOL- and volume equals 1: NORMAL => VIBRATE
 VOL- and volume equals 0 and not continuous press: VIBRATE => SILENT
 VOL+ and in SILENT mode: SILENT => VIBRATE
 VOL+ and in VIBRATE mode: VIBRATE => NORMAL, volume = 1
If no vibrator is present:
 VOL- and volume equals 0 and not continuous press: NORMAL => SILENT
 VOL+ and in SILENT mode: SILENT => NORMAL, volume = 0

VIBRATE_ON and VIBRATE_IN_SILENT settings are not stored/retreived any more.

AudioService checks and corrects ringer mode and stream volumes if necessary when reading from
DB at boot time.

Also:
 Added dump for stream volumes in AudioService.
 Added device names missing in AudioSystem for USB accessory and USB device.

Issue: 6036529
Issue: 6414950
Issue: 6448163

Change-Id: I77fb821ec63e4e566320cac2701b4ac466e86aef
2012-05-08 15:10:37 -07:00
Jeff Sharkey
098d580cc2 Migrate ringtone playback to SystemUI.
Introduce IRingtonePlayer, which handles playback for both Ringtone
objects and Notifications. SystemUI now hosts this player, which it
registers with AudioService. It also keeps MediaPlayer instances
warm, and cleans them up after stop() or Binder death.

Move both Ringtone and NotificationManagerService to play back audio
through this new interface.

Bug: 6376128, 6350773
Change-Id: I1dcb86d16ee3c4f07cdb2248d33dcff4ead3609a
2012-04-27 14:15:05 -07:00
Daniel Sandler
0da673f02e Notifications may now be disabled on a per-package basis.
When a package's ability to post notifications is disabled,
all outstanding notifications from that package are
immediately canceled, and the score of any future
notification from that package is set so low that the
notification manager won't even send it to the status bar.

No UI for this yet, but you can try it out:

  adb shell service call notification 8 s16 $PKG i32 (1|0)

Bug: 5547401

Change-Id: Ieccac5746b40f60debd902a45d1dedbc91dcdc89
2012-04-19 11:39:49 -04:00
Jeff Brown
c2346134bb Extract Vibrator implementation from interface.
Moved the core logic of Vibrator into SystemVibrator, potentially
allowing for the creation of other Vibrator subclasses.

Fixed several places where we were creating new Vibrator
instances unnecessarily instead of getting it from the Context.

It is safe to make Vibrator abstract because its constructor
was hidden from the SDK so it was not possible to subclass it.

Bug: 6334179
Change-Id: I18ece6544c26a7efb2d5099f8346a10aef8a5e18
2012-04-13 04:05:17 -07:00
Amith Yamasani
0dedffd656 Dump the uid of a notification, for debugging.
Useful for multiuser testing.

Change-Id: I4aac8eda9b2f9c7ada07bd6a040260beb1acce87
2012-03-30 10:47:23 -07:00
Daniel Sandler
49a2ad1f40 Stop showing ADB and MTP/PTP/USB notifications at the top.
Two parts to this:
1. Stop treating FLAG_ONGOING_EVENT notifications specially
   (in particular, ordering them at the top of the panel).
2. Set the priority bits on the system UI notifications
   appropriately (low).

Change-Id: I3bde7e573654c5aad5e1c5d29e6a21ba94edcc5b
2012-03-29 00:42:16 -04:00
Daniel Sandler
3f0c58eb70 Merge "New notification priority and related APIs." 2012-02-24 10:53:42 -08:00
Daniel Sandler
2561b0b10a New notification priority and related APIs.
This change introduces a few new bits of data on
Notification that will help the Notification Manager and
System UI route and display them more intelligently:

 -> priority: an integer in a predefined range that
    indicates the app's best guess as to the relative
    importance (to the user, right now) of that information

 -> kind: a tag (really, set of tags) indicating the general
    type of notification (realtime, asynchronous, etc)

 -> extras: a Bundle of additional key/value pairs
    associated with this notification (currently @hidden)

The notification manager takes these data into account when
assigning to each notification a score which is passed with
the notification on to the system UI, where it can be used to
affect presentation. For example:

  - Spammy apps (identified explicitly by the user or by
    some other means) will have their notifications scored
    very negatively by the notification manager, allowing
    the UI to suppress them
  - Notifications of higher score might be shown larger
    or in a different way
  - Very important notifications (indicated by a very high
    score) might interrupt the user during an otherwise
    important task (videochat, game, etc)

Implementation note: This replaces/extends the old internal
notion of "priority", which was mostly used to organize
ongoings and system notifications at the top of the panel.

Change-Id: Ie063dc75f198a68e2b5734a3aa0cacb5aba1ac39
2012-02-24 13:47:00 -05:00
Mike Lockwood
ef9d55a6b0 am 8f7cc7af: am b9be8eff: am ffc89899: Merge "Don\'t pulse LED on new notification unless notification has LED flag set" into ics-mr1
* commit '8f7cc7af66520e3bd5e59e8eadb6907e3e043661':
  Don't pulse LED on new notification unless notification has LED flag set
2012-02-14 13:08:01 -08:00
Mike Lockwood
ece18efb35 Don't pulse LED on new notification unless notification has LED flag set
Bug: 6006131

Change-Id: I719c7d68e310bfaca227f6286159b3993784926b
Signed-off-by: Mike Lockwood <lockwood@google.com>
2012-02-13 20:42:19 -08:00
Amith Yamasani
742a671273 Multi-user - 1st major checkin
Switching activity stacks
Cache ContentProvider per user
Long-press power to switch users (on phone)

Added ServiceMap for separating services by user
Launch PendingIntents on the correct user's uid
Fix task switching from Recents list
AppWidgetService is mostly working.

Commands added to pm and am to allow creating and switching profiles.

Change-Id: I15810e8cfbe50a04bd3323a7ef5a8ff4230870ed
2012-02-03 12:01:47 -08:00
Daniel Sandler
b64cb88c32 Expanding NotificationManager's event logging.
Specifically, add the "tag" and "mustNotHaveFlags" columns.

(Hunting bug 5444859.)

Change-Id: Ic9ece44ed4697f7a8ef54e7870f72c9f94518cd9
2011-11-29 23:48:29 -05:00
Amith Yamasani
ebfc0e5d70 If "Pulse notification light" is off, don't flash the LED even once.
If it is on, flash repeatedly.

Bug: 5242350
Change-Id: I7da195a7c49c68c0a1fca12eecfc4a4e06dd0b61
2011-09-20 14:48:52 -07:00