Currently, even if a JPEG file has an XMP data stored separately
from the EXIF data, it saves it as an EXIF tag, and when
ExifInterface#saveAttributes is called, the XMP data is stored
inside the EXIF data. This can cause a problem since the maximum
bytes that an EXIF data can hold inside a JPEG file is 65536 bytes,
and having the XMP data inside the EXIF data can make the EXIF data
exceed this limit.
This CL solves this issue by separately saving the EXIF data if it
existed separately in the original file.
Bug: 147778520, Bug: 149010485
Test: manually with file attached in bug
Change-Id: I320942858beb14cc3b2e80330857089a0ad26533
PendingIntent can be built with implicit intent (i.e. intent without
ComponentName), while using it cause exception.
However, apps can still create and set media button receiver with
implicit intent. Prevent crash when MediaSessionService is notify about
such app's media button receiver.
Bug: 147536687
Test: Build and run
Change-Id: Icfdd45edaa8e25dbdeca3c2180bd234718eef202
When MediaRoute2ProviderProxy disconnects, it should
clear its session info but it didn't.
This CL corrects it such that sessions are released correctly.
In addition to that, it also releases the previous controllers when
transfer w/ MediaRouter2Manager.
Test: manually
Change-Id: If827a9473d79e3a154688c0dfaa3075b0e0b6ef5
Also, this CL makes SystemMediaRoute2Provider publish new route infos
when the volumes are changed.
MediaRouter2 can get the volume changes from
RouteCallback#onRoutesChanged().
Bug: 149005682
Test: atest mediaroutertest and CTS
Change-Id: Icfc3b9f3b568e66d55782b11e0d29fec3b9eac6e
After this CL, MediaRoute2ProviderService#onDiscoveryPreferenceChanged()
will be called when a callback is registered/unregistered from
MediaRouter2
To test the behavior, a new test class (MediaRoute2ProviderServiceTest)
is added as well.
Bug: 148771044
Test: atest android.media.cts.MediaRoute2InfoTest
&& atest android.media.cts.MediaRouter2Test
&& atest android.media.cts.RouteDiscoveryPreferenceTest
&& atest android.media.cts.RoutingSessionInfoTest
&& atest android.media.cts.MediaRoute2ProviderServiceTest
Change-Id: I9c5933f6074cc1cf41f524bd403e7ee842b4033c
This CL creates hidden MediaKeyDispatcher and SessionPolicyProvider
classes that OEMs can implement/override to customize button session
management. Implementation code inside MediaSessionService will
follow in the next CL.
Bug: 147027868
Test: build
Change-Id: Ie3d0c558c4a5f04d27411f6f36e9f5c3a6aea3d0
Do not call AudioSystem.setAllowedCapturePolicy directly in
AudioManager. Instead, send the request to AudioService and calling the
function in AudioService. In that case, AudioService can cached the
request so that it benefits returning correct playback configuration.
When querying capture policy, AudioManager will query AudioService first
to see if there is cached capture policy. If there is exception, return
cached capture policy in AudioManager.
Test: dumpsys audio, query active audio playback configuration
Test: atest AudioManagerTest, AudioAttributesTest
Test: atest AudioPlaybackCaptureTest, AudioPlaybackConfigurationTest
Bug: 145115448
Change-Id: I170571d8a67839bc5a53991d6c89127b99b5c794
TvProvider API standardization and customization for Digital Tuner TV
Input support. (Programs.COLUMN_EVENT_ID, ProgramColumns.COLUMN_SPLIT_ID,
Programs.COLUMN_GLOBAL_CONTENT_ID, Channels.TYPE_ATSC3_T,
Channels.COLUMN_GLOBAL_CONTENT_ID)
Bug: 139424812
Bug: 139425741
Test: Manual
Change-Id: Idb4158cd2c9833ce9dd007de3b8fc5ccfe2a36b4
MediaRoute2Info#isSystemRoute returns true only if
it is generated by SystemMediaRoute2Provider.
In addition, MediaRouter2 and MediaRouter2Manager
always include system routes when getRoutes or getAvailableRoutes
is called.
This CL will change the behavior of MediaRouter2#getRoutes(), however,
without this change, there doesn't seem to be a good way to get
system routes. (e.g. how can we support multiple bt routes in xMR?)
Bug: 145632124
Test: atest android.media.cts.MediaRoute2InfoTest
&& atest android.media.cts.MediaRouter2Test
&& atest android.media.cts.RouteDiscoveryPreferenceTest
&& atest android.media.cts.RoutingSessionInfoTest
&& atest mediaroutertest
Change-Id: I18ea188b68e6e1335cb0e25c3cc3674910d4d645
Replace the existing usages of now-deprecated API
WindowManager.getDefaultDisplay() with WindowMetrics or
Context.getDisplay() in frameworks/base.
Bug: 128338354
Test: Build, auto test
Change-Id: I02d38a022c5e0e6e9d699f03d35b65d6c8126da9
The AudioVolumeGroup change callback for a given group may be lost.
It is due to a poor copy paste in the Handler implementation where
the previous messages where removed.
In the case of volume group, it is forbidden to remove handled message
otherwise previous group change will not be reported.
Test: run cts-dev -m CtsMediaTestCase --test android.media.cts.AudioManagerTest#testVolumeGroupCallback
Bug: 136121584
Change-Id: I7434e66f02143c7da0f7156347d899e81467ee98
Signed-off-by: François Gaffie <francois.gaffie@renault.com>
This CL adds javadoc to explain new APIs in detail and remove
an unnecessary method: MediaRoute2Info#hasAnyFeatures
Bug: 148379928
Test: atest mediaroutertest (w/ mediarouteprovider installed)
Change-Id: I6be0d66044c591525468153ad0122f082d7582aa
Use the correct AudioAttributes method to query which volume stream
is associated with audio attributes.
Prevent AudioProductStrategy from returning invalid volume stream
types / stream types unknown for volume control
Bug: 148263626
Test: see bug
Change-Id: I64d01286815474d5e23fbe7e57c58bfdf57ebd3e