Android Developers
Platform Android Studio Google Play Jetpack Kotlin Docs News
  • Documentation
Overview Guides Reference Samples Design & Quality
Android Developers
  • Platform
  • Android Studio
  • Google Play
  • Jetpack
  • Kotlin
  • Docs
    • Overview
    • Guides
    • Reference
    • Samples
    • Design & Quality
  • News
  • App Basics
  • Introduction
  • Build your first app
    • Overview
    • Create an Android project
    • Run your app
    • Build a simple user interface
    • Start another activity
  • App fundamentals
  • App resources
    • Overview
    • Handle configuration changes
    • Localization
      • Localize your app
      • Test your app with pseudolocales
      • Unicode and internationalization support
      • Language and locale resolution
    • Complex XML resources
    • Resource types
      • Overview
      • Animation
      • Color state list
      • Drawable
      • Layout
      • Menu
      • String
      • Style
      • Font
      • More types
  • App manifest file
    • Overview
    • <action>
    • <activity>
    • <activity-alias>
    • <application>
    • <category>
    • <compatible-screens>
    • <data>
    • <grant-uri-permission>
    • <instrumentation>
    • <intent-filter>
    • <manifest>
    • <meta-data>
    • <path-permission>
    • <permission>
    • <permission-group>
    • <permission-tree>
    • <profileable>
    • <provider>
    • <receiver>
    • <service>
    • <supports-gl-texture>
    • <supports-screens>
    • <uses-configuration>
    • <uses-feature>
    • <uses-library>
    • <uses-permission>
    • <uses-permission-sdk-23>
    • <uses-sdk>
  • Devices
  • Device compatibility
    • Overview
    • Screen compatibility overview
    • Support different pixel densities
    • Support display cutouts
    • Declare restricted screen support
    • Multiple APK support
      • Overview
      • Create multiple APKs for different API levels
      • Create multiple APKs for different screen sizes
      • Create multiple APKs for different GL textures
      • Create multiple APKs with several dimensions
    • Support different languages and cultures
    • Support different platform versions
    • Filters on Google Play
  • Tablets, Large screens, and Foldables
    • Responsive layouts for tablets, large screens, and foldables
    • Support different screen sizes
    • Multi-window support
    • Building apps for foldables
  • Wear
    • Overview
    • Adding wearable features to notifications
      • Overview
      • Creating a notification
      • Notification styles
      • Bridging mode for notifications
      • Maintaining compatibility
    • Creating wearable apps
      • Overview
      • Creating and running a wearable app
      • Independent versus dependent Wear OS apps
      • Creating custom layouts
      • Keeping your app visible
      • Authentication in Wear
      • Voice input
      • Packaging and distributing Wear apps
      • Debugging a Wear app
      • Capturing Wear UI screenshots
      • Creating Wear apps for China
    • Creating custom UIs
      • Overview
      • Defining layouts
      • Creating lists
      • Showing confirmations
      • Exiting full-screen activities
      • Using the Wear UI library
      • Wear navigation and actions
      • Physical buttons
      • Rotary input
      • Creating input method editors
      • Using wrist gestures
    • Sending and syncing data
      • Overview
      • Network access and syncing
      • Accessing the wearable data layer
      • Syncing data items
      • Transferring assets
      • Sending and receiving messages
      • Handling data layer events
      • Migrating Wear apps to GoogleApi
    • Creating data providers
      • Overview
      • Expose data to complications
    • Creating watch faces
      • Overview
      • Designing watch faces
      • Building a watch face service
      • Drawing watch faces
      • Watch face complications
      • Exposing data to complications
      • Adding complications to a watch face
      • Creating interactive watch faces
      • Providing configuration activities
      • Addressing common issues
      • Improve performace with hardware acceleration
      • Optimizing watch faces
    • Detecting location
    • Tiles
    • Requesting Permissions
    • Using the Speaker
  • Android TV
    • Overview
    • Build TV Apps
      • Overview
      • Get started with TV apps
      • AndroidX TV libraries
      • Handle TV hardware
      • Manage TV controllers
      • Build TV layouts
      • On-screen keyboard
      • Create TV navigation
      • Best practices for driving engagement on Google TV
    • Build TV playback apps
      • Overview
      • Create a catalog browser
      • Provide a card view
      • Build a details view
      • Use Leanback transport controls
      • Playback controls on TV
      • Display a Now Playing card
      • Add a guided step
      • Introduce first-time users to your app
      • Enable background playback
    • Help users find content on TV
      • Overview
      • Recommend TV content
        • Overview
        • Channels on the home screen
        • Video program attributes
        • Audio program attributes
        • Game program attributes
        • Watch Next
          • Add programs
          • Attributes
          • Guidelines for app developers
          • Guidelines for TV providers
        • Preview videos
        • Recommendations in Android N and earlier
      • Make TV apps searchable
      • Search within TV Apps
    • Build TV games
    • Build TV input services
      • Overview
      • Develop a TV input service
      • Work with channel data
      • Manage TV user interaction
      • Support time-shifting
      • Support content recording
    • TV Apps checklist
    • TV Accessibility
      • Non Native Apps Accessibility Support
      • Non Native Apps Accessibility Best Practices
      • TalkBack evaluation examples for TV apps
    • Android 12 Developer Preview for TV
  • Android for Cars
    • Overview
    • Build media apps for cars
      • Build media apps for cars
      • Add support for Android Auto
      • Add support for Android Automotive OS
    • Build messaging apps for Android Auto
    • Build navigation, parking, and charging apps for Android Auto
    • Test Android apps for cars
    • Google Play services
    • Notifications on Android Automotive OS
  • Android Things
    • Overview
    • Platform differences
    • Google services
    • Supported hardware
      • Overview
      • NXP i.MX7D
      • Raspberry Pi 3
      • Advanced setup
        • Overview
        • Manually flash an image
        • Recover a device
        • Connecting to Wi-Fi with adb
    • Build apps
      • Create a Things app
        • Overview
        • Create a project
        • Connect the hardware
        • Interact with peripherals
        • Integrate peripheral drivers
      • Communicate with wireless devices
        • Bluetooth
        • LoWPAN
      • Configure devices
        • Settings
        • Updates
      • Interact with peripherals
        • Overview
        • GPIO
        • PWM
        • I2C
        • SPI
        • UART
        • Native PIO
        • CLI tool
      • Integrate native code
      • Build user-space drivers
        • Overview
        • Location
        • Input
        • Sensors
        • LoWPAN
      • Samples
    • Manage devices
      • Overview
      • Create a product
      • Configure a product
      • Create a build
        • Overview
        • Manage apps
      • Push an update
        • Overview
        • Automatic updates
      • Monitor analytics
    • Terms
      • Console Terms of Service
      • SDK License Agreement
    • Android Things Console
  • Chrome OS devices
    • Overview
    • Building apps for Chrome OS
    • Optimizing Apps for Chrome OS
    • Preparing your development environment
    • App Manifest Compatibility for Chromebooks
    • Chrome OS Device Support for Apps
    • App Rendering Differences on Chromebooks
    • Window management
    • Input compatibility for Chromebooks
    • Adapting Games on Chrome OS
    • Smooth animation on Chrome OS
    • Test Cases for Android Apps on Chrome OS
  • Core topics
  • Activities
    • Introduction to activities
    • The activity lifecycle
    • Activity state changes
    • Test your activities
    • Tasks and back stack
    • Processes and app lifecycle
    • Parcelables and bundles
    • Fragments
      • Overview
      • Create a fragment
      • Fragment manager
      • Fragment transactions
      • Animate transitions between fragments
      • Fragment lifecycle
      • Saving state with fragments
      • Communicate with fragments
      • Working with the app bar
      • Displaying dialogs with DialogFragment
      • Test your fragments
    • Handling app links
      • Overview
      • Enabling links to app content
      • Verify app links
      • Create app links for instant apps
    • Loaders
    • Recents screen
    • Restrictions on starting activities from the background
    • App shortcuts
      • Overview
      • Create shortcuts
      • Manage shortcuts
      • Best practices for shortcuts
    • App widgets
      • Overview
      • Build an app widget
      • Build an app widget host
  • App compatibility
    • Overview
    • Compatibility framework tools
    • Restrictions on non-SDK interfaces
  • Architecture Components
    • Overview
    • Adding Components to your Project
    • App Startup
    • DataStore
    • View Binding
      • Overview
      • Migrate from Kotlin synthetics to view binding
    • Data Binding Library
      • Overview
      • Get started
      • Layouts and binding expressions
      • Work with observable data objects
      • Generated binding classes
      • Binding adapters
      • Bind layout views to Architecture Components
      • Two-way data binding
    • Handling Lifecycles
    • LiveData
    • Paging Library
      • Overview
      • Display paged lists
      • Load paged data
      • Paging 3
        • Overview
        • Load and display paged data
        • Page from network and database
        • Transform data streams
        • Migrate to Paging 3
    • ViewModel
    • WorkManager
      • Overview
      • Getting Started
      • How-To Guides
        • Defining your WorkRequests
        • Work states
        • Managing work
        • Observing intermediate Worker progress
        • Chaining work together
        • Testing Worker implementation
        • Integration tests with WorkManager
        • Debugging WorkManager
      • Advanced Concepts
        • Configuration and Initialization
        • Threading in WorkManager
          • Overview
          • Threading in Worker
          • Threading in CoroutineWorker
          • Threading in RxWorker
          • Threading in ListenableWorker
        • Support for long-running workers
      • Migrating from Firebase JobDispatcher
      • Migrating from GCMNetworkManager
    • Saving States
    • Saved State module for ViewModel
    • Use Kotlin coroutines with Architecture components
    • Release notes
    • Additional resources
  • Navigation component
    • Overview
    • Principles of Navigation
    • Getting started
    • Create destinations
    • Design for different form factors
    • Design navigation graphs
    • Nested graphs
    • Global actions
    • Navigate to a destination
    • Conditional navigation
    • Pass data between destinations
    • Create a deep link for a destination
    • Animate transitions between destinations
    • Update UI components with NavigationUI
    • Kotlin DSL
    • Create swipe views with tabs using ViewPager
    • Create swipe views with tabs using ViewPager2
    • Interact programmatically
    • Navigate with feature modules
    • Test navigation
    • Handling configuration changes
    • Add new destination types
    • Provide custom back navigation
    • Migrate to the Navigation component
  • Interact with other apps
    • Overview
    • Sending the user to another app
    • Getting a result from an activity
    • Allowing other apps to start your activity
    • Package visibility
      • Overview
      • Know which packages are visible automatically
      • Declare package visibility needs
      • Fulfill common use cases
      • Test package visibility
  • Intents and intent filters
    • Overview
    • Common intents
  • User interface
    • Overview
    • Layouts
      • Overview
      • Build a responsive UI with ConstraintLayout
      • Add motion to your layout with MotionLayout
        • Overview
        • Carousel with MotionLayout
        • MotionLayout examples
        • MotionLayout XML reference
          • Overview
          • <MotionScene>
          • <ConstraintSet>
          • <Constraint>
          • <Transition>
          • <onClick>
          • <onSwipe>
          • <KeyFrameSet>
          • <KeyPosition>
          • <KeyAttribute>
      • Create a list with RecyclerView
      • Advanced RecyclerView customization
      • Create a card-based layout
      • Create a two pane layout
      • Improving layout performance
        • Overview
        • Optimizing layout hierarchies
        • Re-using layouts with <include/>
        • Delayed loading of views
      • Linear layout
      • Adapter view
      • Relative layout
      • Custom view components
        • Overview
        • Creating a custom view class
        • Implementing custom drawing
        • Making the view interactive
        • Optimizing the view
      • Designing for foldables
    • Look and feel
      • Material design
      • Styles and themes
      • Dark theme
      • Adaptive icons
      • Add a floating action button
      • Create shadows and clip views
      • Text
        • Autosizing TextViews
        • Downloadable fonts
        • Fonts in XML
        • Emoji compatibility
        • Magnifier widget
        • Spans
      • Buttons
      • Checkboxes
      • Radio buttons
      • Toggle buttons
      • Spinners
      • Pickers
      • Tooltips
    • Notifications
      • Overview
      • Create a notification
      • Create an expandable notification
      • Display time-sensitive notifications
      • Start an activity from a notification
      • Create a group of notifications
      • Create and manage notification channels
      • Modify a notification Badge
      • Create a custom notification
    • Conversations
    • Bubbles
    • Add the app bar
      • Overview
      • Set up the app bar
      • Add and handle actions
      • Add an up action
      • Use action views and action providers
    • Control the system UI visibility
      • Overview
      • Dim the system bars
      • Hide the status bar
      • Hide the navigation bar
      • Enable fullscreen mode
      • Respond to UI visibility changes
    • Supporting swipe-to-refresh
      • Overview
      • Adding swipe-to-refresh to your app
      • Responding to a refresh gesture
    • Toasts overview
    • Pop-up messages overview
      • Overview
      • Build and display a pop-up message
      • Add an action to a message
    • Dialogs
    • Menus
    • Settings
      • Overview
      • Organize your settings
      • Customize your settings
      • Use saved values
      • Build a hierarchy in code
      • Handle other form factors
      • Preference components and attributes
    • Search
      • Overview
      • Creating a search interface
      • Adding recent query suggestions
      • Adding custom suggestions
      • Searchable configuration
      • Adding search functionality
        • Overview
        • Setting up the search interface
        • Storing and searching for data
        • Remaining backward compatible
    • Copy and paste
    • Drag and drop
    • Picture-in-picture Support
    • Creating backward-compatible UIs
      • Overview
      • Abstracting the new APIs
      • Proxying to the new APIs
      • Creating an implementation with older APIs
      • Using the version-aware component
    • Device control
  • Animations & transitions
    • Overview
    • Introduction to animations
    • Property animation overview
    • Animate drawable graphics
    • Reveal or hide a view using animation
    • Move a view using animation
    • Move a view using a fling animation
    • Enlarge a view using a zoom animation
    • Animate movement using spring physics
    • Auto animate layout updates
    • Animate layout changes using a transition
    • Create a custom transition animation
    • Start an activity using an animation
    • Slide between fragments using ViewPager
    • Slide between fragments using ViewPager2
    • Migrate from ViewPager to ViewPager2
    • Additional resources
  • Images & graphics
    • Overview
    • Drawables overview
    • Vector drawables overview
    • Handling bitmaps
    • Selecting colors with the palette API
    • Reducing image download sizes
    • Hardware acceleration
    • OpenGL ES
    • Displaying graphics with OpenGL ES
      • Overview
      • Building an OpenGL ES environment
      • Defining shapes
      • Drawing shapes
      • Applying projection and camera views
      • Adding motion
      • Responding to touch events
    • Rendering
      • Overview
      • Reducing overdraw
      • Performance and view hierarchies
      • Analyzing with profile GPU rendering
    • Enhancing graphics with wide color content
  • Audio & video
    • Audio & video overview
    • Media controls
    • Supported media formats
    • Media codecs
    • Media app architecture
      • Media app architecture overview
      • Using a media session
      • Building an audio app
        • Audio app overview
        • Building a media browser service
        • Building a media browser client
        • Media session callbacks
        • Using the media controller test app
      • Building a video app
        • Video app overview
        • Building a video player activity
        • Media session callbacks
      • Responding to media buttons
      • Handling changes in audio output
      • Managing audio focus
    • The Google Assistant
      • The Google Assistant and media apps
      • Media apps on Google Assistant driving mode
    • Routing between devices
      • Routing overview
      • MediaRouter overview
      • MediaRouteProvider overview
    • Control amplitude with VolumeShaper
    • MediaPlayer overview
    • MediaRecorder overview
    • ExoPlayer
    • Sharing audio input
    • Playback capture
    • Frame rate
    • Additional Resources for Media
  • Services
    • Overview
    • Foreground services
    • Bound services
    • AIDL overview
  • Background tasks
    • Overview
    • Background threads
    • Background optimizations
    • Broadcasts
      • Overview
      • Implicit Broadcast Exceptions
    • Manage device awake state
      • Overview
      • Keep the device awake
      • Schedule repeating alarms
  • Permissions
    • Overview
    • Evaluate whether your app needs permissions
    • Declare app permissions
    • Request app permissions
    • App permissions best practices
    • Permissions used only in default handlers
    • Restrict interactions with other apps
    • Define custom permissions
  • App data & files
    • Overview
    • Storage overview
    • Save to app-specific storage
    • Save to shared storage
      • Overview
      • Media
      • Documents and other files
      • Datasets
    • Manage all files on a storage device
    • Save key-value data
    • Save data in a local database
      • Overview
      • Define data using entities
      • Access data using DAOs
      • Define relationships between objects
      • Write asynchronous DAO queries
      • Create views into a database
      • Prepopulate your database
      • Migrate your database
      • Test and debug your database
      • Reference complex data
      • Migrate from SQLite to Room
      • Save data using SQLite
    • Storage use cases and best practices
    • Sharing simple data
      • Overview
      • Sending simple data to other apps
      • Receiving simple data from other apps
    • Sharing files
      • Overview
      • Setting up file sharing
      • Sharing a file
      • Requesting a shared file
      • Retrieving file information
    • Sharing files with NFC
      • Overview
      • Sending files to another device
      • Receiving files from another device
    • Printing files
      • Overview
      • Printing photos
      • Printing HTML documents
      • Printing custom documents
    • Content providers
      • Overview
      • Content provider basics
      • Creating a content provider
      • Open files using storage access framework
      • Create a custom document provider
    • App install location
  • User data & identity
    • Overview
    • Add sign-in workflow
    • Show a biometric authentication dialog
    • Autofill framework
      • Overview
      • Optimize your app for autofill
      • Build autofill services
      • Integrate autofill with keyboards
    • Audit data access
    • Get a user-resettable advertising ID
    • Calendar provider overview
    • Contacts provider
      • Overview
      • Retrieving a list of contacts
      • Retrieving details for a contact
      • Modifying contacts using intents
      • Displaying the quick contact badge
    • Account transfer
    • Data backup
      • Overview
      • Back up user data
      • Back up key-value pairs
      • Test backup and restore
    • Best practices for unique identifiers
    • Remember and authenticate users
      • Overview
      • Remember your user
      • Authenticate to OAuth2 services
      • Create a custom account type
  • User location
    • Overview
    • Request location permissions
    • Get the last known location
    • Change location settings
    • Request location updates
    • Access location in the background
    • Create and monitor geofences
    • Detect when users start an activity
    • Optimize location for battery
    • Migrate to location and context APIs
    • Add maps
  • Touch & input
    • Overview
    • Input events
    • Using touch gestures
      • Overview
      • Detect common gestures
      • Track touch and pointer movements
      • Animate a scroll gesture
      • Support navigation gestures
      • Handle multi-touch gestures
      • Drag and scale
      • Manage touch events in a ViewGroup
    • Handling keyboard input
      • Overview
      • Specifying the input method type
      • Handling input method visibility
      • Supporting keyboard navigation
      • Handling keyboard actions
    • Supporting game controllers
      • Overview
      • Handling controller actions
      • Supporting controllers across Android versions
      • Supporting multiple game controllers
    • Input method editors
      • Creating an input method
      • Image keyboard
    • Spelling checker
  • CameraX
    • Overview
    • CameraX architecture
    • Configuration
    • Preview
    • Analyze images
    • Image capture
    • Vendor extensions
    • Transform output
    • Use case rotations
    • CameraX devices
  • Camera2
    • Overview
    • Camera capture sessions and requests
    • Camera enumeration
    • Use multiple camera streams simultaneously
    • Multi-Camera API
  • Camera
    • Overview
    • Taking photos
    • Recording videos
    • Controlling the camera
    • Camera API
  • Sensors
    • Overview
    • Sensors overview
    • Motion sensors
    • Position sensors
    • Environment sensors
    • Raw GNSS measurements
  • Connectivity
    • Overview
    • Performing network operations
      • Overview
      • Connect to the network
      • Manage network usage
      • Reading network state
      • Optimize network data usage
      • Parse XML data
    • Transmit network data using Volley
      • Overview
      • Send a simple request
      • Set up RequestQueue
      • Make a standard request
      • Implement a custom request
    • Perform network operations using Cronet
      • Overview
      • Send a simple request
      • Cronet request lifecycle
      • Reference
        • org.chromium.net
          • Overview
          • CallbackException
          • CronetEngine
            • Overview
            • CronetEngine.Builder
              • Overview
              • LibraryLoader
          • CronetException
          • InlineExecutionProhibitedException
          • NetworkException
          • QuicException
          • UploadDataProvider
          • UploadDataProviders
          • UploadDataSink
          • UrlRequest
            • Overview
            • Builder
            • Callback
            • Status
            • StatusListener
          • UrlResponseInfo
            • Overview
            • HeaderBlock
    • Enhance your apps with 5G
    • Build client-server applications with gRPC
    • Transferring data without draining the battery
      • Overview
      • Optimize downloads for efficient network access
      • Minimize the effect of regular updates
      • Avoid redundant downloads
      • Modify patterns based on the connectivity type
    • Reduce network battery drain
      • Overview
      • Collecting network traffic data
      • Analyzing data traffic
      • Optimizing user-initiated network use
      • Optimizing app-initiated network use
      • Optimizing server-initiated network use
      • Optimizing general network use
    • Transfer data using Sync Adapters
      • Overview
      • Create a Stub Authenticator
      • Create a Stub Content Provider
      • Create a Sync Adapter
      • Run a Sync Adapter
    • Bluetooth
      • Overview
      • Bluetooth low energy overview
      • Use Bluetooth low energy
    • NFC
      • Overview
      • NFC basics
      • Advanced NFC
      • Host-based card emulation overview
    • Telecom
      • Overview
      • Build a calling app
      • Prevent caller ID spoofing
      • Telephony IDs
    • Wi-Fi
      • Wi-Fi scanning overview
      • Wi-Fi peer-to-peer
      • Wi-Fi aware overview
      • Wi-Fi location with RTT
      • Local Only Hotspot
      • Companion device pairing
      • Wi-Fi infrastructure
        • Wi-Fi infrastructure overview
        • Wi-Fi suggestion API for internet connectivity
        • Wi-Fi Network Request API for peer-to-peer connectivity
        • Passpoint
        • Save networks and Passpoint configurations
    • USB
      • Overview
      • Accessory overview
      • Host overview
    • VPN
    • Session initiation protocol overview
    • Discover and connect
      • Overview
      • Use network service discovery
      • Create P2P connections with Wi-Fi
      • Use Wi-Fi P2P for service discovery
      • Wi-Fi Easy Connect
    • Open Mobile API reader support
  • Renderscript
    • Overview
    • Advanced RenderScript
    • Runtime API reference
      • Overview
      • Numerical types
      • Object types
      • Conversion functions
      • Mathematical constants and functions
      • Vector math functions
      • Matrix functions
      • Quaternion functions
      • Atomic update functions
      • Time functions and types
      • Allocation data access functions
      • Object characteristics functions
      • Kernel invocation functions and types
      • Input/output functions
      • Debugging functions
      • Graphics functions and types
      • Index
  • Web-based content
    • Overview
    • Building web apps in WebView
    • Managing WebView objects
    • Darken web content
    • User privacy in WebView crash reporting
    • Migrating to WebView in Android 4.4
    • Supporting different screens in web apps
    • Debugging web apps
    • Best practices for web apps
  • Android App Bundles
    • Overview
    • Configure the base module
    • Build and test your app bundle
    • The app bundle format
  • Google Play
    • Google Play Billing
    • Play Core Library
    • Play Asset Delivery
      • Overview
      • Integrate asset delivery (Java)
      • Integrate asset delivery (native)
      • Integrate asset delivery (Unity)
      • Target texture compression formats
      • Test asset delivery
    • Play Feature Delivery
      • Overview
      • Configure install-time delivery
      • Configure conditional delivery
      • Configure on-demand delivery
      • On-demand delivery best practices
      • Configure instant delivery
      • Additional resources
    • In-app reviews
      • Overview
      • Integrate using Kotlin or Java
      • Integrate using native code
      • Integrate using Unity
      • Test in-app reviews
    • In-app updates
      • Overview
      • Support in-app updates (Kotlin or Java)
      • Support in-app updates (Native)
      • Support in-app updates (Unity)
      • Test in-app updates
    • Google Play Instant
      • Overview of Google Play Instant
      • Get started with instant apps
        • Create an instant-enabled app bundle
        • UX best practices for apps
      • Get started with instant games
        • Overview
        • Unity plugin
        • UX best practices for games
        • Migrate to Android App Bundles
        • Implement cloud delivery of assets
        • Support Google Play Games Services
        • Instant Play games
        • Instant Play games checklist
      • Reduce the size of your instant app or game
      • Add ads to your instant app or game
      • Provide multiple entry points
      • Integrate with Firebase
        • Add Google Analytics for Firebase to your instant app
        • Use Firebase Dynamic Links with instant apps
      • Technical requirements checklist
      • Google Play Instant policy
      • Resources
        • Reference
        • Code samples
        • SDK release notes
        • Instant App Intents
      • Support
        • Known issues
        • StackOverflow
    • Play Developer API
    • Play Install Referrer
      • Overview
      • Play Install Referrer Library
        • Overview
        • Reference
        • Release notes
      • Play Install Referrer API
    • Application Licensing
      • Overview
      • Licensing Overview
      • Setting Up for Licensing
      • Adding Server-Side Verification
      • Adding Client-Side Verification
      • Licensing Reference
    • APK Expansion Files
  • App Actions
  • Slices
    • Overview
    • Getting Started
    • Slice templates
  • Games
  • Develop
    • Developer previews
    • Build your game in Unity
    • Build your game in Unreal
    • Create a seamless sign-in experience
    • Determine sensitive data access needs
    • Secure your game
    • Develop games for all screens
    • Learn about rendering in game loops
  • Optimize
    • Tools for optimizing your game
    • Support 64-bit architectures
    • Improve your game's performance
    • Manage memory effectively in games
    • Detect and diagnose crashes
    • Identify CPU hot spots
    • Implement the Android Game SDK
      • Overview
      • Release notes
      • Achieve proper frame pacing
        • Overview
        • OpenGL renderers
          • Integrate
          • Update your build settings
          • Add frame pacing functions
          • Verify frame pacing improvement
        • Vulkan renderers
          • Integrate
          • Update your build settings
          • Add frame pacing functions
          • Verify frame pacing improvement
      • Optimize your frame rate
        • Overview
        • Custom engine integration
          • Overview
          • Run the demo app
          • Enable the 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
        • Unity integration
          • 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
          • Run the monitor app
          • Review and publish
          • Troubleshoot common errors
      • Incorporate high-performance audio
        • Overview
        • Update your build settings
        • Use Oboe
        • Code samples
        • Full guide to Oboe
      • Reference
        • Frame Pacing library
          • Overview
          • Modules
          • Swappy common tools
          • Swappy for OpenGL
          • Swappy for OpenGL extras
          • Swappy for Vulkan
          • Structs
          • SwappyStats
          • SwappyThreadFunctions
          • SwappyTracer
          • SwappyVkFunctionProvider
        • Performance Tuner library
          • Custom engine
            • Overview
            • Modules
            • Tuning Fork cache utilities
            • Tuning Fork extra utilities
            • Tuning Fork main interface
            • Structs
            • TuningFork_CProtobufSerialization
            • TuningFork_Cache
            • TuningFork_LoadingTimeMetadata
            • TuningFork_MetricLimits
            • TuningFork_Settings
          • Unity
            • Overview
            • Classes
            • AndroidPerformanceTuner< TFidelity, TAnnotation >
            • LoadingTimeMetadata
            • Result< T >
            • Structs
            • MetricLimits
            • Namespaces
            • Google
            • Google.Android
            • Google.Android.PerformanceTuner
    • Reduce game size
    • Profile graphics
    • Debugging native memory use
  • Launch and iterate
    • Launch your game on Google Play
    • Create an Android App Bundle in Unity
    • Add support for instant access
    • Stay connected with your user base
  • Best practices
  • Dependency injection
    • Overview
    • Manual dependency injection
    • Dependency injection with Hilt
    • Hilt in multi-module apps
    • Hilt and Jetpack integrations
    • Hilt testing guide
    • Hilt and Dagger annotations cheat sheet
    • Dagger
      • Dagger basics
      • Using Dagger in Android apps
      • Using Dagger in multi-module apps
  • Testing
    • Overview
    • Fundamentals of testing
    • Set up project
    • Building effective unit tests
      • Overview
      • Building local unit tests
      • Building instrumented unit tests
    • Automating UI tests
      • Overview
      • Testing UI for a single app
      • Testing UI for multiple apps
    • Testing app component integrations
      • Overview
      • Testing your service
      • Testing your content provider
    • Testing UI performance
    • Espresso
      • Overview
      • Setup instructions
      • Basics
      • Recipes
      • Multiprocess
      • Accessibility checking
      • Lists
      • Intents
      • Web
      • Idling resource
      • Cheat sheet
      • Additional resources
    • UI Automator
    • App Crawler
    • JUnit4 Rules
    • AndroidJUnitRunner
    • Release notes
    • Additional resources
  • Performance
    • Overview
    • Android Vitals
      • Overview
      • Stuck Partial Wake Locks
      • Excessive Wakeups
      • Excessive Background Wi-Fi Scans
      • Excessive Background Network Usage
      • ANRs
      • Crashes
      • Slow Rendering
      • Frozen Frames
      • Permission Denials
      • App Startup Time
    • App Standby Buckets
    • Processes and Threads Overview
    • Better Performance through Threading
    • Optimizing for Battery Life
      • Overview
      • Optimize for Doze and App Standby
      • Monitor the battery level and charging state
      • Monitor connectivity status and connection metering
      • Determine and monitor the docking state and type
      • Power management restrictions
      • Profile battery usage with Batterystats and Battery Historian
      • Analyze power use with Battery Historian
      • Testing power-related issues
    • Reduce your app size
    • Manage memory
      • Overview of Memory Managemement
      • Memory Allocation among Processes
      • Manage Your App's Memory
    • System tracing
      • Overview
      • Capture a trace from the command line
      • Capture a trace on a device
      • Navigate a report
      • Define custom events
    • Inspect GPU rendering
    • Designing for Seamlessness
    • Keeping Your App Responsive
    • Performance Tips
    • SMP Primer for Android
    • Verifying App Behavior on the Android Runtime (ART)
  • Accessibility
    • Overview
    • Build and test apps for accessibility
      • Make apps more accessible
      • Principles for improving app accessibility
      • Test your app's accessibility
    • Advanced topics
      • Make custom views more accessible
      • Create your own accessibility service
    • Additional resources
  • Privacy
    • Privacy best practices
  • Security
    • App security best practices
    • Security tips
    • Security with data
    • Security with data across additional Android versions
    • Security with HTTPS and SSL
    • Network security configuration
    • Updating your security provider to protect against SSL exploits
    • Protecting against security threats with SafetyNet
      • Overview
      • SafetyNet Attestation API
      • SafetyNet Safe Browsing API
      • SafetyNet reCAPTCHA API
      • SafetyNet Verify Apps API
    • Cryptography
    • Android Keystore System
    • Verifying hardware-backed key pairs with key attestation
    • Android Protected Confirmation
    • Supporting Direct Boot
    • Running embedded DEX code
    • App security improvement program
  • Build for Billions
    • Overview
    • Connectivity
    • Device capability
    • Data cost
    • Battery consumption
    • UI and content
  • Build for Enterprise
    • Overview
    • Developer guide
    • Work profiles
    • Set up managed configurations
    • App feedback
      • Send app feedback to EMMs
      • Test app feedback
    • Work contacts
    • Device management policies
    • Device management
      • Overview
      • Build a device policy controller
      • Dedicated devices
        • Overview
        • Lock task mode
        • Multiple users
        • Cookbook
      • Device control
      • Networking and telephony
      • Security
      • System updates
      • Network activity logging
    • Android versions
      • Overview
      • Android 11
      • Android 10
      • Android 9
      • Android 8.0
      • Android 7.0
    • Device administration
Android 12 Developer Preview is here! Try it out, and give us your feedback!
  • Android Developers
  • Docs
  • Guides

Sensors

Use sensors on the device to add rich location and motion capabilities to your app, from GPS or network location to accelerometer, gyroscope, temperature, barometer, and more.

Documentation

  • Sensors Overview
  • Motion sensors
  • Position sensors
  • Environment sensors
  • Raw GNSS Measurements

Videos

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

Last updated 2019-12-27 UTC.

  • 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
  • Get news and tips by email Subscribe