When an audio device disconnects from Android, custom audio patches
containing the device become invalidated.
AudioManager::updateAudioPortCache() used to fail in that case, but
it causes onAudioPortListUpdated() event never gets called so that
the creator of the custom audio patch cannot update it. Let
updateAudioPortCached() succeed even in the case so that the entity
that created the audio patch can get notified.
Bug: 18909299
Change-Id: If4f6ed73f69213d792117fb42aec103ae2e50b79
In change Ic5b3fb75309893caae1a4f4b56068a543847f1f7, we added partial
support for the MTP properties:
MTP_PROPERTY_AUDIO_WAVE_CODE,
MTP_PROPERTY_BITRATE_TYPE
MTP_PROPERTY_AUDIO_BITRATE
MTP_PROPERTY_NUMBER_OF_CHANNELS
MTP_PROPERTY_SAMPLE_RATE
However we were not returning any values for these properties in the result
of the MTP GetObjectPropList command. Strangely, this triggers a nasty bug
in Windows 7 that results in data loss. When copying a directory containing
several MP3 files from one location on the device to another, Windows will
copy only some of the files to the new location, but delete all of the originals.
Finishing the implementation of these new object properties for some unknown
reason stops this bad behavior in Windows 7.
Bug: 19018427
Change-Id: I5fd3b91a89b31827d3100686445cef6795fe0f3f
In function setBluetoothA2dpDeviceConnectionState, current code calculate
the delay of the second state update message to be exactly the same as the
last delayed messages. This causes a problem that the sequence of the
messages may be altered.
Bug: 19036411
Change-Id: I35762873fd3341ec098dd229ac96bd42d6f34195
Broadcasts that might be sent before the boot process has completed must
be restricted to registered receivers, at least while still in the
middle of booting.
Bug 19060618
Change-Id: Ib4e0990cf252f34344f7a0bd19a0e72919013e0f
Make AudioPortEventHandler and audio port and patch caches
static members of AudioManager. There is only one callback
per process in AudioSystem for audio port updates
and having those non static would not work when more than
one AudioManager instance exists in one app.
Bug: 18727023.
Change-Id: I4c1041dc6441d168be4efa066e14289cc5f41872
Handle stream mute/unmute requests at the stream
alias level (like is done volume changes) to be consistent.
E.g a request to mute/unmute a stream will affect all streams
sharing the same alias for volume management.
Bug: 18844550.
Change-Id: Ie2e463c58df0371589150f0ebb9b36c38b14e1be
static void CallStaticVoidMethod is variable argument function.
if pass 0 to the function like: CallStaticVoidMethod(......, 0),
0 will be treated as INT data type.but in the CallStaticVoidMethod
implement 0 will be treated as pointer data type.Pointer in 64bit
system occupied 8 bytes, but in 64bit system int occupied 4 bytes.
if call function like: CallStaticVoidMethod(......, 0),
only low 4 bytes will be assigned 0.Turned out it actually call
function like this: CallStaticVoidMethod(......, 0xXXXXXXXX00000000).
intent to pass NULL to function but passed non-NULL parameter to
the function.this will cause GCDaemon crash.
Bug: 18911458
Change-Id: I9d700d3790a80dbee6826f64baf9ef5d81ca390f
Reviewed-by: Liao, Bruce <bruce.liao@intel.com>
Signed-off-by: Yong Yao <yong.yao@intel.com>
When creating an AudioRecord instance, filter the tags in the
AudioAttributes to remove tags that are handled at the Java
layer.
Bug: 18733215
Bug: 18736417
Change-Id: I16a3497742086deced4e8677bd6231290396c5f6
MediaSessionLegacyHelper used a Context passed by an application
which can cause a leak of Activity instances. Use the global
Application context instead.
Also prevent crash if a null Context is supplied (method not
documented as requesting a non-null Context).
Bug 18767503
Change-Id: I8281047d0af233a323f3fc11ababedff848829ec
This makes sure that accessing the HdmiControlService via audio service
should be possible without the system permission.
Bug: 18730526
Change-Id: I05b364d8e38218eb75f3c08972a06bb2d71a982b
This is caught by Ringtone, and we then fall back to built-in
ringtone, which matches the expected CTS behavior.
Bug: 18610451
Change-Id: I234d17f7cf623b9b0af434e5d367aed28f203b14
Add new flag for an app to define it doesn't duck, but rather
pauses when losing focus with AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK.
This flag is to be used when requesting focus.
Add support for AudioPolicy to specify whether it will implement
ducking itself, rather than it being handled by an app.
When ducking is handled by a policy, do not notify focus owners
when they lose audio focus with LOSS_TRANSIENT_CAN_DUCK, unless
they would have paused, as expressed with the
AUDIOFOCUS_FLAG_PAUSES_ON_DUCKABLE_LOSS flag.
Add a focus listener for a policy to be notified of focus changes
so it can properly implement its own ducking.
Bug 16010554
Change-Id: I11d7cdb85c52fd086128a44f4d938aaa44db5c25
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
The MusicDemo was depending on the fact that setting the session token
is done synchronously and that getSessionToken can be called immediately
after. This makes setting the token synchronous again but leaves the
post to update any MediaBrowsers that are waiting on a connection.
This does introduce a small race condition if an app tries to set it
twice from different threads, but this is a very unlikely situation
and MediaBrowserService is not guaranteed to be thread safe.
bug:18603085
Change-Id: Id934c9f3b6520225cd92d1d8a6e2b3d606b8c6c8