History log of /frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
9c5b7cb048699237b35dad7a2a634ed6efb997c7 16-Jan-2015 RoboErik <epastern@google.com> Notify the system of all remote volume changes

If a volume change occurred because it was sent through the MediaController directly
it wasn't showing the system's volume UI. This fixes things so the volume slider gets
shown for all volume requests with the SHOW_UI flag set.

bug:19036130
Change-Id: I1f7cb2e03386e2f3f7bc448cb4c38a71573775ff
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
2610d71251e3e376e2514f20986c81e5d55f1b55 07-Jan-2015 RoboErik <epastern@google.com> Don't unmute when trying to show volume UI. DO NOT MERGE

When a MediaSession is active the adjust volume event to show UI was
causing the stream to be unmuted. Since this happens after every mute
event you were unable to mute while a session was active. This change
doesn't unmute for events that just show the UI.

bug:18844550
Change-Id: Ic8b0f1ab1354646724ead4572a973c302c275eab
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
d5489220e27bc8d476b59847ae2005d68dd94864 05-Jan-2015 Sungsoo Lim <sungsoo@google.com> DO NOT MERGE Fix typo

Change-Id: I0c738602616fda510b765e03f8a25abfc8316b84
(cherry picked from commit 9dcba434e27ec4de87eac1448ded4126b3f97773)
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
48248c80e58c459d211d36164baa69354e070c07 24-Dec-2014 Sungsoo Lim <sungsoo@google.com> DO NOT MERGE Make mute/unmute work

Bug: 18844550
Change-Id: I431a223d55430aa8e1bb28f0275e11876ed0e0bb
(cherry picked from commit d1851e6e4e49b6a45d9e013de2e1384711975328)
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
2b5208c3583b5fd82564523bfd9e85b4bf44afa0 19-Dec-2014 Eric Laurent <elaurent@google.com> MediaSession: unmute stream when adjusting volume

Bug: 18482488.

Change-Id: I3411f78551cba31aa7f91b5223e015f0b8c1bbb2
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
7c82ced4fc5b66c09a19eed9a5499039530142fb 05-Dec-2014 RoboErik <epastern@google.com> Route mute key events through MediaSessionService

This sends mute keys to the MediaSessionService and handles them
by toggling the appropriate stream. Muting remote playback is still
not supported.

bug:17501993
Change-Id: I18c5b037cde2175acbb64b118dd708514acfd8c9
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
870c5a6593f723211a4a90766be9191c69f38570 03-Dec-2014 RoboErik <epastern@google.com> Tweak the behavior of the MediaSessionStack

This makes the following changes in behavior:
-We will only cache a pending intent for a session if it reaches the
one of the playing states.
-If a previously priority session is removed the next session only
gets priority if it is in a playing state. Otherwise we use the removed
session's PendingIntent.
-The last session to have been playing or to have been added gets
priority after any currently playing sessions, but only if it is still
in the list of active sessions.
-We will only use a session that isn't playing and isn't the most recently
playing/added if we don't have a PendingIntent from the last playing session
to fall back on.

bug:18589421
Change-Id: I650c56a782bb1f1d5e64d7574a7d2387606f3b17
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
a08adb2437f641087e01436293736be235fe1fda 22-Nov-2014 RoboErik <epastern@google.com> Fix binder equality check

Forgot to call .asBinder() before checking binders for equality. This
fixes a memory leak caused by the system holding on to binders.

bug:18049316
Change-Id: I43a9f4163b28cf1a77e59c3e7bade32bd2ef1c1a
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
519c7744b522aa07e12bc3244ac3de14aa2a4ad0 18-Nov-2014 RoboErik <epastern@google.com> Handle volume events on master volume devices correctly

We weren't passing volume events to the master volume correctly on
devices that only use a master volume. This fix checks if the device
only has a master volume and adjusts the master volume instead of the
stream's volume if that's the case.

bug:18305790
Change-Id: Iec35e0a7dc59e6d73c9dfc88da324660bb15b1f3
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
9c7854014d86a3bb2c4f2f8e3b8ca7f1e01df7df 12-Nov-2014 RoboErik <epastern@google.com> Use the suggested stream if it's currently active

This makes the MediaSessionService check if the suggested stream is active
when dispatching a volume event and prefer it to a remote session if it is.
This mostly affects apps that use Activity.setVolumeControlStream.

bug:18318480
Change-Id: Ib8825394bf7a223fbd92bcb2c3ecb7c596ce7c29
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
de9ba39c1714f5bc9e1785d8224ad26c132b6293 26-Sep-2014 RoboErik <epastern@google.com> Don't forward media keys to the app if the phone session is active

This checks if the phone app is currently getting or in a call when a
media key event is sent and sends it to the phone session instead of the
foreground app if it is.

bug:17527302
Change-Id: Ie5d6cf0c897da81d106f2b1a0561b79f4fc35e82
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
94c716ea2927cf7d16c66d8846b976f06bcb6460 14-Sep-2014 RoboErik <epastern@google.com> Route volume commands whenever media stream is in use

Found a regression in volume handling. Previously we handled
volume commands as long as the media stream was active but we were only
handling them when there was an active session on L. This adds a check to
make sure we handle volume if anything is playing on the media stream.

bug:17498479
Change-Id: Iddd745c8a762cf7ebedb37f1b26fc934db01fba0
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
272e161c1a200900cb10b5b0cdab8ae1f123cabd 05-Sep-2014 RoboErik <epastern@google.com> send volume button events to adjustSuggestedStream instead of adjustStream

This way the audio system can route the adjustments correctly when a bt
headset is connected.

bug:17281977
Change-Id: Ic41d038e47179baffc86e539562da285446148c7
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
d2b8c947ddfc6349a3ae6c3968b422b9cf50d7ed 19-Aug-2014 RoboErik <epastern@google.com> Api updates to MediaSession components

-renames get/setBufferPosition to get/setBufferedPosition
-renames getLaunchActivity to getSessionActivity
-adds doc link to setVolumeTo flags param
-renames setLaunchActivity to setSessionActivity
-hides setMediaRouter
-moves PLAYBACK_TYPE_ constants to MediaController.AudioInfo
-adds addOnActiveSessionsChangedListener version with a handler parameter
-renames AudioInfo to PlaybackInfo

bug:17114404
Change-Id: I0fbfe4eb979cb2af98e3f13095c654bb131f7ae5
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
0dac35af2c6aa42bcd181981b041747cfd1afa5f 13-Aug-2014 RoboErik <epastern@google.com> Pipe caller's identity through volume methods

setStreamVolume and adjustStreamVolume were always being called
from the session service's uid/package. This adds the plumbing to
allow the original app's info to be passed in to the audio service
when volume is changed.

Change-Id: Ib36639dab1e518b435161dc453c8ba9351df3e9b
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
1f7a39fee1be73bf079e0443d30d316482728ddc 12-Aug-2014 RoboErik <epastern@google.com> Merge "Fix registering global priority sessions" into lmp-dev
4d26598677095e74e30fc12f46a769cac800f946 12-Aug-2014 RoboErik <epastern@google.com> Fix registering global priority sessions

We were never setting a global priority session due to a change in
the way sessions were registered. This makes sure a global session
gets set correctly.

bug:16930866
Change-Id: I859846c9265e98bb1a37ff9d22808137e787ce18
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
7aef77bbf5b983b9f949936ed6cd174251697ca8 09-Aug-2014 RoboErik <epastern@google.com> Remove sessions listeners that are disabled

Removes sessions listeners when their notification listener is
disabled. Also updates the dump for media sessions.

bug:15549450

Change-Id: Ibe51a4a42ef333e75a09f0fffa0f2b9b8939b85c
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
aa4e23bbb36994708ba72c5f4c83255025d99e07 25-Jul-2014 RoboErik <epastern@google.com> Add getPackageName to MediaController

This removes the MediaSessionInfo class and adds a method on the
controller to get the package name. This also converts code that
depended on the session's UUID to use the token for comparison or
the Tag in the case of test code that needs a string identifier.

Change-Id: Icb8dc76c70e23e897da8fd07651c524b96372bf9
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
b214efbb9170a9f6a4991684a63ca59680074cc7 24-Jul-2014 RoboErik <epastern@google.com> Expose a way to set a PendingIntent for restarting playback

This is to allow apps to set a PendingIntent to restart playback. This
is not persisted across reboots but will allow music to start playing
again for the life of the system. Only the most recent priority app with
a PI set will be cached. This also deprecates methods in AudioManager
that do this and unhides the unregister method in MediaSessionManager.

Change-Id: I66fbf5856333468d8cb8a3022809778ba00d426e
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
b7c014c291eff2a97f32ce1ae7e42bd8f825c74c 23-Jul-2014 RoboErik <epastern@google.com> Move return out of debug conditional

Accidentally put the return for not sending volume changes into
the debug conditional.

bug:16379124
Change-Id: I473f6fdf7577ca26559ab9b02f4dc0613ef702e3
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
1ff5b1648a051e9650614f0c0f1b3f449777db81 16-Jul-2014 RoboErik <epastern@google.com> Change adjustVolumeBy to adjustVolume

This makes volume adjustments take a direction instead of a number of
steps and renames the API appropriately.

Change-Id: I6a31cbc42d889a38aa63446686a424cb2b8b2270
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
01a500ed1c6ae3fff66678144ae637aa8cad0ecc 11-Jul-2014 Jeff Brown <jeffbrown@google.com> Delete first draft of media routing APIs.

The new APIs will not be as tightly integrated into MediaSession.

Change-Id: I5cfd37d9d8d0c5d46c55edb5cf0772a8f1ef13ab
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
3c45c29109d23981d8b707c809b3b43ce2e20fc3 09-Jul-2014 RoboErik <epastern@google.com> Pipe volume keys to adjustVolume instead of sendMediaKeyEvent

We were calling sendMediaKeyEvent with a KEYCODE_VOLUME key, which was being
ignored because it's not a media key. This redirects the volume keys to use
the adjustVolume methods instead. It also sends the appropriate flags to
make the lock screen consistent with the home screen and the volume keys
only affect active playback when the screen is off.

bug:15900519
Change-Id: I9f3853a2385869353a58debae6e6ca9933ba06ce
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
851d2d5d5680ab26eccd2b26a4acc29a1d637c94 28-Jun-2014 RoboErik <epastern@google.com> Don't send remote volume changes for local playback

bug: 15913248
Change-Id: I701d0a446ef981deae171b9e882c29906593b3c8
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
dba34ba35cd2042d9a8fecfda56e2abe7a680bad 25-Jun-2014 Jeff Brown <jeffbrown@google.com> Make MediaSessionToken an inner class of MediaSession.

Also add some missing AIDLs to the framework makefile to ensure
they are included in the SDK.

Change-Id: If85a3091c7591e0b3bbe6cc4bb74aba2284b4f42
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
d09bd0c6eb8318e0122b14d7eb5324e481706e41 25-Jun-2014 RoboErik <epastern@google.com> Move VolumeController into AudioService

VolumeController was a hidden class only used by AudioService and
MediaFocusControl. Since we added a public VolumeProvider class
moving VolumeController to avoid confusion.

Change-Id: I6838daf9b83846e1393b1a8502d3b10345a4799a
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
19c9518f6a817d53d5234de0020313cab6950b2f 24-Jun-2014 RoboErik <epastern@google.com> b/15729204 Pipe sessions through to VolumePanel

When remote volume is changed via volume buttons we need to notify
the system UI so it can show the slider. This also passes it the
controller to use so adjustments to the slider are sent back to
the correct session.

Change-Id: If5847bcd5db16c56e0e9904b88c94e5b28954c41
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
51fa6bcb22a52b283f6d0756d286101f0d354f54 20-Jun-2014 RoboErik <epastern@google.com> b/15757378 Expose APIs for listening to active sessions

This allows apps that are registered notification listeners to
listen to the set of active sessions.

Change-Id: I1e108951a5049d138208e88b155c0ec9b95fbdb0
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
ef3c9e9b057a5aac2d0d012e8e6385660478e203 20-Jun-2014 RoboErik <epastern@google.com> Add volume handling APIs to sessions

This renames and moves the VolumeProvider and adds apis to
MediaController to get the current state of volume on a session and
to request changes to the volume.

Change-Id: I290e9efefb6676c805819a29e1d054c3192c6773
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
6f0e4ddd66fcdcc13944d8970d0b560e2626508b 18-Jun-2014 RoboErik <epastern@google.com> Remove more dead audio service code

Hit a snag in remote volume changes. Trying off this round of
removal so I can work on fixing remote volume handling in a
separate CL.

Change-Id: I49b1ba4b75d770ba7c77da081755f3210a9e9483
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
a3d81885566f79b0e21438bd69634cc53a80918b 09-Jun-2014 RoboErik <epastern@google.com> Merge "Adds listeners for changes to the list of active sessions" into lmp-preview-dev
0791e1713be3df6acfc9e3dfa0dd8be55cf1a165 08-Jun-2014 RoboErik <epastern@google.com> b/15452153 Send 0 delta volume requests

The new code was dropping volume requests with a delta of 0. These
are used to trigger a beep at the end of a volume adjustment.

Change-Id: Idd85cfeaffe78f9aaafb8e6989e240cb70409c1e
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
2e7a9167aeefeb451f8d8c769175b9a0163744f3 05-Jun-2014 RoboErik <epastern@google.com> Adds listeners for changes to the list of active sessions

The listeners get notified when sessions are added, removed, or
reprioritized.

Change-Id: I7f3bfc84049719c3b9c19016c6bac92e1a5c3179
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
b69ffd4dc2c8fa85e0064151141ebeee90de471e 30-May-2014 RoboErik <epastern@google.com> Minimum work to make volume handling work with sessions

This is the minimum change to make adjusting volume work with
MediaSessions. This only affects adjusting the volume and adjusting
the volume with a suggested stream. Adjusting a specific stream or
setting a specific stream will still use the same code.

This does not fix existing remote volume handling in RCC, which
will require a separate change to MediaController.

Change-Id: I5b957ff4bece1ee11e2364e1f216e1c08343c983
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
9a9d0b5f6f4be758ed6c8b837a9dd01a451bc0c0 20-May-2014 RoboErik <epastern@google.com> Handle headsethook voice launching

This launches voice search when headsethook is long pressed unless
you're in a call. The handling is done in MediaSessionService. This
CL also adds a switch to the new APIs to the fallback event handler
which was missed previously.

Change-Id: I1cbdff1d6e9f5293885dd8aaed8ba13cb15b36d4
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
418c10ca9df1505509afeffd558cd92fc97bc635 19-May-2014 RoboErik <epastern@google.com> Add 5s timeout to wakelock

Also filed a b/15110168 to anr the app if it doesn't finish with the
button event in 5s.

Change-Id: I23906b4c7f17d3d3a29eef92b523d8653c87017e
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
42ea7eecd149161ed192d3029f0d77d1d08a4aa5 17-May-2014 RoboErik <epastern@google.com> Rename session classes to have media prefix, hide routes

This renames several of the core session classes to be prefixed
with Media. It also adds @hide to all route references for now.

Change-Id: Idb42897d490cf24626e4e93ca975b2cb93ec054c
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
8a2cfc309ab9126e90022916967c65a793c034f0 16-May-2014 RoboErik <epastern@google.com> Move media key processing to sessions

Send all media key events over to the MediaSessionService instead
of AudioManager. This does not affect volume handling yet, so it
is possible to get into a state where volume will be handled by
a different thing than media buttons. Except for corner cases
this shouldn't be noticable.

Change-Id: I00a576175d9c82937f0836e509b9a98d5cb77b83
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
4646d288821d62fdfe481be67d8b7fed7d7eabd8 13-May-2014 RoboErik <epastern@google.com> Add UserRecords to separate user interactions

Each user record maintains the list of sessions and providers that
are running under that user. Lifecycle for providers has been modified
to stop discovery when the user is no longer current but keep the
binder connection open so long as there's a session that has selected
a route from that provider. When a user is stopped all providers on
that user will be unbound even if they were still in use.

Change-Id: Iadf1efded3415f7ecf384d3a73513883de9c86b0
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
a5b02329209be355eafadbdf9ee685ffa58d3148 08-May-2014 RoboErik <epastern@google.com> Make sessions aware of user id

This tags all sessions with the user id that they were created for. It
also adds API for creating and querying sessions for a specific user.

This does not wrap providers per user yet which will be done in a
separate CL.

Change-Id: Icdaf701b0614a95301657998602c45208d548c27
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
a8f951462791a16f47e8c07e552232f31dcefac5 05-May-2014 RoboErik <epastern@google.com> Add a class for managing Session priority

Priority is given first to the system priorty session, then to
active local sessions, then to active remote sessions, then to
the rest of the sessions. Ordering within categories is by whoever
last performed an action we associate with the user.

The stack has methods for getting filtered sets of this priority.

This also:
-Changes publish to setActive(boolean)
-Adds a flag for handling media buttons.
-Adds a flag for transport controls instead of enabling once.
-Unhides the setFlags API.
-Updates the legacy helper to use the flags.

Change-Id: I6ebeb27410de1b24149fd6e1785613ac444f0774
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
e7880d8eb1903d42e4e2a90c99b58e2240e01e82 30-Apr-2014 RoboErik <epastern@google.com> Add APIs for creating a system priority session and getting controllers

This adds a hidden call to set flags and a flag for making a session an
exclusive high priority session. This will cause all media button events
to be sent to that session as long as it is stillr egistered. This
requires the MODIFY_PHONE_STATE permission like the old forCalls API.

This also adds a way to get controllers for all the ongoing sessions.
This is protected by the MEDIA_CONTENT_CONTROL permission like the
old RemoteController APIs.

Change-Id: I51540e8dcf3a7dbe02a0f8ee003821e40af653a3
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
a278ea7cecb59a73586e5dd74ec05e85caa370c5 24-Apr-2014 RoboErik <epastern@google.com> Add dump to MediaSessionService

Adds a dump implementation for debugging MediaSessionService. Also
fixes some synchronize calls that weren't using the same lock object.

Change-Id: I14343f853398749c8ce7ebf91f72729abc9132d9
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
07c7077c54717dbbf2c401ea32d00fa6df6d77c6 20-Mar-2014 RoboErik <epastern@google.com> Add RouteProviders to the new Media APIs

Compiles and works with OneMedia. This currently is a rough test of
the system for finding, connecting to, and sending messages to routes.
This will just connect to the first route it finds when a request to
open the route picker is made (and disconnect when another request is
made).

Change-Id: I5de5521a079471b9e02664be4654c0591dfd9a6d
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
8ae0f34db936a649ddaf9cdd086c224f6514efeb 25-Feb-2014 RoboErik <epastern@google.com> Adds a TransportController and TransportPerformer to session

This makes transport controls a primitive interface on sessions with
a way to create the performer, register callbacks, and send commands
and updates between controllers and performers. This still needs some
cleanup but has been tested with OneMedia.

Change-Id: I373d35f7ccc383b8421bd14044457467d80425f3
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
2f5b057da7d05d5d699a272aa24fd7c97cdda820 21-Feb-2014 RoboErik <epastern@google.com> Move Session apis to android.media.session

This is to make it easier to distinguish the new apis from the old
ones.

Change-Id: Ic5eaf65e8bd054a844f87b9118c4bb18f30ac8a7
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java
01fe661ae5da3739215d93922412df4b24c859a2 13-Feb-2014 RoboErik <epastern@google.com> Initial round of MediaSession APIs

This is far from complete but puts the basic components in place
for an app to interact with media sessions.

Change-Id: Icfe313f90ad76ae56badbe42b0e43fc5f68db36f
/frameworks/base/services/core/java/com/android/server/media/MediaSessionService.java