Skip to content

2023-11-16

Choose a tag to compare

@github-actions github-actions released this 16 Nov 18:38
· 114 commits to main since this release

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

  • OnBackPressedDispatcher now continues to dispatch to the correct OnBackPressedCallback even after a new OnBackPressedCallback is 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

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#setBookmarksButtonEnabled that enables the bookmarks button in the overflow menu. (Ia792e)
  • Added CustomTabsIntent.Builder#setDownloadButtonEnabled that enables the download button in the overflow menu. (Ia792e)
  • Added CustomTabsIntent.Builder#setSendToExtraDefaultHandlerEnabled that enables sending initial urls to external handler apps. (Ia792e)
  • Added CustomTabsIntent.Builder#setTranslateLanguage that specifies the target language that the Translate UI should be triggered with. (Ia792e)
  • Added CustomTabsIntent.Builder#setBackgroundInteractionEnabled that enables interactions with the background app when a partial Custom Tab is launched. (Ia792e)
  • Added CustomTabsIntent.Builder#setShareIdentityEnabled that allows Custom Tabs to obtain the caller's identity. (I7bf2b)
  • Added CustomTabsIntent.Builder#setSecondaryToolbarSwipeUpGesture that sets a PendingIntent to 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#setInitialActivityWidthPx which allows developers to specify the initial launch width of a Custom Tab. (I443f6)
  • Added CustomTabsIntent.Builder#setActivitySideSheetBreakpointDp which allows developers to specify the minimum Custom Tabs window width in order for it to act as a side sheet. (I443f6)
  • Added CustomTabsIntent.Builder#setActivitySideSheetPosition which allows developers to specify the Custom Tab’s position when acting as a side sheet. (I443f6)
  • Added CustomTabsIntent.Builder#setActivitySideSheetEnableMaximization which allows developers to enable or disable the maximization button when the Custom Tab is acting as a side sheet. (I443f6)
  • Added CustomTabsIntent.Builder#setActivitySideSheetDecorationType which allows developers to specify the Custom Tab’s decoration type when it is acting as a side sheet. (I443f6)
  • Added CustomTabsIntent.Builder#setActivitySideSheetRoundedCornersPosition which allows developers to specify the position of the rounded corners when the Custom Tab is acting as a side sheet. (I443f6)
  • Added onActivityLayout callback method to interface CustomTabsCallback to 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 onWarmupCompleted callback method to interface CustomTabsCallback to let developers know when CustomTabsClient#warmupfinishes warming up the browser process. (I107cf)

Bug Fixes

  • ​​Added the session id to extras in CustomTabsSession#setEngagementSignalsCallback and CustomTabsSession#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 ListIterator incorrectly setting values in ObjectList that could result in a crash due to IndexOutOfBoundsException. (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.Hold has been renamed to ExitTransition.KeepUntilTransitionsFinished to be more explicit. (I1c490)
  • You may now use keyframesWithSpline to interpolate any N-dimensional value using monotonic splines. It's particularly useful to interpolate positional values such as Offset, 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 DragAndDropTarget modifier now takes in the receiving DragAndDropTarget explicitly and has a lambda to opt into a drag and drop session. There are now two factory functions for a DragAndDropModifierNode. One for receiving transfers and one for transferring data (I69481)
  • Updated maximumFlingVelocity to be represented as Float. Updated documentation to be more clear about the maximumFlingVelocity unity. (I8adc7)
  • onDragAndDropStart in the DragAndDropModifierNode factory has been renamed to acceptDragAndDropTransfer.

    acceptsDragAndDropTransfer has been added to the dragAndDropTarget Modifier to accept from a drag and drop session. This lambda returns a viable DragAndDropTarget if interested in a drag and drop session. Other lambdas for processing drag events have been replaced by this.

    a DragAndDropTarget factory function has been added to receive from drag and drop sessions (Iebf3a)

  • Exposing startDragImmediately in AnchoredDraggable gives 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 DragAndDropInfo as a type DragAndDropModifierNode.drag now takes parameters for the transferData, decoration size and drag decoration DrawScope lambda

    DragAndDropTarget has methods for particular drag and drop events instead of being a single abstract method

    onDragAndDropEvent in the factory function for a DragAndDropModifierNode has been renamed to onDragAndDropStart to better communicate that the DragAndDropTarget provided is valid for a given drag and drop session only

    The DragAndDropEventType has been removed (I645b1)

  • Renamed PlatformTextInputModifierNode.runTextInputSession to establishTextInputSession. (I03cd0)

  • Replace OriginalText by TextSubstitution. (Ifa5a8)

  • Renamed PlatformTextInputModifierNode.textInputSession to runTextInputSession. (Ie9c6b)

  • The children of SubcomposeLayout (and layouts like LazyColumn based on it) which are retained to be reused in future are considered deactivated. New assertIsDeactivated() test API was introduced to test such nodes. The rest of the test apis will filter out deactivated nodes by default. (I2ef84, b/187188981)

  • clippingEnabled parameter of Modifier.magnifier is renamed to clip.

  • magnifierCenter parameter of Modifier.magnifier is made nullable preserving the same default behavior. (I6aa66)

  • Material SwipeToReveal APIs (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 BasicText layout to not shrink when minWidth changed and minWidth less than initial measure constraints maxWidth (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 PullToRefreshContainer and PullToRefreshState, which together provide a pull to refresh implementation in Material3. (I16456, b/261760718)

API Changes

  • Mark the SwipeToDismissBox DismissDirection and DismissValue as experimental. (I517b0)
  • Rename SwipeToDismiss to SwipeToDismissBox. Rename background to backgroundContent and dismissContent to trailing content lambda. (I7f4d3)
  • Make the constructor for ChipElevation and SelectableChipElevation public. (Ie0c48, b/308432421)
  • Adding ModalBottomSheetProperties. Moving securePolicy into ModalBottomSheetProperties. Adding isFocusable and shouldDismissOnBackPress to ModalBottomSheetProperties. These new booleans help determine how modal bottom sheet should handle IME events. (Iea56f, b/278216859)
  • Updated RangeSlider and Slider states to remove initialOnValueChange, the initial prefixes, and appropriate kdocs. (I57d30)
  • Deprecate ChipBorder class and its associated function calls, recommend using BorderStroke directly instead. (I89cc2)
  • Foundation Tooltip APIs are now @ExperimentalFoundationApi. (I30b0b)
  • TabRow and ScrollableTabRow are no longer deprecated. The new Primary and Secondary variants are marked as experimental. (I0def6)
  • Filter and input chips now use BorderStroke directly. (I07a8d)
  • SegmentedButton now uses BorderStroke directly. (I89b9b)
  • Renamed the generic AlertDialog function to BasicAlertDialog, and deprecate the previous function. (Idbe52)
  • Rename SwipeToDismiss APIs to SwipeDismiss, and promote the new SwipeDismiss APIs to stable. (I14cbe)
  • Adding tonalElevation and shadowElevation to tooltip APIs. Additionally, moving TooltipBox, PlainTooltip, and RichTooltip APIs back to experimental since they were accidentally released as stable. (If0f66, b/293939035)
  • Promote experimental chip APIs to stable. (Iea2c3)
  • Removed the @ExperimentalMaterial3Api annotation from the Material3 clickable Cards. (I88dbf)

Bug Fixes

  • Fixed an issue where SwipeToDismiss would 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

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 ObjectIntMap in DerivedState. (21862e)
  • Use IntRef for int SnapshotThreadLocal in DerivedState. (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 DragAndDropTarget modifier now takes in the receiving DragAndDropTarget explicitly and has a lambda to opt into a drag and drop session. There are now two factory functions for a DragAndDropModifierNode. One for receiving transfers and one for transferring data (I69481)
  • Updated maximumFlingVelocity to be represented as Float. Updated documentation to be more clear about the maximumFlingVelocity unity. (I8adc7)
  • onDragAndDropStart in the DragAndDropModifierNode factory has been renamed to acceptDragAndDropTransfer.acceptsDragAndDropTransfer has been added to the dragAndDropTarget Modifier to accept from a drag and drop session. This lambda returns a viable DragAndDropTarget if interested in a drag and drop session. Other lambdas for processing drag events have been replaced by this. a DragAndDropTarget factory function has been added to receive from drag and drop sessions (Iebf3a)
  • Removed DragAndDropInfo as a type DragAndDropModifierNode.drag now takes parameters for the transferData, decoration size and drag decoration DrawScope lambda

    DragAndDropTarget has methods for particular drag and drop events instead of being a single abstract method

    onDragAndDropEvent in the factory function for a DragAndDropModifierNode has been renamed to onDragAndDropStart to better communicate that the DragAndDropTarget provided is valid for a given drag and drop session only

    The DragAndDropEventType has been removed (I645b1)

  • Renamed PlatformTextInputModifierNode.runTextInputSession to establishTextInputSession. (I03cd0)

  • Improves traversable node api names to make them more understandable. (Ia4474)

  • Replace OriginalText by TextSubstitution. (Ifa5a8)

  • Renamed PlatformTextInputModifierNode.textInputSession to runTextInputSession. (Ie9c6b)

  • The children of SubcomposeLayout (and layouts like LazyColumn based on it) which are retained to be reused in future are considered deactivated. New assertIsDeactivated() 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.In and FocusDirection.Out use FocusDirection.Enter and FocusDirection.Exit instead (I2f660)

  • Material SwipeToReveal APIs (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, use FontStyle.Normal or FontStyle.Italic instead. (I66610)

  • Renamed FontScalable interface to FontScaling (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 the effectContext to 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

  • GameActivityMotionEvent and GameActivityCallbacks structures changed their sizes.
  • onEditorAction changes its return type from boolean to void.
  • setImeEditorInfo now expects enum parameters, not integers.
  • internal functions of GameActivityEvents are moved into GameActivityEvents_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

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

  • LifecycleStartEffect and LifecycleResumeEffect now correctly dispose and recreate the effect block if the LifecycleOwner is 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.media2 is now fully deprecated. Use androidx.media3 instead. (I53164)

Media3: v1.2.0

November 15, 2023

  • Common Library:
    • Add a @Nullable Throwable parameter to the methods in the Log.Logger interface. The message parameter to these methods no longer contains any information about the Throwable passed to the Log.{d,i,w,e}() methods, so implementations will need to manually append this information if desired (possibly using Logger.appendThrowableString(String, Throwable)).
    • Fix Kotlin compatibility issue where nullable generic type parameters and nullable array element types are not detected as nullable. Examples are TrackSelectorResult and SimpleDecoder method parameters (#6792).
    • Change default UI and notification behavior in Util.shouldShowPlayButton to show a "play" button while playback is temporarily suppressed (e.g. due to transient audio focus loss). The legacy behavior can be maintained by using PlayerView.setShowPlayButtonIfPlaybackIsSuppressed(false) or MediaSession.Builder.setShowPlayButtonIfPlaybackIsSuppressed(false) (#11213).
    • Upgrade androidx.annotation:annotation-experimental to 1.3.1 to fix https://issuetracker.google.com/251172715.
    • Move ExoPlayer.setAudioAttributes to the Player interface.
  • 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 as Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT if 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.canUpdateMediaItem and MediaSource.updateMediaItem to accept MediaItem updates after creation via Player.replaceMediaItem(s).
    • Allow MediaItem updates for all MediaSource classes provided by the library via Player.replaceMediaItem(s) (#33, #9978).
    • Rename MimeTypes.TEXT_EXOPLAYER_CUES to MimeTypes.APPLICATION_MEDIA3_CUES.
    • Add PngExtractor that sends and reads a whole PNG file into the TrackOutput as one sample.
    • Enhance SequenceableLoader.continueLoading(long) method in the SequenceableLoader interface to SequenceableLoader.continueLoading(LoadingInfo loadingInfo). LoadingInfo contains additional parameters, including playbackSpeed and lastRebufferRealtimeMs in addition to the existing playbackPositionUs.
    • Enhance ChunkSource.getNextChunk(long, long, List, ChunkHolder) method in the ChunkSource interface to ChunkSource.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 ConcurrentModificationException in ExperimentalBandwidthMeter (#612).
    • Add MediaPeriodId parameter to CompositeMediaSource.getMediaTimeForChildMediaTime.
    • Support ClippingMediaSource (and other sources with period/window time offsets) in ConcatenatingMediaSource2 (#11226).
    • Change BaseRenderer.onStreamChanged() to also receive a MediaPeriodId argument.
  • Transformer:
    • Parse EXIF rotation data for image inputs.
    • Remove TransformationRequest.HdrMode annotation type and its associated constants. Use Composition.HdrMode and its associated constants instead.
    • Simplify the OverlaySettings to fix rotation issues.
    • Changed frameRate and durationUs parameters of SampleConsumer.queueInputBitmap to TimestampIterator.
  • Track Selection:
    • Add DefaultTrackSelector.Parameters.allowAudioNonSeamlessAdaptiveness to explicitly allow or disallow non-seamless adaptation. The default stays at its current behavior of true.
  • 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. Changed projectionPosePitch to projectionPoseRoll (#461).
    • Remove the assumption that Extractor instances can be directly inspected with instanceof. If you want runtime access to the implementation details of an Extractor you must first call Extractor.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 lpcm in 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 a DefaultAudioOffloadSupportProvider. It returns the new AudioOffloadSupport that contains isFormatSupported, isGaplessSupported, and isSpeedChangeSupported.
    • Add AudioSink.setOffloadMode() through which the offload configuration on the audio sink is configured. Default is AudioSink.OFFLOAD_MODE_DISABLED.
    • Offload can be enabled through setAudioOffloadPreference in TrackSelectionParameters. 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 audioOffloadModePreference is set to AUDIO_OFFLOAD_MODE_PREFERENCE_REQUIRED, then the DefaultTrackSelector will 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 enableOffload from DefaultRenderersFactory.buildAudioSink method 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.experimentalSetOffloadSchedulingEnabled and AudioOffloadListener.onExperimentalOffloadSchedulingEnabledChanged.
    • Renamed onExperimentalSleepingForOffloadChanged as onSleepingForOffloadChanged and onExperimentalOffloadedPlayback as onOffloadedPlayback.
    • Move audio offload mode related TrackSelectionParameters interfaces and definitions to an inner AudioOffloadPreferences class.
    • Add onAudioTrackInitialized and onAudioTrackReleased callbacks to AnalyticsListener, AudioRendererEventListener and AudioSink.Listener.
    • Fix DTS Express audio buffer underflow issue (#650).
    • Fix bug where the capabilities check for E-AC3-JOC throws an IllegalArgumentException (#677).
  • Video:
    • Allow MediaCodecVideoRenderer to use a custom VideoFrameProcessor.Factory.
    • Fix bug where the first frame couldn't be rendered if the audio stream starts with negative timestamps (#291).
  • Text:
    • Remove ExoplayerCuesDecoder. Text tracks with sampleMimeType = application/x-media3-cues are now directly handled by TextRenderer without needing a SubtitleDecoder instance.
  • Metadata:
    • MetadataDecoder.decode will 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 implement VideoFrameProcessor.Listener#onInputStreamRegistered().
    • Changed frameRate and durationUs parameters of VideoFrameProcessor.queueInputBitmap to TimestampIterator.
  • 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_IMMEDIATE in DefaultMediaNotificationProvider (#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 legacy MediaSessionCompat.
    • 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 and notifyChildrenChanged() 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_TIMELINE is not available for the media notification controller. With Android Auto as the client controller reading from the framework session, this has the effect that the queue button in the UI of Android Auto is not displayed (#339).
    • Use DataSourceBitmapLoader by default instead of SimpleBitmapLoader (#271, #327).
    • Add MediaSession.Callback.onMediaButtonEvent(Intent) that allows apps to override the default media button event handling.
  • UI:
    • Add a Player.Listener implementation for Wear OS devices that handles playback suppression due to Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT by 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).
  • Downloads:
    • Declare "data sync" foreground service type for DownloadService for Android 14 compatibility. When using this service, the app also needs to add dataSync as foregroundServiceType in the manifest and add the FOREGROUND_SERVICE_DATA_SYNC permission (#11239).
  • 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 IndexOutOfBoundsException when 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).
  • 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.shouldBeSkipped to directly mark output buffers that don't need to be presented. This is preferred over C.BUFFER_FLAG_DECODE_ONLY that will be deprecated.
    • Add Decoder.setOutputStartTimeUs and SimpleDecoder.isAtLeastOutputStartTimeUs to allow decoders to drop decode-only samples before the start time. This should be preferred to Buffer.isDecodeOnly that 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 ArithmeticException in Leanback code (#617).
  • Test Utilities:
    • Make TestExoPlayerBuilder and FakeClock compatible with Espresso UI tests and Compose UI tests. This fixes a bug where playback advances non-deterministically during Espresso or Compose view interactions.
  • Remove deprecated symbols:
    • Remove TransformationRequest.Builder.setEnableRequestSdrToneMapping(boolean) and TransformationRequest.Builder.experimental_setEnableHdrEditing(boolean). Use Composition.Builder.setHdrMode(int) and pass the Composition to Transformer.start(Composition, String) instead.
    • Remove deprecated DownloadNotificationHelper.buildProgressNotification method, use a non deprecated method that takes a notMetRequirements parameter instead.

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() to MediaRouteDescriptor and RouteInfo which 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 call setMediaSessionCompat(MediaSessionCompat) instead of addRemoteControlClient(Object) so that there is no need to call removeRemoteControlClient(Object). (I8fc5e).
  • Make MediaRouteButton extend AppCompatImageView. (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

  • AppOwnedSdkSandboxInterfaceCompat supported on API34 Ext 8 devices (before worked only on PrivacySandbox Developer 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

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 ConfirmationOverlay icon 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:

  • SwipeToDismissBox has been migrated from androidx.wear.compose.material to androidx.wear.compose.foundation where it has been renamed BasicSwipeToDismissBox. The Material level SwipeToDismissBox pulls colors from the MaterialTheme and delegates the remaining implementation to the BasicSwipeToDismissBox.
  • SwipeDismissableNavHost now supports a new userSwipeEnabled parameter so that swipe handling can be turned off for screens where it is not required.
  • BasicSwipeToDismissBox has improved focus handling using HierarchicalFocusCoordinator.
  • SwipeToReveal has new SwipeToRevealCard and SwipeToRevealChip composables in Material that follow the recommended UX guidance for Card and Chip. It also has undo support for the secondary action.
  • DefaultTextStyle now turns off font padding to be consistent across the Android Platform.
  • Chip and ToggleChip now adjust their height to accommodate content that has grown due to large fonts for accessibility
  • PositionIndicator now 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.
  • ExpandableStateMapping provides a new way to generate ExpandableStates when they need to be created on demand and not necessarily with a @Composable scope.
  • Placeholder now 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 on Placeholder.

Known Issues

  • PositionIndicator is 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 SwipeToDismissBox to BasicSwipeToDismissBox. This makes the distinction clearer between the Foundation level component and the Material level SwipeToDismissBox. The latter pulls colors from the MaterialTheme to be used in scrims and delegates the remaining implementation to the BasicSwipeToDismissBox. (Ibecfc)
  • We have marked rememberExpandableStateMapping as experimental and improved the performance of expandableItem. (I5f6bc)
  • We have replaced the SwipeToRevealAction class in the Material SwipeToReveal Card and Chip APIs with a slot-based API using SwipeToRevealPrimaryAction, SwipeToRevealSecondaryAction and SwipeToRevealUndoAction composables. Please see sample code for examples on how to use the new API. (Ia8943)
  • We have replaced the PositionIndicator animation flags with AnimationSpec parameters. The individual animations can be disabled by passing snap as the AnimationSpec. (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 SwipeToDismissBox to BasicSwipeToDismissBox. This makes the distinction clearer between the Foundation level component and the Material3 level SwipeToDismissBox. The latter pulls colors from the MaterialTheme to be used in scrims and delegates the remaining implementation to the BasicSwipeToDismissBox. (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 ArcLine StrokeCap Shadow field 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 StrokeCap Shadow. (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 FoldingFeature is now stable.
  • Test APIs for setting up fake ActivityEmbedding values are now stable.
  • WindowLayoutInfoPublisherRule now reports the override when obtaining a value from a UiContext.
  • WindowInfoTracker reports folding feature data to UiContext parameters.
  • 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 FoldingFeature is now stable.
  • Test APIs for setting up fake ActivityEmbedding values are now stable.
  • WindowLayoutInfoPublisherRule now reports the override when obtaining a value from a UiContext.
  • WindowInfoTracker reports folding feature data to UiContext parameters.
  • Expose the Extensions Version on the device.