CINXE.COM
Car app quality | App quality | Android Developers
<!doctype html> <html lang="en" dir="ltr"> <head> <meta name="google-signin-client-id" content="721724668570-nbkv1cfusk7kk4eni4pjvepaus73b13t.apps.googleusercontent.com"> <meta name="google-signin-scope" content="profile email https://www.googleapis.com/auth/developerprofiles https://www.googleapis.com/auth/developerprofiles.award"> <meta property="og:site_name" content="Android Developers"> <meta property="og:type" content="website"><meta name="theme-color" content="#34a853"><meta charset="utf-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="manifest" href="/_pwa/android/manifest.json" crossorigin="use-credentials"> <link rel="preconnect" href="//www.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.gstatic.com" crossorigin> <link rel="preconnect" href="//fonts.googleapis.com" crossorigin> <link rel="preconnect" href="//apis.google.com" crossorigin> <link rel="preconnect" href="//www.google-analytics.com" crossorigin><link rel="stylesheet" href="//fonts.googleapis.com/css?family=Google+Sans:400,500,600,700|Google+Sans+Text:400,400italic,500,500italic,600,600italic,700,700italic|Roboto+Mono:400,500,700&display=swap"> <link rel="stylesheet" href="//fonts.googleapis.com/css2?family=Material+Icons&family=Material+Symbols+Outlined&display=block"><link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/css/app.css"> <link rel="stylesheet" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/css/dark-theme.css" disabled> <link rel="shortcut icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/images/favicon.svg"> <link rel="apple-touch-icon" href="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/images/touchicon-180.png"><link rel="canonical" href="https://developer.android.com/docs/quality-guidelines/car-app-quality"><link rel="search" type="application/opensearchdescription+xml" title="Android Developers" href="https://developer.android.com/s/opensearch.xml"> <link rel="alternate" hreflang="en" href="https://developer.android.com/docs/quality-guidelines/car-app-quality" /><link rel="alternate" hreflang="x-default" href="https://developer.android.com/docs/quality-guidelines/car-app-quality" /><link rel="alternate" hreflang="ar" href="https://developer.android.com/docs/quality-guidelines/car-app-quality?hl=ar" /><link rel="alternate" hreflang="bn" href="https://developer.android.com/docs/quality-guidelines/car-app-quality?hl=bn" /><link rel="alternate" hreflang="zh-Hans" href="https://developer.android.com/docs/quality-guidelines/car-app-quality?hl=zh-cn" /><link rel="alternate" hreflang="zh-Hant" href="https://developer.android.com/docs/quality-guidelines/car-app-quality?hl=zh-tw" /><link rel="alternate" hreflang="fa" href="https://developer.android.com/docs/quality-guidelines/car-app-quality?hl=fa" /><link rel="alternate" hreflang="fr" href="https://developer.android.com/docs/quality-guidelines/car-app-quality?hl=fr" /><link rel="alternate" hreflang="de" href="https://developer.android.com/docs/quality-guidelines/car-app-quality?hl=de" /><link rel="alternate" hreflang="he" href="https://developer.android.com/docs/quality-guidelines/car-app-quality?hl=he" /><link rel="alternate" hreflang="hi" href="https://developer.android.com/docs/quality-guidelines/car-app-quality?hl=hi" /><link rel="alternate" hreflang="id" href="https://developer.android.com/docs/quality-guidelines/car-app-quality?hl=id" /><link rel="alternate" hreflang="it" href="https://developer.android.com/docs/quality-guidelines/car-app-quality?hl=it" /><link rel="alternate" hreflang="ja" href="https://developer.android.com/docs/quality-guidelines/car-app-quality?hl=ja" /><link rel="alternate" hreflang="ko" href="https://developer.android.com/docs/quality-guidelines/car-app-quality?hl=ko" /><link rel="alternate" hreflang="pl" href="https://developer.android.com/docs/quality-guidelines/car-app-quality?hl=pl" /><link rel="alternate" hreflang="pt-BR" href="https://developer.android.com/docs/quality-guidelines/car-app-quality?hl=pt-br" /><link rel="alternate" hreflang="ru" href="https://developer.android.com/docs/quality-guidelines/car-app-quality?hl=ru" /><link rel="alternate" hreflang="es-419" href="https://developer.android.com/docs/quality-guidelines/car-app-quality?hl=es-419" /><link rel="alternate" hreflang="th" href="https://developer.android.com/docs/quality-guidelines/car-app-quality?hl=th" /><link rel="alternate" hreflang="tr" href="https://developer.android.com/docs/quality-guidelines/car-app-quality?hl=tr" /><link rel="alternate" hreflang="vi" href="https://developer.android.com/docs/quality-guidelines/car-app-quality?hl=vi" /><title>Car app quality | App quality | Android Developers</title> <meta property="og:title" content="Car app quality | App quality | Android Developers"><meta property="og:url" content="https://developer.android.com/docs/quality-guidelines/car-app-quality"><meta property="og:image" content="https://developer.android.com/static/images/social/android-developers.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="675"><meta property="og:locale" content="en"><meta name="twitter:card" content="summary_large_image"><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "headline": "Car app quality" } </script><script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [{ "@type": "ListItem", "position": 1, "name": "App quality", "item": "https://developer.android.com/quality" },{ "@type": "ListItem", "position": 2, "name": "Car app quality", "item": "https://developer.android.com/docs/quality-guidelines/car-app-quality" }] } </script> <link rel="stylesheet" href="/extras.css"></head> <body class="" template="page" theme="android-theme" type="article" appearance layout="docs" display-toc pending> <devsite-progress type="indeterminate" id="app-progress"></devsite-progress> <section class="devsite-wrapper"> <devsite-cookie-notification-bar></devsite-cookie-notification-bar><devsite-header role="banner"> <div class="devsite-header--inner nocontent"> <div class="devsite-top-logo-row-wrapper-wrapper"> <div class="devsite-top-logo-row-wrapper"> <div class="devsite-top-logo-row"> <button type="button" id="devsite-hamburger-menu" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Navigation menu button" visually-hidden aria-label="Open menu"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="androidDevelopers" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <source srcset="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/images/lockup-dark-theme.svg" media="(prefers-color-scheme: dark)" class="devsite-dark-theme" alt="Android Developers"> <img src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/images/lockup.svg" class="devsite-site-logo" alt="Android Developers"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> <div class="devsite-top-logo-row-middle"> <div class="devsite-header-upper-tabs"> <devsite-tabs class="upper-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Upper tabs"> <tab class="devsite-dropdown devsite-dropdown-full "> <a href="https://developer.android.com/get-started" track-metadata-eventdetail="https://developer.android.com/get-started" class="devsite-tabs-content gc-analytics-event android-dropdown-tab" track-type="nav" track-metadata-position="nav - essentials" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Essentials" track-name="essentials" > Essentials </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Essentials" track-type="nav" track-metadata-eventdetail="https://developer.android.com/get-started" track-metadata-position="nav - essentials" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Essentials" track-name="essentials" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column android-dropdown android-dropdown-primary android-dropdown-studio"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Gemini in Android Studio</li> <li class="devsite-nav-description">Your AI development companion for Android development. </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/gemini-in-android" track-type="nav" track-metadata-eventdetail="https://developer.android.com/gemini-in-android" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="gemini in android studio" tooltip class="button button-primary" > <div class="devsite-nav-item-title"> Learn more </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/studio" track-type="nav" track-metadata-eventdetail="https://developer.android.com/studio" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="gemini in android studio" tooltip class="button button-white" > <div class="devsite-nav-item-title"> Get Android Studio </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-launch"> <li class="devsite-nav-title" role="heading" tooltip>Get started</li> <li class="devsite-nav-description">Start by creating your first app. Go deeper with our training courses or explore app development on your own. </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/get-started/overview" track-type="nav" track-metadata-eventdetail="https://developer.android.com/get-started/overview" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Hello world </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/courses" track-type="nav" track-metadata-eventdetail="https://developer.android.com/courses" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Training courses </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/get-started/codelabs" track-type="nav" track-metadata-eventdetail="https://developer.android.com/get-started/codelabs" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Tutorials </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/kotlin" track-type="nav" track-metadata-eventdetail="https://developer.android.com/kotlin" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Kotlin for Android </div> </a> </li> <li class="devsite-nav-item"> <a href="https://play.google.com/console/about/guides/monetize/" track-type="nav" track-metadata-eventdetail="https://play.google.com/console/about/guides/monetize/" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get started" tooltip > <div class="devsite-nav-item-title"> Monetization with Play ↗️ </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-multiple-screens"> <li class="devsite-nav-title" role="heading" tooltip>Extend by device</li> <li class="devsite-nav-description">Build apps that give your users seamless experiences from phones to tablets, watches, and more. </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/adaptive-apps" track-type="nav" track-metadata-eventdetail="https://developer.android.com/adaptive-apps" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="extend by device" tooltip > <div class="devsite-nav-item-title"> Adaptive apps </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/wear" track-type="nav" track-metadata-eventdetail="https://developer.android.com/wear" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="extend by device" tooltip > <div class="devsite-nav-item-title"> Wear OS </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/cars" track-type="nav" track-metadata-eventdetail="https://developer.android.com/cars" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="extend by device" tooltip > <div class="devsite-nav-item-title"> Android for Cars </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/tv" track-type="nav" track-metadata-eventdetail="https://developer.android.com/tv" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="extend by device" tooltip > <div class="devsite-nav-item-title"> Android TV </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/chrome-os" track-type="nav" track-metadata-eventdetail="https://developer.android.com/chrome-os" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="extend by device" tooltip > <div class="devsite-nav-item-title"> ChromeOS </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/multi-device-development" track-type="nav" track-metadata-eventdetail="https://developer.android.com/multi-device-development" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="extend by device" tooltip > <div class="devsite-nav-item-title"> Cross-device SDK </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-platform"> <li class="devsite-nav-title" role="heading" tooltip>Build by category</li> <li class="devsite-nav-description">Learn to build for your use case by following Google's prescriptive and opinionated guidance. </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/games" track-type="nav" track-metadata-eventdetail="https://developer.android.com/games" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="build by category" tooltip > <div class="devsite-nav-item-title"> Games </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/media" track-type="nav" track-metadata-eventdetail="https://developer.android.com/media" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="build by category" tooltip > <div class="devsite-nav-item-title"> Camera & Media </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/social-and-messaging" track-type="nav" track-metadata-eventdetail="https://developer.android.com/social-and-messaging" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="build by category" tooltip > <div class="devsite-nav-item-title"> Social & messaging </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/health-and-fitness" track-type="nav" track-metadata-eventdetail="https://developer.android.com/health-and-fitness" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="build by category" tooltip > <div class="devsite-nav-item-title"> Health & Fitness </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/productivity" track-type="nav" track-metadata-eventdetail="https://developer.android.com/productivity" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="build by category" tooltip > <div class="devsite-nav-item-title"> Productivity </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/work/overview" track-type="nav" track-metadata-eventdetail="https://developer.android.com/work/overview" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="build by category" tooltip > <div class="devsite-nav-item-title"> Enterprise apps </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-stars"> <li class="devsite-nav-title" role="heading" tooltip>Get the latest</li> <li class="devsite-nav-description">Stay in touch with the latest releases throughout the year, join our preview programs, and give us your feedback. </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/latest-updates" track-type="nav" track-metadata-eventdetail="https://developer.android.com/latest-updates" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get the latest" tooltip > <div class="devsite-nav-item-title"> Latest updates </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/latest-updates/experimental" track-type="nav" track-metadata-eventdetail="https://developer.android.com/latest-updates/experimental" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get the latest" tooltip > <div class="devsite-nav-item-title"> Experimental updates </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/studio/preview" track-type="nav" track-metadata-eventdetail="https://developer.android.com/studio/preview" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get the latest" tooltip > <div class="devsite-nav-item-title"> Android Studio preview </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/jetpack/androidx/versions" track-type="nav" track-metadata-eventdetail="https://developer.android.com/jetpack/androidx/versions" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get the latest" tooltip > <div class="devsite-nav-item-title"> Jetpack & Compose libraries </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/training/wearables/versions/4" track-type="nav" track-metadata-eventdetail="https://developer.android.com/training/wearables/versions/4" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get the latest" tooltip > <div class="devsite-nav-item-title"> Wear OS preview </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design-for-safety/privacy-sandbox" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design-for-safety/privacy-sandbox" track-metadata-position="nav - essentials" track-metadata-module="tertiary nav" track-metadata-module_headline="get the latest" tooltip > <div class="devsite-nav-item-title"> Privacy Sandbox </div> </a> </li> </ul> </div> </div> </div> </tab> <tab class="devsite-dropdown devsite-dropdown-full devsite-active "> <a href="https://developer.android.com/design" track-metadata-eventdetail="https://developer.android.com/design" class="devsite-tabs-content gc-analytics-event android-dropdown-tab" track-type="nav" track-metadata-position="nav - design & plan" track-metadata-module="primary nav" aria-label="Design & Plan, selected" data-category="Site-Wide Custom Events" data-label="Tab: Design & Plan" track-name="design & plan" > Design & Plan </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Design & Plan" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design" track-metadata-position="nav - design & plan" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Design & Plan" track-name="design & plan" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-layout"> <li class="devsite-nav-title" role="heading" tooltip>UI Design</li> <li class="devsite-nav-description">Design a beautiful user interface using Android best practices.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design/ui" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design/ui" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="ui design" tooltip > <div class="devsite-nav-item-title"> Design for Android </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design/ui/mobile" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design/ui/mobile" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="ui design" tooltip > <div class="devsite-nav-item-title"> Mobile </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design/ui/large-screens" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design/ui/large-screens" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="ui design" tooltip > <div class="devsite-nav-item-title"> Large screens (e.g., tablets) </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design/ui/widget" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design/ui/widget" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="ui design" tooltip > <div class="devsite-nav-item-title"> Widgets </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design/ui/wear" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design/ui/wear" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="ui design" tooltip > <div class="devsite-nav-item-title"> Wear OS </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/design/ui/tv" track-type="nav" track-metadata-eventdetail="https://developer.android.com/design/ui/tv" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="ui design" tooltip > <div class="devsite-nav-item-title"> Android TV </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-design"> <li class="devsite-nav-title" role="heading" tooltip>Architecture</li> <li class="devsite-nav-description">Design robust, testable, and maintainable app logic and services.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/topic/architecture/intro" track-type="nav" track-metadata-eventdetail="https://developer.android.com/topic/architecture/intro" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="architecture" tooltip > <div class="devsite-nav-item-title"> Introduction </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/topic/libraries/view-binding" track-type="nav" track-metadata-eventdetail="https://developer.android.com/topic/libraries/view-binding" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="architecture" tooltip > <div class="devsite-nav-item-title"> Libraries </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/guide/navigation/navigation-principles" track-type="nav" track-metadata-eventdetail="https://developer.android.com/guide/navigation/navigation-principles" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="architecture" tooltip > <div class="devsite-nav-item-title"> Navigation </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/topic/modularization" track-type="nav" track-metadata-eventdetail="https://developer.android.com/topic/modularization" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="architecture" tooltip > <div class="devsite-nav-item-title"> Modularization </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/training/testing/fundamentals" track-type="nav" track-metadata-eventdetail="https://developer.android.com/training/testing/fundamentals" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="architecture" tooltip > <div class="devsite-nav-item-title"> Testing </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-vitals"> <li class="devsite-nav-title" role="heading" tooltip>Quality</li> <li class="devsite-nav-description">Plan for app quality and align with Play store guidelines.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/quality" track-type="nav" track-metadata-eventdetail="https://developer.android.com/quality" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="quality" tooltip > <div class="devsite-nav-item-title"> Overview </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/quality/core-value" track-type="nav" track-metadata-eventdetail="https://developer.android.com/quality/core-value" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="quality" tooltip > <div class="devsite-nav-item-title"> Core value </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/quality/user-experience" track-type="nav" track-metadata-eventdetail="https://developer.android.com/quality/user-experience" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="quality" tooltip > <div class="devsite-nav-item-title"> User experience </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/quality/technical" track-type="nav" track-metadata-eventdetail="https://developer.android.com/quality/technical" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="quality" tooltip > <div class="devsite-nav-item-title"> Technical quality </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/quality/privacy-and-security" track-type="nav" track-metadata-eventdetail="https://developer.android.com/quality/privacy-and-security" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="quality" tooltip > <div class="devsite-nav-item-title"> Security </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-security-2"> <li class="devsite-nav-title" role="heading" tooltip>Security</li> <li class="devsite-nav-description">Safeguard users against threats and ensure a secure Android experience.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/security" track-type="nav" track-metadata-eventdetail="https://developer.android.com/security" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="security" tooltip > <div class="devsite-nav-item-title"> Overview </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/privacy-and-security/about" track-type="nav" track-metadata-eventdetail="https://developer.android.com/privacy-and-security/about" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="security" tooltip > <div class="devsite-nav-item-title"> Privacy </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/identity" track-type="nav" track-metadata-eventdetail="https://developer.android.com/identity" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="security" tooltip > <div class="devsite-nav-item-title"> Identity </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/security/fraud-prevention" track-type="nav" track-metadata-eventdetail="https://developer.android.com/security/fraud-prevention" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="security" tooltip > <div class="devsite-nav-item-title"> Fraud prevention </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-earth"> <li class="devsite-nav-title" role="heading" tooltip>Build for Billions</li> <li class="devsite-nav-description">Create the best experience for entry-level devices</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/build-for-billions" track-type="nav" track-metadata-eventdetail="https://developer.android.com/build-for-billions" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="build for billions" tooltip > <div class="devsite-nav-item-title"> Overview </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/docs/quality-guidelines/build-for-billions" track-type="nav" track-metadata-eventdetail="https://developer.android.com/docs/quality-guidelines/build-for-billions" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="build for billions" tooltip > <div class="devsite-nav-item-title"> About new markets </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/guide/topics/androidgo" track-type="nav" track-metadata-eventdetail="https://developer.android.com/guide/topics/androidgo" track-metadata-position="nav - design & plan" track-metadata-module="tertiary nav" track-metadata-module_headline="build for billions" tooltip > <div class="devsite-nav-item-title"> Android (Go edition) </div> </a> </li> </ul> </div> </div> </div> </tab> <tab class="devsite-dropdown devsite-dropdown-full "> <a href="https://developer.android.com/develop" track-metadata-eventdetail="https://developer.android.com/develop" class="devsite-tabs-content gc-analytics-event android-dropdown-tab" track-type="nav" track-metadata-position="nav - develop" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Develop" track-name="develop" > Develop </a> <a href="#" role="button" aria-haspopup="true" aria-expanded="false" aria-label="Dropdown menu for Develop" track-type="nav" track-metadata-eventdetail="https://developer.android.com/develop" track-metadata-position="nav - develop" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Develop" track-name="develop" class="devsite-tabs-dropdown-toggle devsite-icon devsite-icon-arrow-drop-down"></a> <div class="devsite-tabs-dropdown" aria-label="submenu" hidden> <div class="devsite-tabs-dropdown-content"> <div class="devsite-tabs-dropdown-column android-dropdown android-dropdown-primary android-dropdown-ai"> <ul class="devsite-tabs-dropdown-section "> <li class="devsite-nav-title" role="heading" tooltip>Build AI experiences</li> <li class="devsite-nav-description">Build AI-powered Android apps with Gemini APIs and more. </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/ai" track-type="nav" track-metadata-eventdetail="https://developer.android.com/ai" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="build ai experiences" tooltip class="button button-primary" > <div class="devsite-nav-item-title"> Get started </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-flag"> <li class="devsite-nav-title" role="heading" tooltip>Core areas</li> <li class="devsite-nav-description">Get the samples and docs for the features you need.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/samples" track-type="nav" track-metadata-eventdetail="https://developer.android.com/samples" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="core areas" tooltip > <div class="devsite-nav-item-title"> Samples </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/quick-guides" track-type="nav" track-metadata-eventdetail="https://developer.android.com/quick-guides" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="core areas" tooltip > <div class="devsite-nav-item-title"> Try Quick Guidesᵇᵉᵗᵃ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/develop/ui" track-type="nav" track-metadata-eventdetail="https://developer.android.com/develop/ui" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="core areas" tooltip > <div class="devsite-nav-item-title"> User interfaces </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/guide/topics/permissions/overview" track-type="nav" track-metadata-eventdetail="https://developer.android.com/guide/topics/permissions/overview" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="core areas" tooltip > <div class="devsite-nav-item-title"> Permissions </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/develop/background-work" track-type="nav" track-metadata-eventdetail="https://developer.android.com/develop/background-work" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="core areas" tooltip > <div class="devsite-nav-item-title"> Background work </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/guide/topics/data" track-type="nav" track-metadata-eventdetail="https://developer.android.com/guide/topics/data" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="core areas" tooltip > <div class="devsite-nav-item-title"> Data and files </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/develop#core-areas" track-type="nav" track-metadata-eventdetail="https://developer.android.com/develop#core-areas" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="core areas" tooltip > <div class="devsite-nav-item-title"> All core areas ⤵️ </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-tools-2"> <li class="devsite-nav-title" role="heading" tooltip>Tools and workflow</li> <li class="devsite-nav-description">Use the IDE to write and build your app, or create your own pipeline.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/studio/write" track-type="nav" track-metadata-eventdetail="https://developer.android.com/studio/write" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="tools and workflow" tooltip > <div class="devsite-nav-item-title"> Write and debug code </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/build/gradle-build-overview" track-type="nav" track-metadata-eventdetail="https://developer.android.com/build/gradle-build-overview" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="tools and workflow" tooltip > <div class="devsite-nav-item-title"> Build projects </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/training/testing" track-type="nav" track-metadata-eventdetail="https://developer.android.com/training/testing" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="tools and workflow" tooltip > <div class="devsite-nav-item-title"> Test your app </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/topic/performance/overview" track-type="nav" track-metadata-eventdetail="https://developer.android.com/topic/performance/overview" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="tools and workflow" tooltip > <div class="devsite-nav-item-title"> Performance </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/tools" track-type="nav" track-metadata-eventdetail="https://developer.android.com/tools" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="tools and workflow" tooltip > <div class="devsite-nav-item-title"> Command-line tools </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/reference/tools/gradle-api" track-type="nav" track-metadata-eventdetail="https://developer.android.com/reference/tools/gradle-api" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="tools and workflow" tooltip > <div class="devsite-nav-item-title"> Gradle plugin API </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-multiple-screens"> <li class="devsite-nav-title" role="heading" tooltip>Device tech</li> <li class="devsite-nav-description">Write code for form factors. Connect devices and share data.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/guide/topics/large-screens/get-started-with-large-screens" track-type="nav" track-metadata-eventdetail="https://developer.android.com/guide/topics/large-screens/get-started-with-large-screens" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> Large screens (e.g., tablets) </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/training/wearables" track-type="nav" track-metadata-eventdetail="https://developer.android.com/training/wearables" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> Wear OS </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/health-and-fitness/guides" track-type="nav" track-metadata-eventdetail="https://developer.android.com/health-and-fitness/guides" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> Android Health </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/guide/topics/connectivity/cross-device-sdk/overview" track-type="nav" track-metadata-eventdetail="https://developer.android.com/guide/topics/connectivity/cross-device-sdk/overview" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> Cross-device SDK </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/training/cars" track-type="nav" track-metadata-eventdetail="https://developer.android.com/training/cars" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> Android for Cars </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/training/tv" track-type="nav" track-metadata-eventdetail="https://developer.android.com/training/tv" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> Android TV </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/chrome-os/intro" track-type="nav" track-metadata-eventdetail="https://developer.android.com/chrome-os/intro" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="device tech" tooltip > <div class="devsite-nav-item-title"> ChromeOS </div> </a> </li> </ul> </div> <div class="devsite-tabs-dropdown-column android-dropdown"> <ul class="devsite-tabs-dropdown-section android-dropdown-section-icon android-dropdown-section-icon-core-library"> <li class="devsite-nav-title" role="heading" tooltip>Libraries</li> <li class="devsite-nav-description">Browse API reference documentation with all the details.</li> <li class="devsite-nav-item"> <a href="https://developer.android.com/reference/packages" track-type="nav" track-metadata-eventdetail="https://developer.android.com/reference/packages" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="libraries" tooltip > <div class="devsite-nav-item-title"> Android platform </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/jetpack/androidx/explorer" track-type="nav" track-metadata-eventdetail="https://developer.android.com/jetpack/androidx/explorer" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="libraries" tooltip > <div class="devsite-nav-item-title"> Jetpack libraries </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developer.android.com/jetpack/androidx/releases/compose" track-type="nav" track-metadata-eventdetail="https://developer.android.com/jetpack/androidx/releases/compose" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="libraries" tooltip > <div class="devsite-nav-item-title"> Compose libraries </div> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/android/reference/packages" track-type="nav" track-metadata-eventdetail="https://developers.google.com/android/reference/packages" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="libraries" tooltip > <div class="devsite-nav-item-title"> Google Play services ↗️ </div> </a> </li> <li class="devsite-nav-item"> <a href="https://play.google.com/sdks" track-type="nav" track-metadata-eventdetail="https://play.google.com/sdks" track-metadata-position="nav - develop" track-metadata-module="tertiary nav" track-metadata-module_headline="libraries" tooltip > <div class="devsite-nav-item-title"> Google Play SDK index ↗️ </div> </a> </li> </ul> </div> </div> </div> </tab> <tab > <a href="https://developer.android.com/distribute" track-metadata-eventdetail="https://developer.android.com/distribute" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - google play" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Google Play" track-name="google play" > Google Play </a> </tab> <tab > <a href="https://developer.android.com/community" track-metadata-eventdetail="https://developer.android.com/community" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - community" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" > Community </a> </tab> </nav> </devsite-tabs> </div> <devsite-search enable-signin enable-search enable-suggestions enable-query-completion project-name="App quality" tenant-name="Android Developers" > <form class="devsite-search-form" action="https://developer.android.com/s/results" method="GET"> <div class="devsite-search-container"> <button type="button" search-open class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Open search"></button> <div class="devsite-searchbox"> <input aria-activedescendant="" aria-autocomplete="list" aria-label="Search" aria-expanded="false" aria-haspopup="listbox" autocomplete="off" class="devsite-search-field devsite-search-query" name="q" placeholder="Search" role="combobox" type="text" value="" > <div class="devsite-search-image material-icons" aria-hidden="true"> </div> <div class="devsite-search-shortcut-icon-container" aria-hidden="true"> <kbd class="devsite-search-shortcut-icon">/</kbd> </div> </div> </div> </form> <button type="button" search-close class="devsite-search-button devsite-header-icon-button button-flat material-icons" aria-label="Close search"></button> </devsite-search> </div> <devsite-appearance-selector></devsite-appearance-selector> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> <a class="devsite-header-link devsite-top-button button gc-analytics-event" href="https://developer.android.com/studio" data-category="Site-Wide Custom Events" data-label="Site header link" > Android Studio </a> <devsite-user enable-profiles id="devsite-user"> <span class="button devsite-top-button" aria-hidden="true" visually-hidden>Sign in</span> </devsite-user> </div> </div> </div> <div class="devsite-collapsible-section "> <div class="devsite-header-background"> <div class="devsite-product-id-row" > <div class="devsite-product-description-row"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> <a href="https://developer.android.com/quality" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Lower Header" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="App quality" > App quality </a> </li> </ul> </div> </div> <div class="devsite-doc-set-nav-row"> <devsite-tabs class="lower-tabs"> <nav class="devsite-tabs-wrapper" aria-label="Lower tabs"> <tab > <a href="https://developer.android.com/quality" track-metadata-eventdetail="https://developer.android.com/quality" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - overview" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Overview" track-name="overview" > Overview </a> </tab> <tab > <a href="https://developer.android.com/quality/core-value" track-metadata-eventdetail="https://developer.android.com/quality/core-value" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - core value" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Core value" track-name="core value" > Core value </a> </tab> <tab class="devsite-active"> <a href="https://developer.android.com/quality/user-experience" track-metadata-eventdetail="https://developer.android.com/quality/user-experience" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - user experience" track-metadata-module="primary nav" aria-label="User experience, selected" data-category="Site-Wide Custom Events" data-label="Tab: User experience" track-name="user experience" > User experience </a> </tab> <tab > <a href="https://developer.android.com/quality/technical" track-metadata-eventdetail="https://developer.android.com/quality/technical" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - technical quality" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Technical quality" track-name="technical quality" > Technical quality </a> </tab> <tab > <a href="https://developer.android.com/quality/privacy-and-security" track-metadata-eventdetail="https://developer.android.com/quality/privacy-and-security" class="devsite-tabs-content gc-analytics-event " track-type="nav" track-metadata-position="nav - privacy & security" track-metadata-module="primary nav" data-category="Site-Wide Custom Events" data-label="Tab: Privacy & Security" track-name="privacy & security" > Privacy & Security </a> </tab> </nav> </devsite-tabs> </div> </div> </div> </div> </devsite-header> <devsite-book-nav scrollbars > <div class="devsite-book-nav-filter" > <span class="filter-list-icon material-icons" aria-hidden="true"></span> <input type="text" placeholder="Filter" aria-label="Type to filter" role="searchbox"> <span class="filter-clear-button hidden" data-title="Clear filter" aria-label="Clear filter" role="button" tabindex="0"></span> </div> <nav class="devsite-book-nav devsite-nav nocontent" aria-label="Side menu"> <div class="devsite-mobile-header"> <button type="button" id="devsite-close-nav" class="devsite-header-icon-button button-flat material-icons gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Close navigation" aria-label="Close navigation"> </button> <div class="devsite-product-name-wrapper"> <a href="/" class="devsite-site-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Site logo" track-type="globalNav" track-name="androidDevelopers" track-metadata-position="nav" track-metadata-eventDetail="nav"> <picture> <source srcset="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/images/lockup-dark-theme.svg" media="(prefers-color-scheme: dark)" class="devsite-dark-theme" alt="Android Developers"> <img src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/images/lockup.svg" class="devsite-site-logo" alt="Android Developers"> </picture> </a> <span class="devsite-product-name"> <ul class="devsite-breadcrumb-list" > <li class="devsite-breadcrumb-item "> </li> </ul> </span> </div> </div> <div class="devsite-book-nav-wrapper"> <div class="devsite-mobile-nav-top"> <ul class="devsite-nav-list"> <li class="devsite-nav-item"> <a href="/get-started" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Essentials" track-name="essentials" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Essentials" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Essentials </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Essentials" track-name="essentials" > <span class="devsite-nav-text" tooltip menu="Essentials"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Essentials"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/design" class="devsite-nav-title gc-analytics-event devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: Design & Plan" track-name="design & plan" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Design & Plan" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Design & Plan </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Design & Plan" track-name="design & plan" > <span class="devsite-nav-text" tooltip menu="Design & Plan"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Design & Plan"> </span> </span> </li> </ul> <ul class="devsite-nav-responsive-tabs"> <li class="devsite-nav-item"> <a href="/quality" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Overview" track-name="overview" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/quality/core-value" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Core value" track-name="core value" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Core value" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Core value </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/quality/user-experience" class="devsite-nav-title gc-analytics-event devsite-nav-has-children devsite-nav-active" data-category="Site-Wide Custom Events" data-label="Tab: User experience" track-name="user experience" data-category="Site-Wide Custom Events" data-label="Responsive Tab: User experience" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip menu="_book"> User experience </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="_book"> </span> </a> </li> <li class="devsite-nav-item"> <a href="/quality/technical" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Technical quality" track-name="technical quality" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Technical quality" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Technical quality </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> <li class="devsite-nav-item"> <a href="/quality/privacy-and-security" class="devsite-nav-title gc-analytics-event devsite-nav-has-children " data-category="Site-Wide Custom Events" data-label="Tab: Privacy & Security" track-name="privacy & security" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Privacy & Security" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Privacy & Security </span> <span class="devsite-nav-icon material-icons" data-icon="forward" > </span> </a> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/develop" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Develop" track-name="develop" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Develop" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Develop </span> </a> <ul class="devsite-nav-responsive-tabs devsite-nav-has-menu "> <li class="devsite-nav-item"> <span class="devsite-nav-title" tooltip data-category="Site-Wide Custom Events" data-label="Tab: Develop" track-name="develop" > <span class="devsite-nav-text" tooltip menu="Develop"> More </span> <span class="devsite-nav-icon material-icons" data-icon="forward" menu="Develop"> </span> </span> </li> </ul> </li> <li class="devsite-nav-item"> <a href="/distribute" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Google Play" track-name="google play" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Play" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Play </span> </a> </li> <li class="devsite-nav-item"> <a href="/community" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Tab: Community" track-name="community" data-category="Site-Wide Custom Events" data-label="Responsive Tab: Community" track-type="globalNav" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Community </span> </a> </li> <li class="devsite-nav-item"> <a href="/studio" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android Studio" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android Studio </span> </a> </li> </ul> </div> <div class="devsite-mobile-nav-bottom"> <ul class="devsite-nav-list" menu="_book"> <li class="devsite-nav-item"><a href="/quality/user-experience" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /quality/user-experience" track-type="bookNav" track-name="click" track-metadata-eventdetail="/quality/user-experience" ><span class="devsite-nav-text" tooltip>Overview</span></a></li> <li class="devsite-nav-item"><a href="/docs/quality-guidelines/core-app-quality" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/quality-guidelines/core-app-quality" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/quality-guidelines/core-app-quality" ><span class="devsite-nav-text" tooltip>Core app quality</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Form factors</span> </div></li> <li class="devsite-nav-item"><a href="/docs/quality-guidelines/large-screen-app-quality" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/quality-guidelines/large-screen-app-quality" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/quality-guidelines/large-screen-app-quality" ><span class="devsite-nav-text" tooltip>Large screen app quality</span></a></li> <li class="devsite-nav-item"><a href="/docs/quality-guidelines/wear-app-quality" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/quality-guidelines/wear-app-quality" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/quality-guidelines/wear-app-quality" ><span class="devsite-nav-text" tooltip>Wear OS app quality</span></a></li> <li class="devsite-nav-item"><a href="/docs/quality-guidelines/tv-app-quality" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/quality-guidelines/tv-app-quality" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/quality-guidelines/tv-app-quality" ><span class="devsite-nav-text" tooltip>TV app quality</span></a></li> <li class="devsite-nav-item"><a href="/docs/quality-guidelines/car-app-quality" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /docs/quality-guidelines/car-app-quality" track-type="bookNav" track-name="click" track-metadata-eventdetail="/docs/quality-guidelines/car-app-quality" ><span class="devsite-nav-text" tooltip>Car app quality</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>Accessibility</span> </div></li> <li class="devsite-nav-item"><a href="/guide/topics/ui/accessibility" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /guide/topics/ui/accessibility" track-type="bookNav" track-name="click" track-metadata-eventdetail="/guide/topics/ui/accessibility" ><span class="devsite-nav-text" tooltip>In this guide</span></a></li> <li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Build and test apps for accessibility</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/guide/topics/ui/accessibility/apps" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /guide/topics/ui/accessibility/apps" track-type="bookNav" track-name="click" track-metadata-eventdetail="/guide/topics/ui/accessibility/apps" ><span class="devsite-nav-text" tooltip>Make apps more accessible</span></a></li><li class="devsite-nav-item"><a href="/guide/topics/ui/accessibility/principles" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /guide/topics/ui/accessibility/principles" track-type="bookNav" track-name="click" track-metadata-eventdetail="/guide/topics/ui/accessibility/principles" ><span class="devsite-nav-text" tooltip>Principles for improving app accessibility</span></a></li><li class="devsite-nav-item"><a href="/guide/topics/ui/accessibility/testing" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /guide/topics/ui/accessibility/testing" track-type="bookNav" track-name="click" track-metadata-eventdetail="/guide/topics/ui/accessibility/testing" ><span class="devsite-nav-text" tooltip>Test your app's accessibility</span></a></li></ul></div></li> <li class="devsite-nav-item devsite-nav-expandable"><div class="devsite-expandable-nav"> <a class="devsite-nav-toggle" aria-hidden="true"></a><div class="devsite-nav-title devsite-nav-title-no-path" tabindex="0" role="button"> <span class="devsite-nav-text" tooltip>Advanced topics</span> </div><ul class="devsite-nav-section"><li class="devsite-nav-item"><a href="/guide/topics/ui/accessibility/custom-views" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /guide/topics/ui/accessibility/custom-views" track-type="bookNav" track-name="click" track-metadata-eventdetail="/guide/topics/ui/accessibility/custom-views" ><span class="devsite-nav-text" tooltip>Make custom views more accessible</span></a></li><li class="devsite-nav-item"><a href="/guide/topics/ui/accessibility/service" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /guide/topics/ui/accessibility/service" track-type="bookNav" track-name="click" track-metadata-eventdetail="/guide/topics/ui/accessibility/service" ><span class="devsite-nav-text" tooltip>Create your own accessibility service</span></a></li></ul></div></li> <li class="devsite-nav-item"><a href="/guide/topics/ui/accessibility/additional-resources" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: /guide/topics/ui/accessibility/additional-resources" track-type="bookNav" track-name="click" track-metadata-eventdetail="/guide/topics/ui/accessibility/additional-resources" ><span class="devsite-nav-text" tooltip>Additional resources</span></a></li> <li class="devsite-nav-item devsite-nav-heading"><div class="devsite-nav-title devsite-nav-title-no-path"> <span class="devsite-nav-text" tooltip>On Google Play</span> </div></li> <li class="devsite-nav-item devsite-nav-external"><a href="https://developers.google.com/games/services/checklist" class="devsite-nav-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Book nav link, pathname: https://developers.google.com/games/services/checklist" track-type="bookNav" track-name="click" track-metadata-eventdetail="https://developers.google.com/games/services/checklist" ><span class="devsite-nav-text" tooltip>Play games quality</span><span class="devsite-nav-icon material-icons" data-icon="external" data-title="External" aria-hidden="true"></span></a></li> </ul> <ul class="devsite-nav-list" menu="Essentials" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Gemini in Android Studio </span> </span> </li> <li class="devsite-nav-item"> <a href="/gemini-in-android" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Learn more" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Learn more </span> </a> </li> <li class="devsite-nav-item"> <a href="/studio" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Get Android Studio" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Get Android Studio </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Get started </span> </span> </li> <li class="devsite-nav-item"> <a href="/get-started/overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Hello world" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Hello world </span> </a> </li> <li class="devsite-nav-item"> <a href="/courses" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Training courses" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Training courses </span> </a> </li> <li class="devsite-nav-item"> <a href="/get-started/codelabs" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Tutorials" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Tutorials </span> </a> </li> <li class="devsite-nav-item"> <a href="/kotlin" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Kotlin for Android" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Kotlin for Android </span> </a> </li> <li class="devsite-nav-item"> <a href="https://play.google.com/console/about/guides/monetize/" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Monetization with Play ↗️" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Monetization with Play ↗️ </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Extend by device </span> </span> </li> <li class="devsite-nav-item"> <a href="/adaptive-apps" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Adaptive apps" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Adaptive apps </span> </a> </li> <li class="devsite-nav-item"> <a href="/wear" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Wear OS" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Wear OS </span> </a> </li> <li class="devsite-nav-item"> <a href="/cars" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android for Cars" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android for Cars </span> </a> </li> <li class="devsite-nav-item"> <a href="/tv" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android TV" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android TV </span> </a> </li> <li class="devsite-nav-item"> <a href="/chrome-os" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ChromeOS" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ChromeOS </span> </a> </li> <li class="devsite-nav-item"> <a href="/multi-device-development" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Cross-device SDK" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Cross-device SDK </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Build by category </span> </span> </li> <li class="devsite-nav-item"> <a href="/games" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Games" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Games </span> </a> </li> <li class="devsite-nav-item"> <a href="/media" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Camera & Media" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Camera & Media </span> </a> </li> <li class="devsite-nav-item"> <a href="/social-and-messaging" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Social & messaging" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Social & messaging </span> </a> </li> <li class="devsite-nav-item"> <a href="/health-and-fitness" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Health & Fitness" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Health & Fitness </span> </a> </li> <li class="devsite-nav-item"> <a href="/productivity" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Productivity" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Productivity </span> </a> </li> <li class="devsite-nav-item"> <a href="/work/overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Enterprise apps" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Enterprise apps </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Get the latest </span> </span> </li> <li class="devsite-nav-item"> <a href="/latest-updates" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Latest updates" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Latest updates </span> </a> </li> <li class="devsite-nav-item"> <a href="/latest-updates/experimental" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Experimental updates" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Experimental updates </span> </a> </li> <li class="devsite-nav-item"> <a href="/studio/preview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android Studio preview" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android Studio preview </span> </a> </li> <li class="devsite-nav-item"> <a href="/jetpack/androidx/versions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Jetpack & Compose libraries" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Jetpack & Compose libraries </span> </a> </li> <li class="devsite-nav-item"> <a href="/training/wearables/versions/4" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Wear OS preview" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Wear OS preview </span> </a> </li> <li class="devsite-nav-item"> <a href="/design-for-safety/privacy-sandbox" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Privacy Sandbox" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Privacy Sandbox </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Design & Plan" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > UI Design </span> </span> </li> <li class="devsite-nav-item"> <a href="/design/ui" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Design for Android" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Design for Android </span> </a> </li> <li class="devsite-nav-item"> <a href="/design/ui/mobile" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Mobile" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Mobile </span> </a> </li> <li class="devsite-nav-item"> <a href="/design/ui/large-screens" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Large screens (e.g., tablets)" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Large screens (e.g., tablets) </span> </a> </li> <li class="devsite-nav-item"> <a href="/design/ui/widget" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Widgets" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Widgets </span> </a> </li> <li class="devsite-nav-item"> <a href="/design/ui/wear" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Wear OS" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Wear OS </span> </a> </li> <li class="devsite-nav-item"> <a href="/design/ui/tv" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android TV" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android TV </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Architecture </span> </span> </li> <li class="devsite-nav-item"> <a href="/topic/architecture/intro" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Introduction" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Introduction </span> </a> </li> <li class="devsite-nav-item"> <a href="/topic/libraries/view-binding" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Libraries" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Libraries </span> </a> </li> <li class="devsite-nav-item"> <a href="/guide/navigation/navigation-principles" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Navigation" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Navigation </span> </a> </li> <li class="devsite-nav-item"> <a href="/topic/modularization" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Modularization" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Modularization </span> </a> </li> <li class="devsite-nav-item"> <a href="/training/testing/fundamentals" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Testing" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Testing </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Quality </span> </span> </li> <li class="devsite-nav-item"> <a href="/quality" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/quality/core-value" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Core value" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Core value </span> </a> </li> <li class="devsite-nav-item"> <a href="/quality/user-experience" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: User experience" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > User experience </span> </a> </li> <li class="devsite-nav-item"> <a href="/quality/technical" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Technical quality" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Technical quality </span> </a> </li> <li class="devsite-nav-item"> <a href="/quality/privacy-and-security" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Security" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Security </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Security </span> </span> </li> <li class="devsite-nav-item"> <a href="/security" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/privacy-and-security/about" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Privacy" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Privacy </span> </a> </li> <li class="devsite-nav-item"> <a href="/identity" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Identity" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Identity </span> </a> </li> <li class="devsite-nav-item"> <a href="/security/fraud-prevention" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Fraud prevention" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Fraud prevention </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Build for Billions </span> </span> </li> <li class="devsite-nav-item"> <a href="/build-for-billions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Overview" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Overview </span> </a> </li> <li class="devsite-nav-item"> <a href="/docs/quality-guidelines/build-for-billions" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: About new markets" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > About new markets </span> </a> </li> <li class="devsite-nav-item"> <a href="/guide/topics/androidgo" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android (Go edition)" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android (Go edition) </span> </a> </li> </ul> <ul class="devsite-nav-list" menu="Develop" aria-label="Side menu" hidden> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Build AI experiences </span> </span> </li> <li class="devsite-nav-item"> <a href="/ai" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Get started" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Get started </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Core areas </span> </span> </li> <li class="devsite-nav-item"> <a href="/samples" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Samples" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Samples </span> </a> </li> <li class="devsite-nav-item"> <a href="/quick-guides" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Try Quick Guidesᵇᵉᵗᵃ" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Try Quick Guidesᵇᵉᵗᵃ </span> </a> </li> <li class="devsite-nav-item"> <a href="/develop/ui" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: User interfaces" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > User interfaces </span> </a> </li> <li class="devsite-nav-item"> <a href="/guide/topics/permissions/overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Permissions" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Permissions </span> </a> </li> <li class="devsite-nav-item"> <a href="/develop/background-work" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Background work" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Background work </span> </a> </li> <li class="devsite-nav-item"> <a href="/guide/topics/data" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Data and files" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Data and files </span> </a> </li> <li class="devsite-nav-item"> <a href="/develop#core-areas" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: All core areas ⤵️" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > All core areas ⤵️ </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Tools and workflow </span> </span> </li> <li class="devsite-nav-item"> <a href="/studio/write" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Write and debug code" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Write and debug code </span> </a> </li> <li class="devsite-nav-item"> <a href="/build/gradle-build-overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Build projects" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Build projects </span> </a> </li> <li class="devsite-nav-item"> <a href="/training/testing" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Test your app" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Test your app </span> </a> </li> <li class="devsite-nav-item"> <a href="/topic/performance/overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Performance" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Performance </span> </a> </li> <li class="devsite-nav-item"> <a href="/tools" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Command-line tools" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Command-line tools </span> </a> </li> <li class="devsite-nav-item"> <a href="/reference/tools/gradle-api" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Gradle plugin API" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Gradle plugin API </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Device tech </span> </span> </li> <li class="devsite-nav-item"> <a href="/guide/topics/large-screens/get-started-with-large-screens" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Large screens (e.g., tablets)" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Large screens (e.g., tablets) </span> </a> </li> <li class="devsite-nav-item"> <a href="/training/wearables" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Wear OS" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Wear OS </span> </a> </li> <li class="devsite-nav-item"> <a href="/health-and-fitness/guides" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android Health" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android Health </span> </a> </li> <li class="devsite-nav-item"> <a href="/guide/topics/connectivity/cross-device-sdk/overview" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Cross-device SDK" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Cross-device SDK </span> </a> </li> <li class="devsite-nav-item"> <a href="/training/cars" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android for Cars" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android for Cars </span> </a> </li> <li class="devsite-nav-item"> <a href="/training/tv" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android TV" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android TV </span> </a> </li> <li class="devsite-nav-item"> <a href="/chrome-os/intro" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: ChromeOS" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > ChromeOS </span> </a> </li> <li class="devsite-nav-item devsite-nav-heading"> <span class="devsite-nav-title" tooltip > <span class="devsite-nav-text" tooltip > Libraries </span> </span> </li> <li class="devsite-nav-item"> <a href="/reference/packages" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Android platform" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Android platform </span> </a> </li> <li class="devsite-nav-item"> <a href="/jetpack/androidx/explorer" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Jetpack libraries" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Jetpack libraries </span> </a> </li> <li class="devsite-nav-item"> <a href="/jetpack/androidx/releases/compose" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Compose libraries" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Compose libraries </span> </a> </li> <li class="devsite-nav-item"> <a href="https://developers.google.com/android/reference/packages" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Play services ↗️" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Play services ↗️ </span> </a> </li> <li class="devsite-nav-item"> <a href="https://play.google.com/sdks" class="devsite-nav-title gc-analytics-event " data-category="Site-Wide Custom Events" data-label="Responsive Tab: Google Play SDK index ↗️" track-type="navMenu" track-metadata-eventDetail="globalMenu" track-metadata-position="nav"> <span class="devsite-nav-text" tooltip > Google Play SDK index ↗️ </span> </a> </li> </ul> </div> </div> </nav> </devsite-book-nav> <section id="gc-wrapper"> <main role="main" class="devsite-main-content" has-book-nav has-sidebar > <div class="devsite-sidebar"> <div class="devsite-sidebar-content"> <devsite-toc class="devsite-nav" role="navigation" aria-label="On this page" depth="2" scrollbars ></devsite-toc> <devsite-recommendations-sidebar class="nocontent devsite-nav"> </devsite-recommendations-sidebar> </div> </div> <devsite-content> <article class="devsite-article"> <div class="devsite-article-meta nocontent" role="navigation"> <ul class="devsite-breadcrumb-list" aria-label="Breadcrumb"> <li class="devsite-breadcrumb-item "> <a href="https://developer.android.com/" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="1" track-type="globalNav" track-name="breadcrumb" track-metadata-position="1" track-metadata-eventdetail="Android Developers" > Android Developers </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developer.android.com/design" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="2" track-type="globalNav" track-name="breadcrumb" track-metadata-position="2" track-metadata-eventdetail="" > Design & Plan </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developer.android.com/quality" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="3" track-type="globalNav" track-name="breadcrumb" track-metadata-position="3" track-metadata-eventdetail="App quality" > App quality </a> </li> <li class="devsite-breadcrumb-item "> <div class="devsite-breadcrumb-guillemet material-icons" aria-hidden="true"></div> <a href="https://developer.android.com/quality/user-experience" class="devsite-breadcrumb-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Breadcrumbs" data-value="4" track-type="globalNav" track-name="breadcrumb" track-metadata-position="4" track-metadata-eventdetail="" > User experience </a> </li> </ul> <devsite-thumb-rating position="header"> </devsite-thumb-rating> </div> <h1 class="devsite-page-title" tabindex="-1"> Car app quality </h1> <devsite-feature-tooltip ack-key="AckCollectionsBookmarkTooltipDismiss" analytics-category="Site-Wide Custom Events" analytics-action-show="Callout Profile displayed" analytics-action-close="Callout Profile dismissed" analytics-label="Create Collection Callout" class="devsite-page-bookmark-tooltip nocontent" dismiss-button="true" id="devsite-collections-dropdown" dismiss-button-text="Dismiss" close-button-text="Got it"> <devsite-bookmark></devsite-bookmark> <span slot="popout-heading"> Stay organized with collections </span> <span slot="popout-contents"> Save and categorize content based on your preferences. </span> </devsite-feature-tooltip> <div class="devsite-page-title-meta"><devsite-view-release-notes></devsite-view-release-notes></div> <devsite-toc class="devsite-nav" depth="2" devsite-toc-embedded > </devsite-toc> <devsite-recommendations-dropdown class="nocontent"></devsite-recommendations-dropdown> <div class="devsite-article-body clearfix "> <p>To provide a great experience for users in cars, complete the car compatibility checklists and tests that follow as you design and develop your app.</p> <p>The checklists and tests define an extensive set of quality requirements for the various app categories supported by Android Auto and Android Automotive OS. Many requirements apply only to specific categories, so be sure to filter by your app's category. See the <a href="#car-quality-tiers">Car quality tiers</a> definitions for details on which guidelines your app must meet in order to be accepted on the Google Play Store.</p> <aside class="note"> <b>May 2024 Update</b>: The guidelines have been grouped into the Car ready, Car optimized, and Car differentiated tiers, including <a href="#may-24">new guidelines</a>. </aside> <h2 id="test-app" data-text="Test your app" tabindex="-1">Test your app</h2> <p>Test your app for the applicable criteria listed on this page before submitting your app to Google Play for review. As applicable, test both of the ways users can access your app:</p> <dl> <dt>Android Automotive OS</dt> <dd>Use the <a href="/studio/run/emulator">Android Emulator</a> to validate each checklist item. For more information, see <a href="/training/cars/testing/emulator">Test using the Android Automotive OS emulator</a>.</dd> <dt>Android Auto</dt> <dd>Use the Android Auto Desktop Head Unit (DHU) to validate each checklist item. For more information, see <a href="/training/cars/testing/dhu">Test using the Desktop Head Unit</a>.</dd> </dl> <h2 id="app-categories" data-text="App categories" tabindex="-1">App categories</h2> <aside class="key-point"> Select your app's categories to filter the guidelines on this page. </aside> <form id="filter-checkboxes"> <table> <thead> <tr> <th><a href="/training/cars#supported-app-categories">Supported categories</a></th> <th>Android Auto</th> <th>Android Automotive OS</th> </tr> </thead> <tbody> <tr> <td> <input type="checkbox" id="checkbox-media" value="category-media" column="3" /> <label for="checkbox-media">Media</label> </td> <td> <span style="color:#0f9d58">✔</span> </td> <td> <span style="color:#0f9d58">✔</span> </td> </tr> <tr> <td> <input type="checkbox" id="checkbox-messaging" value="category-messaging" column="3" /> <label for="checkbox-messaging">Messaging</label> </td> <td> <span style="color:#0f9d58">✔</span> </td> <td> </td> </tr> <tr> <td> <input type="checkbox" id="checkbox-navigation" value="category-navigation" column="3" /> <label for="checkbox-navigation">Navigation</label> </td> <td> <span style="color:#0f9d58">✔</span> </td> <td> <span style="color:#0f9d58">✔</span> </td> </tr> <tr> <td> <input type="checkbox" id="checkbox-poi" value="category-poi" column="3" /> <label for="checkbox-poi">Point of Interest (POI)</label> </td> <td> <span style="color:#0f9d58">✔</span> </td> <td> <span style="color:#0f9d58">✔</span> </td> </tr> <tr> <td> <input type="checkbox" id="checkbox-iot" value="category-iot" column="3" /> <label for="checkbox-iot">Internet of Things (IOT)</label> </td> <td> <span style="color:#0f9d58">✔</span> </td> <td> <span style="color:#0f9d58">✔</span> </td> </tr> <tr> <td> <input type="checkbox" id="checkbox-video" value="category-video" column="3" /> <label for="checkbox-video">Video</label> </td> <td> </td> <td> <span style="color:#0f9d58">✔</span> </td> </tr> <tr> <td> <input type="checkbox" id="checkbox-game" value="category-game" column="3" /> <label for="checkbox-game">Games</label> </td> <td> </td> <td> <span style="color:#0f9d58">✔</span> </td> </tr> <tr> <td> <input type="checkbox" id="checkbox-browser" value="category-browser" column="3" checked /> <label for="checkbox-browser">Browsers</label> </td> <td> </td> <td> <span style="color:#0f9d58">✔</span> </td> </tr> </tbody> </table> </form> <h2 id="car-quality-tiers" data-text="Car quality tiers" tabindex="-1">Car quality tiers</h2> <p>The quality tiers define criteria to help you assess the level of support your app provides for cars. Each category builds upon those below it. That is, for an app to be <em>Car optimized</em>, it should also meet all of the applicable <em>Car ready</em> requirements.</p> <p>In addition to the guidelines specific to cars, each tier has associated guidelines from the <a href="/docs/quality-guidelines/large-screen-app-quality">Large screen app quality</a> that are relevant for activities implemented by your app.</p> <p>Levels of support include the following:</p> <h3 id="tier_3_-_car_ready" class="hide-from-toc" data-text="Tier 3 - Car ready" tabindex="-1">Tier 3 - Car ready</h3> <p>Your app is large screen compatible and can be used while the car is parked. While it may not have any car-optimized features, users can experience the app just as they would on any other large screen Android-powered device.</p> <p>This tier primarily applies to the <a href="/training/cars/parked">parked categories</a> of apps, which must meet all of the requirements in this tier to be accepted on the Google Play Store.</p> <aside class="note"><strong>Note:</strong><span> Through the upcoming <a href="/training/cars/car-ready-mobile-apps">Car ready mobile apps program</a>, mobile apps meeting the requirements in this tier can be made available for use on Android Auto as well as for download from the Google Play Store on Android Automotive OS vehicles with Google built-in.</span></aside> <h3 id="tier_2_-_car_optimized" class="hide-from-toc" data-text="Tier 2 - Car optimized" tabindex="-1">Tier 2 - Car optimized</h3> <p>Your app provides a great experience on the car's center stack display. To accomplish this, your app has some car-specific capabilities that users can experience across driving or parked modes, depending on your app's category.</p> <p>Apps in <a href="/training/cars#supported-app-categories">categories built for use while driving</a> must meet meet all of the applicable requirements in this tier to be accepted on the Google Play Store.</p> <h3 id="tier_1_-_car_differentiated" class="hide-from-toc" data-text="Tier 1 - Car differentiated" tabindex="-1">Tier 1 - Car differentiated</h3> <p>Your app is built to work across the variety of hardware in cars and can adapt its experience across driving and parked modes. It provides the best user experience designed for the different screens in cars such as the center console, instrument cluster, and additional screens - like panoramic displays seen in many premium cars.</p> <h3 id="car-ready-tier" data-text="Car ready" tabindex="-1">Car ready</h3> <div> <devsite-filter checkbox-form-id="filter-checkboxes"> <table> <thead> <tr> <th style="width:15%;">Criteria</th> <th style="width:10%;">ID</th> <th style="width:15%;">Applicable Categories</th> <th style="width:65%;">Description</th> </tr> </thead> <tbody class="list"> <tr> <td id="permitted-categories">Permitted Categories</td> <td id="PC-1"><code translate="no" dir="ltr">PC-1</code></td> <td> All <!-- category-media --> <!-- category-messaging --> <!-- category-navigation --> <!-- category-poi --> <!-- category-iot --> <!-- category-video --> <!-- category-game --> <!-- category-browser --> </td> <td> <p> The app must not include features outside the app types intended for cars. See <a href="/training/cars#supported-app-categories">Supported app categories</a>. </p> </td> </tr> <tr> <td rowspan="2" id="expected-performance">Expected Performance</td> <td id="EP-1"><code translate="no" dir="ltr">EP-1</code></td> <td> All <!-- category-media --> <!-- category-messaging --> <!-- category-navigation --> <!-- category-poi --> <!-- category-iot --> <!-- category-video --> <!-- category-game --> <!-- category-browser --> </td> <td> <p> The app must work as expected or described in the app's Google Play Store listing. </p> </td> </tr> <tr> <td id="EP-2"><code translate="no" dir="ltr">EP-2</code></td> <td> Media, Navigation, POI, IOT, Video, Games, Browsers <!-- category-media --> <!-- category-navigation --> <!-- category-poi --> <!-- category-iot --> <!-- category-video --> <!-- category-game --> <!-- category-browser --> </td> <td> <p> When the app is relaunched from the home screen, the app must restore the app state as closely as possible to the previous state. </p> </td> </tr> <tr> <td rowspan="1" id="display-orientation">Display Orientation</td> <td id="DO-1"><code translate="no" dir="ltr">DO-1</code></td> <td> Video, Games, Browsers <!-- category-video --> <!-- category-game --> <!-- category-browser --> </td> <td> <p> The app can be distributed to devices with fixed screen orientations. See <a href="/training/cars/parked#required-features">Required Android Automotive OS features</a>. </p> </td> </tr> <tr> <td rowspan="1" id="cpu-architectures">CPU Architectures</td> <td id="CP-1"><code translate="no" dir="ltr">CP-1</code></td> <td> Video, Games, Browsers <!-- category-video --> <!-- category-game --> <!-- category-browser --> </td> <td> <p> The app must support both x86_64 and ARM CPUs. </p> </td> </tr> <tr> <td rowspan="1">App Rendering</td> <td id="AR-1"><code translate="no" dir="ltr">AR-1</code></td> <td> All categories supported by Android Automotive OS <!-- category-media --> <!-- category-navigation --> <!-- category-poi --> <!-- category-iot --> <!-- category-video --> <!-- category-game --> <!-- category-browser --> </td> <td> <p> In activities implemented by the app, interactive UI elements must not be obstructed by system bars or display cutouts. See <a href="/training/cars/parked#insets-and-cutouts">Work with window insets and display cutouts</a>. </p> </td> </tr> <tr> <td rowspan="1">Driver Distraction</td> <td id="DD-3"><code translate="no" dir="ltr">DD-3</code></td> <td> Video, Games, Browsers <!-- category-video --> <!-- category-game --> <!-- category-browser --> </td> <td> <p> The app must not be launchable or usable while driving and must not play any audio. See <a href="/training/cars/parked#ensure_there_are_no_distraction-optimized_activities"> Ensure there are no distraction optimized activities</a>. </p> <p> Note: If your app plays audio, it must meet the <a href="#DD-2">DD-2</a> requirement. </p> </td> </tr> <tr> <td rowspan="1">Irrelevant notifications</td> <td id="IN-2"><code translate="no" dir="ltr">IN-2</code></td> <td> Video, Games, Browsers <!-- category-video --> <!-- category-game --> <!-- category-browser --> </td> <td> <p> The app must not post any <a href="/training/cars/notifications#hun">heads up notifications</a>. </p> </td> </tr> <tr> <td rowspan="1" id="app-navigability">App Navigability</td> <td id="AN-1"><code translate="no" dir="ltr">AN-1</code></td> <td> Video, Games, Browsers <!-- category-video --> <!-- category-game --> <!-- category-browser --> </td> <td> <p> Users can navigate through the app without encountering any dead ends. </p> </td> </tr> <tr> <td rowspan="2" id="sensitive-data">Sensitive Data</td> <td id="SD-1"><code translate="no" dir="ltr">SD-1</code></td> <td> Browsers <!-- category-browser --> </td> <td> <p> Browsers must not save or allow access to passwords or payment information unless the <a href="/training/cars/parked/browser#block-sensitive">user can block access to passwords</a> using a profile lock. </p> </td> </tr> <tr> <td id="SD-2"><code translate="no" dir="ltr">SD-2</code></td> <td> Browsers <!-- category-browser --> </td> <td> <p> Before syncing data to the car, browsers that synchronize passwords or payments data must do the following steps: <ol> <li>Prompt the user to authenticate.</li> <li>Notify the user on the car screen their data will be synchronized to the car.</li> </ol> <a href="/training/cars/parked/browser#block-sensitive">(Learn how)</a> </p> </td> </tr> </tbody> </table> </devsite-filter> </div> <h4 id="car-ready-ls" data-text="Associated large screen quality guidelines" tabindex="-1">Associated large screen quality guidelines</h4> <p>While these guidelines are relevant for all activities implemented by your app, they are Tier 3 requirements only for <a href="/training/cars/parked">parked apps</a>.</p> <table> <thead> <tr> <th style="width:15%;">Criteria</th> <th style="width:10%;">ID</th> <th style="width:65%;">Guidance for cars</th> </tr> </thead> <tbody class="list"> <tr> <td rowspan="2">Configuration and continuity</td> <td id="LS-C1"><a href="/docs/quality-guidelines/large-screen-app-quality#LS-C1"><code translate="no" dir="ltr">LS-C1</code></a></td> <td> Configuration changes in cars are primarily caused by moving an app between displays, such as when moving an app to or from a <a href="/training/cars/testing/emulator/distant-display">distant display</a>. </td> </tr> <tr> <td id="LS-C2"><a href="/docs/quality-guidelines/large-screen-app-quality#LS-C2"><code translate="no" dir="ltr">LS-C2</code></a></td> <td> No additional guidance. </td> </tr> </tbody> </table> <h3 id="car-optimized-tier" data-text="Car optimized" tabindex="-1">Car optimized</h3> <div> <devsite-filter checkbox-form-id="filter-checkboxes"> <table> <thead> <tr> <th style="width:15%;">Criteria</th> <th style="width:10%;">ID</th> <th style="width:15%;">Applicable Categories</th> <th style="width:65%;">Description</th> </tr> </thead> <tbody class="list"> <tr> <td id="parked-experiences">Parked Experiences</td> <td id="PE-1"><code translate="no" dir="ltr">PE-1</code></td> <td> Media, Navigation, POI, IOT <!-- category-media --> <!-- category-navigation --> <!-- category-poi --> <!-- category-iot --> </td> <td> <p> <strong>Android Automotive OS only:</strong> with the exception of providing setup, settings, and sign-in flows while parked, the app must not provide any functionality through its own activities. </p> </td> </tr> <tr> <td id="screen-animation">Screen Animation</td> <td id="SA-1"><code translate="no" dir="ltr">SA-1</code></td> <td> Media, Messaging, Navigation, POI, IOT <!-- category-media --> <!-- category-messaging --> <!-- category-navigation --> <!-- category-poi --> <!-- category-iot --> </td> <td> <p> The app must not display animated elements on the screen, such as animated graphics or video. </p> </td> </tr> <tr> <td id="visual-or-text-ads">Visual or Text Ads</td> <td id="AD-1"><code translate="no" dir="ltr">AD-1</code></td> <td> Media, Messaging, Navigation, POI, IOT <!-- category-media --> <!-- category-messaging --> <!-- category-navigation --> <!-- category-poi --> <!-- category-iot --> </td> <td> <p> The app must not display text-based advertising other than the advertiser's name or the product name. </p> </td> </tr> <tr> <td id="image-usage">Image Usage</td> <td id="IU-1"><code translate="no" dir="ltr">IU-1</code></td> <td> Media, Messaging, Navigation, POI, IOT <!-- category-media --> <!-- category-messaging --> <!-- category-navigation --> <!-- category-poi --> <!-- category-iot --> </td> <td> <p> App elements do not display any images on the screen. Exceptions include: </p> <ul> <li>Apps can display a single static image for content context in the background of the consumption screen, such as album art or the advertiser's corporate logo.</li> <li>Apps can display icons in the content navigation drawer.</li> <li>Apps can display images and photographs to aid in driving decision-making.</li> <li>Navigation apps can display an image for lane guidance or junction guidance.</li> </ul> </td> </tr> <tr> <td id="phone-visual">Visual Information on Phone</td> <td id="VI-1"><code translate="no" dir="ltr">VI-1</code></td> <td> Media, Navigation, POI, IOT <!-- category-media --> <!-- category-navigation --> <!-- category-poi --> <!-- category-iot --> </td> <td> <p style="margin-bottom:.5em;"> <strong>Android Auto only:</strong> If the user must go to the phone screen—for example, to act on a permission request—then the app must display a message instructing the user to only look at their phone screen when it’s safe to do so. For more information, see <a href="/training/cars/media#errors">Handle general errors</a> for media, and <a href="/training/cars/apps#handle-user-input">Handle user input</a> for navigation, point of interest, and internet of things apps. </p> </td> </tr> <tr> <td id="app-crash">App Doesn't Crash</td> <td id="AC-1"><code translate="no" dir="ltr">AC-1</code></td> <td> Navigation, POI, IOT <!-- category-navigation --> <!-- category-poi --> <!-- category-iot --> </td> <td> <p> Users must be able to complete tasks in the app using five screens or fewer. For more information, see <a href="/training/cars/apps#template-restrictions">Template restrictions</a>. </p> </td> </tr> <tr> <td id="scrolling-text">Scrolling Text</td> <td id="ST-1"><code translate="no" dir="ltr">ST-1</code></td> <td> Media, Messaging, Navigation, POI, IOT <!-- category-media --> <!-- category-messaging --> <!-- category-navigation --> <!-- category-poi --> <!-- category-iot --> </td> <td> <p> The app must not display automatically scrolling text. </p> </td> </tr> <tr> <!-- TODO: Needs updating - probably shouldn't specifically refer to voice commands. Perhaps "standard intents" or "system intents" instead? --> <td id="voice-commands">Voice Commands</td> <td id="VC-1"><code translate="no" dir="ltr">VC-1</code></td> <td> Media, Navigation <!-- category-media --> <!-- category-navigation --> </td> <td> <p> The app must support Google Assistant voice commands. For more information, see <a href="/training/cars/media#support_voice">Support voice actions</a> for media, and <a href="/training/cars/apps/navigation#support-navigation-intents">Support navigation intents</a> for navigation. </p> </td> </tr> <tr> <td rowspan="3" id="delayed-response">Delayed Response</td> <td id="DR-1"><code translate="no" dir="ltr">DR-1</code></td> <td> Media, Navigation, POI, IOT <!-- category-media --> <!-- category-navigation --> <!-- category-poi --> <!-- category-iot --> </td> <td> <p> App-specific buttons must respond to user actions with no more than a two-second delay. </p> </td> </tr> <tr> <td id="DR-2"><code translate="no" dir="ltr">DR-2</code></td> <td> Media, Navigation, POI, IOT <!-- category-media --> <!-- category-navigation --> <!-- category-poi --> <!-- category-iot --> </td> <td> <p> The app must launch in no more than 10 seconds. </p> </td> </tr> <tr> <td id="DR-3"><code translate="no" dir="ltr">DR-3</code></td> <td> Media, Navigation, POI, IOT <!-- category-media --> <!-- category-navigation --> <!-- category-poi --> <!-- category-iot --> </td> <td> <p> The app must load content in no more than 10 seconds. </p> </td> </tr> <tr> <td rowspan="3">Contrast</td> <td id="VD-1"><code translate="no" dir="ltr">VD-1</code></td> <td> Media, Messaging, Navigation, POI, IOT <!-- category-media --> <!-- category-messaging --> <!-- category-navigation --> <!-- category-poi --> <!-- category-iot --> </td> <td> <p> The app must provide icons and colors that meet Android Auto's contrast requirements. For more information, see <a href="https://developers.google.com/cars/design/android-auto/design-system/color#contrast">Contrast</a>. </p> </td> </tr> <tr> <td id="VD-2"><code translate="no" dir="ltr">VD-2</code></td> <td> Media <!-- category-media --> </td> <td> <p> The app must provide white icon sets that the system colorizes to provide automatic contrast compensation. </p> </td> </tr> <tr> <td id="VD-3"><code translate="no" dir="ltr">VD-3</code></td> <td> Media <!-- category-media --> </td> <td> <p> The app must provide colors that the system can optimize for easy in-vehicle readability. </p> </td> </tr> <tr> <td id="grey-buttons">Grey Buttons</td> <td id="GB-1"><code translate="no" dir="ltr">GB-1</code></td> <td> Media <!-- category-media --> </td> <td> <p> Interactive elements that are intentionally greyed-out must be nonfunctional. </p> </td> </tr> <tr> <td rowspan="2" id="driver-distraction">Driver Distraction</td> <td id="DD-1"><code translate="no" dir="ltr">DD-1</code></td> <td> Navigation <!-- category-navigation --> </td> <td> <p> The navigation audio channel can only be used by navigation apps and for navigation instructions. For more information, see <a href="/training/cars/apps/navigation#voice-guidance">Voice guidance</a>. </p> </td> </tr> <tr> <td id="DD-2"><code translate="no" dir="ltr">DD-2</code></td> <td> Video, Games, Browsers <!-- category-video --> <!-- category-game --> <!-- category-browser --> </td> <td> <p> While driving, the app must not be launchable and the app's UI must not be visible. The app's audio must stop when the user starts driving and cannot be unpaused while driving. For more information, see <a href="/training/cars/parked#ensure_there_are_no_distraction_optimized_activities">Ensure there are no distraction optimized activities</a>. </p> </td> </tr> <tr> <td id="payments">Payments</td> <td id="PA-1"><code translate="no" dir="ltr">PA-1</code></td> <td> Navigation, POI, IOT <!-- category-iot --> <!-- category-navigation --> <!-- category-poi --> </td> <td> <p> The app must have simple flows if purchases are enabled, using shortcuts such as recent or favorite purchases. For more information, see <a href="https://developers.google.com/cars/design/create-apps/sample-flows/purchase-with-existing-method">Purchase using an existing payment method</a>. </p> <p> The app must not allow any of the following: </p> <ul> <li>Setup of payment methods</li> <li>Multiple items to be selected for purchase</li> <li>Commitment to recurring payments, such as subscriptions</li> </ul> </td> </tr> <tr> <td id="notification-ads">Notification Ads</td> <td id="NA-1"><code translate="no" dir="ltr">NA-1</code></td> <td> Media, Messaging, Navigation, POI, IOT <!-- category-media --> <!-- category-messaging --> <!-- category-navigation --> <!-- category-poi --> <!-- category-iot --> </td> <td> <p> The app must not present advertisements through notifications. </p> </td> </tr> <tr> <td rowspan="1" id="irrelevant-notifications">Irrelevant Notifications</td> <td id="IN-1"><code translate="no" dir="ltr">IN-1</code></td> <td> Media, Messaging, Navigation, POI, IOT <!-- category-media --> <!-- category-messaging --> <!-- category-navigation --> <!-- category-poi --> <!-- category-iot --> </td> <td> <p> The app must display notifications only when relevant to the driver's needs. </p> <p> Examples:<br /> <span class="compare-better">Good:</span> Notifying the user that a new message has arrived.<br /> <span class="compare-worse">Bad:</span> Notifying the user about a new album release. </p> </td> </tr> <tr> <td id="media-autoplay">Media Autoplay</td> <td id="MA-1"><code translate="no" dir="ltr">MA-1</code></td> <td> Media <!-- category-media --> </td> <td> <p> The app must not autoplay on startup or without user initiated action to select the app or app media. For more information, see <a href="/training/cars/media#playback-commands">Implement play commands</a>. </p> </td> </tr> <tr> <td rowspan="5" id="msg-functionality">Messaging Functionality</td> <td id="MF-1"><code translate="no" dir="ltr">MF-1</code></td> <td> Messaging <!-- category-messaging --> </td> <td> <p> The app must receive incoming messages. For more information, see <a href="/training/cars/messaging">Build messaging apps for Android Auto</a>. </p> </td> </tr> <tr> <td id="MF-2"><code translate="no" dir="ltr">MF-2</code></td> <td> Messaging <!-- category-messaging --> </td> <td> <p> Messages must be properly grouped and displayed in the correct order. For more information, see <a href="/training/cars/messaging">Build messaging apps for Android Auto</a>. </p> </td> </tr> <tr> <td id="MF-3"><code translate="no" dir="ltr">MF-3</code></td> <td> Messaging <!-- category-messaging --> </td> <td> <p> The user can reply to a message. For more information, see <a href="/training/cars/messaging">Build messaging apps for Android Auto</a>. </p> </td> </tr> <tr> <td id="MF-4"><code translate="no" dir="ltr">MF-4</code></td> <td> Messaging <!-- category-messaging --> </td> <td> <p> The app must use short-form messaging app design patterns. Traditional long-form messaging apps, such as apps for email, are not permitted. </p> </td> </tr> <tr> <td id="MF-5"><code translate="no" dir="ltr">MF-5</code></td> <td> Messaging <!-- category-messaging --> </td> <td> <p> The app must implement a peer-to-peer messaging service and not notification services, such as those for weather, stocks, and sport scores. </p> </td> </tr> <tr> <td rowspan="8" id="nav-functionality">Navigation Functionality</td> <td id="NF-1"><code translate="no" dir="ltr">NF-1</code></td> <td> Navigation <!-- category-navigation --> </td> <td> <p> The app must provide turn-by-turn navigation directions. </p> </td> </tr> <tr> <td id="NF-2"><code translate="no" dir="ltr">NF-2</code></td> <td> Navigation <!-- category-navigation --> </td> <td> <p> The app draws only map content on the surface of the navigation templates. Text-based turn-by-turn directions, lane guidance, and estimated arrival time must be displayed on the relevant components of the navigation template. Additional information relevant to the drive, speed limit, road obstructions, etc., can be drawn on the safe area of the map. </p> </td> </tr> <tr> <td id="NF-3"><code translate="no" dir="ltr">NF-3</code></td> <td> Navigation <!-- category-navigation --> </td> <td> <p> When the app provides text-based turn-by-turn directions, it must also trigger navigation notifications. For more information, see <a href="/training/cars/apps/navigation#turn-by-turn-notifications">Turn-by-turn notifications</a>. </p> </td> </tr> <tr> <td id="NF-4"><code translate="no" dir="ltr">NF-4</code></td> <td> Navigation <!-- category-navigation --> </td> <td> <p> When the navigation app provides text-based turn-by-turn directions, it must send next-turn information to the vehicle’s cluster display. For more information, see <a href="/training/cars/apps/navigation#navigation-metadata">Navigation metadata</a>. </p> </td> </tr> <tr> <td id="NF-5"><code translate="no" dir="ltr">NF-5</code></td> <td> Navigation <!-- category-navigation --> </td> <td> <p> The app must not provide turn-by-turn notifications, voice guidance, or cluster information when another navigation app is providing turn-by-turn instructions. For more information, see <a href="/training/cars/apps/navigation#starting-ending-stopping-navigation">Start, end, and stop navigation</a>. </p> </td> </tr> <tr> <td id="NF-6"><code translate="no" dir="ltr">NF-6</code></td> <td> Navigation <!-- category-navigation --> </td> <td> <p> The app must handle navigation requests from other Android Auto apps. For more information, see <a href="/training/cars/apps/navigation#support-navigation-intents">Support navigation intents</a>. </p> </td> </tr> <tr> <td id="NF-7"><code translate="no" dir="ltr">NF-7</code></td> <td> Navigation <!-- category-navigation --> </td> <td> <p> The app must provide a "test drive" mode that simulates driving. For more information, see <a href="/training/cars/apps/navigation#simulating-navigation">Simulate navigation</a>. </p> </td> </tr> <tr> <td id="NF-8"><code translate="no" dir="ltr">NF-8</code></td> <td> Navigation <!-- category-navigation --> </td> <td> <p> The app must draw a light-themed or dark-themed map when instructed to do so. For more information, see <a href="/training/cars/apps/navigation#dark-theme">Support dark theme</a>. </p> </td> </tr> <tr> <td rowspan="1" id="poi-functionality"> Point of Interest Functionality </td> <td id="PF-1"><code translate="no" dir="ltr">PF-1</code></td> <td> POI <!-- category-poi --> </td> <td> <p> The app must provide meaningful functionality relevant to driving. </p> </td> </tr> <tr> <td rowspan="1" id="iot-functionality"> Internet of Things Functionality </td> <td id="IT-1"><code translate="no" dir="ltr">IT-1</code></td> <td> IOT <!-- category-iot --> </td> <td> <div> The IOT app may allow the following while driving: <ul> <li> <b>View the current state of devices</b>. For example: to view if a garage door is open or closed, a light bulb is on or off, a security system is armed or disarmed, or a washer is running or completed. </li> <li> <b >Simple, one-touch features that control on and off functions</b >. For example: the ability to turn various devices on and off or open and close them, including turning lights on and off, turning a thermostat on and off, or opening and closing a garage door or curtain. This also includes turning a pre-programmed scene or routine on and off. </li> <li> <b>Notify users about an event in the home or another location</b>. For example: receiving notifications for a routine or scene, a security alert, or a change in a door's open or closed status. </li> </ul> The IOT app must not allow the following while driving: <ul> <li> <b>Tasks related to app setup of any kind</b>. For example: the ability to select devices, systems, or locations for use with the IOT app. </li> <li> <b>Tasks related to creation, modification, or reordering</b >. For example: the ability to create, modify, or reorder a scene or routine, such as a sequence of events when departing or leaving a location, including opening and closing a garage door, or turning lights on and off. </li> <li> <b>Tasks related to fine-grained device control</b>. For example: the ability to control certain functions, including adjusting thermostat temperatures or the level of lighting luminescence. </li> </ul> </div> </td> </tr> <tr> <td rowspan="1" id="media-session">Media Controls</td> <td id="MC-1"><code translate="no" dir="ltr">MC-1</code></td> <td> Video <!-- category-video --> </td> <td> <p> The app integrates with media session. Depending on the content, the app must support either the play/pause or stop playback commands. Additionally, the app must provide title and thumbnail metadata for every media item. See <a href="/media/media3/session/control-playback">Control and advertise playback using a MediaSession</a>. </p> </td> </tr> </tbody> </table> </devsite-filter> </div> <h4 id="car-optimized-ls" data-text="Associated large screen quality guidelines" tabindex="-1">Associated large screen quality guidelines</h4> <p>While these guidelines are relevant for all activities implemented by your app, they are Tier 2 requirements only for <a href="/training/cars/parked">parked apps</a>.</p> <table> <thead> <tr> <th style="width:15%;">Criteria</th> <th style="width:10%;">ID</th> <th style="width:75%;">Guidance for cars</th> </tr> </thead> <tr> <td rowspan="1">Multi-window and multi-resume</td> <td id="LS-M2"><a href="/docs/quality-guidelines/large-screen-app-quality#LS-M2"><code translate="no" dir="ltr">LS-M2</code></a></td> <td> When an activity is on a <a href="/training/cars/testing/emulator/distant-display">distant display</a>, it loses the top resumed activity position when the user interacts with an activity on the main display. </td> </tr> <tr> <td rowspan="3">UX</td> <td id="LS-U1"><a href="/docs/quality-guidelines/large-screen-app-quality#LS-U1"><code translate="no" dir="ltr">LS-U1</code></a></td> <td> Some cars have landscape screens with much greater aspect ratios than are common on other large screen devices. You can use the <a href="/training/cars/testing/emulator#bundled-profiles">Automotive Ultrawide</a> hardware profile to test on such a display. </td> </tr> <tr> <td id="LS-U2"><a href="/docs/quality-guidelines/large-screen-app-quality#LS-U2"><code translate="no" dir="ltr">LS-U2</code></a></td> <td> Same as for LS-U1 </td> </tr> <tr> <td id="LS-U3"><a href="/docs/quality-guidelines/large-screen-app-quality#LS-U3"><code translate="no" dir="ltr">LS-U3</code></a></td> <td> To qualify as a car optimized app, your app must meet the LS-U3 requirement for touch target sizes. To qualify as car differentiated, it must meet the car <a href="#UX-1">UX-1</a> requirement. </td> </tr> </tbody> </table> <h3 id="car-differentiated-tier" data-text="Car differentiated" tabindex="-1">Car differentiated</h3> <div> <devsite-filter checkbox-form-id="filter-checkboxes"> <table> <thead> <tr> <th style="width:15%;">Criteria</th> <th style="width:10%;">ID</th> <th style="width:15%;">Applicable Categories</th> <th style="width:65%;">Description</th> </tr> </thead> <tbody class="list"> <tr> <td rowspan="1">Navigation Functionality</td> <td id="NF-9"><code translate="no" dir="ltr">NF-9</code></td> <td> Navigation <!-- category-navigation --> </td> <td> <p> The app supports rendering on cluster displays, and only renders map tiles on these displays. See <a href="/training/cars/apps/navigation#drawing_to_the_cluster_display">Drawing to the cluster display</a>. </p> </td> </tr> <tr> <td rowspan="1">App Rendering</td> <td id="AR-2"><code translate="no" dir="ltr">AR-2</code></td> <td> Video, Games, Browsers <!-- category-video --> <!-- category-game --> <!-- category-browser --> </td> <td> <p> The app renders into display cutouts to fully make use of the screen space available while maintaining the ability for users to continue interacting with all UI elements on the screen. See <a href="/training/cars/parked#irregular-displays">Adapt to irregularly shaped displays</a> for more details. </p> </td> </tr> <tr> <td rowspan="3">User Experience</td> <td id="UX-1"><code translate="no" dir="ltr">UX-1</code></td> <td> Video, Games, Browsers <!-- category-video --> <!-- category-game --> <!-- category-browser --> </td> <td> <p> Touch targets are at least 64dp. </p> </td> </tr> <tr> <td id="UX-2"><code translate="no" dir="ltr">UX-2</code></td> <td> Video, Games, Browsers <!-- category-video --> <!-- category-game --> <!-- category-browser --> </td> <td> <p> Touch targets are at least 24dp apart from each other and 24dp away from screen edges. </p> </td> </tr> <tr> <td id="UX-3"><code translate="no" dir="ltr">UX-3</code></td> <td> Video, Games, Browsers <!-- category-video --> <!-- category-game --> <!-- category-browser --> </td> <td> <p> Font sizes should be at least 24sp. </p> </td> </tr> </tbody> </table> </devsite-filter> </div> <h4 id="car-differentiated-ls" data-text="Associated large screen quality guidelines" tabindex="-1">Associated large screen quality guidelines</h4> <p>While these guidelines are relevant for all activities implemented by your app, they are Tier 1 requirements only for <a href="/training/cars/parked">parked apps</a>.</p> <table> <thead> <tr> <th style="width:15%;">Criteria</th> <th style="width:10%;">ID</th> <th style="width:75%;">Guidance for cars</th> </tr> </thead> <tbody class="list"> <tr> <td rowspan="1">UX</td> <td id="LS-U4"><a href="/docs/quality-guidelines/large-screen-app-quality#LS-U4"><code translate="no" dir="ltr">LS-U4</code></a></td> <td> Although keyboards are supported by Android Automotive OS, they're less common input methods in cars in comparison to other large screen devices. However, some cars have rotary input devices that rely on the same APIs as tab navigation with a keyboard, so they also require LS-U4 to be met to function properly. </td> </tr> <tr> <td rowspan="1">Keyboard, mouse, and trackpad</td> <td id="LS-I3"><a href="/docs/quality-guidelines/large-screen-app-quality#LS-I3"><code translate="no" dir="ltr">LS-I3</code></a></td> <td> Same as for LS-U4 </td> </tr> </tbody> </table> <div class="headerLine"> <h2 id="faq" data-text=" Frequently asked questions " tabindex="-1"> Frequently asked questions </h2> </div> <p style="margin-top:30px;"> <strong>What happens after I submit my app?</strong> </p> <p> Apps for cars are subject to an additional manual review beyond normal Play Store review processes. Your app is tested to ensure compliance against the applicable criteria. </p> <p style="margin-top:30px;"> <strong>After submitting my app, how will I find out if my app does not meet all the requirements for Android Auto or Android Automotive OS?</strong> </p> <p> If your app does not meet the app quality requirements described on this page, the Play Store team contacts you through the email address specified in the <a href="https://play.google.com/console/">Google Play Console</a> account associated with the app. </p> <p class="note"> <strong>Note:</strong> For information about how to publish your app in Google Play, see <a href="/distribute/best-practices/launch/distribute-cars">Distribute Android apps for cars</a>. </p> <p style="margin-top:30px;"> <strong>How do I manage policy violations and appeals?</strong> </p> <p> You can learn more about <a class="external" href="https://support.google.com/googleplay/android-developer/answer/9899142"> managing policy violations and appeals</a> in the Google Play policy center. </p> <p style="margin-top:30px;"> <strong>My app targets more than just Android Auto or Android Automotive OS. If my app does not meet the car requirements, will my new or updated app still appear on Google Play for other devices?</strong> </p> <p> No. When Google begins the approval process, your app undergoes an app quality review. Any subsequent updates are not available for distribution until the app is approved. If you need to make updates to your app for other devices, consider creating a separate release from the updates to your car app. </p> <p class="caution"> <strong>Important:</strong> Due to this restriction, you should not use your production APK for Android Auto support prototyping. </p> <h2 id="changes" data-text="Change notes" tabindex="-1">Change notes</h2> <h3 id="may-24" data-text="May 2024" tabindex="-1">May 2024</h3> <ul> <li>Introduction of the <a href="#car-quality-tiers">Car quality tiers</a></li> <li> Driver Distraction <ul> <li>Categories affected: Browsers, Games, Video</li> <li> <p>New criteria: <a href="#DD-3">DD-3</a></p> <hr style="margin: 0;" /> <p> The app must not be launchable or usable while driving and must not play any audio. See <a href="/training/cars/parked#ensure_there_are_no_distraction-optimized_activities"> Ensure there are no distraction optimized activities</a>. </p> <p> Note: If your app plays audio, it must meet the <a href="#DD-2">DD-2</a> requirement. </p> </li> </ul> </li> <li> App Rendering <ul> <li>Categories affected: All categories supported by Android Automotive OS</li> <li> <p>New criteria: <a href="#AR-1">AR-1</a></p> <hr style="margin: 0;" /> <p> In activities implemented by the app, interactive UI elements must not be obstructed by system bars or display cutouts. See <a href="/training/cars/parked#insets-and-cutouts">Work with window insets and display cutouts</a>. </p> </li> <li> <p>New criteria: <a href="#AR-2">AR-2</a></p> <hr style="margin: 0;" /> <p> The app renders into display cutouts to fully make use of the screen space available while ensuring interactive UI elements remain accessible. See <a href="/training/cars/parked#irregular-displays">Adapt to irregularly shaped displays</a> for more details. </p> </li> </ul> </li> <li> Media Controls <ul> <li>Categories affected: Video</li> <li> <p>New criteria: <a href="#MC-1">MC-1</a></p> <hr style="margin: 0;" /> <p> The app integrates with media session. Depending on the content, the app must support either the play/pause or stop playback commands. Additionally, the app must provide title and thumbnail metadata for every media item. See <a href="/media/media3/session/control-playback">Control and advertise playback using a MediaSession</a>. </p> </li> </ul> </li> <li> UX <ul> <li>Categories affected: Browsers, Games, Video</li> <li> <p>New criteria: <a href="#UX-1">UX-1</a></p> <hr style="margin: 0;" /> <p> Touch targets are at least 64dp. </p> </li> <li> <p>New criteria: <a href="#UX-2">UX-2</a></p> <hr style="margin: 0;" /> <p> Touch targets are at least 24dp apart from each other and 24dp away from screen edges. </p> </li> <li> <p>New criteria: <a href="#UX-3">UX-3</a></p> <hr style="margin: 0;" /> <p> Font sizes should be at least 24sp. </p> </li> </ul> </li> <li> Permitted Experiences <ul> <li>Categories affected: Media, Navigation, POI, IOT</li> <li> <p>New criteria: <a href="#PE-1">PE-1</a></p> <hr style="margin: 0;" /> <p> <strong>Android Automotive OS only:</strong> with the exception of providing setup, settings, and sign-in flows while parked, the app must not provide any functionality through its own activities. </p> </li> </ul> </li> <li> Navigation functionality <ul> <li>Categories affected: Navigation</li> <li> <p>New criteria: <a href="#NF-9">NF-9</a></p> <hr style="margin: 0;" /> <p> The app supports rendering on cluster displays, and only renders map tiles on these displays. See <a href="/training/cars/apps/navigation#drawing_to_the_cluster_display">Drawing to the cluster display</a>. </p> </li> </ul> </li> <li> Delayed Response <ul> <li>Categories affected: Video</li> <li> <p> Removal of criteria <a href="#DR-1">DR-1</a>, <a href="#DR-2">DR-2</a>, and <a href="#DR-3">DR-3</a> for the video category </p> </li> </ul> </li> </ul> <h3 id="oct-23" data-text="October 2023" tabindex="-1">October 2023</h3> <ul> <li>The "Applicable Categories" column has been added to the <a href="#visual_design_and_user_interaction">Visual design and user interaction</a> and <a href="#functionality">Functionality</a> tables.</li> </ul> <h3 id="jul-23" data-text="July 2023" tabindex="-1">July 2023</h3> <ul> <li> <a href="#app_categories">App Categories</a>: "Browsers" has been added </li> <li> <a href="#sensitive-data">Sensitive Data</a> <ul> <li>Categories affected: Browsers</li> <li> <p>New criteria: <a href="#SD-1">SD-1</a></p> <hr style="margin: 0;" /> <p> Browsers must not save or allow access to passwords or payment information unless the user can block access to passwords using a profile lock. <a href="/training/cars/parked/browser#block-sensitive">(Learn how)</a> </p> </li> <li> <p>New criteria: <a href="#SD-2">SD-2</a></p> <hr style="margin: 0;" /> <p> Before syncing data to the car, browsers that synchronize passwords or payments data must do the following steps: <ol> <li>Prompt the user to authenticate.</li> <li>Notify the user on the car screen their data will be synchronized to the car.</li> </ol> </p> </li> </ul> </li> </ul> <h3 id="apr-23" data-text="April 2023" tabindex="-1">April 2023</h3> <ul> <li> <a href="#app_categories">App Categories</a>: "Games" has been added </li> <li> <a href="#irrelevant-notifications">Irrelevant Notifications</a> <ul> <li>Categories affected: Games, Video</li> <li> <p>New criteria: <a href="#IN-2">IN-2</a></p> <hr style="margin: 0;" /> <p> The app must not provide any <a href="/training/cars/notifications#hun">heads up notifications</a>. </p> </li> </ul> </li> <li> <a>Settings Flow</a> <ul> <li>Categories affected: Video</li> <li> <p> Removed criteria: SF-1 </p> <hr style="margin: 0"/> <p style="margin-bottom:.5em"> The app must proceed to the home page after sign-in or attempted sign-in. </p> </li> </ul> </li> <li> <a>Automotive Functionality</a> <ul> <li>Categories affected: Video</li> <li> <p> Removed criteria: AF-1 </p> <hr style="margin: 0"/> <p> The app must not contain any distraction-optimized activities. </p> </li> </ul> </li> </ul> <h3 id="mar-23" data-text="March 2023" tabindex="-1">March 2023</h3> <ul> <li> Grammar and formatting changes. </li> </ul> <h3 id="dec-22" data-text="December 2022" tabindex="-1">December 2022</h3> <ul> <li> <a href="#iot-functionality">Internet of Things Functionality</a> <ul> <li>Categories affected: Internet of Things</li> <li> <p>New criteria:</p> <hr style="margin: 0;" /> The IOT app may allow the following while driving: <ul> <li> <b>View the current state of devices</b>. For example: to view if a garage door is open or closed, a light bulb is on or off, a security system is armed or disarmed, or a washer is running or completed. </li> <li> <b>Simple, one-touch features that control on and off functions</b >. For example: the ability to turn various devices on and off or open and close them, including turning lights on and off, turning a thermostat on and off, or opening and closing a garage door or curtain. This also includes turning a pre-programmed scene or routine on and off. </li> <li> <b>Notify users about an event in the home or another location</b >. For example: receiving notifications for a routine or scene, a security alert, or a change in a door's open or closed status. </li> </ul> The IOT app must not allow the following while driving: <ul> <li> <b>Tasks related to app setup of any kind</b>. For example: the ability to select devices, systems, or locations for use with the IOT app. </li> <li> <b>Tasks related to creation, modification, or reordering</b>. For example: the ability to create, modify, or reorder a scene or routine, such as a sequence of events when departing or leaving a location, including opening and closing a garage door, or turning lights on and off. </li> <li> <b>Tasks related to fine-grained device control</b>. For example: the ability to control certain functions, including adjusting thermostat temperatures or the level of lighting luminescence. </li> </ul> </li> </ul> </li> </ul> <h3 id="may-22" data-text="May 2022" tabindex="-1">May 2022</h3> <ul> <li> <a href="#app_categories">App Categories</a>: "Parking & Charging" has been replaced with "Point of Interest" </li> <li> <a href="#screen-animation">Screen Animation</a> <ul> <li>Categories affected: Media, Messaging, Navigation, and Point of Interest</li> <li> <p>Previous text:</p> <hr style="margin: 0" /> <p> The app does not display animated elements on the screen such as animated graphics, video, or progress bars. </p> <hr style="margin: 0" /> </li> <li> <p>New text:</p> <hr style="margin: 0"/> <p> The app does not display animated elements on the screen such as animated graphics or video. </p> <hr style="margin: 0"/> </li> </ul> </li> <li> <a href="#image-usage">Image Usage</a> <ul> <li>Categories affected: Media, Messaging, Navigation, and Point of Interest</li> <li> <p>Previous text:</p> <hr style="margin: 0" /> <p style="margin-bottom:.5em;"> App elements do not display any images on the screen. Exceptions include: </p> <ul> <li>Apps may display a single static image for content context in the background of the consumption screen, such as album art or the advertiser's corporate logo.</li> <li>Apps may display icons in the content navigation drawer.</li> <li>Navigation, parking, and charging apps may display images and photographs to aid in driving decision-making.</li> <li>Navigation apps may display an image for lane guidance or junction guidance.</li> </ul> <hr style="margin: 0" /> </li> <li> <p>New text:</p> <hr style="margin: 0"/> <p style="margin-bottom:.5em;"> App elements do not display any images on the screen. Exceptions include: </p> <ul> <li>Apps may display a single static image for content context in the background of the consumption screen, such as album art or the advertiser's corporate logo.</li> <li>Apps may display icons in the content navigation drawer.</li> <li>Apps may display images and photographs to aid in driving decision-making.</li> <li>Navigation apps may display an image for lane guidance or junction guidance.</li> </ul> <hr style="margin: 0"/> </li> </ul> </li> <li> <a href="#permitted-categories">Since cars are large screen devices, apps should fill thtegories</a> <ul> <li>Categories affected: Media, Messaging, Navigation, Point of Interest, and Video</li> <li> <p>Previous text:</p> <hr style="margin: 0" /> The app does not include games or other features outside the app types intended for cars. For more information, see <a href="/training/cars#supported-app-categories">Supported app categories</a>. <hr style="margin: 0" /> </li> <li> <p>New text:</p> <hr style="margin: 0"/> The app does not include features outside the app types intended for cars. For more information, see <a href="/training/cars#supported-app-categories">Supported app categories</a>. <hr style="margin: 0"/> </li> </ul> </li> <li> <a href="#phone-visual">Visual Information on Phone</a> <ul> <li>Categories affected: Media, Navigation, and Point of Interest</li> <li> <p>Previous text:</p> <hr style="margin: 0" /> <strong>Android Auto only:</strong> If the user must go to the phone screen—for example, to act on a permission request—then the app must display a message instructing the user to only look at their phone screen when it’s safe to do so. For more information, see <a href="/training/cars/media#errors">Handle general errors</a> for media, and <a href="/training/cars/apps#handle-user-input">Handle user input</a> for navigation, parking, and charging. <hr style="margin: 0" /> </li> <li> <p>New text:</p> <hr style="margin: 0"/> <strong>Android Auto only:</strong> If the user must go to the phone screen—for example, to act on a permission request—then the app must display a message instructing the user to only look at their phone screen when it’s safe to do so. For more information, see <a href="/training/cars/media#errors">Handle general errors</a> for media, and <a href="/training/cars/apps#handle-user-input">Handle user input</a> for navigation and point of interest apps. <hr style="margin: 0"/> </li> </ul> </li> <li> <a href="#nav-functionality">Navigation Functionality</a> <ul> <li>Categories affected: Navigation</li> <li> <p>Previous text:</p> <hr style="margin: 0" /> The app draws only map content on the surface of the navigation templates. Text-based turn-by-turn directions, lane guidance, and estimated arrival time must be displayed on the relevant components of the Navigation template. Additional information relevant to the drive— for example, speed limit and road obstructions—can be drawn on the right side of the map. <hr style="margin: 0" /> </li> <li> <p>New text:</p> <hr style="margin: 0"/> The app draws only map content on the surface of the navigation templates. Text-based turn-by-turn directions, lane guidance, and estimated arrival time must be displayed on the relevant components of the Navigation template. Additional information relevant to the drive—speed limit and road obstructions—can be drawn on the safe area of the map. <hr style="margin: 0"/> </li> </ul> </li> <li> <a href="#poi-functionality">Point of Interest Functionality</a> <ul> <li>Categories affected: Point of Interest</li> <li> <p>Previous text:</p> <hr style="margin: 0" /> The app must provide meaningful functionality in its category relevant to driving. <hr style="margin: 0" /> </li> <li> <p>New text:</p> <hr style="margin: 0"/> The app must provide meaningful functionality relevant to driving. <hr style="margin: 0"/> </li> <li> <p> Removed criteria: </p> <hr style="margin: 0"/> <p style="margin-bottom:.5em;"> If a parking app is displaying a list of locations next to a map—for example, the Place List Map template—then the locations in the list can only be parking spots. </p> <p> Similarly, for a charging app, the locations must be charging stations. </p> <hr style="margin: 0"/> </li> </ul> </li> </ul> <h3 id="apr-22" data-text="April 2022" tabindex="-1">April 2022</h3> <ul> <li> <a href="#display-orientation">Display Orientation</a> <ul> <li>Categories affected: Video</li> <li> <p>New criteria:</p> <hr style="margin: 0;"/> <p> UIs drawn by the app support both landscape and portrait screens. </p> </li> </ul> </li> <li> <a href="#driver-distraction">Driver Distraction</a> <ul> <li>Categories affected: Video</li> <li> <p>New criteria:</p> <hr style="margin: 0;"/> <p> While driving, the video app must not be launchable and the video app's screen must not be visible. The video app's audio must stop when the user starts driving. </p> </li> </ul> </li> <li> <a href="#settings-flow">Settings Flow</a> <ul> <li>Categories affected: Video</li> <li> <p>New criteria:</p> <hr style="margin: 0;"/> <p> App must proceed to the home page after (attempted) sign-in. </p> </li> </ul> </li> <li> <a href="#automotive-functionality">Automotive Functionality</a> <ul> <li>Categories affected: Video</li> <li> <p>New criteria:</p> <hr style="margin: 0;"/> <p> App does not contain driver optimized activities. </p> </li> </ul> </li> <li> <a href="#cpu-architectures">CPU Architectures</a> <ul> <li>Categories affected: Video</li> <li> <p>New criteria:</p> <hr style="margin: 0;"/> <p> App supports both x86_64 and ARM CPUs. </p> </li> </ul> </li> <li> <a href="#app-navigability">App Navigability</a> <ul> <li>Categories affected: Video</li> <li> <p>New criteria:</p> <hr style="margin: 0;"/> <p> App allows users to navigate through the app without encountering any dead ends. </p> </li> </ul> </li> </ul> <h3 id="nov-21" data-text="November 2021" tabindex="-1">November 2021</h3> <ul> <li><a href="#phone-visual">Visual Information on Phone</a> <ul> <li>Categories affected: Media, Navigation, and Parking & Charging</li> <li> <p>Previous text:</p> <hr style="margin: 0" /> <p> While the app is interacting with the car screen and the car is not parked, the app does not activate the phone screen to present any form of visual information such as notifications, toasts, video, images, advertising, or similar. For more information, see <a href="/training/cars/apps/navigation#handle-user-input">Build a navigation app</a> for navigation, parking, and charging. Similarly, while the app is running Android Auto UI on the phone screen, the app does not present any visual information on the phone screen that is unrelated to Android Auto. <br /><br /> If the user must go to the phone screen—for example, to act on a permission request—then the app must display a message instructing the user to only look at their phone screen when it’s safe to do so. </p> <hr style="margin: 0" /> </li> <li> <p>New text:</p> <hr style="margin: 0"/> <p><strong>Android Auto only:</strong> If the user must go to the phone screen—for example, to act on a permission request—then the app must display a message instructing the user to only look at their phone screen when it’s safe to do so. For more information, see <a href="/training/cars/media#errors">Handle general errors</a> for media, and <a href="/training/cars/apps#handle-user-input">Handle user input</a> for navigation, parking, and charging. </p> <hr style="margin: 0"/> </li> </ul> </li> <li><a href="#payments">Payments</a> <ul> <li>Categories affected: Navigation, Parking & Charging</li> <li> <p>Previous text:</p> <hr style="margin: 0" /> <p> The app must have simple flows if purchases are enabled. </p> <hr style="margin: 0" /> </li> <li> <p>New text:</p> <hr style="margin: 0"/> <p>The app must have simple flows if purchases are enabled, using shortcuts such as recent or favorite purchases. For more information, see <a href="https://developers.google.com/cars/design/create-apps/sample-flows/purchase-with-existing-method">Purchase using existing payment method</a>. </p> <p> The app must not allow any of the following: </p> <ul> <li>Setup of payment methods</li> <li>Multiple items to be selected for purchase</li> <li>The user to commit to recurring payments—for example, subscriptions.</li> </ul> <hr style="margin: 0"/> </li> </ul> </li> </ul> <devsite-hats-survey class="nocontent" hats-id="VxqvKSur40kxBYCLVTd0SSGykbno" listnr-id="5207477"></devsite-hats-survey> </div> <devsite-recommendations display="in-page" hidden yield> </devsite-recommendations> <devsite-thumb-rating position="footer"> </devsite-thumb-rating> <devsite-recommendations id="recommendations-link" yield></devsite-recommendations> <div class="devsite-floating-action-buttons"> </div> </article> <devsite-content-footer class="nocontent"> <p>Content and code samples on this page are subject to the licenses described in the <a href="/license">Content License</a>. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.</p> <p>Last updated 2024-08-02 UTC.</p> </devsite-content-footer> <devsite-notification > </devsite-notification> <div class="devsite-content-data"> <template class="devsite-content-data-template"> [[["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-08-02 UTC."],[],[]] </template> </div> </devsite-content> </main> <devsite-footer-promos class="devsite-footer"> <nav class="devsite-footer-promos nocontent" aria-label="Promotions"> <ul class="devsite-footer-promos-list"> <li class="devsite-footer-promo"> <a href="//x.com/AndroidDev" class="devsite-footer-promo-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer X Promo" > <picture> <source class="devsite-dark-theme" srcset="https://developer.android.com/_static/android/images/logo-x_dt.svg" media="(prefers-color-scheme: dark)" loading="lazy" alt="X"> <img class="devsite-footer-promo-icon" src="/_static/android/images/logo-x.svg" loading="lazy" alt="X"> </picture> <span class="devsite-footer-promo-label"> X </span> </a> <div class="devsite-footer-promo-description">Follow @AndroidDev on X</div> </li> <li class="devsite-footer-promo"> <a href="//www.youtube.com/user/androiddevelopers" class="devsite-footer-promo-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer YouTube Promo" > <picture> <source class="devsite-dark-theme" srcset="https://developer.android.com/_static/android/images/logo-youtube_dt.svg" media="(prefers-color-scheme: dark)" loading="lazy" alt="YouTube"> <img class="devsite-footer-promo-icon" src="//www.gstatic.com/images/icons/material/product/2x/youtube_48dp.png" loading="lazy" alt="YouTube"> </picture> <span class="devsite-footer-promo-label"> YouTube </span> </a> <div class="devsite-footer-promo-description">Check out Android Developers on YouTube</div> </li> <li class="devsite-footer-promo"> <a href="//www.linkedin.com/showcase/androiddev" class="devsite-footer-promo-title gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer LinkedIn Promo" > <picture> <source class="devsite-dark-theme" srcset="https://developer.android.com/_static/android/images/logo-linkedin_dt.svg" media="(prefers-color-scheme: dark)" loading="lazy" alt="LinkedIn"> <img class="devsite-footer-promo-icon" src="/_static/android/images/logo-linkedin.svg" loading="lazy" alt="LinkedIn"> </picture> <span class="devsite-footer-promo-label"> LinkedIn </span> </a> <div class="devsite-footer-promo-description">Connect with the Android Developers community on LinkedIn</div> </li> </ul> </nav> </devsite-footer-promos> <devsite-footer-linkboxes class="devsite-footer"> <nav class="devsite-footer-linkboxes nocontent" aria-label="Footer links"> <ul class="devsite-footer-linkboxes-list"> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">More Android</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//www.android.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Android </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//www.android.com/enterprise/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Android for Enterprise </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//www.android.com/security-center/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Security </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//source.android.com" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Source </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/news" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > News </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//android-developers.googleblog.com/" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)" > Blog </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/podcasts" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 7)" > Podcasts </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Discover</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/games" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Gaming </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/ml" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Machine Learning </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/health-and-fitness" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Health & Fitness </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/media" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Camera & Media </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/privacy" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Privacy </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/training/connectivity/5g" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)" > 5G </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Android Devices</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/large-screens" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Large screens </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/wear" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Wear OS </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/chrome-os" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > ChromeOS devices </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/cars" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Android for cars </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/tv" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Android TV </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Releases</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/15" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Android 15 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/14" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Android 14 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/13" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Android 13 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/12" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Android 12 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/11" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Android 11 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/10" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 6)" > Android 10 </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/about/versions/pie" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 7)" > Pie </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Documentation and Downloads</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="/studio/intro" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Android Studio guide </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/guide" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Developers guides </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/reference" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > API reference </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/studio" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Download Studio </a> </li> <li class="devsite-footer-linkbox-item"> <a href="/ndk" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 5)" > Android NDK </a> </li> </ul> </li> <li class="devsite-footer-linkbox "> <h3 class="devsite-footer-linkbox-heading no-link">Support</h3> <ul class="devsite-footer-linkbox-list"> <li class="devsite-footer-linkbox-item"> <a href="//issuetracker.google.com/issues/new?component=190923&template=841312" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 1)" > Report platform bug </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//issuetracker.google.com/issues/new?component=192697" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 2)" > Report documentation bug </a> </li> <li class="devsite-footer-linkbox-item"> <a href="//support.google.com/googleplay/android-developer" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 3)" > Google Play support </a> </li> <li class="devsite-footer-linkbox-item"> <a href="https://g.co/userresearch/androiddeveloperfooter" class="devsite-footer-linkbox-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Link (index 4)" > Join research studies </a> </li> </ul> </li> </ul> </nav> </devsite-footer-linkboxes> <devsite-footer-utility class="devsite-footer"> <div class="devsite-footer-utility nocontent"> <nav class="devsite-footer-sites" aria-label="Other Google Developers websites"> <a href="https://developers.google.com/" class="devsite-footer-sites-logo-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Developers Link"> <picture> <source srcset="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/images/lockup-google-for-developers-dark-theme.svg" media="(prefers-color-scheme: none)" class="devsite-dark-theme" loading="lazy" alt="Google Developers"> <img class="devsite-footer-sites-logo" src="https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/images/lockup-google-for-developers.svg" loading="lazy" alt="Google Developers"> </picture> </a> <ul class="devsite-footer-sites-list"> <li class="devsite-footer-sites-item"> <a href="//developer.android.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Android Link" > Android </a> </li> <li class="devsite-footer-sites-item"> <a href="//developer.chrome.com/home" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Chrome Link" > Chrome </a> </li> <li class="devsite-footer-sites-item"> <a href="//firebase.google.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Firebase Link" > Firebase </a> </li> <li class="devsite-footer-sites-item"> <a href="//cloud.google.com" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer Google Cloud Platform Link" > Google Cloud Platform </a> </li> <li class="devsite-footer-sites-item"> <a href="//developers.google.com/products/" class="devsite-footer-sites-link gc-analytics-event" data-category="Site-Wide Custom Events" data-label="Footer All products Link" > All products </a> </li> </ul> </nav> <nav class="devsite-footer-utility-links" aria-label="Utility links"> <ul class="devsite-footer-utility-list"> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="//policies.google.com/privacy" data-category="Site-Wide Custom Events" data-label="Footer Privacy link" > Privacy </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="/license" data-category="Site-Wide Custom Events" data-label="Footer License link" > License </a> </li> <li class="devsite-footer-utility-item "> <a class="devsite-footer-utility-link gc-analytics-event" href="/distribute/marketing-tools/brand-guidelines" data-category="Site-Wide Custom Events" data-label="Footer Brand guidelines link" > Brand guidelines </a> </li> <li class="devsite-footer-utility-item glue-cookie-notification-bar-control"> <a class="devsite-footer-utility-link gc-analytics-event" href="#" data-category="Site-Wide Custom Events" data-label="Footer Manage cookies link" aria-hidden="true" > Manage cookies </a> </li> <li class="devsite-footer-utility-item devsite-footer-utility-button"> <span class="devsite-footer-utility-description">Get news and tips by email</span> <a class="devsite-footer-utility-link gc-analytics-event" href="/updates" data-category="Site-Wide Custom Events" data-label="Footer Subscribe link" > Subscribe </a> </li> </ul> <devsite-language-selector> <ul role="presentation"> <li role="presentation"> <a role="menuitem" lang="en" >English</a> </li> <li role="presentation"> <a role="menuitem" lang="de" >Deutsch</a> </li> <li role="presentation"> <a role="menuitem" lang="es_419" >Español – América Latina</a> </li> <li role="presentation"> <a role="menuitem" lang="fr" >Français</a> </li> <li role="presentation"> <a role="menuitem" lang="id" >Indonesia</a> </li> <li role="presentation"> <a role="menuitem" lang="it" >Italiano</a> </li> <li role="presentation"> <a role="menuitem" lang="pl" >Polski</a> </li> <li role="presentation"> <a role="menuitem" lang="pt_br" >Português – Brasil</a> </li> <li role="presentation"> <a role="menuitem" lang="vi" >Tiếng Việt</a> </li> <li role="presentation"> <a role="menuitem" lang="tr" >Türkçe</a> </li> <li role="presentation"> <a role="menuitem" lang="ru" >Русский</a> </li> <li role="presentation"> <a role="menuitem" lang="he" >עברית</a> </li> <li role="presentation"> <a role="menuitem" lang="ar" >العربيّة</a> </li> <li role="presentation"> <a role="menuitem" lang="fa" >فارسی</a> </li> <li role="presentation"> <a role="menuitem" lang="hi" >हिंदी</a> </li> <li role="presentation"> <a role="menuitem" lang="bn" >বাংলা</a> </li> <li role="presentation"> <a role="menuitem" lang="th" >ภาษาไทย</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_cn" >中文 – 简体</a> </li> <li role="presentation"> <a role="menuitem" lang="zh_tw" >中文 – 繁體</a> </li> <li role="presentation"> <a role="menuitem" lang="ja" >日本語</a> </li> <li role="presentation"> <a role="menuitem" lang="ko" >한국어</a> </li> </ul> </devsite-language-selector> </nav> </div> </devsite-footer-utility> <devsite-panel></devsite-panel> </section></section> <devsite-sitemask></devsite-sitemask> <devsite-snackbar></devsite-snackbar> <devsite-tooltip ></devsite-tooltip> <devsite-heading-link></devsite-heading-link> <devsite-analytics> <script type="application/json" analytics>[]</script> <script type="application/json" tag-management>{"at": "True", "ga4": [{"id": "G-QFRN08RN6E", "purpose": 0}], "ga4p": [{"id": "G-QFRN08RN6E", "purpose": 0}], "gtm": [{"id": "GTM-KMSWPCJ", "purpose": 0}], "parameters": {"internalUser": "False", "language": {"machineTranslated": "False", "requested": "en", "served": "en"}, "pageType": "article", "projectName": "App quality", "signedIn": "False", "tenant": "android", "recommendations": {"sourcePage": "", "sourceType": 0, "sourceRank": 0, "sourceIdenticalDescriptions": 0, "sourceTitleWords": 0, "sourceDescriptionWords": 0, "experiment": ""}, "experiment": {"ids": ""}}}</script> </devsite-analytics> <devsite-badger></devsite-badger> <android-fully-clickable target=" .android-case-study .devsite-landing-row-item, .android-grouped-resources .devsite-landing-row-item, .android-grouped-resources-primary .devsite-landing-row-item, .android-grouped-resources-secondary .devsite-landing-row-item, .android-guide-cards .devsite-landing-row-item, .android-illustrated-resources-index .devsite-landing-row-item, .android-illustrated-resources-primary .devsite-landing-row-item, .android-illustrated-resources-secondary .devsite-landing-row-item, .android-illustrated-resources-secondary-small .devsite-landing-row-item, .android-illustrated-resources-tertiary .devsite-landing-row-item, .android-illustrated-resources-tertiary-small .devsite-landing-row-item, .android-promo .devsite-landing-row-item, .android-quick-link, .android-samples .devsite-card-wrapper, .fully-clickable" watch=".android-samples, devsite-content"></android-fully-clickable> <script nonce="A4k2BGvdNS51OyxobHY6ISUkU5bce6"> (function(d,e,v,s,i,t,E){d['GoogleDevelopersObject']=i; t=e.createElement(v);t.async=1;t.src=s;E=e.getElementsByTagName(v)[0]; E.parentNode.insertBefore(t,E);})(window, document, 'script', 'https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/js/app_loader.js', '[3,"en",null,"/js/devsite_app_module.js","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android","https://android-dot-devsite-v2-prod.appspot.com",1,null,["/_pwa/android/manifest.json","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/images/video-placeholder.svg","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/images/favicon.svg","https://www.gstatic.com/devrel-devsite/prod/v870e399c64f7c43c99a3043db4b3a74327bb93d0914e84a0c3dba90bbfd67625/android/images/lockup.svg","https://fonts.googleapis.com/css?family=Google+Sans:400,500,600,700|Google+Sans+Text:400,400italic,500,500italic,600,600italic,700,700italic|Roboto+Mono:400,500,700&display=swap"],1,null,[1,6,8,12,14,17,21,25,50,52,63,70,75,76,80,87,91,92,93,97,98,100,101,102,103,104,105,107,108,109,110,112,113,117,118,120,122,124,125,126,127,129,130,131,132,133,134,135,136,138,140,141,147,148,149,151,152,156,157,158,159,161,163,164,168,169,170,179,180,182,183,186,191,193,196],"AIzaSyAP-jjEJBzmIyKR4F-3XITp8yM9T1gEEI8","AIzaSyB6xiKGDR5O3Ak2okS4rLkauxGUG7XP0hg","developer.android.com","AIzaSyAQk0fBONSGUqCNznf6Krs82Ap1-NV6J4o","AIzaSyCCxcqdrZ_7QMeLCRY20bh_SXdAYqy70KY",null,null,null,["MiscFeatureFlags__enable_view_transitions","CloudShell__cloud_code_overflow_menu","Profiles__enable_public_developer_profiles","TpcFeatures__enable_mirror_tenant_redirects","Cloud__enable_cloud_shell_fte_user_flow","TpcFeatures__enable_required_headers","Cloud__enable_llm_concierge_chat","Profiles__enable_page_saving","Cloud__enable_cloudx_experiment_ids","CloudShell__cloud_shell_button","Experiments__reqs_query_experiments","Concierge__enable_pushui","Profiles__enable_awarding_url","Search__enable_suggestions_from_borg","Cloud__enable_legacy_calculator_redirect","DevPro__enable_developer_subscriptions","Profiles__enable_completecodelab_endpoint","DevPro__enable_cloud_innovators_plus","EngEduTelemetry__enable_engedu_telemetry","MiscFeatureFlags__emergency_css","MiscFeatureFlags__enable_explain_this_code","Profiles__enable_recognition_badges","Search__enable_dynamic_content_confidential_banner","Search__enable_ai_eligibility_checks","Cloud__enable_cloud_shell","Search__enable_page_map","Profiles__enable_developer_profiles_callout","Profiles__enable_complete_playlist_endpoint","MiscFeatureFlags__developers_footer_dark_image","Cloud__enable_cloud_dlp_service","MiscFeatureFlags__enable_variable_operator","Analytics__enable_clearcut_logging","Profiles__enable_profile_collections","MiscFeatureFlags__enable_dark_theme","Cloud__enable_free_trial_server_call","Cloud__enable_cloudx_ping","MiscFeatureFlags__enable_firebase_utm","Search__enable_ai_search_summaries","Significatio__enable_by_tenant","Profiles__enable_dashboard_curated_recommendations","MiscFeatureFlags__enable_project_variables","Cloud__enable_cloud_facet_chat","Profiles__require_profile_eligibility_for_signin","MiscFeatureFlags__developers_footer_image","Profiles__enable_release_notes_notifications","BookNav__enable_tenant_cache_key"],null,null,"AIzaSyBLEMok-5suZ67qRPzx0qUtbnLmyT_kCVE","https://developerscontentserving-pa.googleapis.com","AIzaSyCM4QpTRSqP5qI4Dvjt4OAScIN8sOUlO-k","https://developerscontentsearch-pa.googleapis.com",2,4,null,"https://developerprofiles-pa.googleapis.com",[3,"android","Android Developers","developer.android.com",null,"android-dot-devsite-v2-prod.appspot.com",null,null,[null,1,null,null,null,null,null,null,null,null,null,[1],null,null,null,null,null,null,[1],[1,null,null,[1,20],"/recommendations"],null,null,null,[1,null,1],[1,1,null,1,1]],null,[18,null,null,null,null,null,"/images/lockup.svg","/images/touchicon-180.png",null,null,null,null,null,null,null,null,null,null,null,null,null,1,null,null,null,"/images/lockup-dark-theme.svg",[]],[],null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[6,1,14,15,20,22,23,28,29,37,43],null,[[null,null,1],[1,1]],[[null,null,null,null,null,null,null,[["G-QFRN08RN6E"],null,null,[["G-QFRN08RN6E",1]]],null,null,null,null,1],null,[[2,2],[1,1]]],null,4,null,null,null,null,null,null,null,null,null,null,null,null,null,"android.devsite.google"],null,"pk_live_5170syrHvgGVmSx9sBrnWtA5luvk9BwnVcvIi7HizpwauFG96WedXsuXh790rtij9AmGllqPtMLfhe2RSwD6Pn38V00uBCydV4m"]') </script> <devsite-a11y-announce></devsite-a11y-announce> </body> </html>