Android Developers
Platform Android Studio Google Play Jetpack Kotlin Docs Games
Sign in
  • Documentation
Overview Guides Reference Samples Design & Quality
Android Developers
  • Platform
  • Android Studio
  • Google Play
  • Jetpack
  • Kotlin
  • Docs
    • Overview
    • Guides
    • Reference
    • Samples
    • Design & Quality
  • Games
  • App Basics
  • Introduction
  • Build your first app
    • Overview
    • Create an Android project
    • Run your app
    • Build a simple user interface
    • Start another activity
  • App fundamentals
  • App resources
    • Overview
    • Handle configuration changes
    • Localization
      • Localize your app
      • Test your app with pseudolocales
      • Unicode and internationalization support
      • Language and locale resolution
    • Complex XML resources
    • Resource types
      • Overview
      • Animation
      • Color state list
      • Drawable
      • Layout
      • Menu
      • String
      • Style
      • Font
      • More types
  • App manifest file
    • Overview
    • <action>
    • <activity>
    • <activity-alias>
    • <application>
    • <category>
    • <compatible-screens>
    • <data>
    • <grant-uri-permission>
    • <instrumentation>
    • <intent-filter>
    • <manifest>
    • <meta-data>
    • <path-permission>
    • <permission>
    • <permission-group>
    • <permission-tree>
    • <profileable>
    • <provider>
    • <queries>
    • <receiver>
    • <service>
    • <supports-gl-texture>
    • <supports-screens>
    • <uses-configuration>
    • <uses-feature>
    • <uses-library>
    • <uses-native-library>
    • <uses-permission>
    • <uses-permission-sdk-23>
    • <uses-sdk>
  • Devices
  • Device compatibility
    • Overview
    • Screen compatibility overview
    • Support different pixel densities
    • Declare restricted screen support
    • Multiple APK support
      • Overview
      • Create multiple APKs for different API levels
      • Create multiple APKs for different screen sizes
      • Create multiple APKs for different GL textures
      • Create multiple APKs with several dimensions
    • Support different languages and cultures
    • Support different platform versions
    • Filters on Google Play
  • Tablets, large screens, and foldables
    • Get started with large screens
    • Media projection on large screens
    • Enhanced letterboxing
    • Build responsive UIs
      • Support different screen sizes
      • Navigation for responsive UIs
      • Migrate your UI to responsive layouts
      • Activity embedding
      • Multi-window support
      • Input compatibility on large screens
    • Build for foldables
      • Learn about foldables
      • Make your app fold aware
      • Test your app on foldables
  • Wear
    • Get started
    • Principles of Wear OS development
    • Upgrade to the latest version of Wear OS
    • Wear OS versus mobile development
    • Wear OS user interface
    • Getting started
      • Wear OS developer pathway
      • Create and run a wearable app
      • Debug a Wear OS app
      • Capture Wear UI screenshots
    • Overlays
      • Overview
      • Playing audio on wearables
      • Authentication
      • Standalone app
      • Request permissions
      • Detect location
      • Appear in Recents and App Resume
    • Building UI with Compose
      • Use Jetpack Compose on Wear OS
      • Buttons
      • Cards
      • Chips
      • Lists
      • Page indicators
      • Pickers
      • Position indicator
      • Progress indicator
      • Sliders
      • Steppers
      • Swipe to dismiss
      • Toggle chips
      • Time text
    • Building UI with Views
      • Build View-based UIs on Wear OS
      • Handle different watch shapes
      • Screen options
      • Create lists
      • Navigation
      • Exit full screen activities on Wear
      • Show confirmations
      • Keep your app visible on Wear
    • Tiles and complications
      • Tiles overview
      • Watch face complications
      • Expose data to complications
    • Notifications
      • Notifications on Wear OS
      • Bridging options for notifications
      • Ongoing Activities
    • Handling data
      • Send and sync data on Wear OS
      • Network access and sync on Wear OS
      • Access the Wearable Data Layer
      • Transfer assets
      • Send and receive messages
      • Handle data layer events
      • Sync data items with the Data Layer API
    • User input
      • Physical buttons
      • Rotary input
      • Create input method editors in Wear
      • Voice
    • Health services
      • Overview
      • Active data and exercise
      • Passive data updates
      • Use synthetic data providers
    • Design
      • Design principles
      • Getting started
      • Interaction types
      • Screen shapes
      • Notifications
      • Complications
      • Tiles
      • Tiles design system
      • Overlays
      • Ongoing activities
      • Confirmation overlay
      • Disconnection indicators
      • Permission messages
      • Selection controls
      • Launch and latency
      • Navigation
      • Permissions
      • Sign in
      • Hardware buttons
      • Color
      • Typography
      • Icons
      • Downloads
      • Wear Material Theming
    • Creating watch faces
      • Overview
      • Design watch faces
      • Build a watch face service
      • Draw watch faces
      • Adding complications to a watch face
      • Creating interactive watch faces
      • Provide configuration activities
      • Address common issues
      • Improve performace with hardware acceleration
      • Optimize performance and battery life
    • Watch Face Studio
      • Watch Face Studio
      • Keyboard shortcuts
      • Manage a Watch Face Studio project
      • Create a watch face with Watch Face Studio
      • Build complications in Watch Face Studio
      • Tag expressions
      • Language settings
      • Always-on in Watch Face Studio
      • Gyro effects
      • Build and upload from Watch Face Studio
      • Test your watch face
      • FAQ
    • Wear app quality
    • Package Wear OS apps
    • Distribute to Wear OS
    • Create Wear OS apps for China
    • Wear OS release notes
  • Android TV
    • Overview
    • Build TV Apps
      • Overview
      • Get started with TV apps
      • AndroidX TV libraries
      • Handle TV hardware
      • Manage TV controllers
      • Build TV layouts
      • On-screen keyboard
      • Create TV navigation
      • Best practices for driving engagement on Google TV
    • Build TV playback apps
      • Overview
      • UI guidance & Leanback API
        • Create a catalog browser
        • Provide a card view
        • Build a details view
        • Use transport controls
        • Playback controls on TV
        • Add a guided step
        • Introduce first-time users to your app
      • Implement a media session
      • Background playback in a Now Playing card
      • Audio capabilities
      • Match content frame rate
    • Help users find content on TV
      • Overview
      • Recommend TV content
        • Overview
        • Channels on the home screen
        • Video program attributes
        • Audio program attributes
        • Game program attributes
        • Watch Next
          • Add programs
          • Attributes
          • Guidelines for app developers
          • Guidelines for TV providers
        • Preview videos
        • Recommendations in Android N and earlier
      • Make TV apps searchable
      • Search within TV Apps
    • Build TV games
      • Overview
      • Use Stream Protect for latency-sensitive streaming apps
    • Build TV input services
      • Overview
      • Develop a TV input service
      • Work with channel data
      • Manage TV user interaction
      • Support time-shifting
      • Support content recording
    • TV Apps checklist
    • TV Accessibility
      • Accessibility best practices
      • TalkBack evaluation examples
      • Adopt system caption settings
      • Custom view accessibility support
      • Custom view accessibility sample
    • Releases
      • Android 12 for TV
      • Android 13 for TV (Beta)
        • Overview
        • What's new for TV
  • Android for Cars
    • Overview
    • Build media apps for cars
      • Build media apps for cars
      • Add support for Android Auto
      • Add support for Android Automotive OS
    • Build messaging apps for Android Auto
    • Build navigation and point of interest apps for cars
      • Using the Android for Cars App Library
      • Build point of interest apps for cars
      • Build navigation apps for cars
      • Add support for Android Auto
      • Add support for Android Automotive OS
    • Build video apps for Android Automotive OS
    • Test Android apps for cars
    • Distribute Android apps for cars
    • Google Play services for cars
    • Notifications on Android Automotive OS
  • Chrome OS devices
    • Overview
    • Building apps for Chrome OS
    • Optimizing Apps for Chrome OS
    • Preparing your development environment
    • App Manifest Compatibility for Chromebooks
    • Chrome OS Device Support for Apps
    • App Rendering Differences on Chromebooks
    • Window management
    • Adapting Games on Chrome OS
    • Smooth animation on Chrome OS
    • Test Cases for Android Apps on Chrome OS
  • App architecture
  • Introduction
  • Guide to app architecture
    • Overview
    • UI layer
      • Overview
      • UI events
    • Domain layer
    • Data layer
    • Learning pathway
  • Architecture Components
    • UI layer libraries
      • View binding
        • Overview
        • Migrate from Kotlin synthetics to view binding
      • Data binding library
        • Overview
        • Get started
        • Layouts and binding expressions
        • Work with observable data objects
        • Generated binding classes
        • Binding adapters
        • Bind layout views to Architecture Components
        • Two-way data binding
      • Lifecycle-aware components
        • Handle lifecycles
        • ViewModel
        • LiveData
        • Save UI states
        • Saved State module for ViewModel
        • Use Kotlin coroutines with lifecycle-aware components
      • Paging Library
        • Overview
        • Load and display paged data
        • Page from network and database
        • Transform data streams
        • Manage and present loading states
        • Test your Paging implementation
        • Migrate to Paging 3
        • Paging 2
          • Overview
          • Display paged lists
          • Load paged data
    • Data layer libraries
      • DataStore
      • WorkManager
        • Overview
        • Getting Started
        • How-To Guides
          • Defining your WorkRequests
          • Work states
          • Managing work
          • Observing intermediate Worker progress
          • Chaining work together
          • Testing Worker implementation
          • Integration tests with WorkManager
          • Debugging WorkManager
        • Advanced Concepts
          • Configuration and Initialization
          • Threading in WorkManager
            • Overview
            • Threading in Worker
            • Threading in CoroutineWorker
            • Threading in RxWorker
            • Threading in ListenableWorker
          • Support for long-running workers
        • Migrating from Firebase JobDispatcher
        • Migrating from GCMNetworkManager
  • App entry points
    • Activities
      • Introduction to activities
      • The activity lifecycle
      • Activity state changes
      • Test your activities
      • Tasks and back stack
      • Processes and app lifecycle
      • Parcelables and bundles
      • Loaders
      • Recents screen
      • Restrictions on starting activities from the background
    • App shortcuts
      • Overview
      • Create shortcuts
      • Add capabilities
      • Manage shortcuts
      • Best practices for shortcuts
  • App navigation
    • Principles of navigation
    • Design for different form factors
    • Handle configuration changes
    • Navigation component
      • Overview
      • Getting started
      • Create destinations
      • Design navigation graphs
      • Nested graphs
      • Global actions
      • Navigate to a destination
      • Conditional navigation
      • Pass data between destinations
      • Create a deep link for a destination
      • Animate transitions between destinations
      • Update UI components with NavigationUI
      • Kotlin DSL
      • Interact programmatically
      • Navigate with feature modules
      • Best practices for multi-module projects
      • Test navigation
      • Add new destination types
      • Migrate to the Navigation component
    • Fragments
      • Overview
      • Create a fragment
      • Fragment manager
      • Fragment transactions
      • Animate transitions between fragments
      • Fragment lifecycle
      • Saving state with fragments
      • Communicate with fragments
      • Working with the app bar
      • Displaying dialogs with DialogFragment
      • Debug your fragments
      • Test your fragments
    • App links
      • Overview
      • Enabling links to app content
      • Verify app links
      • Create app links for instant apps
    • Create swipe views with tabs using ViewPager
    • Create swipe views with tabs using ViewPager2
    • Provide custom back navigation
  • Dependency injection
    • Overview
    • Manual dependency injection
    • Dependency injection with Hilt
    • Hilt in multi-module apps
    • Use Hilt with other Jetpack libraries
    • Hilt testing guide
    • Hilt and Dagger annotations cheat sheet
    • Dagger
      • Dagger basics
      • Using Dagger in Android apps
      • Using Dagger in multi-module apps
  • App Startup
  • Core topics
  • App compatibility
    • Overview
    • Compatibility framework tools
    • Restrictions on non-SDK interfaces
  • Interact with other apps
    • Overview
    • Sending the user to another app
    • Getting a result from an activity
    • Allowing other apps to start your activity
    • Package visibility
      • Overview
      • Know which packages are visible automatically
      • Declare package visibility needs
      • Fulfill common use cases
      • Test package visibility
  • Intents and intent filters
    • Overview
    • Common intents
  • User interface
    • Overview
    • Layouts
      • Overview
      • Build a responsive UI with ConstraintLayout
      • Add motion to your layout with MotionLayout
        • Overview
        • Carousel with MotionLayout
        • MotionLayout examples
        • MotionLayout XML reference
          • Overview
          • <MotionScene>
          • <ConstraintSet>
          • <Constraint>
          • <Transition>
          • <onClick>
          • <onSwipe>
          • <KeyFrameSet>
          • <KeyPosition>
          • <KeyAttribute>
      • Create a list with RecyclerView
      • Advanced RecyclerView customization
      • Create a card-based layout
      • Create a two pane layout
      • Improving layout performance
        • Overview
        • Optimizing layout hierarchies
        • Re-using layouts with <include/>
        • Delayed loading of views
      • Linear layout
      • Adapter view
      • Relative layout
      • Custom view components
        • Overview
        • Creating a custom view class
        • Implementing custom drawing
        • Making the view interactive
        • Optimizing the view
      • Designing for foldables
    • Look and feel
      • Material design
      • Styles and themes
      • Dark theme
      • Rounded corners
      • Adaptive icons
      • Add a floating action button
      • Create shadows and clip views
      • Text
        • Autosizing TextViews
        • Downloadable fonts
        • Fonts in XML
        • Emoji
          • Support modern emoji
          • Emoji compatibility
        • Magnifier widget
        • Spans
      • Buttons
      • Checkboxes
      • Radio buttons
      • Toggle buttons
      • Spinners
      • Pickers
      • Tooltips
    • Notifications
      • Overview
      • Create a notification
      • Create an expandable notification
      • Display time-sensitive notifications
      • Start an activity from a notification
      • Create a group of notifications
      • Create and manage notification channels
      • Modify a notification Badge
      • Create a custom notification
    • Splash screens
      • Overview
      • Migrate your existing splash screen
    • Conversations
    • Bubbles
    • Add the app bar
      • Overview
      • Set up the app bar
      • Add and handle actions
      • Add an up action
      • Use action views and action providers
    • Window insets
      • Overview
      • Display edge-to-edge
      • Immersive mode
      • Support display cutouts
      • Control the software keyboard
    • Supporting swipe-to-refresh
      • Overview
      • Adding swipe-to-refresh to your app
      • Responding to a refresh gesture
    • Toasts overview
    • Pop-up messages overview
      • Overview
      • Build and display a pop-up message
      • Add an action to a message
    • Dialogs
    • Menus
    • Settings
      • Overview
      • Organize your settings
      • Customize your settings
      • Use saved values
      • Build a hierarchy in code
      • Handle other form factors
      • Preference components and attributes
    • Search
      • Overview
      • Creating a search interface
      • Adding recent query suggestions
      • Adding custom suggestions
      • Searchable configuration
      • Adding search functionality
        • Overview
        • Setting up the search interface
        • Storing and searching for data
        • Remaining backward compatible
    • Receive rich content
    • Copy and paste
    • Drag and drop
    • Picture-in-picture support
    • Creating backward-compatible UIs
      • Overview
      • Abstracting the new APIs
      • Proxying to the new APIs
      • Creating an implementation with older APIs
      • Using the version-aware component
    • Device control
    • Home channels for mobile apps
      • Overview
      • Media Home Books
      • Media Home Video
      • Media Home Audio
  • App widgets
    • Overview
    • Create a simple widget
    • Enhance your widget
    • Create an advanced widget
    • Use widget collections
    • Provide flexible widget layouts
    • Enable widget configuration
    • Build an app widget host
  • Animations & transitions
    • Overview
    • Introduction to animations
    • Property animation overview
    • Animate drawable graphics
    • Reveal or hide a view using animation
    • Move a view using animation
    • Move a view using a fling animation
    • Enlarge a view using a zoom animation
    • Animate movement using spring physics
    • Auto animate layout updates
    • Animate layout changes using a transition
    • Create a custom transition animation
    • Start an activity using an animation
    • Slide between fragments using ViewPager
    • Slide between fragments using ViewPager2
    • Migrate from ViewPager to ViewPager2
    • Additional resources
  • Images & graphics
    • Overview
    • Drawables overview
    • Vector drawables overview
    • Handling bitmaps
    • Selecting colors with the palette API
    • Reducing image download sizes
    • Hardware acceleration
    • Drawing with AGSL shaders
      • Overview
      • Differences between AGSL and GLSL
      • Using AGSL in your Android app
      • AGSL Quick Reference
    • OpenGL ES
    • Displaying graphics with OpenGL ES
      • Overview
      • Building an OpenGL ES environment
      • Defining shapes
      • Drawing shapes
      • Applying projection and camera views
      • Adding motion
      • Responding to touch events
    • Rendering
      • Overview
      • Reducing overdraw
      • Performance and view hierarchies
      • Analyzing with profile GPU rendering
    • Enhancing graphics with wide color content
  • Audio & video
    • Audio & video overview
    • Media controls
    • Supported media formats
    • Media codecs
    • Media app architecture
      • Media app architecture overview
      • Using a media session
      • Building an audio app
        • Audio app overview
        • Building a media browser service
        • Building a media browser client
        • Media session callbacks
        • Using the media controller test app
      • Building a video app
        • Video app overview
        • Building a video player activity
        • Media session callbacks
        • Compatible media transcoding
      • Responding to media buttons
      • Handling changes in audio output
      • Manage audio focus
    • The Google Assistant
      • The Google Assistant and media apps
      • Media apps on Google Assistant driving mode
    • Routing between devices
      • Routing overview
      • MediaRouter overview
      • MediaRouteProvider overview
    • Control amplitude with VolumeShaper
    • MediaPlayer overview
    • MediaRecorder overview
    • ExoPlayer
    • Sharing audio input
    • Capture video and audio playback
    • Frame rate
    • Best practices for sharing video
    • Additional Resources for Media
  • Services
    • Overview
    • Foreground services
    • Bound services
    • AIDL overview
  • Background tasks
    • Overview
    • Background threads
    • Background optimizations
    • Broadcasts
      • Overview
      • Implicit Broadcast Exceptions
    • Manage device awake state
      • Overview
      • Keep the device awake
      • Schedule alarms
    • Using a ListenableFuture
  • Permissions
    • Overview
    • Evaluate whether your app needs permissions
    • Declare app permissions
    • Request app permissions
    • Explain access to more sensitive information
    • App permissions best practices
    • Permissions used only in default handlers
    • Restrict interactions with other apps
    • Define custom permissions
  • App data & files
    • Overview
    • Storage overview
    • Save to app-specific storage
    • Save to shared storage
      • Overview
      • Media
      • Documents and other files
      • Datasets
    • Manage all files on a storage device
    • Save key-value data
    • Save data in a local database
      • Overview
      • Define data using entities
      • Access data using DAOs
      • Define relationships between objects
      • Write asynchronous DAO queries
      • Create views into a database
      • Prepopulate your database
      • Migrate your database
      • Test and debug your database
      • Reference complex data
      • Migrate from SQLite to Room
      • Save data using SQLite
    • Storage use cases and best practices
    • Sharing simple data
      • Overview
      • Sending simple data to other apps
      • Receiving simple data from other apps
    • Sharing files
      • Overview
      • Setting up file sharing
      • Sharing a file
      • Requesting a shared file
      • Retrieving file information
    • Sharing files with NFC
      • Overview
      • Sending files to another device
      • Receiving files from another device
    • Printing files
      • Overview
      • Printing photos
      • Printing HTML documents
      • Printing custom documents
    • Content providers
      • Overview
      • Content provider basics
      • Creating a content provider
      • Open files using storage access framework
      • Create a custom document provider
    • App install location
  • User data & identity
    • Overview
    • Add sign-in workflow
    • Show a biometric authentication dialog
    • Autofill framework
      • Overview
      • Optimize your app for autofill
      • Build autofill services
      • Integrate autofill with keyboards
    • Identify developer-owned apps
    • Review how your app collects and shares user data
    • Audit data access
    • Get a user-resettable advertising ID
    • Calendar provider overview
    • Contacts provider
      • Overview
      • Retrieving a list of contacts
      • Retrieving details for a contact
      • Modifying contacts using intents
      • Displaying the quick contact badge
    • Account transfer
    • Data backup
      • Overview
      • Back up user data
      • Back up key-value pairs
      • Test backup and restore
    • Best practices for unique identifiers
    • Remember and authenticate users
      • Overview
      • Remember your user
      • Authenticate to OAuth2 services
      • Create a custom account type
  • User location
    • Overview
    • Request location permissions
    • Get the last known location
    • Change location settings
    • Request location updates
    • Access location in the background
    • Create and monitor geofences
    • Detect when users start an activity
    • Optimize location for battery
    • Test location workflows
    • Migrate to location and context APIs
    • Add maps
  • Touch & input
    • Overview
    • Input events
    • Using touch gestures
      • Overview
      • Detect common gestures
      • Track touch and pointer movements
      • Animate a scroll gesture
      • Support navigation gestures
      • Handle multi-touch gestures
      • Drag and scale
      • Manage touch events in a ViewGroup
    • Handling keyboard input
      • Overview
      • Specifying the input method type
      • Handling input method visibility
      • Supporting keyboard navigation
      • Handling keyboard actions
    • Supporting game controllers
      • Overview
      • Handling controller actions
      • Supporting controllers across Android versions
      • Supporting multiple game controllers
    • Input method editors
      • Creating an input method
      • Image keyboard
    • Spelling checker
  • Camera
    • Choose a camera library
    • CameraX
      • Overview
      • Architecture
      • Configuration
      • Use cases
        • Preview
        • Image capture
        • Image analysis
        • Video capture
      • Advanced topics
        • Extensions API
        • Transform output
        • Rotations
      • Devices
    • Camera2
      • Overview
      • Camera capture sessions and requests
      • Camera lenses and capabilities
      • Use multiple camera streams simultaneously
      • Camera preview
      • Multi-Camera API
      • Extensions API
    • Camera (deprecated)
      • Overview
      • Take photos
      • Record videos
      • Control the camera
      • Camera API
  • Sensors
    • Overview
    • Sensors overview
    • Motion sensors
    • Position sensors
    • Environment sensors
    • Raw GNSS measurements
  • Connectivity
    • Overview
    • Performing network operations
      • Overview
      • Connect to the network
      • Manage network usage
      • Reading network state
      • Optimize network access
      • Optimize network data usage
      • Monitor connectivity status and connection metering
      • Parse XML data
    • Perform network operations using Cronet
      • Overview
      • Send a simple request
      • Cronet request lifecycle
      • Use Cronet with other libraries
      • Reference
        • org.chromium.net
          • Overview
          • CallbackException
          • CronetEngine
            • Overview
            • CronetEngine.Builder
              • Overview
              • LibraryLoader
          • CronetException
          • InlineExecutionProhibitedException
          • NetworkException
          • QuicException
          • UploadDataProvider
          • UploadDataProviders
          • UploadDataSink
          • UrlRequest
            • Overview
            • Builder
            • Callback
            • Status
            • StatusListener
          • UrlResponseInfo
            • Overview
            • HeaderBlock
    • Enhance your apps with 5G
    • Build client-server applications with gRPC
    • Transferring data without draining the battery
      • Overview
      • Optimize downloads for efficient network access
      • Minimize the effect of regular updates
      • Avoid unoptimized downloads
      • Modify patterns based on the connectivity type
    • Reduce network battery drain
      • Overview
      • Collecting network traffic data
      • Analyzing data traffic
      • Optimize network access
      • Optimize user-initiated network use
      • Optimize app-initiated network use
      • Optimize server-initiated network use
      • Optimizing general network use
    • Transfer data using Sync Adapters
      • Overview
      • Create a Stub Authenticator
      • Create a Stub Content Provider
      • Create a Sync Adapter
      • Run a Sync Adapter
    • Bluetooth
      • Overview
      • Set up Bluetooth
      • Find Bluetooth devices
      • Connect Bluetooth devices
      • Transfer Bluetooth data
      • Bluetooth permissions
      • Bluetooth profiles
      • Companion device pairing
    • Bluetooth Low Energy
      • Overview
      • Find BLE devices
      • Connect to a GATT server
      • Transfer BLE data
    • NFC
      • Overview
      • NFC basics
      • Advanced NFC
      • Host-based card emulation overview
    • Telecom
      • Overview
      • Build a calling app
      • Prevent caller ID spoofing
      • Telephony IDs
    • Wi-Fi
      • Wi-Fi scanning overview
      • Wi-Fi peer-to-peer
      • Wi-Fi Aware overview
      • Wi-Fi location with RTT
      • Local Only Hotspot
      • Wi-Fi infrastructure
        • Wi-Fi infrastructure overview
        • Wi-Fi suggestion API for internet connectivity
        • Wi-Fi Network Request API for peer-to-peer connectivity
        • Passpoint
        • Save networks and Passpoint configurations
    • USB
      • Overview
      • Accessory overview
      • Host overview
    • VPN
    • Session initiation protocol overview
    • Discover and connect
      • Overview
      • Use network service discovery
      • Create P2P connections with Wi-Fi
      • Use Wi-Fi P2P for service discovery
      • Wi-Fi Easy Connect
    • Open Mobile API reader support
  • Renderscript
    • Overview
    • Advanced RenderScript
    • Migrate from RenderScript
    • Runtime API reference
      • Overview
      • Numerical types
      • Object types
      • Conversion functions
      • Mathematical constants and functions
      • Vector math functions
      • Matrix functions
      • Quaternion functions
      • Atomic update functions
      • Time functions and types
      • Allocation data access functions
      • Object characteristics functions
      • Kernel invocation functions and types
      • Input/output functions
      • Debugging functions
      • Graphics functions and types
      • Index
  • Web-based content
    • Overview
    • Building web apps in WebView
    • Managing WebView objects
    • Load local content
    • Darken web content
    • User privacy in WebView crash reporting
    • Supporting different screens in web apps
    • Debugging web apps
    • Best practices for web apps
    • Testing against future versions of WebView
  • Android App Bundles
    • Overview
    • Configure the base module
    • Build and test your app bundle
    • Add code transparency
    • The app bundle format
    • Frequently asked questions
  • Google Play
    • Google Play Billing
    • Google Play Core libraries
    • Play Points
      • Overview
      • Create products and promotions
      • Detect and deliver products
      • Test products
    • Play Asset Delivery
      • Overview
      • Integrate asset delivery (Kotlin & Java)
      • Integrate asset delivery (native)
      • Integrate asset delivery (Unity)
      • Target texture compression formats
      • Test asset delivery
    • Play Feature Delivery
      • Overview
      • Configure install-time delivery
      • Configure conditional delivery
      • Configure on-demand delivery
      • On-demand delivery best practices
      • Configure instant delivery
      • Additional resources
    • In-app reviews
      • Overview
      • Integrate using Kotlin or Java
      • Integrate using native code
      • Integrate using Unity
      • Test in-app reviews
    • In-app updates
      • Overview
      • Support in-app updates (Kotlin or Java)
      • Support in-app updates (Native)
      • Support in-app updates (Unity)
      • Test in-app updates
    • Google Play Instant
      • Overview of Google Play Instant
      • Get started with instant apps
        • Create an instant-enabled app bundle
        • UX best practices for apps
      • Get started with instant games
        • Overview
        • Unity plugin
        • UX best practices for games
        • Migrate to Android App Bundles
        • Implement cloud delivery of assets
        • Support Google Play Games Services
        • Instant Play games
        • Instant Play games checklist
      • Reduce the size of your instant app or game
      • Add ads to your instant app or game
      • Provide multiple entry points
      • Integrate with Firebase
        • Add Google Analytics for Firebase to your instant app
        • Use Firebase Dynamic Links with instant apps
      • Technical requirements checklist
      • Google Play Instant policy
      • Resources
        • Reference
        • Code samples
        • SDK release notes
        • Instant App Intents
      • Support
        • Known issues
        • StackOverflow
    • Play Developer API
    • Play Install Referrer
      • Overview
      • Play Install Referrer Library
        • Overview
        • Reference
        • Release notes
      • Play Install Referrer API
    • Play Integrity API
    • Play Requirements
      • Play Policies
      • Target API Level
      • Support 64-bit architectures
    • Application Licensing
      • Overview
      • Licensing Overview
      • Setting Up for Licensing
      • Adding Server-Side Verification
      • Adding Client-Side Verification
      • Licensing Reference
    • APK Expansion Files
  • App Actions
  • Slices
    • Overview
    • Getting Started
    • Slice templates
  • On-device search
  • Games
  • Develop
    • Overview
    • Android Game Development Kit (AGDK)
      • Overview
      • Libraries
      • Download
      • Release notes
    • Android Studio
    • Android Game Development Extension for Visual Studio
      • Overview
      • Quickstart
      • Configure a project
      • Debugger
      • Measure app performance
      • Modify build.gradle files for Android Studio
      • Samples
      • Release notes
    • Android GPU Inspector
      • Overview
      • Quickstart
      • Supported devices
      • System profiling
        • Overview
        • View a system profile
        • GPU performance counters
        • Analyze a system profile
          • Frame processing times
          • Memory efficiency
          • Texture memory bandwidth usage
          • Vertex memory bandwidth usage
          • Thread scheduling
      • Frame profiling
        • Overview
        • Analyze a frame profile
          • Most expensive render passes
          • Vertex formats
          • Shader performance
        • Frame Profiler UI
          • Performance pane
          • Commands pane
          • Framebuffer pane
          • Geometry pane
          • Report pane
          • Shader pane
          • Memory pane
          • State pane
          • Textures pane
          • Texture pane
          • Pipeline view pane
      • Supported Vulkan extensions
      • Troubleshoot
    • Android Performance Tuner
    • Memory Advice API
      • Overview
      • Get started
  • Improve
    • Improve game performance
    • Reduce game size
    • Improve device availability
      • Support 64-bit architectures
      • Support all screens
    • Game Mode
      • Overview
      • Optimize with Game Mode API
      • Game Mode interventions
    • Vulkan and OpenGL
      • 3D asset optimization
      • Vulkan Prerotation
      • Vertex data management
  • Distribute
    • Overview
    • Google Play Games Services
      • Overview
      • Get started
      • Downloads
      • Features
        • Achievements
        • Leaderboards
        • Events
        • Saved games
        • Friends
        • Sign-in
      • Play Console setup
        • Set up Play Games Services
        • Enable features
        • Test and publish
      • Development tasks
        • C++
          • Get started
        • Android
          • Get started
          • Sign-in
          • Enable server-side access
          • Add features
            • Achievements
            • Leaderboards
            • Friends
            • Saved games
            • Events
            • Player stats
          • Logging
          • Troubleshooting
        • Publishing API
          • Overview
          • Get started
          • Upload images
        • Management API
      • Requirements and guidelines
        • Quality checklist
        • Branding guidelines
        • Quota and rate limits
        • Data disclosure requirements
        • Terms of service
    • Google Play Games for PC
      • Overview
      • Get started
      • Set up your game
        • PC compatibility
        • Graphics configuration
        • Device input
          • Set up input
          • Input SDK
            • Overview
            • Quickstart
        • Continuity
          • Overview
          • Continuity requirements
          • Verifying requirements
          • Existing identity solutions
      • Use the emulator
      • Test on Chrome OS
      • Publish and deploy
        • Package
        • Submit
        • Update
      • FAQ
    • Google Play Instant
    • Play as you download
  • Health & fitness apps
  • Health Connect
    • Introduction
    • Platform overview
      • Architecture
      • Developer functionality
    • Get started
    • Data and data types
      • Introduction
      • Data types
      • Differential changes API
    • Common workflows
      • Write data
      • Read data
      • Delete data
      • Aggregate data
      • Work with sessions
      • Exceptions
    • Frequently asked questions
  • Health Connect guidelines
    • Health Connect policy requirement FAQs
    • Migrate
      • Health Connect API comparison guide
      • Fit Android API to Health Connect migration guide
  • Best practices
  • Testing
    • Test apps on Android
    • Fundamentals
      • Fundamentals of testing Android apps
      • What to test in Android
      • Using test doubles in Android
    • Local tests
      • Build local tests
    • Instrumented tests
      • Build instrumented tests
      • Automate UI tests
      • AndroidX test libraries
        • Set up project for AndroidX Test
        • JUnit4 rules with AndroidX Test
        • AndroidJUnitRunner
    • Espresso
      • Espresso
      • Espresso basics
      • Espresso setup instructions
      • Espresso cheat sheet
      • Espresso idling resources
      • Espresso-Intents
      • Espresso lists
      • Multiprocess Espresso
      • Espresso recipes
      • Espresso Web
      • Accessibility checking
      • Additional Resources for Espresso
    • Testing other components
      • Test content providers
      • Test your service
      • Write automated tests with UI Automator
  • Performance
    • Overview
    • Inspecting performance
      • Android Studio Profilers
      • Profiling and tracing
        • System tracing
          • Overview
          • Capture trace
            • Capture a trace in Android Studio
            • Capture a trace on a device
            • Capture a trace from the command line
          • Navigate a report
          • Custom events
            • Define custom events
            • Custom trace events in native code
        • Inspect GPU rendering
      • Benchmarking
        • Overview
        • Macrobenchmark
          • Writing a benchmark
          • Capture the metrics
          • Control your app
          • Adding instrumentation arguments
        • Microbenchmark
          • Overview
          • Writing a benchmark
          • Profiling a benchmark
          • Adding instrumentation arguments
          • Building without Gradle
        • Benchmarking in CI
    • Improving performance
      • Baseline Profiles
      • App startup library
      • Guides
        • Working in the background
        • Performance class
        • App Standby Buckets
        • App Hibernation
        • Verifying App Behavior on the Android Runtime (ART)
      • Solving common problems
        • App Startup
        • Slow rendering
          • Keeping your app responsive
          • Improving layout performance
          • Rendering
        • Memory
          • Overview of memory management
          • Memory allocation among properties
          • Manage your app's memory
          • Processes and threads
        • Battery and power
          • Optimize for doze and app standby
          • Monitor the battery level and charging state
          • Monitor connectivity status and connection metering
          • Determing and monitor docking state and type
          • Profile battery usage with Batterystats and Battery Historian
          • Analyze power use with Battery Historian
          • Test power-related issues
          • Background optimizations
        • Reduce app size
    • Monitoring performance
      • Android Vitals
        • Overview
        • Stuck Partial Wake Locks
        • Excessive Wakeups
        • Excessive Background Wi-Fi Scans
        • Excessive Background Network Usage
        • ANRs
        • Crashes
        • Slow Rendering
        • Frozen Frames
        • Permission Denials
        • App Startup Time
      • JankStats library
  • Accessibility
    • Overview
    • Build and test apps for accessibility
      • Make apps more accessible
      • Principles for improving app accessibility
      • Test your app's accessibility
    • Advanced topics
      • Make custom views more accessible
      • Create your own accessibility service
    • Additional resources
  • Privacy
    • Privacy best practices
  • Security
    • App security best practices
    • Security tips
    • Security with data
    • Security with data across additional Android versions
    • Security with HTTPS and SSL
    • Network security configuration
    • Updating your security provider to protect against SSL exploits
    • Protecting against security threats with SafetyNet
      • Overview
      • SafetyNet Attestation API
      • SafetyNet Safe Browsing API
      • SafetyNet reCAPTCHA API
      • SafetyNet Verify Apps API
    • Cryptography
    • Android Keystore System
    • Verifying hardware-backed key pairs with key attestation
    • Android Protected Confirmation
    • Supporting Direct Boot
    • Running embedded DEX code
    • App security improvement program
  • SDKs
    • SDK best practices
  • Build for Billions
    • Overview
    • Connectivity
    • Device capability
    • Data cost
    • Battery consumption
    • UI and content
  • Build for Enterprise
    • Overview
    • Developer guide
    • Work profiles
    • Set up managed configurations
    • App feedback
      • Send app feedback to EMMs
      • Test app feedback
    • Work contacts
    • Device management policies
    • Device management
      • Overview
      • Build a device policy controller
      • Dedicated devices
        • Overview
        • Lock task mode
        • Multiple users
        • Cookbook
      • Device control
      • Networking and telephony
      • Security
      • System updates
      • Network activity logging
    • Android versions
      • Overview
      • Android 12
      • Android 11
      • Android 10
      • Android 9
      • Android 8.0
      • Android 7.0
    • Device administration
  • Android Developers
  • Docs
  • Guides

Additional Resources for Accessibility

Codelabs

  • Basic Android Accessibility
  • Developing an Accessibility Service for Android
  • Blog posts

  • Accessibility: Are You Serving All Your Users?
  • 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 2021-07-17 UTC.

    • Twitter Twitter
      Follow @AndroidDev on Twitter
    • YouTube YouTube
      Check out Android Developers on YouTube
    • LinkedIn LinkedIn
      Connect with the Android Developers community on LinkedIn
    • More Android

      • Android
      • Android for Enterprise
      • Security
      • Source
      • News
      • Blog
      • Podcasts
    • Discover

      • Gaming
      • Machine Learning
      • Privacy
      • 5G
    • Android Devices

      • Large screens
      • Wear OS
      • Android TV
      • Android for cars
      • Android Things
      • Chrome OS devices
    • Releases

      • Android 11
      • Android 10
      • Pie
      • Oreo
      • Nougat
      • Marshmallow
      • Lollipop
      • KitKat
    • Documentation and Downloads

      • Android Studio guide
      • Developers guides
      • API reference
      • Download Studio
      • Android NDK
    • Support

      • Report platform bug
      • Report documentation bug
      • Google Play support
      • Join research studies
    Google Developers
    • Android
    • Chrome
    • Firebase
    • Google Cloud Platform
    • All products
    • Privacy
    • License
    • Brand guidelines
    • Get news and tips by email Subscribe