Skip to content

Update and modernize all samples#37

Open
ceyhun-o wants to merge 55 commits intomasterfrom
maintenance/update-and-rebrand
Open

Update and modernize all samples#37
ceyhun-o wants to merge 55 commits intomasterfrom
maintenance/update-and-rebrand

Conversation

@ceyhun-o
Copy link
Contributor

@ceyhun-o ceyhun-o commented Mar 5, 2026

This PR:

  • Rebrands all samples from THEOplayer to Dolby OptiView including logos, colors and styling. They are now aligned with the iOS samples.
  • Modernizes all samples to Jetpack Compose. So the XML layouts are (almost) all gone! All samples now use Open Video UI.
  • Bumps all dependencies, moves all samples to Java 17 and Gradle 9.
  • Expands the existing Open Video UI sample into a theme showcase with 7 custom UIs!
  • Adds 4 new samples; OptiView Ads, Millicast, THEOlive and a localization sample to demonstrate Open Video UI's localization capability.
  • Moves the PiP handling sample a native PiP implementation logic (using enterPictureInPictureMode() instead of the PiP APIs from the player)

Some other minor, but good changes:

  • All application manifests are now structured in a consistent way across all samples with no deprecated Android APIs in between. The apps also no longer have layout restrictions either since these are now ignored.
  • None of the samples now have any deprecated Java/THEOplayer APIs (as of now 🤞).
  • All samples use the common SourceManager.kt to set sources.
  • Updated all READMEs.

@MattiasBuelens
Copy link
Contributor

I made some more improvements:

  • I added some shared element transitions to the Open Video UI sample app, so navigating from the main screen to a player demo feels smoother. 😁
  • I also reworked the localization sample app to actually change the app's language using AppCompatDelegate.setApplicationLocales(). The activity now also handles locale changes without recreating, which means you can change the language while the player keeps playing. 😉
  • Moves the PiP handling sample a native PiP implementation logic (using enterPictureInPictureMode() instead of the PiP APIs from the player)

I don't know if I'm a fan of this. 😕

THEOplayer's PIP implementation has logic to hide the UI controls while in PIP mode. In the new PIP sample app, because we're not using this API, the controls stay visible while in PIP (when the player is paused). This isn't great, see screenshot:
Screenshot

What problem(s) were you facing with THEOplayer's own PIP API, that made you switch to a custom PIP implementation?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants