Tags:
- 💥 Breaking Change
- 🚀 New Feature
- 🐛 Bug Fix
- 👎 Deprecation
- 📝 Documentation
- 🏠 Internal
- 💅 Polish
1.15.1 (2026-10-29)
- 💅 On Android TV, pressing Center or Enter on the
SeekBarnow toggles play or pause, so viewers don't have to move focus to the play button first. Custom UIs can use the newSeekBarState.togglePlayPause()for this. (#148) - 💅 While scrubbing the
SeekBar, the player now only seeks once the viewer stops moving for a moment or lets go, instead of on every position change.SeekBarStatenow extendsPlaybackTimeState, andCurrentTimeDisplayshows the position being scrubbed to. (#149) - 🐛 The
LiveButtonis now disabled while an ad is playing, so viewers can no longer seek to the live point during an ad. (#151)
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 friendlyDefaultUI. Code shared withandroid-uinow lives in a newandroid-ui-commonartifact;android-uidepends on it, so apps don't need any changes. (#107, #121, #124, #125, #126, #128, #131) - 🚀 Added experimental state holders (such as
rememberPlayButtonStateandrememberSeekBarState), so custom UIs can reuse the logic of the built-in components. The components have new overloads that take their state, andLocalTHEOplayerViewprovides the currentTHEOplayerView.UIControllerandDefaultUInow use these state holders internally. (#108, #110, #111, #114, #115, #116) - 🚀 Added
UIController(theoplayerView)andDefaultUI(theoplayerView), which don't create aPlayer. UserememberTHEOplayerView(config)to create aTHEOplayerViewthat follows the lifecycle of the composition.UIController(config)andDefaultUI(config)no longer create aPlayereither, andUIControllerScope.playeris only created when accessed. (#119) - 🚀
UIControllernow 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 newPlayerAnimations.controlsHideDelayto configure how long the controls stay visible after user interaction. (#122, #124) - 🚀
UIControllernow 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
TextTrackStyleMenuto change the style of subtitles, such as the font family, font color and background color. InDefaultUI, open it from the subtitles menu. UserememberTextTrackStyleStateto 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,QualityListandPlaybackRateListnot scrolling to the selected item, and not announcing it to accessibility services. (#127) - 🐛 Fixed
UIControllerandDefaultUInot 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.menuTransitionDurationto change how long this takes. (#141) - 📝 The API documentation now has a separate section for each module (
android-ui,android-ui-commonandandroid-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
UIControllerleaves 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.pictureInPicturenow also checks whether theActivityitself is in picture-in-picture mode, in case the activity has custom picture-in-picture logic (that does not use THEOplayer'sPiPManagerAPI). (#89)
1.13.2 (2026-03-03)
- 🐛 Fixed
PictureInPictureButtonto only be shown when the backingTHEOplayerViewhas a validPiPConfiguration. (#81)
1.13.1 (2026-01-05)
- 🐛 Changed THEOplayer to be an
apidependency 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
minSdkis 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)
- 🚀
UIControllerno 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
compileSdkto API 35 (Android 15). - 🚀 Added localization support.
- See
res/values/strings.xmlfor the full list of translatable strings, which you can override in your app'sstrings.xml. - For more information, see Localize your app on Android Developers.
- See
1.10.0 (2025-04-02)
- 🚀 Added support for THEOplayer 9.0. (#61)
1.9.4 (2024-12-18)
- 🐛 Revert to
compileSdk34. (#56)
1.9.3 (2024-12-17)
- 💥 Updated to Jetpack Compose version 1.7.5 (BOM 2024.11.00).
- 🐛 Fix
SeekBarnot working for livestreams with a largeplayer.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.castnot available before first source change.
1.9.1 (2024-10-01)
- 🐛 Fix
DurationDisplayto show the time of the live point when playing a live or DVR stream. - 🐛 Fix
CurrentTimeDisplayto show the time offset to the live point when playing a live or DVR stream withshowRemaining = true. - 💅 Changed
DefaultUito hide the current time display when playing a live stream. - 💅 Changed
DefaultUito show the time offset to the live point when playing a DVR stream. - 💅 Changed
LanguageMenuButtonto 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
colorsparameter inIconButtonandLiveButtonto be anIconButtonColors. - 🚀 Added support for Android Lollipop (API 21), to align with the THEOplayer Android SDK.
- 🚀 Added
rememberPlayer(THEOplayerView)to create aPlayerwrapping an existingTHEOplayerView.
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)
- 🐛 Fixed the Chromecast button never appearing. (#34)
- 🐛 Fixed the seek bar being disabled while casting. (#35, #36)
- 📝 Added a "Setting up Chromecast" guide.
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
SeekBarcomponent. (#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)
- 💥 Updated to Jetpack Compose version 1.6.1 (BOM 2024.02.00).
- 🐛 Fixed dragging the
SeekBarwhen using Compose Material 3 version 1.2.0 or higher. (#24)
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)
- 💅
UIControllernow sizes itself to match the video's aspect ratio, except if this were to conflict with a different size constraint (such asModifier.fillMaxSize()).
1.3.2 (2023-07-13)
- 🏠 Publish to THEOplayer's own Maven repository.
1.3.1 (2023-06-30)
- 🚀 Added
Player.source,.videoWidthand.videoHeightproperties. - 🚀 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.playerAnimationsto 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
PlayerStatetoPlayer. - 🚀 Added overloads to
DefaultUIandUIControllerthat accept aPlayer. This allows constructing a player instance in advance, and even moving it between custom UIs when recomposing. - 🚀 Added
UIControllerScope.playeras an non-null alternative toPlayer.current.
1.1.0 (2023-06-27)
- 💥 Update to THEOplayer Android SDK 5.
To migrate, switch to
com.theoplayer.theoplayer-sdk-android:corein 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
UIControlleroverload which accepts aTHEOplayerViewdirectly.
1.0.0 (2023-04-05)
- 🚀 Initial release.