Android Developers
Platform Android Studio Google Play Jetpack Kotlin Docs Games
  • English
  • Bahasa Indonesia
  • Deutsch
  • Español
  • Español – América Latina
  • Français
  • Português – Brasil
  • Tiếng Việt
  • Türkçe
  • Русский
  • ภาษาไทย
  • 中文 – 简体
  • 中文 – 繁體
  • 日本語
  • 한국어
  • Documentation
Overview Guides UI Guide Reference Samples Design & Quality
Android Developers
  • Platform
  • Android Studio
  • Google Play
  • Jetpack
  • Kotlin
  • Docs
    • Overview
    • Guides
    • UI Guide
    • Reference
    • Samples
    • Design & Quality
  • Games
  • Developer guides
  • App basics
    • Build your first app
    • App fundamentals
    • App resources
      • About app resources
      • Handle configuration changes
      • Localization
        • Localize your app
        • Test your app with pseudolocales
        • Unicode and internationalization support
        • Language and locale resolution
        • Per-app language preferences
      • Complex XML resources
      • Resource types
        • About resource types
        • Animation
        • Color state list
        • Drawable
        • Layout
        • Menu
        • String
        • Style
        • Font
        • More types
    • App manifest file
      • About app manifests
      • <action>
      • <activity>
      • <activity-alias>
      • <application>
      • <category>
      • <compatible-screens>
      • <data>
      • <grant-uri-permission>
      • <instrumentation>
      • <intent-filter>
      • <layout>
      • <manifest>
      • <meta-data>
      • <path-permission>
      • <permission>
      • <permission-group>
      • <permission-tree>
      • <profileable>
      • <property>
      • <provider>
      • <queries>
      • <receiver>
      • <service>
      • <supports-gl-texture>
      • <supports-screens>
      • <uses-configuration>
      • <uses-feature>
      • <uses-library>
      • <uses-native-library>
      • <uses-permission>
      • <uses-permission-sdk-23>
      • <uses-sdk>
  • Devices
    • Device compatibility
      • About device compatibility
      • About screen compatibility
      • Enhanced letterboxing
      • Support different pixel densities
      • Declare restricted screen support
      • Multiple APK support
        • About multiple APKs
        • Create multiple APKs for different API levels
        • Create multiple APKs for different screen sizes
        • Create multiple APKs for different GL textures
        • Create multiple APKs with several dimensions
      • Support different languages and cultures
      • Support different platform versions
      • Filters on Google Play
      • 64-bit Support
    • Large screens — tablets, foldables, ChromeOS
      • Get started with large screens
      • Large screen canonical layouts
      • Large screen ready
        • Multi-window support
        • Media projection
        • Input compatibility on large screens
      • Large screen optimized
        • Support different screen sizes
        • Migrate your UI to responsive layouts
        • Navigation for responsive UIs
        • Activity embedding
      • Large screen differentiated
        • Learn about foldables
        • Make your app fold aware
        • Test your app on foldables
      • Large screen cookbook
    • Wear
      • Get started
      • Principles of Wear OS development
      • Upgrade to the latest version of Wear OS
      • Wear OS versus mobile development
      • Wear OS user interfaces
      • Accessibility on Wear OS
      • Getting started
        • Wear OS developer pathway
        • Create and run a wearable app
        • Debug a Wear OS app
        • Capture Wear UI screenshots
      • Apps
        • About Wear OS apps
        • Standalone apps
        • Authentication
        • Request permissions
        • Detect location
        • Playing audio on wearables
        • Appear in recents and app resume
      • Building UI with Compose
        • Use Jetpack Compose on Wear OS
        • Compose performance
        • Navigation
        • Rotary input on Compose
        • Buttons
        • Cards
        • Chips
        • Dialogs
        • Lists
        • Page indicators
        • Pickers
        • Position indicator
        • Progress indicator
        • Sliders
        • Steppers
        • Swipe to dismiss
        • Toggle chips
        • Time text
      • Building UI with Views
        • Build View-based UIs on Wear OS
        • Handle different watch shapes
        • Create lists
        • Navigation
        • Exit full screen activities on Wear
        • Show confirmations
        • Keep your app visible on Wear
      • Tiles and complications
        • About tiles
        • Get started with tiles
        • Update tiles
        • Interact with tiles
        • Watch face complications
        • Expose data to complications
      • Notifications
        • Notifications on Wear OS
        • Bridging options for notifications
        • Ongoing Activities
      • Handling data
        • Send and sync data on Wear OS
        • Network access and sync on Wear OS
        • Access the Wearable Data Layer
        • Transfer assets
        • Send and receive messages
        • Handle data layer events
        • Sync data items with the Data Layer API
      • User input
        • Physical buttons
        • Rotary input on Views
        • Create input method editors in Wear
        • Voice
      • Health services
        • About health services
        • Active data and exercise
        • Passive data updates
        • Use synthetic data providers
        • Enhance app compatibility
      • Design
        • Design principles
        • Getting started
        • Interaction types
        • Screen shapes
        • Notifications
        • Complications
        • Tiles
        • Tiles design system
        • Apps
        • Ongoing activities
        • Confirmation overlay
        • Disconnection indicators
        • Permission messages
        • Selection controls
        • Launch and latency
        • Navigation
        • Permissions
        • Sign in
        • Hardware buttons
        • Color
        • Typography
        • Icons
        • Downloads
        • Wear Material Theming
      • Creating watch faces
        • About watch faces
        • Design watch faces
        • Build a watch face service
        • Draw watch faces
        • Adding complications to a watch face
        • Creating interactive watch faces
        • Provide configuration activities
        • Address common issues
        • Improve performace with hardware acceleration
        • Optimize performance and battery life
        • Self-tag watch faces
      • Watch Face Studio
        • Watch Face Studio
        • Keyboard shortcuts
        • Manage a Watch Face Studio project
        • Create a watch face with Watch Face Studio
        • Build complications in Watch Face Studio
        • Tag expressions
        • Language settings
        • Always-on in Watch Face Studio
        • Gyro effects
        • Build and upload from Watch Face Studio
        • Test your watch face
        • FAQ
        • Performance tips
      • Wear app quality
      • Package Wear OS apps
      • Distribute to Wear OS
      • Create Wear OS apps for China
      • Wear OS release notes
    • Android TV
      • In this guide
      • Build TV Apps
        • In this guide
        • Get started with TV apps
        • AndroidX TV libraries
        • Handle TV hardware
        • Manage TV controllers
        • Build TV layouts
        • On-screen keyboard
        • Create TV navigation
        • Best practices for driving engagement on Google TV
      • Build TV playback apps
        • In this guide
        • UI guidance & Leanback API
          • Create a catalog browser
          • Provide a card view
          • Build a details view
          • Use transport controls
          • Playback controls on TV
          • Ambient mode
          • Add a guided step
          • Introduce first-time users to your app
        • Implement a media session
        • Background playback in a Now Playing card
        • Audio capabilities
        • Match content frame rate
      • Help users find content on TV
        • About finding TV content
        • Recommend TV content
          • About recommending TV content
          • Channels on the home screen
          • Video program attributes
          • Audio program attributes
          • Game program attributes
          • Watch Next
            • Add programs
            • Attributes
            • Guidelines for app developers
            • Guidelines for TV providers
          • Preview videos
          • Recommendations in Android N and earlier
        • Make TV apps searchable
        • Search within TV Apps
      • Build TV games
        • About TV games
        • Use Stream Protect for latency-sensitive streaming apps
      • Build TV input services
        • About TV input services
        • Develop a TV input service
        • Work with channel data
        • Manage TV user interaction
        • Support time-shifting
        • Support content recording
      • TV Accessibility
        • Accessibility best practices
        • TalkBack evaluation examples
        • Adopt system caption settings
        • Custom view accessibility support
        • Custom view accessibility sample
      • TV Apps checklist
      • Distribute to Android TV
      • Releases
        • Android 12 for TV
        • Android 13 for TV
    • Android for Cars
      • About Android for Cars
      • Build media apps for cars
        • Build media apps for cars
        • Add support for Android Auto
        • Add support for Android Automotive OS
      • Build messaging apps for Android Auto
      • Build point of interest, internet of things, and navigation apps for cars
        • Using the Android for Cars App Library
        • Build point of interest apps for cars
        • Build internet of things apps for cars
        • Build navigation apps for cars
        • Add support for Android Auto
        • Add support for Android Automotive OS
      • Build video apps for Android Automotive OS
      • Test Android apps for cars
      • Distribute Android apps for cars
      • Google Play services for cars
      • Notifications on Android Automotive OS
    • Chrome OS devices
      • About Chrome OS
      • Building apps for Chrome OS
      • Optimizing Apps for Chrome OS
      • Preparing your development environment
      • App Manifest Compatibility for Chromebooks
      • Chrome OS Device Support for Apps
      • App Rendering Differences on Chromebooks
      • Window management
      • Adapting Games on Chrome OS
      • Smooth animation on Chrome OS
      • Test Cases for Android Apps on Chrome OS
    • Android (Go edition)
      • About Android Go edition
      • Develop for Android (Go edition)
      • Test Android Go apps
      • Optimize for Android (Go edition)
        • Approach
        • Optimize app memory
        • Improve startup latency
        • Reduce app size
      • Best practices
  • App architecture
    • Introduction
    • Guide to app architecture
      • About app architecture
      • UI layer
        • About the UI layer
        • UI events
        • State holders and UI state
        • State production
      • Domain layer
      • Data layer
        • About the data layer
        • Offline first
      • Architecture recommendations
      • Learning pathway
    • Modularization
      • About modularization
      • Common patterns
      • Recipes
        • Navigation
    • Architecture components
      • UI layer libraries
        • View binding
          • About view binding
          • Migrate from Kotlin synthetics to view binding
        • Data binding library
          • About data binding
          • Get started
          • Layouts and binding expressions
          • Work with observable data objects
          • Generated binding classes
          • Binding adapters
          • Bind layout views to Architecture Components
          • Two-way data binding
        • Lifecycle-aware components
          • Handle lifecycles
          • ViewModel
            • About ViewModel
            • Create ViewModels with dependencies
            • ViewModel Scoping APIs
            • Saved State module for ViewModel
            • ViewModel APIs cheat sheet
          • LiveData
          • Save UI states
          • Use Kotlin coroutines with lifecycle-aware components
        • Paging Library
          • About paging
          • Load and display paged data
          • Page from network and database
          • Transform data streams
          • Manage and present loading states
          • Test your Paging implementation
          • Migrate to Paging 3
          • Paging 2
            • About Paging 2
            • Display paged lists
            • Load paged data
      • Data layer libraries
        • DataStore
        • WorkManager
          • About WorkManager
          • Getting Started
          • How-To Guides
            • Defining your WorkRequests
            • Work states
            • Managing work
            • Observing intermediate Worker progress
            • Chaining work together
            • Testing Worker implementation
            • Integration tests with WorkManager
            • Debugging WorkManager
          • Advanced Concepts
            • Configuration and Initialization
            • Threading in WorkManager
              • About threading in WorkManager
              • Threading in Worker
              • Threading in CoroutineWorker
              • Threading in RxWorker
              • Threading in ListenableWorker
            • Support for long-running workers
          • Migrating from Firebase JobDispatcher
          • Migrating from GCMNetworkManager
    • App entry points
      • Activities
        • Introduction to activities
        • The activity lifecycle
        • Activity state changes
        • Test your app's activities
        • Tasks and the back stack
        • Processes and app lifecycle
        • Parcelables and bundles
        • Loaders
        • Recents screen
        • Restrictions on starting activities from the background
      • App shortcuts
        • About app shortcuts
        • Create shortcuts
        • Add capabilities
        • Manage shortcuts
        • Best practices for shortcuts
    • App navigation
      • Principles of navigation
      • Design for different form factors
      • Handle configuration changes
      • Navigation component
        • About the navigation component
        • Getting started
        • Create destinations
        • Design navigation graphs
        • Nested graphs
        • Global actions
        • Navigate to a destination
        • Support multiple back stacks
        • Conditional navigation
        • Pass data between destinations
        • Create a deep link for a destination
        • Animate transitions between destinations
        • Update UI components with NavigationUI
        • Kotlin DSL
        • Type safe navigation with Compose
        • Interact programmatically
        • Navigate with feature modules
        • Best practices for multi-module projects
        • Test navigation
        • Add new destination types
        • Migrate to the Navigation component
      • Fragments
        • About fragments
        • Create a fragment
        • Fragment manager
        • Fragment transactions
        • Animate transitions between fragments
        • Fragment lifecycle
        • Saving state with fragments
        • Communicate with fragments
        • Working with the app bar
        • Displaying dialogs with DialogFragment
        • Debug your fragments
        • Test your fragments
      • App links
        • About app links
        • Enabling links to app content
        • Verify app links
        • Create app links for instant apps
      • Create swipe views with tabs using ViewPager
      • Create swipe views with tabs using ViewPager2
      • Add support for back navigation
        • Custom back navigation
        • Predictive back gesture
    • Dependency injection
      • About dependency injection
      • Manual dependency injection
      • Dependency injection with Hilt
      • Hilt in multi-module apps
      • Use Hilt with other Jetpack libraries
      • Hilt testing guide
      • Hilt and Dagger annotations cheat sheet
      • Dagger
        • Dagger basics
        • Using Dagger in Android apps
        • Using Dagger in multi-module apps
    • App Startup
  • User interfaces
    • Build Android user interfaces
    • Create backward-compatible UIs
      • About backward-compatible UIs
      • Abstracting the new APIs
      • Proxying to the new APIs
      • Creating an implementation with older APIs
      • Using the version-aware component
  • Core topics
    • App compatibility
      • About app compatibility
      • Compatibility framework tools
      • Restrictions on non-SDK interfaces
    • Interact with other apps
      • About interacting with other apps
      • Sending the user to another app
      • Getting a result from an activity
      • Allowing other apps to start your activity
      • Package visibility
        • About package visibility
        • Know which packages are visible automatically
        • Declare package visibility needs
        • Fulfill common use cases
        • Test package visibility
    • Intents and intent filters
      • About intents and intent filters
      • Common intents
    • Audio and video
      • About audio and video
      • Media3
        • About Media3
        • Getting started
          • Use a media session to manage playback
          • Play media in the background
      • Media3 ExoPlayer
        • About Media3 ExoPlayer
        • Getting started
          • Hello world
          • Player events
          • Playlists
          • Media items
          • Media sources
          • Track selection
          • UI components
          • Downloading media
          • Ad insertion
          • Retrieving metadata
          • Live streaming
          • Network stacks
          • Debug logging
          • Analytics
        • Media types
          • DASH
          • HLS
          • SmoothStreaming
          • Progressive
          • RTSP
        • Advanced topics
          • Digital rights management
          • Troubleshooting
          • Customization
          • Battery consumption
          • APK shrinking
          • OEM testing
        • Helpful resources
          • Migrating to Media3
            • Migration guide
            • ExoPlayer to Media3 mappings
          • Pros and cons
          • Demo application
          • Supported formats
          • Supported devices
          • Glossary
        • Release notes
        • Javadoc
        • GitHub
        • Blog
      • Media3 Transformer
        • About Media3 Transformer
        • Getting started
          • Hello world
          • Demo application
          • Transformations
          • Supported formats
        • Advanced topics
          • Customization
          • Troubleshooting
        • Release notes
        • Javadoc
        • GitHub
        • ExoPlayer Blog
      • Spatial Audio
      • HDR video playback
      • Media app architecture
        • About media app architecture
        • Using a media session
        • Building an audio app
          • About audio apps
          • Building a media browser service
          • Building a media browser client
          • Media session callbacks
          • Using the media controller test app
        • Building a video app
          • About video apps
          • Building a video player activity
          • Media session callbacks
          • Compatible media transcoding
        • Responding to media buttons
        • Handling changes in audio output
        • Manage audio focus
      • Media controls
      • The Google Assistant
        • The Google Assistant and media apps
        • Media apps on Google Assistant driving mode
      • Routing between devices
        • About routing
        • About MediaRouter
        • About MediaRouteProvider
      • Supported media formats
      • Media codecs
      • About MediaPlayer
      • About MediaRecorder
      • Control amplitude with VolumeShaper
      • Sharing audio input
      • Capture video and audio playback
      • Frame rate
      • Best practices for sharing video
      • Additional resources for media
    • Services
      • About services
      • Foreground services
      • Bound services
      • About AIDL
    • Background tasks
      • About background tasks
      • Background optimizations
      • Manage awake state
      • Asynchronous work
        • About async work
        • Java threads
        • Coroutines
        • Listenable future
      • Persistent work
        • About persistent work
        • Getting started
          • Getting started
          • Define your work requests
        • How to
          • Work states
          • Manage work
          • Chain work together
          • Support for long-running workers
          • Observe immediate worker progress
          • Update work
        • Threading
          • About threading
          • Threading in Worker
          • Threading in CoRoutineWorker
          • Threading in RxWorker
          • Threading in ListenableWorker
        • Configuration
          • Custom WorkManager configurations
        • Migrate from legacy solutions
          • Migrate from Firebase JobDispatcher
          • Migrate from GCMNetworkManager
      • Testing
        • Asynchronous work
          • Coroutines testing
        • Persistent work
          • Debug WorkManager
          • Integration testing
          • Test worker implementation
      • Broadcasts
        • About broadcasts
        • Implicit Broadcast Exceptions
    • Alarms
      • About alarms
      • Schedule alarms
    • Permissions
      • About permissions
      • Evaluate whether your app needs permissions
      • Declare app permissions
      • Request app permissions
        • Request runtime permissions
        • Request special permissions
      • Explain access to more sensitive information
      • App permissions best practices
      • Permissions used only in default handlers
      • Restrict interactions with other apps
      • Define custom permissions
    • App data and files
      • About app data and files
      • About storage
      • Save to app-specific storage
      • Save to shared storage
        • About shared storage
        • Media
        • Photo picker
        • Documents and other files
        • Datasets
      • Manage all files on a storage device
      • Save key-value data
      • Save data in a local database
        • About the local database
        • Define data using entities
        • Access data using DAOs
        • Define relationships between objects
        • Write asynchronous DAO queries
        • Create views into a database
        • Prepopulate your database
        • Migrate your database
        • Test and debug your database
        • Reference complex data
        • Migrate from SQLite to Room
        • Save data using SQLite
      • Storage use cases and best practices
      • Sharing simple data
        • About sharing simple data
        • Sending simple data to other apps
        • Receiving simple data from other apps
      • Sharing files
        • About sharing files
        • Setting up file sharing
        • Sharing a file
        • Requesting a shared file
        • Retrieving file information
      • Sharing files using NFC
        • About sharing using NFC
        • Sending files to another device
        • Receiving files from another device
      • Printing files
        • About printing
        • Printing photos
        • Printing HTML documents
        • Printing custom documents
      • Content providers
        • About content providers
        • Content provider basics
        • Creating a content provider
        • Open files using storage access framework
        • Create a custom document provider
      • App install location
    • User data and identity
      • About user data
      • Add sign-in workflow
      • Show a biometric authentication dialog
      • Autofill framework
        • About autofill
        • Optimize your app for autofill
        • Build autofill services
        • Integrate autofill with keyboards
      • Identify developer-owned apps
      • Review how your app collects and shares user data
      • Audit data access
      • Get a user-resettable advertising ID
      • About the calendar provider
      • Contacts provider
        • About the contacts provider
        • Retrieving a list of contacts
        • Retrieving details for a contact
        • Modifying contacts using intents
        • Displaying the quick contact badge
      • Account transfer
      • Data backup
        • About backup
        • Back up user data
        • Back up key-value pairs
        • Test backup and restore
      • Best practices for unique identifiers
      • Remember and authenticate users
        • About authentication
        • Remember your user
        • Authenticate to OAuth2 services
        • Create a custom account type
    • User location
      • About user location
      • Request location permissions
      • Get the last known location
      • Change location settings
      • Request location updates
      • Access location in the background
      • Create and monitor geofences
      • Detect when users start an activity
      • Optimize location for battery
      • Test location workflows
      • Migrate to location and context APIs
      • Add maps
    • Camera
      • Choose a camera library
      • Camera intents
      • Camera extensions
        • About camera extensions
        • Supported devices
      • CameraX
        • About CameraX
        • Architecture
        • Configuration
        • Use cases
          • Preview
          • Image capture
          • Image analysis
          • Video capture
        • Advanced topics
          • Extensions API
          • ML Kit Analyzer
          • Rotations
          • Transform output
        • Devices
        • Camera1 to CameraX migration guide
      • Camera2
        • About Camera2
        • Camera capture sessions and requests
        • Camera lenses and capabilities
        • Use multiple camera streams simultaneously
        • Camera preview
        • HDR video capture
        • Multi-Camera API
        • Extensions API
      • Camera (deprecated)
        • About Camera (deprecated)
        • Take photos (deprecated)
        • Record videos (deprecated)
        • Control the camera (deprecated)
        • Camera API (deprecated)
    • Sensors
      • In this guide
      • About sensors
      • Motion sensors
      • Position sensors
      • Environment sensors
      • Raw GNSS measurements
    • Connectivity
      • In this guide
      • Cross device SDK
        • About the Cross device SDK
        • Get started
        • Device discovery API
        • Secure connection API
        • Sessions API
        • Test and debug
        • API Reference
      • Performing network operations
        • About performing network operations
        • Connect to the network
        • Manage network usage
        • Reading network state
        • Optimize network access
        • Optimize network data usage
        • Monitor connectivity status and connection metering
        • Parse XML data
      • Perform network operations using Cronet
        • About Cronet
        • Send a simple request
        • Cronet request lifecycle
        • Use Cronet with other libraries
        • Reference
          • org.chromium.net
            • Overview
            • CallbackException
            • CronetEngine
              • Overview
              • CronetEngine.Builder
                • Overview
                • LibraryLoader
            • CronetException
            • InlineExecutionProhibitedException
            • NetworkException
            • QuicException
            • UploadDataProvider
            • UploadDataProviders
            • UploadDataSink
            • UrlRequest
              • Overview
              • Builder
              • Callback
              • Status
              • StatusListener
            • UrlResponseInfo
          • org.chromium.net.apihelpers
            • Overview
            • ByteArrayCronetCallback
            • CronetRequestCompletionListener
            • CronetResponse
            • ImplicitFlowControlCallback
            • InMemoryTransformCronetCallback
            • JsonCronetCallback
            • RedirectHandler
            • RedirectHandlers
            • StringCronetCallback
            • UploadDataProviders
            • UrlRequestCallbacks
              • Overview
              • CallbackAndResponseFuturePair
      • Enhance your apps with 5G
      • Build client-server applications with gRPC
      • Transferring data without draining the battery
        • About efficient downloads
        • Optimize downloads for efficient network access
        • Minimize the effect of regular updates
        • Avoid unoptimized downloads
      • Reduce network battery drain
        • About preserving battery
        • Collecting network traffic data
        • Analyzing data traffic
        • Optimize network access
        • Optimize user-initiated network use
        • Optimize app-initiated network use
        • Optimize server-initiated network use
        • Optimizing general network use
      • Transfer data using Sync Adapters
        • About sync adapters
        • Create a Stub Authenticator
        • Create a Stub Content Provider
        • Create a Sync Adapter
        • Run a Sync Adapter
      • Bluetooth
        • About Bluetooth
        • Set up Bluetooth
        • Find Bluetooth devices
        • Connect Bluetooth devices
        • Transfer Bluetooth data
        • Bluetooth permissions
        • Bluetooth profiles
        • Companion device pairing
      • Bluetooth Low Energy (BLE)
        • About BLE
        • Find BLE devices
        • Connect to a GATT server
        • Transfer BLE data
      • BLE Audio
        • About BLE Audio
        • Audio Manager self-managed calls
        • Telecom API managed calls
        • Audio recording
      • Near Field Communication (NFC)
        • About NFC
        • NFC basics
        • Advanced NFC
        • About host-based card emulation
      • Telecom
        • About telecom
        • Build a calling app
        • Prevent caller ID spoofing
        • Telephony IDs
      • Wi-Fi
        • Request permission to access nearby Wi-Fi devices
        • About Wi-Fi scanning
        • Wi-Fi peer-to-peer
        • About Wi-Fi Aware
        • Wi-Fi location with RTT
        • Local-only hotspot
        • Discover and connect
          • About Network Service Discovery (NSD)
          • Use network service discovery
          • Create P2P connections with Wi-Fi Direct
          • Use Wi-Fi Direct for service discovery
          • Wi-Fi Easy Connect
        • Wi-Fi infrastructure
          • About Wi-Fi infrastructure
          • Wi-Fi suggestion API for internet connectivity
          • Wi-Fi Network Request API for peer-to-peer connectivity
          • Passpoint
          • Save networks and Passpoint configurations
      • USB
        • About USB
        • About accessory mode
        • About USB Host
      • UWB
      • VPN
      • About Session Initiation Protocol (SIP)
      • Open Mobile API reader support
    • Renderscript
      • About Renderscript
      • Advanced RenderScript
      • Migrate from RenderScript
      • Runtime API reference
        • About Runtime API
        • Numerical types
        • Object types
        • Conversion functions
        • Mathematical constants and functions
        • Vector math functions
        • Matrix functions
        • Quaternion functions
        • Atomic update functions
        • Time functions and types
        • Allocation data access functions
        • Object characteristics functions
        • Kernel invocation functions and types
        • Input/output functions
        • Debugging functions
        • Graphics functions and types
        • Index
    • Android app bundles
      • About app bundles
      • Configure the base module
      • Build and test your app bundle
      • Add code transparency
      • About the app bundle format
      • Frequently asked questions
    • Google Play
      • Google Play Billing
      • Google Play Core libraries
      • Engage SDK
        • About Engage SDK
        • Engage SDK Watch integration guide
        • Engage SDK Listen integration guide
        • Engage SDK Read integration guide
        • Engage SDK Shopping integration guide
        • Engage SDK Food integration guide
        • Engage SDK integration workflow
        • Engage SDK Cluster publishing guidelines
        • Engage SDK Frequently asked questions
      • Play Points
        • About Play Points
        • Create products and promotions
        • Detect and deliver products
        • Test products
      • Play Asset Delivery
        • About Play Asset Delivery
        • Integrate asset delivery (Kotlin & Java)
        • Integrate asset delivery (native)
        • Integrate asset delivery (Unity)
        • Target texture compression formats
        • Test asset delivery
      • Play Feature Delivery
        • About Play Feature Delivery
        • Configure install-time delivery
        • Configure conditional delivery
        • Configure on-demand delivery
        • On-demand delivery best practices
        • Configure instant delivery
        • Additional resources
      • In-app reviews
        • Overview
        • Integrate using Kotlin or Java
        • Integrate using native code
        • Integrate using Unity
        • Test in-app reviews
      • In-app updates
        • About in-app updates
        • Support in-app updates (Kotlin or Java)
        • Support in-app updates (Native)
        • Support in-app updates (Unity)
        • Test in-app updates
      • Google Play Instant
        • About Google Play Instant
        • Get started with instant apps
          • Create an instant-enabled app bundle
          • UX best practices for apps
        • Get started with instant games
          • About instant games
          • Unity plugin
          • UX best practices for games
          • Migrate to Android App Bundles
          • Implement cloud delivery of assets
          • Support Google Play Games Services
          • Instant Play games
          • Instant Play games checklist
        • Reduce the size of your instant app or game
        • Add ads to your instant app or game
        • Provide multiple entry points
        • Integrate with Firebase
          • Add Google Analytics for Firebase to your instant app
          • Use Firebase Dynamic Links with instant apps
        • Technical requirements checklist
        • Google Play Instant policy
        • Resources
          • Reference
          • Code samples
          • SDK release notes
          • Instant App Intents
        • Support
          • Known issues
          • StackOverflow
      • Play Developer APIs
      • Play Install Referrer
        • Overview
        • Play Install Referrer Library
          • Overview
          • Reference
          • Release notes
        • Play Install Referrer API
      • Play Integrity API
      • Play Requirements
        • Play Policies
        • Target API Level
        • Support 64-bit architectures
      • Application Licensing
        • Overview
        • Licensing Overview
        • Setting Up for Licensing
        • Adding Server-Side Verification
        • Adding Client-Side Verification
        • Licensing Reference
      • APK Expansion Files
      • App updates
    • Google Assistant
      • About Assistant for Android
      • Build
        • About App Actions
        • Implement built-in intents
        • Create shortcuts.xml
        • Push dynamic shortcuts to Assistant
        • Release notes
      • Test
        • Google Assistant plugin
      • Grow
        • Engage your users
        • In-App Shortcut Promo SDK
      • Add more features
        • Custom intents
        • Android widgets
        • Foreground app invocation
        • Inline inventory
        • Web inventory
        • Assistant sharing
        • Read It
    • Devices
      • App Actions for cars
      • Assistant for Wear OS
      • Actions.xml
        • Actions.xml migration guide
        • About Actions.xml
        • Build App Actions
        • Create actions.xml
        • Web inventory
        • App Actions test tool
        • Android Slices
        • Troubleshooting
      • Support
    • SDK Extensions
  • Games
    • Games
    • Develop
      • About game development tools
      • Use a game engine
        • About game engines
        • Develop with Defold
          • Install and configure projects for Android
          • Support multiple form factors and screen sizes
          • Export to Android
        • Develop with Godot
          • Install and configure projects for Android
          • Godot renderer options
          • Support multiple form factors and screen sizes
          • Export to Android
        • Develop with Unity
          • Overview
          • Get started on game development with Unity
          • Create an Android App Bundle with Unity
          • Integrate Play Asset Delivery
          • Unity Lighting in Mobile Games
          • Use Android Performance Tuner
            • Overview
            • Enable the API
            • Integrate the plugin
            • Initialize the library and verify operation
            • Define annotations, fidelity parameters, and quality levels
            • Add loading time recording functions
            • Include Addressables scenes
            • Run the monitor app
            • Review and publish
            • Troubleshoot common errors
            • Reference
          • Symbolicate Android crashes and ANR for Unity games
          • Get started with the Memory Advice API for Unity games
        • Develop with Unreal
        • Request permissions for data access
        • Secure your game
      • Create or extend a game engine
        • About custom game engines
        • Start with GameActivity
          • About the GameActivity library
          • Get started with GameActivity
          • Use game text input
          • Migrate from NativeActiviy
          • Configure graphics
          • Understand Android game loops
        • Process input events
          • Add touch support
          • Support text input
          • Support game controllers
            • Overview
            • Use the game controller library
            • Use custom controller device mappings
          • Add mouse support
          • Support sensor input
        • Optimize frame pacing
          • About the Frame Pacing library
          • Frame pacing in OpenGL ES
            • Integrate
            • Update your build settings
            • Add frame pacing functions
            • Verify frame pacing improvement
          • Frame pacing in Vulkan
            • Integrate
            • Update your build settings
            • Add frame pacing functions
            • Verify frame pacing improvement
          • Frame Pacing API Reference
        • Access Java libraries from C/C++
          • About the library wrapper
          • Get started with library wrapper
        • Integrate Android Performance Tuner
          • About Android Performance Tuner
          • Run the APT demo app
          • Enable the Android Performance Parameters API
          • Update your build settings
          • Define annotations, fidelity parameters, and settings
          • Add frame timing functions
          • Add loading time recording functions
          • Validate, package, and publish the APK
          • Troubleshoot common errors
          • Advanced usage
          • Performance Tuner API Reference
        • Develop for multiple form factors
          • 64-bit architectures
          • Screen types
          • Vulkan pre-rotation
        • Output audio
          • About the Oboe audio library
          • Update build settings
          • Create an audio stream
          • See Oboe code samples
          • See the Oboe developer guide
        • Manage memory
          • About managing memory
          • Debug native memory use
        • Deliver assets
        • Detect and diagnose crashes
      • Android Game Development Kit (AGDK)
        • About the AGDK
        • Download the AGDK
        • AGDK release notes
      • Android Game Development Extension (AGDE) for Visual Studio
        • About the AGDE
        • Get started with AGDE
        • Configure your project
        • Debug your project
        • Measure app performance
        • Profile-Guided Optimization (PGO)
          • Overview
          • Configure Profile-Guided Optimization
        • Modify build.gradle files for Android Studio
        • See AGDE code samples
        • AGDE release notes
      • Google Play Games on PC
        • About Google Play Games on PC
        • Get started
        • Review the release checklist
        • Set up
          • Set up your game for PC compatibility
          • Configure your graphics
          • Device input
            • Set up input
            • Set up mouse input
            • Input SDK
              • About the Input SDK
              • Get started with the Input SDK
          • Cross-device play
            • About continuity in cross-device play
            • About continuity requirements
            • Verify your game's compliance
            • Federate the identity services
            • Third-party login
        • Test
          • Test your game
          • Use the developer emulator
          • Use Chrome OS devices
          • Troubleshoot the developer emulator
        • Publish and deploy
          • Package your game for Google Play Services
          • Submit your game
          • Update your game
          • Integrity Protection
        • FAQ
      • Manage, debug, and profile in Android Studio
    • Optimize
      • About optimization tools
      • Configure system tracing
      • Reduce game size
      • Android GPU Inspector (AGI)
        • About AGI
        • Quickstart
        • Supported devices
        • System profiling
          • About system profiling
          • View a system profile
          • GPU performance counters
          • Analyze a system profile
            • Frame processing times
            • Memory efficiency
            • Texture memory bandwidth usage
            • Vertex memory bandwidth usage
            • Thread scheduling
        • Frame profiling
          • About frame profiling
          • Analyze a frame profile
            • Most expensive render passes
            • Vertex formats
            • Shader performance
          • Frame Profiler UI
            • Performance pane
            • Commands pane
            • Framebuffer pane
            • Geometry pane
            • Report pane
            • Shader pane
            • Memory pane
            • State pane
            • Textures pane
            • Texture pane
            • Pipeline view pane
        • Supported Vulkan extensions
        • Troubleshoot AGI
      • Android Performance Tuner (APT)
      • Android Dynamic Performance Framework (ADPF)
      • Optimize 3D assets
      • Manage vertex data
      • Memory Advice API
        • About the Memory Advice API
        • Get started with the Memory Advice API
      • Game Mode API
        • About the Game Mode API and interventions
        • Use the Game Mode API
        • Use Game Mode interventions
      • Game Dashboard
        • About the Game Dashboard
        • Components
    • Deliver
      • About distributing with Google Play
      • Google Play Games Services
        • About Google Play Games Services
        • Get started
        • Downloads
        • Set up Play Games Services
        • Enable Play Games Services features
        • Manage project settings in Google Cloud
        • Publish through Google Play Console
        • Manage Play Games Services features
          • Sign in
          • Achievements
          • Leaderboards
          • Events
          • Saved games
          • Friends
          • Next generation Player IDs
        • Use the APIs
          • Native SDK
          • Plugin for Unity
            • About the Google Play Games plugin for Unity
            • Get started
            • Add features
              • Achievements
              • Leaderboards
              • Saved games
              • Events
              • Friends
              • Player stats
          • Java
            • Get started
            • Sign in
            • Enable server-side access
            • Anti-piracy
            • Add features
              • Achievements
              • Leaderboards
              • Friends
              • Saved games
              • Events
              • Player stats
            • Troubleshooting
          • Publishing API
            • About the Publishing API
            • Get started
            • Upload images
          • Management API
        • Review checklists and guidelines
          • Quality checklist
          • Branding guidelines
          • Quota and rate limits
          • Data disclosure requirements
          • Terms of service
        • Get support
      • Play as you Download
        • About Play as you Download
        • Best practices
  • Health and fitness apps
    • Health Connect
      • Introduction
      • About the Health Connect platform
        • Architecture
        • Developer functionality
      • Get started
      • Data and data types
        • Introduction
        • Data types
        • Differential changes API
      • User Privacy
      • Common workflows
        • Write data
        • Read raw data
        • Read aggregated data
        • Delete data
        • Synchronize data
        • Work with sessions
        • Exceptions
      • Best practices
      • Frequently asked questions
      • Video repository
    • Health Connect guidelines
      • UX guidelines
        • Basic guidance
        • Permissions and data
      • Migrate
        • Health Connect API comparison guide
        • Fit Android API to Health Connect migration guide
  • Best practices
    • Testing
      • Test apps on Android
      • Fundamentals
        • Fundamentals of testing Android apps
        • What to test in Android
        • Using test doubles in Android
      • Local tests
        • Build local tests
      • Instrumented tests
        • Build instrumented tests
        • Automate UI tests
        • AndroidX test libraries
          • Set up project for AndroidX Test
          • JUnit4 rules with AndroidX Test
          • AndroidJUnitRunner
      • Espresso
        • Espresso
        • Espresso basics
        • Espresso setup instructions
        • Espresso cheat sheet
        • Espresso idling resources
        • Espresso-Intents
        • Espresso lists
        • Multiprocess Espresso
        • Espresso recipes
        • Espresso Web
        • Accessibility checking
        • Additional Resources for Espresso
      • Testing other components
        • Test content providers
        • Test your service
        • Write automated tests with UI Automator
    • Performance
      • In this guide
      • Inspecting performance
        • About inspecting performance
        • Android Studio Profilers
        • Profiling and tracing
          • System tracing
            • Overview
            • Capture trace
              • Capture a trace in Android Studio
              • Capture a trace on a device
              • Capture a trace from the command line
            • Navigate a report
            • Custom events
              • Define custom events
              • Custom trace events in native code
          • Inspect GPU rendering
        • Benchmarking
          • About benchmarking
          • Macrobenchmark
            • Writing a benchmark
            • Capture the metrics
            • Control your app
            • Adding instrumentation arguments
          • Microbenchmark
            • About Microbenchmark
            • Writing a benchmark
            • Profiling a benchmark
            • Adding instrumentation arguments
            • Building without Gradle
          • Benchmarking in CI
        • Measure performance
          • Overview
          • Examples
      • Improving performance
        • How to improve performance
        • Baseline Profiles
          • About Baseline Profiles
          • Create a Baseline Profile
          • Measure with Macrobenchmark library
          • Manually create and measure Baseline Profiles
        • App startup
          • Understand app startup performance
          • Analyze and optimize app startup
          • App startup library
        • Guides
          • Set up environment for testing
          • Working in the background
          • Performance class
          • App Standby Buckets
          • App Hibernation
          • Verifying App Behavior on the Android Runtime (ART)
        • Solving common problems
          • App Startup
          • Rendering
            • Performance of rendering
            • Reducing overdraw
            • Performance and view hierarchies
            • Analyzing with profile GPU rendering
            • Slow rendering
              • Keeping your app responsive
              • Improve layout performance
          • Memory
            • About memory management
            • Memory allocation among processes
            • Manage your app's memory
            • Processes and threads
          • Battery and power
            • Optimize for doze and app standby
            • Monitor the battery level and charging state
            • Monitor connectivity status and connection metering
            • Determing and monitor docking state and type
            • Profile battery usage with Batterystats and Battery Historian
            • Analyze power use with Battery Historian
            • Test power-related issues
            • Background optimizations
          • Reduce app size
          • Hardware acceleration
        • Performance best practices
      • Monitoring performance
        • About monitoring performance
        • Android Vitals
          • About Android Vitals
          • ANRs
          • Crashes
          • Slow Rendering
          • Frozen Frames
          • Stuck Partial Wake Locks
          • Excessive Wakeups
          • Excessive Background Wi-Fi Scans
          • Excessive Background Network Usage
          • Permission Denials
          • App Startup Time
          • Tracking jank
          • JankStats library
    • Accessibility
      • About accessibility
      • Build and test apps for accessibility
        • Make apps more accessible
        • Principles for improving app accessibility
        • Test your app's accessibility
      • Advanced topics
        • Make custom views more accessible
        • Create your own accessibility service
      • Additional resources
    • Privacy
      • Privacy best practices
      • Privacy cheat sheet
    • Security
      • App security best practices
      • Security tips
      • Mitigate security risks in your app
        • Common risks
        • android:debuggable
        • android:exported
        • Content resolvers
        • Exposed directories to FileProvider
        • Intent Redirection
        • Hardcoded Cryptographic Secrets
        • Log info disclosure
        • Path traversal
        • Pending intents
        • Sticky Broadcast
        • SQL injection
        • Tapjacking
        • Weak PRNG
        • Zip Path Traversal
      • Security with data
      • Security with HTTPS and SSL
      • Network security configuration
      • Updating your security provider to protect against SSL exploits
      • Protecting against security threats with SafetyNet
        • About SafetyNet
        • SafetyNet Attestation API
        • Discontinuing SafetyNet Attestation
        • Play Integrity API
        • SafetyNet Safe Browsing API
        • SafetyNet reCAPTCHA API
        • SafetyNet Verify Apps API
      • Cryptography
      • Android Keystore System
      • Verifying hardware-backed key pairs with key attestation
      • Android Protected Confirmation
      • Supporting Direct Boot
      • Running embedded DEX code
      • App security improvement program
    • SDKs
      • SDK best practices
    • Build for Billions
      • About new markets
      • Connectivity
      • Device capability
      • Data cost
      • Battery consumption
      • UI and content
    • Build for Enterprise
      • About enterprise apps
      • Developer guide
      • Work profiles
      • Set up managed configurations
      • App feedback
        • Send app feedback to EMMs
        • Test app feedback
      • Work contacts
      • Device management policies
      • Device management
        • Overview
        • Build a device policy controller
        • Dedicated devices
          • Overview
          • Lock task mode
          • Multiple users
          • Cookbook
        • Device control
        • Networking and telephony
        • Security
        • System updates
        • Network activity logging
      • Android versions
        • About the versions
        • Android 13
        • Android 12
        • Android 11
        • Android 10
        • Android 9
        • Android 8.0
        • Android 7.0
      • Device administration
  • Android Developers
  • Docs
  • Guides

Passpoint

Passpoint is a Wi-Fi Alliance (WFA) protocol that enables mobile devices to discover and authenticate to Wi-Fi hotspots that provide internet access.

For information on the Wi-Fi suggestion API for Passpoint, see Wi-Fi suggestion API for internet connectivity and WifiNetworkSuggestion.Builder.

For details about how Passpoint is implemented in Android, see Passpoint (Hotspot 2.0).

Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Last updated 2023-03-29 UTC.

  • WeChat WeChat
    Follow Google Developers on WeChat
  • Twitter Twitter
    Follow @AndroidDev on Twitter
  • YouTube YouTube
    Check out Android Developers on YouTube
  • More Android

    • Android
    • Enterprise
    • Security
    • Source
  • Support

    • Report platform bug
    • Report documentation bug
    • Google Play support
    • Join research studies
  • Documentation

    • Developer guides
    • Design guides
    • API reference
    • Samples
    • Android Studio
Google Developers
  • Android
  • Chrome
  • Firebase
  • Google Cloud Platform
  • All products
  • Privacy
  • License
  • Brand guidelines
  • ICP证合字B2-20070004号
  • Get news and tips by email Subscribe
  • English
  • Bahasa Indonesia
  • Deutsch
  • Español
  • Español – América Latina
  • Français
  • Português – Brasil
  • Tiếng Việt
  • Türkçe
  • Русский
  • ภาษาไทย
  • 中文 – 简体
  • 中文 – 繁體
  • 日本語
  • 한국어