Skip to main content
Version: 11.14.1

Changelog

Tags:

  • 💥 Breaking Change
  • 🚀 New Feature
  • 🐛 Bug Fix
  • 👎 Deprecation
  • 📝 Documentation
  • 🏠 Internal
  • 💅 Polish

Unreleased​

1.15.0 (2026-10-23)​

  • 🚀 Added android-ui-tv, an experimental UI library for Android TV built on Compose for TV. It includes a D-pad friendly DefaultUI. Code shared with android-ui now lives in a new android-ui-common artifact; android-ui depends on it, so apps don't need any changes. (#107, #121, #124, #125, #126, #128, #131)
  • 🚀 Added experimental state holders (such as rememberPlayButtonState and rememberSeekBarState), so custom UIs can reuse the logic of the built-in components. The components have new overloads that take their state, and LocalTHEOplayerView provides the current THEOplayerView. UIController and DefaultUI now use these state holders internally. (#108, #110, #111, #114, #115, #116)
  • 🚀 Added UIController(theoplayerView) and DefaultUI(theoplayerView), which don't create a Player. Use rememberTHEOplayerView(config) to create a THEOplayerView that follows the lifecycle of the composition. UIController(config) and DefaultUI(config) no longer create a Player either, and UIControllerScope.player is only created when accessed. (#119)
  • 🚀 UIController now handles keys: pressing any key shows the controls (which helps on tablets with a keyboard), media keys (play/pause, fast-forward and rewind) control playback even while the controls are hidden, and Back closes an open menu. Use the new PlayerAnimations.controlsHideDelay to configure how long the controls stay visible after user interaction. (#122, #124)
  • 🚀 UIController now moves subtitles up or down while the controls are visible, so they don't render behind the top or bottom chrome. Moving subtitles up requires THEOplayer 9.5.0 or higher. (#129)
  • 🚀 Added TextTrackStyleMenu to change the style of subtitles, such as the font family, font color and background color. In DefaultUI, open it from the subtitles menu. Use rememberTextTrackStyleState to build a custom menu. Changing the font family requires THEOplayer 9.9.0 or higher. (#130, #143)
  • 🚀 Added MenuScope.closeAllMenus() to close all open menus at once. On mobile, tapping outside the menu sheet now closes all open menus, instead of only going back to the previous menu. (#144)
  • 🐛 Fixed AudioTrackList, SubtitleTrackList, QualityList and PlaybackRateList not scrolling to the selected item, and not announcing it to accessibility services. (#127)
  • 🐛 Fixed UIController and DefaultUI not keeping the player at the aspect ratio of the video (or 16:9 before the video is loaded). (#140)
  • 🐛 Fixed menus losing their scroll position (and on Android TV, their focused item) when returning from a submenu. (#143)
  • 💅 Menus on mobile now open in a sheet with a translucent background, so they're easier to read on top of the video: a bottom sheet on narrow players, and a side sheet at the end of the player on wide players. (#141)
  • 💅 Opening a submenu or going back to the previous menu now only animates the menu's contents, with a short slide and a fade, on both mobile and TV. Use the new PlayerAnimations.menuTransitionDuration to change how long this takes. (#141)
  • 📝 The API documentation now has a separate section for each module (android-ui, android-ui-common and android-ui-tv). (#128)

1.14.2 (2026-10-13)​

  • 🐛 Fixed a listener leak in picture-in-picture mode detection on Android 15 and higher. (#113)
  • 🐛 Fixed the player controls not being disposed when UIController leaves the composition. (#117)

1.14.1 (2026-04-20)​

  • 🐛 Fixed the menu background disappearing after opening. (#100)

1.14.0 (2026-04-20)​

  • 🚀 Added support for THEOplayer 11.0. (#98)
  • 🚀 Updated to Jetpack Compose version 1.10.6 (BOM 2026.03.01).

1.13.4 (2026-04-07)​

  • 🐛 The language menu now prefers to show CEA-608/708 closed caption tracks with their localized language name (if available) instead of their language code (e.g. "en") or channel number (e.g. "CC1"). (#84, #95)

1.13.3 (2026-03-23)​

  • 🐛 Changed the minimum supported THEOplayer version to 7.6.0. (#85)
    • This was effectively already the minimum version as of Open Video UI for Android version 1.7.2, but it wasn't noticed until now.
    • Future versions will be properly tested with the minimum supported THEOplayer version to avoid similar compatibility issues.
  • 🐛 Player.pictureInPicture now also checks whether the Activity itself is in picture-in-picture mode, in case the activity has custom picture-in-picture logic (that does not use THEOplayer's PiPManager API). (#89)

1.13.2 (2026-03-03)​

  • 🐛 Fixed PictureInPictureButton to only be shown when the backing THEOplayerView has a valid PiPConfiguration. (#81)

1.13.1 (2026-01-05)​

  • 🐛 Changed THEOplayer to be an api dependency in Gradle. (#76)
  • 🐛 The alpha value of the UIController's background color is now correctly preserved. (#78, #79)

1.13.0 (2025-09-12)​

  • 💥 The minSdk is now API 23 (Android 6.0 "Marshmallow"), to align with THEOplayer 10.0. (#74)
  • 💥 Open Video UI for Android is now compiled using the Kotlin 2 compiler. Update your app to use Kotlin Gradle Plugin 2.0.0 or newer. (#74)
  • 💥 Updated to Jetpack Compose version 1.9.0 (BOM 2025.08.01).
  • 🚀 Added support for THEOplayer 10.0. (#74)

1.12.0 (2025-09-08)​

  • 🚀 Added PictureInPictureButton. (#19, #70)
  • 🚀 The default UI now shows a minimal set of controls while playing an ad. (#71)
  • 🚀 UIController no longer hides all controls while playing an ad. (#71)

1.11.1 (2025-08-01)​

  • 🐛 Fixed clicking on overlays from OptiView Ads not working. (#68)

1.11.0 (2025-04-29)​

  • 💥 Bumped compileSdk to API 35 (Android 15).
  • 🚀 Added localization support.

1.10.0 (2025-04-02)​

  • 🚀 Added support for THEOplayer 9.0. (#61)

1.9.4 (2024-12-18)​

  • 🐛 Revert to compileSdk 34. (#56)

1.9.3 (2024-12-17)​

  • 💥 Updated to Jetpack Compose version 1.7.5 (BOM 2024.11.00).
  • 🐛 Fix SeekBar not working for livestreams with a large player.seekable.start(0), such as MPEG-DASH streams that use Unix timestamps for their MPD timeline. (#52)

1.9.2 (2024-10-15)​

  • 🐛 Fix Player.cast not available before first source change.

1.9.1 (2024-10-01)​

  • 🐛 Fix DurationDisplay to show the time of the live point when playing a live or DVR stream.
  • 🐛 Fix CurrentTimeDisplay to show the time offset to the live point when playing a live or DVR stream with showRemaining = true.
  • 💅 Changed DefaultUi to hide the current time display when playing a live stream.
  • 💅 Changed DefaultUi to show the time offset to the live point when playing a DVR stream.
  • 💅 Changed LanguageMenuButton to automatically hide itself when there are no alternative audio or subtitle tracks to select.

1.9.0 (2024-09-10)​

  • 💥 Updated to Jetpack Compose version 1.7.0 (BOM 2024.09.00).
  • 💥 Changed colors parameter in IconButton and LiveButton to be an IconButtonColors.
  • 🚀 Added support for Android Lollipop (API 21), to align with the THEOplayer Android SDK.
  • 🚀 Added rememberPlayer(THEOplayerView) to create a Player wrapping an existing THEOplayerView.

1.8.0 (2024-09-06)​

  • 🚀 Added support for THEOplayer 8.0. (#37)

1.7.4 (2024-09-02)​

  • 🐛 Fixed a crash when playing a live stream on Chromecast.

1.7.3 (2024-09-02)​

1.7.2 (2024-08-28)​

  • 🐛 Fixed ad clickthrough not working. (#33)
  • 🐛 Fixed UI not re-appearing after playing an ad. (#33)
  • 🐛 Fixed exiting fullscreen disabling edge-to-edge display. (#32)

1.7.1 (2024-08-20)​

  • 🐛 Disable system gestures on the SeekBar component. (#30)

1.7.0 (2024-08-12)​

  • 💥 Updated to Jetpack Compose version 1.6.8 (BOM 2024.06.00).
  • 🚀 Added basic support for advertisements. (Requires THEOplayer SDK version 7.10.0 or higher.)

1.6.0 (2024-04-16)​

  • 🚀 Added support for THEOplayer Android SDK version 7.

1.5.0 (2024-02-21)​

1.4.0 (2023-11-27)​

  • 💥 Updated to Jetpack Compose version 1.5.4 (BOM 2023.10.01).
  • 💅 Renamed project to "THEOplayer Open Video UI for Android".

1.3.4 (2023-10-17)​

  • 🚀 Allow THEOplayer Android SDK 6.

1.3.3 (2023-07-13)​

  • 💅 UIController now sizes itself to match the video's aspect ratio, except if this were to conflict with a different size constraint (such as Modifier.fillMaxSize()).

1.3.2 (2023-07-13)​

  • 🏠 Publish to THEOplayer's own Maven repository.

1.3.1 (2023-06-30)​

  • 🚀 Added Player.source, .videoWidth and .videoHeight properties.
  • 🚀 Added Player.play() and .pause() shortcut methods.
  • 🐛 Fixed player not following device rotation while fullscreen.
  • 💅 When autoplaying a new video, the UI now starts out as hidden.

1.3.0 (2023-06-29)​

  • 🚀 Added THEOplayerTheme.playerAnimations to control the animation settings of the various UI components.
  • 🐛 Fix consuming apps unable to install different version of the THEOplayer Android SDK.

1.2.0 (2023-06-28)​

  • 💥 Renamed PlayerState to Player.
  • 🚀 Added overloads to DefaultUI and UIController that accept a Player. This allows constructing a player instance in advance, and even moving it between custom UIs when recomposing.
  • 🚀 Added UIControllerScope.player as an non-null alternative to Player.current.

1.1.0 (2023-06-27)​

  • 💥 Update to THEOplayer Android SDK 5. To migrate, switch to com.theoplayer.theoplayer-sdk-android:core in your Gradle dependencies.
    dependencies {
    - implementation "com.theoplayer.theoplayer-sdk-android:unified:+"
    + implementation "com.theoplayer.theoplayer-sdk-android:core:5.+"
    implementation "com.theoplayer.android-ui:android-ui:1.+"
    }
  • 🚀 Added a UIController overload which accepts a THEOplayerView directly.

1.0.0 (2023-04-05)​

  • 🚀 Initial release.