Take your media display and playback to the next level — basic, better, and best
Stay organized with collections
Save and categorize content based on your preferences.
This guide charts the optimal progression of a media playback-focused app from a
likely starting place to best-in-class. It's designed to help you think about
scaling your app over time, and what features to implement when. While every
media consumption app is different, consider these recommendations to achieve a
best-in-class experience.
A basic media display and playback app provides users with a foundational
experience, which may include doing the following:
A better media display and playback app leverages premium device hardware and
updated platform features, to:
A best-in-class media display and playback app gives users access to advanced
features that really make the app stand out, such as:
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2024-10-12 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-10-12 UTC."],[],[],null,["# Take your media display and playback to the next level — basic, better, and best\n\nThis guide charts the optimal progression of a media playback-focused app from a\nlikely starting place to best-in-class. It's designed to help you think about\nscaling your app over time, and what features to implement when. While every\nmedia consumption app is different, consider these recommendations to achieve a\nbest-in-class experience.\n\nBasic media display and playback\n--------------------------------\n\nA basic media display and playback app provides users with a foundational\nexperience, which may include doing the following:\n\n- Offer an in-app media player using with playback controls, using [formats](/guide/topics/media/media-formats) that are supported across the Android ecosystem, ideally using [Media3s](/guide/topics/media/media3) [ExoPlayer](/guide/topics/media/exoplayer).\n- Use the latest version of the [Jetpack Media3](/guide/topics/media/media3) library.\n- Use optimized server-generated thumbnails as well as [best practices for locally-generated ones](/social-and-messaging/guides/media-thumbnails), and cache them locally.\n- Invest in [accessibility](/guide/topics/ui/accessibility/principles#media-content).\n\nBetter media display and playback\n---------------------------------\n\nA better media display and playback app leverages premium device hardware and\nupdated platform features, to:\n\n- Implement a [`MediaSession`](/guide/topics/media/media3/getting-started/mediasession) --- made easy with [Media3s](/guide/topics/media/media3) [ExoPlayer](/guide/topics/media/exoplayer) --- to enable playback integration across different apps, system components, and devices.\n- Use [best practices for sharing video](/media/optimize/sharing), [transcoding](/media/media3/transformer/transformations#transcode) if necessary.\n- Support [sharing multiple pieces of content](/training/sharing/send#share-multiple-content) at the same time.\n- Enable [picture-in-picture](/develop/ui/views/picture-in-picture) for video and audio playback so users can multitask.\n- Enable support for [UltraHDR](/media/grow/ultra-hdr-display) images.\n- Play [HDR](/media/grow/hdr-playback) video.\n- Support playback to [Cast](https://developers.google.com/cast/docs/developers) devices.\n- Add an [app widget](/develop/ui/views/appwidgets/overview) so users can get see what friends are up to and search from their home screen.\n\nBest media display and playback\n-------------------------------\n\nA best-in-class media display and playback app gives users access to advanced\nfeatures that really make the app stand out, such as:\n\n- Check to see if images contain a [gain-map](/guide/topics/media/platform/hdr-image-format#gain_map-generation), and strategically use [`setColorMode()`](/reference/android/view/Window#setColorMode(int)) to [`ActivityInfo.COLOR_MODE_HDR`](/reference/android/content/pm/ActivityInfo#COLOR_MODE_HDR) to optimize for content display and battery life.\n- Optimize for foldables by supporting the [`HALF_OPENED` state](/develop/ui/compose/layouts/adaptive/foldables/learn-about-foldables#foldable_postures)\n- Ensure [design](/design/ui) consistency with the platform.\n- Implement [Cast Connect](https://developers.google.com/cast/docs/android_tv_receiver) so users can cast to your [Android TV](/training/tv) app.\n- Use [Performance Class](/topic/performance/performance-class) to adapt your user experience to match device capabilities."]]