Skip to main content
Essentials
Build AI experiences
Build AI-powered Android apps with Gemini APIs and more.
Get started
Get started
Start by creating your first app. Go deeper with our training courses or explore app development on your own.
Hello world
Training courses
Tutorials
Compose for teams
Kotlin for Android
Monetization with Play ↗️
Android Developer Verification
Extend by device
Build apps that give your users seamless experiences from phones to tablets, watches, headsets, and more.
Adaptive apps
Android XR
Wear OS
Android for Cars
Android TV
ChromeOS
Build by category
Learn to build for your use case by following Google's prescriptive and opinionated guidance.
Games
Camera & media
Social & messaging
Health & fitness
Productivity
Enterprise apps
Get the latest
Stay in touch with the latest releases throughout the year, join our preview programs, and give us your feedback.
Latest updates
Experimental updates
Android Studio preview
Jetpack & Compose libraries
Wear OS releases
Privacy Sandbox ↗️
Design & Plan
Excellent Experiences
Build the best experiences for your best users.
Learn more
UI Design
Design a beautiful user interface using Android best practices.
Design for Android
Mobile
Adaptive UI
Android XR
Widgets
Wear OS
Android TV
Architecture
Design robust, testable, and maintainable app logic and services.
Introduction
Libraries
Navigation
Modularization
Testing
Kotlin Multiplatform
Quality
Plan for app quality and align with Play store guidelines.
Overview
Core value
User experience
Accessibility
Technical quality
Excellent Experiences
Security
Safeguard users against threats and ensure a secure Android experience.
Overview
Privacy
Permissions
Identity
Fraud prevention
Develop
Gemini in Android Studio
Your AI development companion for Android development.
Learn more
Get Android Studio
Core areas
Get the samples and docs for the features you need.
Samples
User interfaces
Background work
Data and files
Connectivity
All core areas ⤵️
Tools and workflow
Use the IDE to write and build your app, or create your own pipeline.
Write and debug code
Build projects
Test your app
Performance
Command-line tools
Gradle plugin API
Device tech
Write code for form factors. Connect devices and share data.
Adaptive UI
Wear OS
Android XR
Android Health
Android for Cars
Android TV
All devices ⤵️
Libraries
Browse API reference documentation with all the details.
Android platform
Jetpack libraries
Compose libraries
Google Play services ↗️
Google Play SDK index ↗️
Google Play
Play Console
Publish your app or game and grow your business on Google Play.
Go to Play Console
Learn more ↗️
Fundamentals
Learn how to engage users, monitize, and secure your app.
Play Monetization
Play Integrity
Play Policies
Play Programs ↗️
Games Dev Center
Develop and deliver games. Get tools, downloads, and samples.
Overview
Play Asset Delivery
Play Games Services
Play Games on PC
All Play guides ⤵️
Libraries
Browse API reference documentation with all the details.
Play Feature Delivery
Play In-app Updates
Play In-app Reviews
Play Install Referrer
Google Play services ↗️
Google Play SDK index ↗️
All Play libraries ⤵️
Tools & resources
Tools for publishing, promoting, and managing your app.
Android App Bundles
Brand & marketing
Play Console APIs ↗️
Community
/
English
Deutsch
Español – América Latina
Français
Indonesia
Italiano
Polski
Português – Brasil
Tiếng Việt
Türkçe
Русский
עברית
العربيّة
فارسی
हिंदी
বাংলা
ภาษาไทย
中文 – 简体
中文 – 繁體
日本語
한국어
Android Studio
Sign in
Camera & media dev center
Overview
Guides
Samples
Community
Essentials
More
Overview
Guides
Samples
Community
Design & Plan
More
Develop
More
Google Play
More
Community
Android Studio
Get started
Create a basic media player using ExoPlayer
Create a basic video editor using Transformer
Codelab: Media streaming with ExoPlayer
Codelab: Getting Started with CameraX
Add audio and video
About audio and video
Introduction to Jetpack Media3
Media3 MediaSession
The Player interface
Control and advertise playback using a MediaSession
Background playback with a MediaSessionService
Serve a content library with a MediaLibraryService
Connect to a media app with a MediaController or MediaBrowser
Media3 ExoPlayer
About Media3 ExoPlayer
Getting started
Player events
Playlists
Media items
Media sources
Track selection
Downloading media
Preloading media
Overview
Preload manager concepts
Create a preload manager
Manage and play content
Ad insertion
Retrieving metadata
Live streaming
Network stacks
Analytics
Media types
DASH
HLS
SmoothStreaming
Progressive
RTSP
Images
Advanced topics
Digital rights management
Common Media Client Data (CMCD)
Debug logging
Troubleshooting
Customization
Battery consumption
APK shrinking
OEM testing
Helpful resources
Migrating to Media3
Migration guide
ExoPlayer to Media3 mappings
Demo application
Supported formats
Supported devices
Glossary
Release notes ⍈
Javadoc ⍈
GitHub
Blog
Media3 Transformer
About Media3 Transformer
Getting started
Demo application
Transformations
Multi-asset editing
Tone mapping
Supported formats
Advanced topics
Customization
Troubleshooting
Release notes ⍈
Javadoc ⍈
GitHub
ExoPlayer Blog
Media3 UI
Getting started
Views UI
From Views to Jetpack Compose UI
Surface
Customization
Android TV
Jetpack MediaRouter
Routing overview
Controlling playback output routing
Defining playback output routes
Platform APIs and behaviors
Platform topics overview
Media formats
Supported media formats
Ultra HDR image format specification
Motion Photo image format specification
MP4 With Auxiliary Tracks Extension (MP4-AT) file format specification
Compatible media transcoding
MediaPlayer
About media player
Get started with Media Player
Manage state and resources
Background playback
Work with Digital Rights Management
Retrieve media from a content resolver
Controlling amplitude with VolumeShaper
Improve audio playback
Handling changes in audio output
Sharing audio input
MediaRecorder overview
Capture video and audio playback
Legacy media APIs
Media app architecture
Using a media session
Building an audio app
About audio apps
Building a media browser service
Building a media browser client
Media session callbacks
Building a video app
About video apps
Building a video player activity
Media session callbacks
Responding to media buttons
Add camera capabilities
Get started with camera
Camera intents
Camera extensions
About camera extensions
Supported devices
Choose a camera library
CameraX
About CameraX
Architecture
Configuration
Use cases
Add an image preview
Capture an image
Overview
Configure for optimization, flash, and file format
Zero-Shutter Lag
Analyze an image
Capture a video
Advanced topics
Extensions API
ML Kit Analyzer
Rotations
Transform output
Devices
Camera1 to CameraX migration guide
Camera2
About Camera2
Camera capture sessions and requests
Camera lenses and capabilities
Use multiple camera streams simultaneously
Screen flash implementation guidelines
Camera preview
HDR video capture
Multi-Camera API
Extensions API
Foldable devices
Low light photography and videography
Overview
Choose the best low light option
Low Light Boost AE Mode
Google Low Light Boost
Overview
Concepts
Low Light Boost client
Low Light Boost session
Camera (deprecated)
About Camera (deprecated)
Take photos (deprecated)
Record videos (deprecated)
Control the camera (deprecated)
Camera API (deprecated)
Extend your app's reach
Overview
Android form factors
Media controls on phones and large screens
Design for large screens from the start
Pause and resume media using a keyboard
Extend your media app to Android for Cars
Extend your media app to Wear OS
Extend your media app to Android TV
Support Chromebooks in your camera app
Google Assistant
Google Assistant and media apps
Media apps on Google Assistant driving mode
Playing on Cast devices
Level up your media app
Overview
Considerations for a best-in-class app
Spatial audio
Work with HDR
Overview
HDR video playback
Color correct with look-up tables
Support Ultra HDR
Overview
Display Ultra HDR images
Edit Ultra HDR images
Using picture-in-picture
Media projection
Optimize for high quality
Overview
Using the media controller test app
Handling audio focus
Performance
Performance class
Measuring performance
Choosing the optimal codec using Performance Points
Setting an optimal frame rate using the Frame Rate API
Best practices for sharing video
Build AI experiences
Get started
Get started
Hello world
Training courses
Tutorials
Compose for teams
Kotlin for Android
Monetization with Play ↗️
Android Developer Verification
Extend by device
Adaptive apps
Android XR
Wear OS
Android for Cars
Android TV
ChromeOS
Build by category
Games
Camera & media
Social & messaging
Health & fitness
Productivity
Enterprise apps
Get the latest
Latest updates
Experimental updates
Android Studio preview
Jetpack & Compose libraries
Wear OS releases
Privacy Sandbox ↗️
Excellent Experiences
Learn more
UI Design
Design for Android
Mobile
Adaptive UI
Android XR
Widgets
Wear OS
Android TV
Architecture
Introduction
Libraries
Navigation
Modularization
Testing
Kotlin Multiplatform
Quality
Overview
Core value
User experience
Accessibility
Technical quality
Excellent Experiences
Security
Overview
Privacy
Permissions
Identity
Fraud prevention
Gemini in Android Studio
Learn more
Get Android Studio
Core areas
Samples
User interfaces
Background work
Data and files
Connectivity
All core areas ⤵️
Tools and workflow
Write and debug code
Build projects
Test your app
Performance
Command-line tools
Gradle plugin API
Device tech
Adaptive UI
Wear OS
Android XR
Android Health