The API checks whether an app is granted MEDIA_CONTENT_CONTROL
permisison or has enabled notification listener. Such apps can be
considered as the system component (e.g. Bluetooth) or equivalent (e.g.
Auto/Wearable companion app), so sessions shouldn't refuse connection
request from it.
It needs to be public because API for checking whether an app has an
enabled notification listener can only be called by the system service.
(see: NotificationManager.getEnabledNotificationListeners(int))
With the MediaSessionManager#isTrustedForMediaControl(),
MediaSessionService will query the information indirectly for a session
to tell an app is trusted.
Note that this isn't workaround for bypassing permission check of
NotificationManager API calls. It's indirectly available through
the android.provider.Settings.Secure with the *deprecated* key
ENABLD_NOTIFICATION_LISTENERS and it doesn't need any permission.
MediaSessionManager#isTrustedForMediaControl() is needed to avoid using
deprecated key for querying notification listeners.
Bug: 75500592
Test: Build
Change-Id: I8d1183aa946aa0d2ec35dbd7f31933d1c2717f99
API review requested that MediaDrm security
levels be prefixed with a common string.
bug:76449152
bug:74831432
Change-Id: I2b4d5ed2c881f736659f29aa76c556a79d1335f4
Expose in SDK the interfaces necessary to implement unbundled
subtitle support, which requires:
- exposing an interface to receive the encoded subtitle data
- exposing an interface while allows a renderer to synchronize
its rendering clock with the media time of the player.
Deprecate duplicated timed text constant, all timed text / sub
mime types are defined in MediaFormat.
Bug: 76121592
Test: make offline-sdk-docs
Change-Id: I42cc1d69069babb69a2feeba3f54da89889f4602
Remove the checkType of filtering back mic. Make getAddress() public in
AudioDeviceInfo to distinguish different built in mic.
Bug: 64038649
Test: run cts
Change-Id: I943b7f74f44db7068644f5ffa1b5410cbf567f11
The only allowed format - usage pairs are currently:
* PRIVATE with USAGE_GPU_SAMPLED_IMAGE
* PRIVATE with USAGE_VIDEO_ENCODE
* PRIVATE with USAGE_GPU_SAMPLED_IMAGE | USAGE_VIDEO_ENCODE
* Non-PRIVATE with USAGE_CPU_READ_RARELY
* Non-PRIVATE with USAGE_CPU_READ_OFTEN
This commit enable other cases, ie. PRIVATE with
GRALLOC_USAGE_HW_COMPOSER.
Bug: 77148005
Test: Manually tested it.
Change-Id: I414c25bc62d52a3573461df6cec4d88512509ec4
PlayerEventCallback#onSeekCompleted() will be called when the
MediaPlayerBase#seekTo() is completed. Following callbacks are also
added to listen the event.
- SessionCallback#onSeekCompleted()
- ControllerCallback#onSeekCompleted()
Bug: 74370608
Test: Build
Change-Id: Ib1ecd75f7e217ed9a927db3ab443073a1aef2074
This CL removes code that directly casts int[] to long[] and instead
iterates through the individual values and casts to int if necessary.
They are cast to integer because StripOffsets/StripByteCounts
Attributes can return either int[] or long[] values, but the maximum
length of a file that ExifInterface can handle is the maximum value
of integer, so it should be safe to cast the long values to integer
values.
Bug: 73091048
Test: Cts
Change-Id: I9f3b98204e0829a8a8a30927bb8c0a698c457654
If MtpService stops before MtpServer
shuts down, the server will be null,
so don't attempt to use it in that
case.
Bug: 76433619
Test: no errors
Change-Id: I6744cb78908e6a0663a4b60107d5c9c18dda62bb
Provide a way for a custom MediaPlaylistAgent to tell which
MediaItem2 maps to the DataSourceDesc from the
MediaPlayerBase#PlayerEventCallback.
Bug: 74316764, Bug: 75500592
Test: Run CTS with MediaComponents/runcts.sh
Change-Id: I45c9893bf74b2635f31949be537885a79860cfb3
* Add AudioSystem.FOR_VIBRATE_RINGING mode to match the native layer
AUDIO_POLICY_FORCE_FOR_VIBRATE_RINGING force mode
* Switch to this mode when Bluetooth SCO is connected
* Modify AudioService.muteRingerModeStreams() method to not mute ringer
volume when Bluetooth SCO is ON. Also, when ringer is unmuted, mirror
speaker ringtone volume on Bluetooth SCO ringer
Bug: 72647074
Test: Call phone in vibration mode and hear ringtone on HFP enabled
headset, verify that ringtone is only played through headset.
Then disconnect headset and call again to verify that ringtone
does not play through phone speaker in vibration mode.
Change-Id: I7d642020710c085f0e1f27c750c74b0e2fb57398