2023-11-16
Activity: v1.8.1
November 15, 2023
androidx.activity:activity:1.8.1, androidx.activity:activity-compose:1.8.1, and androidx.activity:activity-ktx:1.8.1 are released. Version 1.8.1 contains these commits.
Bug Fixes
OnBackPressedDispatchernow continues to dispatch to the correctOnBackPressedCallbackeven after a newOnBackPressedCallbackis added while the back gesture is being handled. (Id0ff6)
Benchmark: v1.2.1
November 15, 2023
androidx.benchmark:benchmark-*:1.2.1 is released. Version 1.2.1 contains these commits.
New Features
- Improved error message when user disables test variants (b/307478189)
- Added properties to support AS test run integration (b/309805233), (b/309116324)
Browser: v1.7.0
November 15, 2023
androidx.browser:browser:1.7.0 is released. Version 1.7.0 contains these commits.
Important changes since 1.6.0
- Added
CustomTabsIntent.Builder#setBookmarksButtonEnabledthat enables the bookmarks button in the overflow menu. (Ia792e) - Added
CustomTabsIntent.Builder#setDownloadButtonEnabledthat enables the download button in the overflow menu. (Ia792e) - Added
CustomTabsIntent.Builder#setSendToExtraDefaultHandlerEnabledthat enables sending initial urls to external handler apps. (Ia792e) - Added
CustomTabsIntent.Builder#setTranslateLanguagethat specifies the target language that the Translate UI should be triggered with. (Ia792e) - Added
CustomTabsIntent.Builder#setBackgroundInteractionEnabledthat enables interactions with the background app when a partial Custom Tab is launched. (Ia792e) - Added
CustomTabsIntent.Builder#setShareIdentityEnabledthat allows Custom Tabs to obtain the caller's identity. (I7bf2b) - Added
CustomTabsIntent.Builder#setSecondaryToolbarSwipeUpGesturethat sets aPendingIntentto be sent when the user swipes up from the bottom toolbar. (Id42a2)
Browser: v1.8.0-alpha01
November 15, 2023
androidx.browser:browser:1.8.0-alpha01 is released. Version 1.8.0-alpha01 contains these commits.
New Features
- Added
CustomTabsIntent.Builder#setInitialActivityWidthPxwhich allows developers to specify the initial launch width of a Custom Tab. (I443f6) - Added
CustomTabsIntent.Builder#setActivitySideSheetBreakpointDpwhich allows developers to specify the minimum Custom Tabs window width in order for it to act as a side sheet. (I443f6) - Added
CustomTabsIntent.Builder#setActivitySideSheetPositionwhich allows developers to specify the Custom Tab’s position when acting as a side sheet. (I443f6) - Added
CustomTabsIntent.Builder#setActivitySideSheetEnableMaximizationwhich allows developers to enable or disable the maximization button when the Custom Tab is acting as a side sheet. (I443f6) - Added
CustomTabsIntent.Builder#setActivitySideSheetDecorationTypewhich allows developers to specify the Custom Tab’s decoration type when it is acting as a side sheet. (I443f6) - Added
CustomTabsIntent.Builder#setActivitySideSheetRoundedCornersPositionwhich allows developers to specify the position of the rounded corners when the Custom Tab is acting as a side sheet. (I443f6) - Added
onActivityLayoutcallback method to interfaceCustomTabsCallbackto let developers know the coordinates of the area occupied by the Custom Tab and the state in which it is being displayed. This will be called when the Custom Tab is first displayed on the screen and each time the occupied area changes. (I443f6) - Added
onWarmupCompletedcallback method to interfaceCustomTabsCallbackto let developers know whenCustomTabsClient#warmupfinishes warming up the browser process. (I107cf)
Bug Fixes
- Added the session id to extras in
CustomTabsSession#setEngagementSignalsCallbackandCustomTabsSession#isEngagementSignalsApiAvailable. (Iba7f1)
Collection: v1.4.0-beta01
November 15, 2023
androidx.collection:collection-*:1.4.0-beta01 is released. Version 1.4.0-beta01 contains these commits.
Bug Fixes
- Fix for
ListIteratorincorrectly setting values inObjectListthat could result in a crash due toIndexOutOfBoundsException. (I3bd8a, b/307049391)
Compose Animation: v1.6.0-beta01
November 15, 2023
androidx.compose.animation:animation-*:1.6.0-beta01 is released. Version 1.6.0-beta01 contains these commits.
API Changes
ExitTransition.Holdhas been renamed toExitTransition.KeepUntilTransitionsFinishedto be more explicit. (I1c490)- You may now use
keyframesWithSplineto interpolate any N-dimensional value using monotonic splines. It's particularly useful to interpolate positional values such asOffset,IntOffset,DpOffset. Added as Experimental API.
Bug Fixes
- Add renderer support for Sweep Gradient in
ArcLine. (I4d5bb) - Implement equals and hashcode for
PageSize.Fixed. (Ie3ede, b/300134276) - Fix binary compatibility issue with Window Inset change. (Iee695)
- Remove material core layer for Material3 Chip/Button as the microbenchmarks show better performance without it. (I55555)
Compose Foundation: v1.6.0-beta01
November 15, 2023
androidx.compose.foundation:foundation-*:1.6.0-beta01 is released. Version 1.6.0-beta01 contains these commits.
API Changes
- The
DragAndDropTargetmodifier now takes in the receivingDragAndDropTargetexplicitly and has a lambda to opt into a drag and drop session. There are now two factory functions for aDragAndDropModifierNode. One for receiving transfers and one for transferring data (I69481) - Updated
maximumFlingVelocityto be represented as Float. Updated documentation to be more clear about themaximumFlingVelocityunity. (I8adc7) onDragAndDropStartin theDragAndDropModifierNodefactory has been renamed toacceptDragAndDropTransfer.acceptsDragAndDropTransferhas been added to thedragAndDropTargetModifierto accept from a drag and drop session. This lambda returns a viableDragAndDropTargetif interested in a drag and drop session. Other lambdas for processing drag events have been replaced by this.a
DragAndDropTargetfactory function has been added to receive from drag and drop sessions (Iebf3a)Exposing
startDragImmediatelyinAnchoredDraggablegives control for detecting dragging gestures when using it. It is useful to set it when the widget is animating to a target anchor. See Sample. (Ie6d13, b/285139987)Foundation Tooltip APIs are now
@ExperimentalFoundationApi(I30b0b)Removed
DragAndDropInfoas a typeDragAndDropModifierNode.dragnow takes parameters for thetransferData, decoration size and drag decorationDrawScopelambdaDragAndDropTargethas methods for particular drag and drop events instead of being a single abstract methodonDragAndDropEventin the factory function for aDragAndDropModifierNodehas been renamed toonDragAndDropStartto better communicate that theDragAndDropTargetprovided is valid for a given drag and drop session onlyThe
DragAndDropEventTypehas been removed (I645b1)Renamed
PlatformTextInputModifierNode.runTextInputSessiontoestablishTextInputSession. (I03cd0)Replace
OriginalTextbyTextSubstitution. (Ifa5a8)Renamed
PlatformTextInputModifierNode.textInputSessiontorunTextInputSession. (Ie9c6b)The children of
SubcomposeLayout(and layouts likeLazyColumnbased on it) which are retained to be reused in future are considered deactivated. NewassertIsDeactivated()test API was introduced to test such nodes. The rest of the test apis will filter out deactivated nodes by default. (I2ef84, b/187188981)clippingEnabledparameter ofModifier.magnifieris renamed toclip.magnifierCenterparameter ofModifier.magnifieris made nullable preserving the same default behavior. (I6aa66)Material
SwipeToRevealAPIs (for Cards and Chips) now rely on a slot based API (as recommended by Compose) instead of data class based instances to create those slots. This is a breaking change, please see the demo and sample code for examples on how to use the new API. (Ia8943)
Bug Fixes
- Implement equals and hashcode for
PageSize.Fixed. (Ie3ede, b/300134276) - Fixed a bug that would cause
BasicTextlayout to not shrink whenminWidthchanged andminWidthless than initial measure constraintsmaxWidth(Idb19c) - Add renderer support for Sweep Gradient in
ArcLine. (I4d5bb) - Fix binary compatibility issue with Window Inset change (Iee695)
- Remove material core layer for Material3 Chip/Button as the microbenchmarks show better performance without it. (I55555)
Compose Material: v1.6.0-beta01
November 15, 2023
androidx.compose.material:material-*:1.6.0-beta01 is released. Version 1.6.0-beta01 contains these commits.
Compose Material 3: v1.2.0-alpha11
November 15, 2023
androidx.compose.material3:material3-*:1.2.0-alpha11 is released. Version 1.2.0-alpha11 contains these commits.
New Features
- Implements
PullToRefreshContainerandPullToRefreshState, which together provide a pull to refresh implementation in Material3. (I16456, b/261760718)
API Changes
- Mark the
SwipeToDismissBoxDismissDirectionandDismissValueas experimental. (I517b0) - Rename
SwipeToDismisstoSwipeToDismissBox. RenamebackgroundtobackgroundContentanddismissContentto trailingcontentlambda. (I7f4d3) - Make the constructor for
ChipElevationandSelectableChipElevationpublic. (Ie0c48, b/308432421) - Adding
ModalBottomSheetProperties. MovingsecurePolicyintoModalBottomSheetProperties. AddingisFocusableandshouldDismissOnBackPresstoModalBottomSheetProperties. These new booleans help determine how modal bottom sheet should handle IME events. (Iea56f, b/278216859) - Updated
RangeSliderandSliderstates to removeinitialOnValueChange, the initial prefixes, and appropriate kdocs. (I57d30) - Deprecate
ChipBorderclass and its associated function calls, recommend usingBorderStrokedirectly instead. (I89cc2) - Foundation Tooltip APIs are now
@ExperimentalFoundationApi. (I30b0b) TabRowandScrollableTabRoware no longer deprecated. The new Primary and Secondary variants are marked as experimental. (I0def6)- Filter and input chips now use
BorderStrokedirectly. (I07a8d) SegmentedButtonnow usesBorderStrokedirectly. (I89b9b)- Renamed the generic
AlertDialogfunction toBasicAlertDialog, and deprecate the previous function. (Idbe52) - Rename
SwipeToDismissAPIs toSwipeDismiss, and promote the newSwipeDismissAPIs to stable. (I14cbe) - Adding
tonalElevationandshadowElevationto tooltip APIs. Additionally, movingTooltipBox,PlainTooltip, andRichTooltipAPIs back to experimental since they were accidentally released as stable. (If0f66, b/293939035) - Promote experimental chip APIs to stable. (Iea2c3)
- Removed the
@ExperimentalMaterial3Apiannotation from the Material3 clickable Cards. (I88dbf)
Bug Fixes
- Fixed an issue where
SwipeToDismisswould crash in certain scenarios with nested Lookahead and Lazy layouts. (Ica8d1, b/297226562)
Compose Material3 Adaptive Navigation Suite: v1.0.0-alpha01
November 15, 2023
androidx.compose.material3:material3-adaptive-navigation-suite:1.0.0-alpha01 is released. Version 1.0.0-alpha01 contains these commits. <!--* New Features
- NavigationSuiteScaffold
- NavigationSuiteScaffoldLayout
- NavigationSuite *--> ## Compose Material3 Adaptive Version 1.0
Compose Material 3: v1.0.0-alpha01
November 15, 2023
androidx.compose.material3:material3-adaptive:1.0.0-alpha01 is released. Version 1.0.0-alpha01 contains these commits.
Compose Runtime: v1.6.0-beta01
November 15, 2023
androidx.compose.runtime:runtime-*:1.6.0-beta01 is released. Version 1.6.0-beta01 contains these commits.
API Changes
- Propagate Certain stability values in annotation. (274a4c)
Bug Fixes
- Use referential policy for composition local scope state in context. (83361c)
- Restrict $dirty capture to inline lambdas. (acfca0)
- Fix moveable content sometimes receiving the wrong composition locals. (035cd6)
- Use faster non-allocating hashmaps in
RecomposeScopeImpl. (d79494) - Use
ObjectIntMapinDerivedState. (21862e) - Use
IntReffor intSnapshotThreadLocalinDerivedState. (04eaf4)
Runtime Tracing: v1.0.0-alpha05
November 15, 2023
androidx.compose.runtime:runtime-tracing:1.0.0-alpha05 is released. Version 1.0.0-alpha05 contains these commits.
Bug Fixes
- Pinned dependencies to lowest supported stable versions (i.e. compose-runtime and tracing-perfetto) - fixing an issue where compose-runtime-tracing would bring in a newer version of compose-runtime into the app.
Compose UI: v1.6.0-beta01
November 15, 2023
androidx.compose.ui:ui-*:1.6.0-beta01 is released. Version 1.6.0-beta01 contains these commits.
API Changes
- The
DragAndDropTargetmodifier now takes in the receivingDragAndDropTargetexplicitly and has a lambda to opt into a drag and drop session. There are now two factory functions for aDragAndDropModifierNode. One for receiving transfers and one for transferring data (I69481) - Updated
maximumFlingVelocityto be represented as Float. Updated documentation to be more clear about themaximumFlingVelocityunity. (I8adc7) onDragAndDropStartin theDragAndDropModifierNodefactory has been renamed toacceptDragAndDropTransfer.acceptsDragAndDropTransferhas been added to thedragAndDropTargetModifier to accept from a drag and drop session. This lambda returns a viableDragAndDropTargetif interested in a drag and drop session. Other lambdas for processing drag events have been replaced by this. aDragAndDropTargetfactory function has been added to receive from drag and drop sessions (Iebf3a)Removed
DragAndDropInfoas a typeDragAndDropModifierNode.dragnow takes parameters for thetransferData, decoration size and drag decorationDrawScopelambdaDragAndDropTargethas methods for particular drag and drop events instead of being a single abstract methodonDragAndDropEventin the factory function for aDragAndDropModifierNodehas been renamed toonDragAndDropStartto better communicate that theDragAndDropTargetprovided is valid for a given drag and drop session onlyThe
DragAndDropEventTypehas been removed (I645b1)Renamed
PlatformTextInputModifierNode.runTextInputSessiontoestablishTextInputSession. (I03cd0)Improves traversable node api names to make them more understandable. (Ia4474)
Replace
OriginalTextbyTextSubstitution. (Ifa5a8)Renamed
PlatformTextInputModifierNode.textInputSessiontorunTextInputSession. (Ie9c6b)The children of
SubcomposeLayout(and layouts likeLazyColumnbased on it) which are retained to be reused in future are considered deactivated. NewassertIsDeactivated()test API was introduced to test such nodes. The rests of the test apis will filter out deactivated nodes by default. (I2ef84, b/187188981)Removed
FocusDirection.InandFocusDirection.OutuseFocusDirection.EnterandFocusDirection.Exitinstead (I2f660)Material
SwipeToRevealAPIs (for Cards and Chips) now rely on a slot based API (as recommended by Compose) instead of data class based instances to create those slots. This is a breaking change, please see the demo and sample code for examples on how to use the new API. (Ia8943)FontStyle(int)constructor is deprecated, useFontStyle.NormalorFontStyle.Italicinstead. (I66610)Renamed
FontScalableinterface toFontScaling(Ie804a)
Bug Fixes
SoftwareKeyboardController.show()will no longer show the software keyboard if no text editor is focused. (I2165a, b/301477279)- Hardware key Up events for keys that haven't received a Down event in the same Compose View will now be ignored. (Ib37b4, b/305518328)
- Add renderer support for Sweep Gradient in
ArcLine. (I4d5bb) - Implement equals and hashcode for
PageSize.Fixed. (Ie3ede, b/300134276) - Fix binary compatibility issue with Window Inset change (Iee695)
- Remove material core layer for Material3 Chip/Button as the microbenchmarks show better performance without it. (I55555)
TestDispatchers passed as theeffectContextto Compose tests will now be used to create the test and frame clocks. (Ia7178)
Games-Activity: v3.0.0-alpha01
November 15, 2023
androidx.games:games-activity:3.0.0-alpha01 and androidx.games:games-text-input:3.0.0-alpha01 are released. Version 3.0.0-alpha01 contains these commits.
API Changes
GameActivityMotionEventandGameActivityCallbacksstructures changed their sizes.onEditorActionchanges its return type from boolean to void.setImeEditorInfonow expects enum parameters, not integers.- internal functions of
GameActivityEventsare moved intoGameActivityEvents_internal.h. GameTextInput’s input types are also enumerations, not integers.
Games-Memory-Advice version 2.1: v2.1.0-alpha01
November 15, 2023
androidx.games:games-memory-advice:2.1.0-alpha01 is released. Version 2.1.0-alpha01 contains these commits.
New Features
- Updated the memory model of the library for better predictions.
API Changes
- Added a new API
getAvailableMemory()that returns an estimate for the amount of memory that can safely be allocated, in bytes.
Games Frame Pacing: v2.1.0
November 15, 2023
androidx.games:games-frame-pacing:2.1.0 is released. Version 2.1.0 contains these commits.
Leanback Leanback-Preference: v1.2.0-alpha04
November 15, 2023
androidx.leanback:leanback:1.2.0-alpha04 and androidx.leanback:leanback-preference:1.2.0-alpha04 are released. Version 1.2.0-alpha04 contains these commits.
Bug Fixes
Dependency Update
- Update recyclerview requirement to 1.3.2 to fix a common crash in TV apps
Leanback-Grid: v1.0.0-alpha03
November 15, 2023
androidx.leanback:leanback-grid:1.0.0-alpha03 is released. Version 1.0.0-alpha03 contains these commits.
Dependency Updates
- Update to depend on RecyclerView
1.3.2to fix a common crash in TV apps (I2c3a0, b/292114537)
Leanback-Paging: v1.1.0-alpha11
November 15, 2023
androidx.leanback:leanback-paging:1.1.0-alpha11 is released with no changes. Version 1.1.0-alpha11 contains these commits.
Lifecycle: v2.7.0-rc01
November 15, 2023
androidx.lifecycle:lifecycle-*:2.7.0-rc01 is released. Version 2.7.0-rc01 contains these commits.
Bug Fixes
LifecycleStartEffectandLifecycleResumeEffectnow correctly dispose and recreate the effect block if theLifecycleOwneris changed. (Ia25c6)
Media: v1.7.0-rc01
November 15, 2023
androidx.media:media:1.7.0-rc01 is released with no changes. Version 1.7.0-rc01 contains these commits.
Media2: v1.3.0-alpha01
November 15, 2023
androidx.media2:media2-*:1.3.0-alpha01 is released. Version 1.3.0-alpha01 contains these commits.
API Changes
androidx.media2is now fully deprecated. Useandroidx.media3instead. (I53164)
Media3: v1.2.0
November 15, 2023
- Common Library:
- Add a
@Nullable Throwableparameter to the methods in theLog.Loggerinterface. Themessageparameter to these methods no longer contains any information about theThrowablepassed to theLog.{d,i,w,e}()methods, so implementations will need to manually append this information if desired (possibly usingLogger.appendThrowableString(String, Throwable)). - Fix Kotlin compatibility issue where nullable generic type parameters and nullable array element types are not detected as nullable. Examples are
TrackSelectorResultandSimpleDecodermethod parameters (#6792). - Change default UI and notification behavior in
Util.shouldShowPlayButtonto show a "play" button while playback is temporarily suppressed (e.g. due to transient audio focus loss). The legacy behavior can be maintained by usingPlayerView.setShowPlayButtonIfPlaybackIsSuppressed(false)orMediaSession.Builder.setShowPlayButtonIfPlaybackIsSuppressed(false)(#11213). - Upgrade
androidx.annotation:annotation-experimentalto1.3.1to fix https://issuetracker.google.com/251172715. - Move
ExoPlayer.setAudioAttributesto thePlayerinterface.
- Add a
- ExoPlayer:
- Fix seeking issues in AC4 streams caused by not identifying decode-only samples correctly (#11000).
- Add suppression of playback on unsuitable audio output devices (e.g. the built-in speaker on Wear OS devices) when this feature is enabled via
ExoPlayer.Builder.setSuppressPlaybackOnUnsuitableOutput. The playback suppression reason will be updated asPlayer.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUTif playback is attempted when no suitable audio outputs are available, or if all suitable outputs are disconnected during playback. The suppression reason will be removed when a suitable output is connected. - Add
MediaSource.canUpdateMediaItemandMediaSource.updateMediaItemto acceptMediaItemupdates after creation viaPlayer.replaceMediaItem(s). - Allow
MediaItemupdates for allMediaSourceclasses provided by the library viaPlayer.replaceMediaItem(s)(#33, #9978). - Rename
MimeTypes.TEXT_EXOPLAYER_CUEStoMimeTypes.APPLICATION_MEDIA3_CUES. - Add
PngExtractorthat sends and reads a whole PNG file into theTrackOutputas one sample. - Enhance
SequenceableLoader.continueLoading(long)method in theSequenceableLoaderinterface toSequenceableLoader.continueLoading(LoadingInfo loadingInfo).LoadingInfocontains additional parameters, includingplaybackSpeedandlastRebufferRealtimeMsin addition to the existingplaybackPositionUs. - Enhance
ChunkSource.getNextChunk(long, long, List, ChunkHolder)method in theChunkSourceinterface toChunkSource.getNextChunk(LoadingInfo, long, List, ChunkHolder). - Add additional fields to Common Media Client Data (CMCD) logging: buffer starvation (
bs), deadline (dl), playback rate (pr) and startup (su) (#8699). - Add luma and chroma bitdepth to
ColorInfo(#491). - Add additional fields to Common Media Client Data (CMCD) logging: next object request (
nor) and next range request (nrr) (#8699). - Add functionality to transmit Common Media Client Data (CMCD) data using query parameters (#553).
- Fix
ConcurrentModificationExceptioninExperimentalBandwidthMeter(#612). - Add
MediaPeriodIdparameter toCompositeMediaSource.getMediaTimeForChildMediaTime. - Support
ClippingMediaSource(and other sources with period/window time offsets) inConcatenatingMediaSource2(#11226). - Change
BaseRenderer.onStreamChanged()to also receive aMediaPeriodIdargument.
- Transformer:
- Parse EXIF rotation data for image inputs.
- Remove
TransformationRequest.HdrModeannotation type and its associated constants. UseComposition.HdrModeand its associated constants instead. - Simplify the
OverlaySettingsto fix rotation issues. - Changed
frameRateanddurationUsparameters ofSampleConsumer.queueInputBitmaptoTimestampIterator.
- Track Selection:
- Add
DefaultTrackSelector.Parameters.allowAudioNonSeamlessAdaptivenessto explicitly allow or disallow non-seamless adaptation. The default stays at its current behavior oftrue.
- Add
- Extractors:
- MPEG-TS: Ensure the last frame is rendered by passing the last access unit of a stream to the sample queue (#7909).
- Fix typo when determining
rotationDegrees. ChangedprojectionPosePitchtoprojectionPoseRoll(#461). - Remove the assumption that
Extractorinstances can be directly inspected withinstanceof. If you want runtime access to the implementation details of anExtractoryou must first callExtractor.getUnderlyingInstance. - Add
BmpExtractor. - Add
WebpExtractor. - Add
HeifExtractor. - Add QuickTime classic support to
Mp4Extractor.
- Audio:
- Add support for 24/32-bit big-endian PCM in MP4 and Matroska, and parse PCM encoding for
lpcmin MP4. - Add support for extracting Vorbis audio in MP4.
- Add
AudioSink.getFormatOffloadSupport(Format)that retrieves level of offload support the sink can provide for the format through aDefaultAudioOffloadSupportProvider. It returns the newAudioOffloadSupportthat containsisFormatSupported,isGaplessSupported, andisSpeedChangeSupported. - Add
AudioSink.setOffloadMode()through which the offload configuration on the audio sink is configured. Default isAudioSink.OFFLOAD_MODE_DISABLED. - Offload can be enabled through
setAudioOffloadPreferenceinTrackSelectionParameters. If the set preference is to enable, the device supports offload for the format, and the track selection is a single audio track, then audio offload will be enabled. - If
audioOffloadModePreferenceis set toAUDIO_OFFLOAD_MODE_PREFERENCE_REQUIRED, then theDefaultTrackSelectorwill only select an audio track and only if that track's format is supported in offload. If no audio track is supported in offload, then no track will be selected. - Disabling gapless support for offload when pre-API level 33 due to playback position issue after track transition.
- Remove parameter
enableOffloadfromDefaultRenderersFactory.buildAudioSinkmethod signature. - Remove method
DefaultAudioSink.Builder.setOffloadMode. - Remove intdef value
DefaultAudioSink.OffloadMode.OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED. - Add support for Opus gapless metadata during offload playback.
- Allow renderer recovery by disabling offload if failed at first write (#627).
- Enable Offload Scheduling by default for audio-only offloaded playback.
- Delete
ExoPlayer.experimentalSetOffloadSchedulingEnabledandAudioOffloadListener.onExperimentalOffloadSchedulingEnabledChanged. - Renamed
onExperimentalSleepingForOffloadChangedasonSleepingForOffloadChangedandonExperimentalOffloadedPlaybackasonOffloadedPlayback. - Move audio offload mode related
TrackSelectionParametersinterfaces and definitions to an innerAudioOffloadPreferencesclass. - Add
onAudioTrackInitializedandonAudioTrackReleasedcallbacks toAnalyticsListener,AudioRendererEventListenerandAudioSink.Listener. - Fix DTS Express audio buffer underflow issue (#650).
- Fix bug where the capabilities check for E-AC3-JOC throws an
IllegalArgumentException(#677).
- Add support for 24/32-bit big-endian PCM in MP4 and Matroska, and parse PCM encoding for
- Video:
- Allow
MediaCodecVideoRendererto use a customVideoFrameProcessor.Factory. - Fix bug where the first frame couldn't be rendered if the audio stream starts with negative timestamps (#291).
- Allow
- Text:
- Remove
ExoplayerCuesDecoder. Text tracks withsampleMimeType = application/x-media3-cuesare now directly handled byTextRendererwithout needing aSubtitleDecoderinstance.
- Remove
- Metadata:
MetadataDecoder.decodewill no longer be called for "decode-only" samples as the implementation must return null anyway.
- Effect:
- Add
VideoFrameProcessor.queueInputBitmap(Bitmap, Iterator<Long>)queuing bitmap input by timestamp. - Change
VideoFrameProcessor.registerInputStream()to be non-blocking. Apps must implementVideoFrameProcessor.Listener#onInputStreamRegistered(). - Changed
frameRateanddurationUsparameters ofVideoFrameProcessor.queueInputBitmaptoTimestampIterator.
- Add
- IMA extension:
- Fix bug where a multi-period DASH live stream that is not the first item in a playlist can throw an exception (#571).
- Release StreamManager before calling
AdsLoader.destroy() - Bump IMA SDK version to 3.31.0.
- Session:
- Set the notifications foreground service behavior to
FOREGROUND_SERVICE_IMMEDIATEinDefaultMediaNotificationProvider(#167). - Use only
android.media.session.MediaSession.setMediaButtonBroadcastReceiver()above API 31 to avoid problems with deprecated API on Samsung devices (#167). - Use the media notification controller as proxy to set available commands and custom layout used to populate the notification and the platform session.
- Convert media button events that are received by
MediaSessionService.onStartCommand()within Media3 instead of routing them to the platform session and back to Media3. With this, the caller controller is always the media notification controller and apps can easily recognize calls coming from the notification in the same way on all supported API levels. - Fix bug where
MediaController.getCurrentPosition()is not advancing when connected to a legacyMediaSessionCompat. - Add
MediaLibrarySession.getSubscribedControllers(mediaId)for convenience. - Override
MediaLibrarySession.Callback.onSubscribe()to assert the availability of the parent ID for which the controller subscribes. If successful, the subscription is accepted andnotifyChildrenChanged()is called immediately to inform the browser (#561). - Add session demo module for Automotive OS and enable session demo for Android Auto.
- Do not set the queue of the framework session when
COMMAND_GET_TIMELINEis not available for the media notification controller. With Android Auto as the client controller reading from the framework session, this has the effect that thequeuebutton in the UI of Android Auto is not displayed (#339). - Use
DataSourceBitmapLoaderby default instead ofSimpleBitmapLoader(#271, #327). - Add
MediaSession.Callback.onMediaButtonEvent(Intent)that allows apps to override the default media button event handling.
- Set the notifications foreground service behavior to
- UI:
- Add a
Player.Listenerimplementation for Wear OS devices that handles playback suppression due toPlayer.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUTby launching a system dialog to allow a user to connect a suitable audio output (e.g. bluetooth headphones). The listener will auto-resume playback if a suitable device is connected within a configurable timeout (default is 5 minutes).
- Add a
- Downloads:
- Declare "data sync" foreground service type for
DownloadServicefor Android 14 compatibility. When using this service, the app also needs to adddataSyncasforegroundServiceTypein the manifest and add theFOREGROUND_SERVICE_DATA_SYNCpermission (#11239).
- Declare "data sync" foreground service type for
- HLS Extension:
- Refresh the HLS live playlist with an interval calculated from the last load start time rather than the last load completed time (#663).
- DASH Extension:
- Allow multiple of the same DASH identifier in segment template URL.
- Add experimental support for parsing subtitles during extraction. This has better support for merging overlapping subtitles, including resolving flickering when transitioning between subtitle segments. You can enable this using
DashMediaSource.Factory.experimentalParseSubtitlesDuringExtraction()(#288).
- RTSP Extension:
- Fix a race condition that could lead to
IndexOutOfBoundsExceptionwhen falling back to TCP, or playback hanging in some situations. - Check state in RTSP setup when returning loading state of
RtspMediaPeriod(#577). - Ignore custom Rtsp request methods in Options response public header (#613).
- Use RTSP Setup Response timeout value in time interval of sending keep-alive RTSP Options requests (#662).
- Fix a race condition that could lead to
- Decoder Extensions (FFmpeg, VP9, AV1, MIDI, etc.):
- Release the MIDI decoder module, which provides support for playback of standard MIDI files using the Jsyn library to synthesize audio.
- Add
DecoderOutputBuffer.shouldBeSkippedto directly mark output buffers that don't need to be presented. This is preferred overC.BUFFER_FLAG_DECODE_ONLYthat will be deprecated. - Add
Decoder.setOutputStartTimeUsandSimpleDecoder.isAtLeastOutputStartTimeUsto allow decoders to drop decode-only samples before the start time. This should be preferred toBuffer.isDecodeOnlythat will be deprecated. - Fix bug publishing MIDI decoder artifact to Maven repository. The artifact is renamed to
media3-exoplayer-midi(#734).
- Leanback extension:
- Fix bug where disabling a surface can cause an
ArithmeticExceptionin Leanback code (#617).
- Fix bug where disabling a surface can cause an
- Test Utilities:
- Make
TestExoPlayerBuilderandFakeClockcompatible with Espresso UI tests and Compose UI tests. This fixes a bug where playback advances non-deterministically during Espresso or Compose view interactions.
- Make
- Remove deprecated symbols:
- Remove
TransformationRequest.Builder.setEnableRequestSdrToneMapping(boolean)andTransformationRequest.Builder.experimental_setEnableHdrEditing(boolean). UseComposition.Builder.setHdrMode(int)and pass theCompositiontoTransformer.start(Composition, String)instead. - Remove deprecated
DownloadNotificationHelper.buildProgressNotificationmethod, use a non deprecated method that takes anotMetRequirementsparameter instead.
- Remove
Mediarouter: v1.7.0-alpha01
November 15, 2023
androidx.mediarouter:mediarouter:1.7.0-alpha01 and androidx.mediarouter:mediarouter-testing:1.7.0-alpha01 are released. Version 1.7.0-alpha01 contains these commits.
API Changes
- Add
isSystemRoute()toMediaRouteDescriptorandRouteInfowhich returns true if the corresponding route is a system-managed route, which means that the system is the route provider and the app is in charge of feeding media samples to the system for their rendering (I949e4). Bluetooth headsets, wired headsets and built-in speakers are examples of system routes. - Deprecate
MediaRouter.removeRemoteControlClient. You should callsetMediaSessionCompat(MediaSessionCompat)instead ofaddRemoteControlClient(Object)so that there is no need to callremoveRemoteControlClient(Object). (I8fc5e). - Make
MediaRouteButtonextendAppCompatImageView. (Ib455e). - Add
DEVICE_TYPE_SMARTPHONE, which indicates that a media route is a smartphone. (I39837).
Bug Fixes
- Add missing icon resolutions for the route button that was possibly causing some isolated crashes. (cddba9, b/261878418).
privacysandbox activity: v1.0.0-alpha01
November 15, 2023
androidx.privacysandbox.activity:activity-client:1.0.0-alpha01, androidx.privacysandbox.activity:activity-core:1.0.0-alpha01, and androidx.privacysandbox.activity:activity-provider:1.0.0-alpha01 are released. Version 1.0.0-alpha01 contains these commits.
New Features
- Introducing a dedicated Privacy Sandbox Activity library.
- It contains interfaces for launching activities from the SDK Runtime. The interfaces were previously defined in the Privacy Sandbox UI library.
privacysandbox ads: v1.1.0-beta03
November 15, 2023
androidx.privacysandbox.ads:ads-adservices:1.1.0-beta03 and androidx.privacysandbox.ads:ads-adservices-java:1.1.0-beta03 are released. Version 1.1.0-beta03 contains these commits.
New Features
- Backward compatibility support for Android S.
privacysandbox sdkruntime: v1.0.0-alpha11
November 15, 2023
androidx.privacysandbox.sdkruntime:sdkruntime-client:1.0.0-alpha11, androidx.privacysandbox.sdkruntime:sdkruntime-core:1.0.0-alpha11, and androidx.privacysandbox.sdkruntime:sdkruntime-provider:1.0.0-alpha11 are released. Version 1.0.0-alpha11 contains these commits.
New Features
AppOwnedSdkSandboxInterfaceCompatsupported on API34 Ext 8 devices (before worked only onPrivacySandboxDeveloper Preview builds)
Versionedparcelable: v1.2.0-alpha01
November 15, 2023
androidx.versionedparcelable:versionedparcelable:1.2.0-alpha01 is released. Version 1.2.0-alpha01 contains these commits.
New Features
- Export stable AIDL definitions to dependent projects (I473cb, b/277084531)
API Changes
- Added nullability annotations (Ic16ed)
Wear: v1.4.0-alpha01
November 15, 2023
androidx.wear:wear:1.4.0-alpha01 is released. Version 1.4.0-alpha01 contains these commits.
Bug Fixes
- Vertically center
ConfirmationOverlayicon when there's no message. (I496d8)
Wear Tooling Preview: v1.0.0-rc01
November 15, 2023
androidx.wear:wear-tooling-preview:1.0.0-rc01 is released with no changes. Version 1.0.0-rc01 contains these commits.
Wear Compose: v1.3.0-beta01
November 15, 2023
androidx.wear.compose:compose-*:1.3.0-beta01 is released. Version 1.3.0-beta01 contains these commits.
The 1.3-beta01 release of Compose for Wear OS indicates that this release of the library is feature complete and the API is locked (except where marked as experimental). Wear Compose 1.3 includes the following new functionality:
SwipeToDismissBoxhas been migrated fromandroidx.wear.compose.materialtoandroidx.wear.compose.foundationwhere it has been renamedBasicSwipeToDismissBox. The Material levelSwipeToDismissBoxpulls colors from theMaterialThemeand delegates the remaining implementation to theBasicSwipeToDismissBox.SwipeDismissableNavHostnow supports a newuserSwipeEnabledparameter so that swipe handling can be turned off for screens where it is not required.BasicSwipeToDismissBoxhas improved focus handling usingHierarchicalFocusCoordinator.SwipeToRevealhas newSwipeToRevealCardandSwipeToRevealChipcomposables in Material that follow the recommended UX guidance forCardandChip. It also has undo support for the secondary action.DefaultTextStylenow turns off font padding to be consistent across the Android Platform.ChipandToggleChipnow adjust their height to accommodate content that has grown due to large fonts for accessibilityPositionIndicatornow has individual animation specs for the fade-in, fade-out and position-change animations. For performance reasons, we recommend that fade-in and position-change are turned off when used with scrollable lists.ExpandableStateMappingprovides a new way to generateExpandableStateswhen they need to be created on demand and not necessarily with a@Composablescope.Placeholdernow allows resetting if the content is no longer in the ready state. Also, the reduce motion setting now applies to the shimmering effect and wipe-off motion onPlaceholder.
Known Issues
PositionIndicatoris not initially shown when a screen is first displayed. We intend to make a change in an early 1.4 alpha so that it will be initially shown, but without any animation.
API Changes
- We have renamed the Foundation level
SwipeToDismissBoxtoBasicSwipeToDismissBox. This makes the distinction clearer between the Foundation level component and the Material levelSwipeToDismissBox. The latter pulls colors from theMaterialThemeto be used in scrims and delegates the remaining implementation to theBasicSwipeToDismissBox. (Ibecfc) - We have marked
rememberExpandableStateMappingas experimental and improved the performance ofexpandableItem. (I5f6bc) - We have replaced the
SwipeToRevealActionclass in the MaterialSwipeToRevealCard and Chip APIs with a slot-based API usingSwipeToRevealPrimaryAction,SwipeToRevealSecondaryActionandSwipeToRevealUndoActioncomposables. Please see sample code for examples on how to use the new API. (Ia8943) - We have replaced the
PositionIndicatoranimation flags withAnimationSpecparameters. The individual animations can be disabled by passingsnapas theAnimationSpec. (I6c523)
Bug Fixes
- We have fixed a bug triggered by limited curved text when size is limited (I50efe)
- We have addressed a potential NaN crash related to
curvedComposable(I970eb) - We have reverted the removal of the position change highlight animation on
PositionIndicator. (Ieb424) - We have removed the material-core layer for material Chip to improve its performance. (If2dcb)
Wear Compose Material3: v1.0.0-alpha15
November 15, 2023
androidx.wear.compose:compose-material3:1.0.0-alpha15 is released. Version 1.0.0-alpha15 contains these commits.
API Changes
- We have renamed the Foundation level
SwipeToDismissBoxtoBasicSwipeToDismissBox. This makes the distinction clearer between the Foundation level component and the Material3 levelSwipeToDismissBox. The latter pulls colors from theMaterialThemeto be used in scrims and delegates the remaining implementation to theBasicSwipeToDismissBox. (Ibecfc)
Bug Fixes
- We have removed the material-core layer for Material3 Button to improve performance. (I55555)
wear protolayout: v1.1.0-alpha02
November 15, 2023
androidx.wear.protolayout:protolayout-*:1.1.0-alpha02 is released. Version 1.1.0-alpha02 contains these commits.
New Features
- Added an
ArcLineStrokeCapShadowfield to the API. (I830ec) - Extending the API to be able to specify Spacer's width or height to expand. (I757ca)
- We have added an experimental API to automatically scale the text size based on the space it has inside of the parent. (Ibbe63)
- Support minimum clickable size (I178e3)
- Added renderer support for
StrokeCapShadow. (I48b17) - Add renderer support for Sweep Gradient in
ArcLine. (I4d5bb)
Wear Tiles: v1.3.0-alpha02
November 15, 2023
androidx.wear.tiles:tiles-*:1.3.0-alpha02 is released. Version 1.3.0-alpha02 contains these commits.
New Features
- We have added an experimental API to automatically scale the text size based on the space it has inside of the parent. (Ibbe63)
Webkit: v1.9.0-rc01
November 15, 2023
androidx.webkit:webkit:1.9.0-rc01 is released. This release contains no changes from the 1.9.0-beta01 release.
WindowManager: v1.3.0-alpha01
November 15, 2023
androidx.window:window-*:1.3.0-alpha01 is released. Version 1.3.0-alpha01 contains these commits.
New Features
- Expose experimental window APIs for accessing the rear screen.
- Test APIs for creating a
FoldingFeatureis now stable. - Test APIs for setting up fake
ActivityEmbeddingvalues are now stable. WindowLayoutInfoPublisherRulenow reports the override when obtaining a value from aUiContext.WindowInfoTrackerreports folding feature data toUiContextparameters.- Expose the Extensions Version on the device.
WindowManager: v1.2.0
November 15, 2023
androidx.window:window-*:1.2.0 is released. Version 1.2.0 contains these commits.
Important changes since 1.1.0
- Expose experimental window APIs for accessing the rear screen.
- Test APIs for creating a
FoldingFeatureis now stable. - Test APIs for setting up fake
ActivityEmbeddingvalues are now stable. WindowLayoutInfoPublisherRulenow reports the override when obtaining a value from aUiContext.WindowInfoTrackerreports folding feature data toUiContextparameters.- Expose the Extensions Version on the device.