Skip to content

Releases: mahozad/androidx-release-notes

2025-02-26

26 Feb 18:46
Compare
Choose a tag to compare

Activity: v1.10.1

February 26, 2025

androidx.activity:activity:1.10.1, androidx.activity:activity-compose:1.10.1, and androidx.activity:activity-ktx:1.10.1 are released. Version 1.10.1 contains these commits.

Bug Fixes

  • ViewTree OnBackPressedDispatcherOwners and FullyDrawnReporterOwners can now be resolved through disjoint parents of a view, such as a ViewOverlay. See the release notes of core or the documentation in ViewTree.setViewTreeDisjointParent for more information on disjoint view parents. (Ie7750)

Camera: v1.5.0-alpha06

February 26, 2025

androidx.camera:camera-*:1.5.0-alpha06 is released. Version 1.5.0-alpha06 contains these commits.

API Changes

  • Added CameraInfo.getTorchStrengthLevel, CameraInfo.getMaxTorchStrengthLevel and CameraControl.setTorchStrengthLevel to allow customizing the torch brightness (I00878)
  • A new API CameraController#setTapToFocusAutoCancelDuration has been added so that users can control the auto-cancellation behavior for PreviewView tap-to-focus events. By default, CameraX cancels the focus events after 5 seconds (i.e. camera focus is reset) and this API allows to modify that duration or disable auto-cancellation altogether. (Icf59a)
  • FLASH_STATE_READY has been renamed to NOT_FIRED and the other FlashState constant names are simplified for better readability. (I8771d)
  • Exposed Low Light Boost API. Devices running Android 15 or higher can provide support for low-light boost. This feature can automatically adjust the brightness of the preview, video or image analysis streams in low-light conditions. Applications can use the new API to: 1. Use CameraInfo#isLowLightBoostSupported to check the feature availability. 2. Use CameraControl#enableLowLightBoostAsync to enable the mode when the devices can support it. 3. Use CameraInfo#getLowLightBoostState to monitor the low-light boost state. (I937ed)
  • Add compat classes to allow faster non-camera2 querying in camera-feature-combination-query. (Ie97ee)
  • For CameraController tap-to-focus events, a new API getTapToFocusInfoState() now exposes the corresponding tap position too by returning a LiveData of TapToFocusInfo class while the previous LiveData<Integer> returning getTapToFocusState() API is deprecated in favor of the new API. (I238d2)

Bug Fixes

  • Fixed the issue that preview stabilization is not applied when preview stabilization is enabled with Extensions. (I24ad7)
  • Fixed CameraController focus state event not resetting back to TAP_TO_FOCUS_NOT_STARTED when CameraX auto-cancels a focus event which happens after 5 seconds by default. (I31954)
  • Fixed preview freeze when using Zero Shutter Lag (ZSL) after multiple captures due to unreleased image resources. (Ic3c2a)
  • Fixed issues that on some devices UHD videos are red tint when pipeline involves OpenGL. (Idcedc)

camera viewfinder: v1.4.0-alpha13

February 26, 2025

androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha13, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha13, and androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha13 are released. Version 1.4.0-alpha13 contains these commits.

Collection: v1.5.0-rc01

February 26, 2025

androidx.collection:collection-*:1.5.0-rc01 is released. Version 1.5.0-rc01 contains these commits.

Compose Animation: v1.8.0-beta03

February 26, 2025

androidx.compose.animation:animation-*:1.8.0-beta03 is released. Version 1.8.0-beta03 contains these commits.

Compose Foundation: v1.8.0-beta03

February 26, 2025

androidx.compose.foundation:foundation-*:1.8.0-beta03 is released. Version 1.8.0-beta03 contains these commits.

Bug Fixes

  • Added a new semantics property InputText that captures a textfield's value before output transformation is applied. (Iae46a, b/395911609, b/176949051)
  • Removed deprecated AutoSize overloads. Please use the TextAutoSize APIs serving the same function. (I2c90f)
  • Fixed a caching issue with TextAutoSize where a second layout pass with the same constraints could result in using the second-biggest fitting font size instead of the biggest. (Id367f)

Compose Material: v1.8.0-beta03

February 26, 2025

androidx.compose.material:material-*:1.8.0-beta03 is released. Version 1.8.0-beta03 contains these commits.

Compose Material3: v1.4.0-alpha09

February 26, 2025

androidx.compose.material3:material3-*:1.4.0-alpha09 is released. Version 1.4.0-alpha09 contains these commits.

API Changes

  • Rename DragHandle’s setting fields in the default state; separate pressed and dragged states; make the default sizes be public. (I787b9)
  • Updates to the TowRowsTopAppBar API. Removed the expanded lambda parameter and added separate parameters for the expanded and collapsed heights. (
Read more

2025-02-19

26 Feb 12:59
Compare
Choose a tag to compare

Media3: 1.6.0-beta01

February 26, 2025

androidx.media3:media3-*:1.6.0-beta01 is released. Version 1.6.0-beta01 contains these commits.

  • Common Library:
    • Upgrade Kotlin from 1.9.20 to 2.0.20 and use Compose Compiler Gradle plugin. Upgrade KotlinX Coroutines library from 1.8.1 to 1.9.0.
  • ExoPlayer:
    • Initial audio session ID is no longer immediately available after creating the player. You can use AnalyticsListener.onAudioSessionIdChanged to listen to the initial update if required.
  • Transformer:
    • Add MediaProjectionAssetLoader, which provides media from a MediaProjection for screen recording, and add support for screen recording to the Transformer demo app.
    • Add #getInputFormat() to Codec interface.
    • Shift the responsibility to release the GlObjectsProvider onto the caller in DefaultVideoFrameProcessor and DefaultVideoCompositor when possible.
  • Video:
    • Add experimental ExoPlayer API to drop late MediaCodecVideoRenderer decoder input buffers that are not depended on. Enable it with DefaultRenderersFactory.experimentalSetLateThresholdToDropDecoderInputUs.
  • Session:
    • Keep foreground service state for an additional 10 minutes when playback pauses, stops or fails. This allows users to resume playback within this timeout without risking foreground service restrictions on various devices. Note that calling player.pause() can no longer be used to stop the foreground service before stopSelf() when overriding onTaskRemoved, use MediaSessionService.pauseAllPlayersAndStopSelf() instead.
    • Keep notification visible when playback enters an error or stopped state. The notification is only removed if the playlist is cleared or the player is released.
    • Improve handling of Android platform MediaSession actions ACTION_PLAY and ACTION_PAUSE to only set one of them according to the available commands and also accept if only one of them is set.
  • Remove deprecated symbols:
    • Removed the following deprecated DownloadHelper methods:
      • Constructor DownloadHelper(MediaItem, @Nullable MediaSource, TrackSelectionParameters, RendererCapabilities[]), use DownloadHelper(MediaItem, @Nullable MediaSource, TrackSelectionParameters, RendererCapabilitiesList) instead.
      • getRendererCapabilities(RenderersFactory), equivalent behavior can be achieved by creating a DefaultRendererCapabilitiesList with a RenderersFactory, and calling DefaultRendererCapabilitiesList.getRendererCapabilities().
    • Removed PlayerNotificationManager.setMediaSessionToken(MediaSessionCompat) method. Use PlayerNotificationManager.setMediaSessionToken(MediaSession.Token) and pass in (MediaSession.Token) compatToken.getToken()instead.

2025-02-12

12 Feb 18:45
Compare
Choose a tag to compare

Autofill: v1.3.0-rc01

February 12, 2025

androidx.autofill:autofill:1.3.0-rc01 is released. Version 1.3.0-rc01 contains these commits.

  • This release moves Autofill 1.3.0 into stabilization.

Benchmark: v1.4.0-alpha08

February 12, 2025

androidx.benchmark:benchmark-*:1.4.0-alpha08 is released. Version 1.4.0-alpha08 contains these commits.

API Changes

  • Moved TraceProcessor.runSession() extension APIs to be experimental, as they are likely to move to be concrete constructors eventually on Android. (Ib0528, b/393640753)
  • Most of the implementation of Startup Insights are now public/experimental, and move to the TraceProcessor artifact See StartupInsights. (I0aa00)
  • Deprecate BenchmarkRule.runWithTimingDisabled {} in favor of BenchmarkRule.runWithMeasurementDisabled {}, which more clearly describes the behavior - all metrics are paused. Additionally, expose the MicrobenchmarkScope superclass since redeclaring the runWithMeasurementDisabled function to open access isn't possible, since it's inline. (I9e23b, b/389149423, b/149979716)
  • Benchmark libraries have moved to Kotlin 2.0. (I9d1e0)
  • Removed androidx.benchmark.startupProfiles.enable instrumentation argument. It is no longer useful, as it can be controlled by includeInStartupProfile arg in BaselineProfileRule.collect(). (I39eb4)

Bug Fixes

  • Reduced the amount of Microbenchmark internal functions called during profiling to make e.g. Method traces more clear (Ifaed8)
  • Speculative fix for crashes: 'Failed to stop [ProcessPid(processName=perfetto, pid=...)]'. Now Benchmark will log a message instead of crashing when a background Perfetto process isn't able to be stopped before running the benchmark. (I37d3e, b/323601788)
  • Fix IllegalStateExceptions with 'Expected pm dump-profiles stdout' label that were caused by overly strict output format check. (I358dc)

Compose Animation: v1.8.0-beta02

February 12, 2025

androidx.compose.animation:animation-*:1.8.0-beta02 is released. Version 1.8.0-beta02 contains these commits.

Compose Animation: v1.7.8

February 12, 2025

androidx.compose.animation:animation-*:1.7.8 is released. Version 1.7.8 contains these commits.

Compose Foundation: v1.8.0-beta02

February 12, 2025

androidx.compose.foundation:foundation-*:1.8.0-beta02 is released. Version 1.8.0-beta02 contains these commits.

Bug Fixes

  • Fixed an issue where overscroll implementations using LayoutModifierNode would not work correctly inside scrolling containers.

Compose Foundation: v1.7.8

February 12, 2025

androidx.compose.foundation:foundation-*:1.7.8 is released. Version 1.7.8 contains these commits.

Bug Fixes

  • Fix crash in BasicTextField with input transformation when replacing part of the pasted text. (I73702)

Compose Material: v1.8.0-beta02

February 12, 2025

androidx.compose.material:material-*:1.8.0-beta02 is released. Version 1.8.0-beta02 contains these commits.

Compose Material: v1.7.8

February 12, 2025

androidx.compose.material:material-*:1.7.8 is released. Version 1.7.8 contains these commits.

Compose Material3: v1.4.0-alpha08

February 12, 2025

androidx.compose.material3:material3-*:1.4.0-alpha08 is released. Version 1.4.0-alpha08 contains these commits.

New Features

  • Added an TimePickerDialog API that can be used for TimePicker, TimeInput or to have a switchable version. (Id2d83)

  • New search bar APIs:

    • Collapsed search bars and expanded search "views" are now separate composables.
    • SearchBar represents a search bar in the collapsed state.
    • ExpandedFullScreenSearchBar and ExpandedDockedSearchBar represent the search bar in the expanded state. These open in a new window.
    • SearchBarState to control the state of the search bar
    • TopSearchBar to add insets handling and scroll behavior
    • New overload of InputField which uses SearchBarState (Ie0723, b/261496232, b/283311462, b/350916229, b/352872248)

API Changes

  • Support corner shape morphing of icon buttons on press. (I21843)
  • Text field decorator/decoration box APIs are no longer experimental. (I31d95)
  • Added samples and defaults for the connected variant for ButtonGroup. (I5c8ce)
  • Make state param the last one in NavigationSuiteScaffold and NavigationSuiteScaffoldLayout. (I9cc7b)

Bug Fixes

  • Added custom accessibility actio...
Read more

2025-02-05

06 Feb 15:38
Compare
Choose a tag to compare

Media3: v1.6.0-alpha03

February 06, 2025

androidx.media3:media3-*:1.6.0-alpha03 is released. Version 1.6.0-alpha03 contains these commits.

  • ExoPlayer:
    • Add option to ClippingMediaSource to allow clipping in unseekable media.
    • Fix bug where seeking with pre-warming could block following media item transition.
  • Audio:
    • Make androidx.media3.common.audio.SonicAudioProcessor final.
  • Video:
    • Change MediaCodecVideoRenderer.shouldUsePlaceholderSurface to protected so that applications can override to block usage of placeholder surfaces (#1905).
    • Add experimental ExoPlayer AV1 sample dependency parsing to speed up seeking. Enable it with the new DefaultRenderersFactory.experimentalSetParseAv1SampleDependencies API.
  • Muxers:
    • Disable Mp4Muxer sample batching and copying by default.
  • Remove deprecated symbols:
    • Removed androidx.media3.exoplayer.audio.SonicAudioProcessor.

2025-02-03

04 Feb 01:55
Compare
Choose a tag to compare

Core 1.7.0: Core Core-ktx 1.7.0-alpha01

February 03, 2025

androidx.test:core:1.7.0-alpha01 and androidx.test:core-ktx:1.7.0-alpha01 are released.

Bug Fixes * Fix Rect handling in ViewCapture for SDK >= 34 for non root views. * Fix bug reporting the status code when PixelCopy fails in ViewCapture.generateBitmapFromPixelCopy. * Improving wording of a failure message.

API Changes

  • Update to minSdkVersion 21

Espresso 3.7.0: Espresso 3.7.0-alpha01

February 03, 2025

The following artifacts were released:

  • androidx.test.espresso:espresso-accessibility:3.7.0-alpha01
  • androidx.test.espresso:espresso-core:3.7.0-alpha01
  • androidx.test.espresso:espresso-contrib:3.7.0-alpha01
  • androidx.test.espresso:espresso-idling-resource:3.7.0-alpha01
  • androidx.test.espresso:espresso-intents:3.7.0-alpha01
  • androidx.test.espresso:espresso-remote:3.7.0-alpha01
  • androidx.test.espresso:espresso-web:3.7.0-alpha01
  • androidx.test.espresso.idling:idling-concurrent:3.7.0-alpha01
  • androidx.test.espresso.idling:idling-net:3.7.0-alpha01

Bug Fixes

  • Fix deadlock in espresso in Robolectric INSTRUMENTATION_TEST + paused looper.
  • Refactor espresso's MessageQueue access into a TestLooperManagerCompat class, and use new TestLooperManager APIs when available.

API Changes

  • Update to minSdkVersion 21

Test:

Test:

Test:

Monitor 1.8.0: monitor 1.8.0-alpha01

February 03, 2025

androidx.test:monitor:1.8.0-alpha01 is released.

API Changes

  • Update to minSdkVersion 21
  • Make ReflectionException a RuntimeException

Orchestrator 1.6.0: orchestrator 1.6.0-alpha02

February 03, 2025

androidx.test:orchestrator:1.6.0-alpha02 is released.

Runner 1.7.0: runner 1.7.0-alpha01

February 03, 2025

androidx.test:runner:1.7.0-alpha01 is released.

Bug Fixes

  • Exceptions during @AfterClass were not being reported via InstrumentationResultPrinter.
  • Exceptions arising in AndroidJUnitRunner.buildRequest are now handled.
  • Assumption failures during a ClassRule or BeforeClass are now reported more consistently via InstrumentationResultPrinter
  • Clarify SdkSuppress reference docs

API Changes

  • Update to minSdkVersion 21
  • Deprecate androidx.test.filters.Suppress in favor of org.junit.Ignore

Rules 1.7.0: rules 1.7.0-alpha01

February 03, 2025

androidx.test:rules:1.7.0-alpha01 is released.

API Changes

  • Update to minSdkVersion 21

Services 1.6.0: services 1.6.0-alpha02

February 03, 2025

androidx.test.services:test-services:1.6.0-alpha02 androidx.test.services:storage:1.6.0-alpha02 are released.

Bug Fixes

  • The obsolete FileObserver protocol has been removed in favor of the LocalSocket-based protocol.

2025-01-30

01 Feb 15:37
Compare
Choose a tag to compare

Media3: v1.6.0-alpha02

January 30, 2025

androidx.media3:media3-*:1.6.0-alpha02 is released. Version 1.6.0-alpha02 contains these commits.

  • Common Library:
    • Fix bug in SimpleBasePlayer where setting a new currentMediaItemIndex in State after setPlaylist with null MediaMetadata does not reevaluate the metadata (#1940).
  • ExoPlayer:
    • Add experimental 'ExoPlayer' pre-warming support for playback using MediaCodecVideoRenderer. You can configure DefaultRenderersFactory through experimentalSetEnableMediaCodecVideoRendererPrewarming to provide a secondary MediaCodecVideoRenderer to ExoPlayer. If enabled, ExoPlayer pre-processes the video of consecutive media items during playback to reduce media item transition latency.
    • Fix issue where additional decode-only frames may be displayed in quick succession when transitioning to content media after a mid-roll ad.
    • Make DefaultRenderersFactory add two MetadataRenderer instances to enable apps to receive two different schemes of metadata by default.
    • Initialize DeviceInfo and device volume asynchronously (if enabled using setDeviceVolumeControlEnabled). These values aren't available instantly after ExoPlayer.Builder.build(), and Player.Listener notifies changes through onDeviceInfoChanged and onDeviceVolumeChanged.
    • Reevaluate whether the ongoing load of a chunk should be cancelled when playback is paused (#1785).
  • Transformer:
    • Enable support for Android platform diagnostics using MediaMetricsManager. Transformer forwards editing events and performance data to the platform, which helps to provide system performance and debugging information on the device. This data may also be collected by Google if sharing usage and diagnostics data is enabled by the user of the device. Apps can opt-out of contributing to platform diagnostics for Transformer with Transformer.Builder.setUsePlatformDiagnostics(false).
    • Split InAppMuxer into InAppMp4Muxer and InAppFragmentedMp4Muxer. You use InAppMp4Muxer to produce a non-fragmented MP4 file, while InAppFragmentedMp4Muxer is for producing a fragmented MP4 file.
    • Move Muxer interface from media3-muxer to media3-transformer.
    • Add support for transcoding and transmuxing Dolby Vision (profile 8) format.
  • Extractors:
    • Fix handling of NAL units with lengths expressed in 1 or 2 bytes (rather than 4).
    • Fix ArrayIndexOutOfBoundsException in MP4 edit lists when the edit list starts at a non-sync frame with no preceding sync frame (#2062).
  • Audio:
    • Don't bypass SonicAudioProcessor when SpeedChangingAudioProcessor is configured with default parameters.
    • Fix underflow in Sonic#getOutputSize() that could cause DefaultAudioSink to stall.
    • Fix MediaCodecAudioRenderer.getDurationToProgressUs() and DecoderAudioRenderer.getDurationToProgressUs() so that seeks correctly reset the provided durations.
  • Text:
    • TTML: Add support for referencing tts:origin and tts:extent using style (#2953).
    • Restrict WebVTT and SubRip timestamps to exactly 3 decimal places. Previously we incorrectly parsed any number of decimal places but always assumed the value was in milliseconds, leading to incorrect timestamps (#1997).
    • Add support for VobSub subtitles (#8260).
    • Fix playback hanging when a playlist contains clipped items with CEA-608 or CEA-708 captions.
    • Fix IllegalStateException when an SSA file contains a cue with zero duration (start and end time equal) (#2052).
    • Suppress (and log) subtitle parsing errors when subtitles are muxed into the same container as audio and video (#2052).
  • Muxers:
    • Renamed setSampleCopyEnabled() method to setSampleCopyingEnabled() in both Mp4Muxer.Builder and FragmentedMp4Muxer.Builder.
    • Mp4Muxer.addTrack() and FragmentedMp4Muxer.addTrack() now return an int track ID instead of a TrackToken.
    • Mp4Muxer and FragmentedMp4Muxer no longer implement Muxer interface.
  • Session:
    • Fix bug where calling a Player method on a MediaController connected to a legacy session dropped changes from a pending update.
  • UI:
    • Add PresentationState state holder class and the corresponding rememberPresentationState Composable to media3-ui-compose.
  • HLS Extension:
    • Parse SUPPLEMENTAL-CODECS tag from HLS playlist to detect Dolby Vision formats (#1785).
  • DASH Extension:
    • Fix issue when calculating the update interval for ad insertion in multi-period live streams (#1698).
    • Parse scte214:supplementalCodecs attribute from DASH manifest to detect Dolby Vision formats (#1785).
    • Improve handling of period transitions in live streams where the period contains media samples beyond the declared period duration (#1698).
  • Demo app:
    • Use PresentationState to control the aspect ratio of PlayerSurface Composable. This depends on the ContentScale type and covers it with a shutter-overlay before the first frame is rendered.
  • Remove deprecated symbols:
    • Removed ExoPlayer.VideoComponent, ExoPlayer.AudioComponent, ExoPlayer.TextComponent and ExoPlayer.DeviceComponent.

2025-01-29

29 Jan 18:44
Compare
Choose a tag to compare

Benchmark: v1.4.0-alpha07

January 29, 2025

androidx.benchmark:benchmark-*:1.4.0-alpha07 is released. Version 1.4.0-alpha07 contains these commits.

New Features

  • BaselineProfileRule now introduces a collectWithResults(...) API which includes a list of paths to the computed profiles. (I056f8)
  • Added androidx.benchmark.measureRepeatedOnMainThread.throwOnDeadline instrumentation argument, which can be set to false to disable the throw on deadline behavior of measureRepeatedOnMainThread for local testing. Not otherwise recommended, as this increases the likelihood of ANRs during tests. (Idbeec, b/353226476)

API Changes

  • Added @JvmOverloads to MicrobenchmarkConfig constructor. (I13fd3)
  • Refactored BenchmarkRule to be built on top of coroutines, and support better yield() behavior. This refactor removed several experimental BenchmarkState APIs, but will be followed by replacements as needed. Additionally, added runWithMeasurementDisabled to clarify behavior (all measurement is paused). In the future, runWithTimingDisabled will be deprecated. (I19837, b/389149423, b/311242861)
  • Move PerfettoTraceProcessor to TraceProcessor in a new androidx.benchmark:benchmark-traceprocessor artifact, and make most of its API non-experimental. Any custom TraceMetric or anything reading from traces will need to update to the new TraceProcessor import. The new TraceProcessor API works exactly like the old one, but is a standalone interface library (somewhat analogous to the androidx.sqlite layer from Room) with an Android-specific implementation built into macrobenchmark. The new artifact can be used on JVM as well, but currently you'll need to start your own copy of the TraceProcessor binary and offer a port to connect to it on. (I3a767, I62563, b/381134564)

Bug Fixes

  • Throw a clearer error message when MacrobenchmarkScope.startActivityAndWait fails to launch the target process (potentially due to a crash in the target process), instead of the more ambiguous 'Unable to confirm activity launch completion' message (I3539b)
  • Fixed several syntax errors in Kotlin samples, and syntax highlighting in several Java / build.gradle samples. (Ib3808)
  • Clarified ArtMetric and CaptureInfo parameter docs. (I96e60)

Browser: v1.9.0-alpha01

January 29, 2025

androidx.browser:browser:1.9.0-alpha01 is released. Version 1.9.0-alpha01 contains these commits.

API Changes

  • Added browser connection/session support to Auth Tab. (I6e47b)
  • Added a new API CustomTabsSession#isEphemeralBrowsingSupported that determines whether or not the ephemeral browsing is supported (Ie4dea, b/384548523)
  • Added color scheme params support to Auth Tab APIs. (I630e1)
  • Added experimental ephemeral browsing option to Custom Tabs (I9549d)
  • Updated experimental Auth Tab APIs (I8b674)
  • Add new API to check if the Custom Tabs provider supports multi-network. (I4307a)
  • Add new service intent filter category to support multi-network. (I4354a)
  • Add new API to set/get the bound network when launching a URL over a custom tab. (I493e1)
  • Added experimental Auth Tab APIs (I9b4d4)
  • New experimental APIs for PendingSession (Ib40e5)

Bug Fixes

  • Updated AuthTabIntent Javadocs (I2490c)
  • Fixed session support in Auth Tab (I4e280)
  • This library now uses JSpecify nullness annotations, which are type-use. Kotlin developers should use the following compiler arguments to enforce correct usage: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (Ic7bf5, b/326456246)
  • Removed manual outlining of access to new platform APIs since this happens automatically via API modeling when using R8 with AGP 7.3 or later (e.g. R8 version 3.3) and for all builds when using AGP 8.1 or later (e.g. D8 version 8.1). Clients who are not using AGP are advised to update to D8 version 8.1 or later. See this article for more details. (I9496c, b/345472586)

External Contribution

  • Introduce a new IPC call ICustomTabsService#prefetchWithMultipleUrls to avoid multiple IPC calls for single URLs. (Ie5025)
  • Make CustomTabsSession#prefetch propagate CustomTabsSession’s session id(mID) to CustomTabsService. (I4ec7b)
  • Add a new experimental APICustomTabsSession#prefetch(List<Uri>, PrefetchOptions), which overloads the existing API to accept multiple URLs. (I54f35)
  • Add a new experimental API CustomTabsSession#prefetch(Uri, PrefetchOptions), which tries to prefetch the main page (without subresources) for future navigations. (I340cf)

Collection: v1.5.0-beta03

January 29, 2025

androidx.collection:collection-*:1.5.0-beta03...

Read more

2025-01-15

15 Jan 18:42
Compare
Choose a tag to compare

Activity: v1.10.0

January 15, 2025

androidx.activity:activity:1.10.0, androidx.activity:activity-compose:1.10.0, and androidx.activity:activity-ktx:1.10.0 are released. Version 1.10.0 contains these commits.

Important changes since 1.9.0

  • PhotoPicker now allows picking images in order and choosing which tab (either albums or images) should be initially visible.
  • The PickVisualMedia and PickMultipleVisualMedia Activity Result contracts that trigger the Photo Picker no longer directly delegates to Google Play services if the system Photo picker is not available, but uses the public ACTION_SYSTEM_FALLBACK_PICK_IMAGES action and related extras to provide a consistent Photo Picker experience to OEMs and system apps as a fallback.
  • New LocalActivity composition local that provides the Activity for the current scope, removing the need for developers to get an Activity from the LocalContext.

AppSearch: v1.1.0-beta01

January 15, 2025

androidx.appsearch:appsearch-*:1.1.0-beta01 is released. Version 1.1.0-beta01 contains these commits.

New Features

  • AppSearch module enters Beta.

API Changes

  • Disable experimental AppSearch delete propagation API due to stability issues. (Iea386)
  • Create GlobalSearchApplicationInfo API, an experimental and optional way for producers and consumers to indicate interest in certain types. (I116fd)
  • Minor changes to experimental AST (query builder) APIs (Ibd852)

Bug Fixes

  • This library now uses JSpecify nullness annotations, which are type-use. Kotlin developers should use the following compiler arguments to enforce correct usage: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode. (Ic2976, b/326456246)
  • Adds required permission to searchPersonCorpus (I4431d)

Camera: v1.5.0-alpha05

January 15, 2025

androidx.camera:camera-*:1.5.0-alpha05 is released. Version 1.5.0-alpha05 contains these commits.

API Changes

  • Add VideoCapture.getSelectedQuality() to know the selected Quality based on the QualitySelector. (I70508, b/204288986)
  • When an image capture is invoked with the ImageCapture.OnImageCapturedCallback API, the ImageInfo at the returned ImageProxy can now be used to know whether flash was fired through the new ImageInfo.getFlashState() API. (Id2c61, b/380527406)
  • Added OUTPUT_IMAGE_FORMAT_NV21 output format support for ImageAnalysis. (I484ab)
  • Remove the experimental annotation of the featurecombinationquery artifact (I4427f)
  • Adjust the zoom ratio range allowed for CameraControl by Extensions-specific characteristics when an extensions mode is enabled. (I85af1)

Bug Fixes

  • Upgraded compileSdk as 35 for using Android 15 related API. Apps using CameraX libraries will also need to upgrade their compileSdk config setting. (Ic80cd)
  • This library now uses JSpecify nullness annotations, which are type-use. Kotlin developers should use the following compiler arguments to enforce correct usage: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (Idc6c6, b/326456246)

camera viewfinder: v1.4.0-alpha12

January 15, 2025

androidx.camera.viewfinder:viewfinder-compose:1.4.0-alpha12, androidx.camera.viewfinder:viewfinder-core:1.4.0-alpha12, and androidx.camera.viewfinder:viewfinder-view:1.4.0-alpha12 are released. Version 1.4.0-alpha12 contains these commits.

New Features

  • Upgraded compileSdk as 35 for using Android 15 related API. Apps using CameraX libraries will also need to upgrade their compileSdk config setting. (Ic80cd)
  • This library now uses JSpecify nullness annotations, which are type-use. Kotlin developers should use the following compiler arguments to enforce correct usage: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (I7bcd7, b/326456246)

Car App: v1.7.0-rc01

January 15, 2025

androidx.car.app:app-*:1.7.0-rc01 is released with no notable changes from beta03. Version 1.7.0-rc01 is a contains these commits.

  • This is the first RC that includes the fix for CVE-2024-10382 patched on beta03. If you are using a lower version than 1.7-beta03, please update to use this version.

Collection: v1.5.0-beta02

January 15, 2025

androidx.collection:collection-*:1.5.0-beta02 is released. Version 1.5.0-beta02 contains these commits.

Compose Animation: v1.8.0-alpha08

January 15, 2025

androidx.compose.animation:animation-*:1.8.0-alpha08 is released. Version 1.8.0-alpha08 contains these commits.

Bug Fixes

  • Fixed incorrect placement animation from animateBounds in LazyGrid due to MotionFrameOfReferencePlacement being reset. (
Read more

2024-12-20

21 Dec 18:40
Compare
Choose a tag to compare

Media3: v1.6.0-alpha01

December 20, 2024

androidx.media3:media3-*:1.6.0-alpha01 is released. Version 1.6.0-alpha01 contains these commits.

  • Common Library:
    • Remove Format.toBundle(boolean excludeMetadata) method, use Format.toBundle() instead.
    • Add AudioManagerCompat and AudioFocusRequestCompat to replace the equivalent classes in androidx.media.
  • ExoPlayer:
    • Consider language when selecting a video track. By default, select a 'main' video track that matches the language of the selected audio track, if available. Explicit video language preferences can be expressed with TrackSelectionParameters.Builder.setPreferredVideoLanguage(s).
    • Add selectedAudioLanguage parameter to DefaultTrackSelector.selectVideoTrack() method.
    • Add retryCount parameter to MediaSourceEventListener.onLoadStarted and corresponding MediaSourceEventListener.EventDispatcher methods.
    • Fix bug where playlist items or periods in multi-period DASH streams with durations that don't match the actual content could cause frame freezes at the end of the item (#1698).
    • Reduce default values for bufferForPlaybackMs and bufferForPlaybackAfterRebufferMs in DefaultLoadControl to 1000 and 2000 ms respectively.
    • Add MediaExtractorCompat, a new class that provides equivalent features to platform MediaExtractor.
    • Move BasePreloadManager.Listener to a top-level PreloadManagerListener.
    • RenderersFactory.createSecondaryRenderer can be implemented to provide secondary renderers for pre-warming. Pre-warming enables quicker media item transitions during playback.
    • Enable sending CmcdData for manifest requests in adaptive streaming formats DASH, HLS, and SmoothStreaming (#1951).
    • Provide MediaCodecInfo of the codec that will be initialized in MediaCodecRenderer.onReadyToInitializeCodec (#1963).
    • Change AdsMediaSource to allow the AdPlaybackStates to grow by appending ad groups. Invalid modifications are detected and throw an exception.
  • Transformer:
    • Update parameters of VideoFrameProcessor.registerInputStream and VideoFrameProcessor.Listener.onInputStreamRegistered to use Format.
    • Add support for transmuxing into alternative backward compatible formats.
    • Generate HDR static metadata when using DefaultEncoderFactory.
  • Extractors:
    • AVI: Fix handling of files with constant bitrate compressed audio where the stream header stores the number of bytes instead of the number of chunks.
  • Audio:
    • Fix onAudioPositionAdvancing to be called when playback resumes (previously it was called when playback was paused).
  • Video:
    • Fix MediaCodecVideoRenderer such that when without a Surface, the renderer skips just-early frames only if the VideoFrameReleaseControl.getFrameReleaseAction is not FRAME_RELEASE_TRY_AGAIN_LATER.
  • Text:
    • Stop eagerly loading all subtitle files configured with MediaItem.Builder.setSubtitleConfigurations, and instead only load one if it is selected by track selection (#1721).
  • Effect:
    • Moved the functionality of OverlaySettings into StaticOverlaySettings. OverlaySettings can be subclassed to allow dynamic overlay settings.
  • Muxers:
    • Moved MuxerException out of Muxer interface to avoid a very long fully qualified name.
  • Session:
    • Add 'Context' as a parameter to 'MediaButtonReceiver.shouldStartForegroundService` (#1887).
  • UI:
    • Add PlayerSurface Composable to media3-ui-compose module.
    • Add PlayPauseButtonState, NextButtonState, PreviousButtonState, RepeatButtonState, ShuffleButtonState classes and the corresponding rememberPlayPauseButtonState, rememberNextButtonState, rememberPreviousButtonState, rememberRepeatButtonState, rememberShuffleButtonState composables to media3-ui-compose module.
  • HLS Extension:
    • Add a first version of HlsInterstitialsAdsLoader. The ads loader reads the HLS interstitials of an HLS media playlist and maps them to the AdPlaybackState that is passed to the AdsMediaSource. This initial version only supports HLS VOD streams with X-ASSET-URI attributes.
    • Add HlsInterstitialsAdsLoader.AdsMediaSourceFactory. Apps can use it to create AdsMediaSource instances that use an HlsInterstitialsAdsLoader in a convenient and safe way.
  • DASH Extension:
    • Add AC-4 Level-4 format support for DASH (#1898).
  • Decoder Extensions (FFmpeg, VP9, AV1, etc.):
    • Add the MPEG-H decoder module which uses the native MPEG-H decoder module to decode MPEG-H audio (#1826).
  • Demo app:
    • Add MinimalControls (PlayPauseButton, NextButton, PreviousButton) and ExtraControls (RepeatButton, ShuffleButton) Composable UI elements to demo-compose utilizing PlayPauseButtonState, NextButtonState, PreviousButtonState, RepeatButtonState, ShuffleButtonState.
  • Remove deprecated symbols:
    • Remove deprecated AudioMixer.create() method. Use DefaultAudioMixer.Factory().create() instead.
    • Remove the following deprecated Transformer.Builder methods:
      • setTransformationRequest(), use setAudioMimeType(), setVideoMimeType(), and setHdrMode() instead.
      • setAudioProcessors(), set the audio processor in an EditedMediaItem.Builder.setEffects(), and pass it to Transformer.start() instead.
      • setVideoEffects(), set video effect in an EditedMediaItem.Builder.setEffects(), and pass it to Transformer.start() instead.
      • setRemoveAudio(), use EditedMediaItem.Builder.setRemoveAudio() to remove the audio from the EditedMediaItem passed to
Read more

2024-12-11@07PM

12 Dec 18:48
Compare
Choose a tag to compare

ARCore for Jetpack XR: v1.0.0-alpha01

December 12, 2024

androidx.xr.arcore:arcore-* 1.0.0-alpha01 is released.

Features of initial release

Inspired by the existing ARCore library, the ARCore for Jetpack XR library provides capabilities for blending digital content with the real world. This library includes motion tracking, persistent anchors, hit testing, and plane identification with semantic labeling (for example, floor, walls, and tabletops). View the developer guide to learn more about working with ARCore for Jetpack XR.

  • Session: ARCore for Jetpack XR uses the Jetpack XR Runtime under-the-hood to power its functionality. You will use a Session to interact with most ARCore for Jetpack XR APIs, so please take a look at its documentation.

  • Plane: Use planes to understand the world around you. Each plane has a Label that describes it semantically. You can use subscribe to be notified about the latest detected planes or state to be notified about the changes to a specific plane.

  • Anchor: A link between a virtual object and a real world location. Anchors can be attached to a specific location in space (using create) or a Trackable (using createAnchor).

    • Anchors can be reused across sessions. You can use persist to store them, getPersistedAnchorUuids to enumerate them and load to retrieve them. Make sure that you unpersist them once they are no longer in use.

    • Anchors are interoperable between ARCore for Jetpack XR and Jetpack SceneCore. You can create an AnchorEntity using an anchor or, if you have an existing AnchorEntity, you can use getAnchor to retrieve its backing anchor.

    • Offer natural user interactions using hitTest. A hitTest uses a Ray to determine which contents it intersects and to create an Anchor from that location. Consider conducting a hitTest from an InputEvent.

Known Issues

  • There might be a delay between calling unpersist and its UUID being removed from the results returned by getPersistedAnchorUuids.

  • create will not validate that the system has enough resources to return new anchors. Creating an excessive amount of anchors might lead to a crash.

  • Persisting an Anchor that was previously persisted and unpersisted is not currently supported.

  • Usage in the emulator is supported, but the behavior might not be as stable as when running on an actual device. Particularly, calls to create might fail with a native code error and immediately terminate the activity.

  • In certain circumstances, a RuntimeException might be erroneously thrown when calling persist with the message “Anchor was not persisted”. In those circumstances, the function would still succeed and the anchor will be persisted. We recommend wrapping the call to persist with a try block as a workaround.

Jetpack Compose for XR: v1.0.0-alpha01

December 12, 2024

androidx.xr.compose:compose-*1.0.0-alpha01 is released.

Features of Initial Release

  • Initial developer release of Jetpack Compose for XR. Use familiar Compose concepts such as rows and columns to create spatial UI layouts in XR, whether you're porting an existing 2D app to XR or creating a new XR app from scratch. This library provides subspace and spatial composables: such as spatial panels and orbiters, which let you place your existing 2D Compose or Views-based UI in a spatial layout. It introduces the Volume subspace composable, which allows you to place SceneCore entities, such as 3D models, relative to your UI. Learn more in this developer guide:

    • Subspace: This composable can be placed anywhere within your app’s UI hierarchy, allowing you to maintain layouts for 2D and spatial UI without losing context between files. This makes it easier to share things like existing app architecture between XR and other form factors without needing to hoist state through your whole UI tree or re-architect your app.

    • SpatialPanel: A spatial panel is a subspace composable that lets you display app content–for example, you could display video playback, still images, or any other content in a spatial panel.

    • Orbiter: An orbiter is a spatial UI component. It's designed to be attached to a corresponding spatial panel, and contains navigation and contextual action items related to that spatial panel. For example, if you've created a spatial panel to display video content, you could add video playback controls inside an orbiter.

    • Volume: Place SceneCore entities, such as 3D models, relative to your UI.

  • Spatial Layout: You can create multiple spatial panels and place them within a Spatial Layout using SpatialRow, SpatialColumn,

Read more