AudioService relies on a valid mmc in order to enforce the headset
volume limitation or not. There is a timeout to enforce the limitation
if no mcc is configured after boot.
Until this timeout is reached or a valid SIM is detected the headset
volume is not limited.
This change makes that the last known volume limitation state (enforced or
not) is persisted so that next time we boot, last known state is applied until
a new mcc is configured if any. In most cases, the mcc does not change from one
boot to the next and we do the right thing. If teh mcc does change, the correct
policy will be enforced when the mcc is detected or after the timeout.
Also fix a bug where the volume panel was not displayed if the limitation mechanism
is triggered at the first press on VOL+ key.
Bug 7455275.
Change-Id: Id0f2996d893d38c6a14f4f9e4a0e9e3be17ef127
MediaRouter's policy so far has been around a single selected route,
but when route types are entirely orthogonal this should not be the
case. However we still don't want to get into a situation where we
have multiple, very different routes selected for different types at
the same time, we still want to have more of an element of
predictability.
Behavior of getSelectedRoute is now:
* If the selected route matches at least one type with the requested
type flags, it is still considered selected for that request.
* If the caller specifically requested the selected user route and the
currently selected route is not a user route, return null.
* If the requested type flags do not match any types with the selected
route, return the default system route.
Note that this is "any" behavior instead of "all" - this matches
existing usage of the method. We may consider adding an "all" variant
later on.
Bug 7588042
Change-Id: I3a79d8153ca6b882fd3ef6b9b1de8f538873dec2
Change 1f9196a8e5de9b004e61afabc70b18caf7cf9c7e introduced
an issue when trying to ignore audio focus entries in the
stack that don't use the music stream, or are for transient
audio focus gain, for remote control display updates.
The bug was that the audio focus stack traversal was not
starting from the top, as it should. It was using
the iterator order, which, in the case of a stack, starts
with the bottom-most entry.
The fix consists in traversing the stack from the top, i.e.
from the last element of the vector used to hold the stack
entries.
Bug 7311023
Change-Id: I0c1900dbf98599a621a420ab55531a3eee838fe5
merge from master:
"AudioService: improve low end dock audio control
Low end docks have a menu to enable use of audio
for media: automatically enabling/disabling use of audio
when the dock is connected/disconnected is useless
and can be the source of audio glitches.
Bug 7463620."
Change-Id: I3b7e7ebe660bb3f0e4367d2a3ed63ee76f78fe58
merge from master:
"audio service: set dock use on mediaserver restart
Restore forced usage of dock audio for media according to
current setting when media server restarts."
Bug 7485250.
Change-Id: Ie67b80ede1ed92d223dd96de83c1beb985dfba06
Some Wifi display devices like to rename themselves after a
connection completes (or at other times). Make sure to update
the name of the display when we detect that it changed in
our scan results.
This problem is somewhat complicated by the fact that we remember
the display name persistently, so we need to update our list
of remembered displays too.
Improve the state machine to avoid redundant attempts to
disconnect or cancel connection.
Bug: 7478895
Change-Id: I35a9e2c6a8deadbe892dacd5e3b4a5a2b12d6cf0
On user switch:
- make the current audio focus owner loose audio focus
- clear the remote control display
Bug 7205290
Bug 7307156
Change-Id: I6ebcb94d1d2bae8c57ab98dd7e795b239a981d28
It is better to turn dock audio off by default if the user
has not yet explicitly turned it on from the settings menu.
There is a discoverability issue with current implementation
as we do not launch the settings menu at first dock insertion.
Having audio routed to the dock by default would make the tablet
silent for media content when docked and users will not be directed
to the settings menu.
As the dock audio enable setting is for low end docks only
(analog connection and no jack detection) disabling audio for low end docks
by default does not impact manta and prime docks.
Bug 7302106.
Change-Id: I571f361d41940cfb811f038442ae9ba9c6361d1d
Add settings dock_audio_media_enabled indicating if dock audio
is enabled for media for docks that do not implement jack detection.
Bug 7302106.
Change-Id: I75766b606ceb870b3f89979c4e3cca88ed197aaf
This new API makes it possible for an application to ask on
which Display it should show a Presentation based on the currently
selected media route.
Also added a new API on DisplayManager to query displays that
support a certain category of uses.
Improved the documentation of the Presentation class to explain
how to choose an appropriate Display for presentation.
Bug: 7409073
Change-Id: Iab451215e570ae55f3718fc228303143c800fe51
Added correction of MODE_RINGER_STREAMS_AFFECTED setting in
case it is inconsistent when read from the database: ringtone,
notification and system streams are always affected by ringer mode.
A corruption of this setting persists accross reboots and propagates via
backup/restore causing devices to play notification and ringtones in silent mode.
Bug 7384750.
Change-Id: I23170413d01e6a8e34ef514f1516d7b9ab8bc656
Don't use the force_use mechanism to start WFD audio routing,
but rather only the availability of the remote submix audio
device. This is matched by a change in the audio policy
manager.
Bug 7318180
Change-Id: I756f032d8ca0375c3dbeddb7c321261c497539bc
Fix a couple of bugs that cause MediaRouter to disconnect from
the current Wifi display whenever it is renamed.
Added an extra check in WifiDisplayAdapter for identity renames.
The Settings app already handles this case but it's good to have
the service check for it as well so we don't store unnecessary
aliases.
Bug: 7310777
Change-Id: I8fddd32ca59f9b798ee31b467b81457508c345f8
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
When we're connected to a wifi display already, some configurations
might hiccup or otherwise disrupt the media stream if we initiate a
new scan. Block the MediaRouter's default scanning behavior if we
start up while already connected to a wifi display. (A scan will still
occur if the user opens the picker dialog.)
Change-Id: I413efa883eec41fe0377da18bcb55bc72e2ac729
Use mcc config overlay mechanism to enforce camera shutter sounds
in countries where it is mandatory.
Property ro.camera.sound.forced is not needed anymore.
When camera sound is forced, STREAM_SYSTEM_ENFORCED is removed from
streams affected by ringer mode and its volume is
maxed out. AudioSystem.FORCE_SYSTEM_ENFORCED is sent to audio
policy manager to alter the routing policy for STREAM_SYSTEM_ENFORCED.
Also fix streams being unmuted when settings are reloaded
upon user switch while in silent mode.
Add ringer mode to audio service dump.
Bug 7032634.
Change-Id: Iceea5bba3b8d3aabf8e42b222deb33a893dc8f38
Force max volume for devices with fixed volume policy (HDMI, dock...)
when reading the settings from DB. Otherwise, these devices would
get the default volume which is not what we want.
Also fix a problem related to ringer mode management when reloading the
volume settings upon user switch that would cause a muted stream to be
unmuted.
Bug 7301563;
Change-Id: I81cdb97125b845da584ed680181b93c7c1e5903f
Make sure we get the right initial status for wifi displays when a new
display route is first added to the MediaRouter.
Bug 7289746
Change-Id: Id41f704fc88021bd4cdf21e9f4b3c810775e1aea
Strip FIXED_VOLUME flag in setStreamVolume() and
adjustStreamVolume() as this flag is reserved for
framework use.
Bug 4335692.
Change-Id: I507582270f4c4cd631ee81fe50dca895bb6352b3
STREAM_SYSTEM stream volume is never persisted to settings as
it is always derived from another stream volume (STREAM_RING on phones
and STREAM_MUSIC on tablets). Therefore values stored in settings
are stale from previous releases and should be ignored.
Also fix a problem where a muted stream can be unmuted by
readAudioSettings() even if it is muted by ringer mode.
Bug 7216630.
Change-Id: If23561ddfbc704f89fd0a997faf1b50299a50c2e
Enable safe headphone volume feature for all countries that
do not opt otherwise in their mmc configuration.
Opt out for US.
Bug 7231029.
Change-Id: I2619d627508eb2cd1f73db9242e0cb5efa839a2a
* Don't select the default route on initialization in a process
* Add "connecting" state to MediaRouteButton
Bug 7258981
Bug 7262522
Change-Id: I5cd39b09843783b7e1e17620ca33193f0f3b8fca
* Adds the new route type LIVE_VIDEO
* Wireless displays support both LIVE_VIDEO and LIVE_AUDIO, making
wireless display routes valid selections in when apps make selecting
live audio routes available.
* MediaRouter will only report/manipulate wireless displays that have
already been paired at the system level.
Bug 7177920
Change-Id: Ic221b8687d77b4c0df9801c396b74870e86206e9
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
Align UI indication to volume policy when docked: the music volume
cannot be adjusted when docked or connected to HDMI. Display
a disabled slider at max volume in this case to be consistent.
Bug 4335692.
Change-Id: I6f8db143b0e2ecf54e4bdacd88afdeb661a98a18
AudioService sends AudioManager.ACTION_AUDIO_BECOMING_NOISY
intent when notified of a user switch to pause music playback
for all background users.
Bug 7128886.
Change-Id: I6a24409533bf40c517c43da25b9baeceb3379cb8
On phones, add a short delay during which volume keys still
control music volume after music has stopped. This is similar
to the tablet behavior for notifications volume.
It allows users to control the prompt volume for talk back,
voice search or navigation even after the prompt has stopped.
Bug 7162364.
Change-Id: Iffbca9ec30ebcbe5846f783ddd260b6e736caf2b
It is not a requirement to force headphone volume limitation
back on when a headset is plugged in. Only turn it back on
when the device is power off or after 20 hours of cumulative
music listening.
Bug 7064975.
Change-Id: Idabd417a9a9b8096552119c0ff528ba193cfdb5d