Skip to main content
Android Open Source Project
Docs
  • What's new?
  • Release notes
  • Latest security bulletins
  • Latest Compatibility Definition Document (CDD)
  • Site updates
  • Getting Started
  • About
  • Start
  • Download
  • Build
  • Test
  • Create
  • Contribute
  • Community
  • Tools, build, and related reference
  • Security
  • Overview
  • Bulletins
  • Features
  • Testing
  • Best Practices
  • Core Topics
  • Architecture
  • Audio
  • Camera
  • Connectivity
  • Data
  • Display
  • Fonts
  • Graphics
  • Interaction
  • Media
  • Performance
  • Permissions
  • Power
  • Runtime
  • Settings
  • Storage
  • Tests
  • Updates
  • Virtualization
  • Compatibility
  • Compatibility Definition Document (CDD)
  • Compatibility Test Suite (CTS)
  • Android Devices
  • Cuttlefish
  • Enterprise
  • TV
  • Automotive
  • Get Started
  • Guidelines for Development
  • Development Tools
  • Testing Tools and Infrastructure
  • Release Details
  • Reference
  • HIDL
  • HAL
  • Trade Federation
  • Security Test Suite
Android Code Search
/
  • English
  • Deutsch
  • Español – América Latina
  • Français
  • Indonesia
  • Italiano
  • Polski
  • Português – Brasil
  • Tiếng Việt
  • Türkçe
  • Русский
  • עברית
  • العربيّة
  • فارسی
  • हिंदी
  • বাংলা
  • ภาษาไทย
  • 中文 – 简体
  • 中文 – 繁體
  • 日本語
  • 한국어
Sign in
  • Documentation
What's New? Getting Started Security Core Topics Compatibility Android Devices Automotive Reference
Android Open Source Project
  • Docs
    • More
    • What's New?
    • Getting Started
    • Security
    • Core Topics
    • Compatibility
    • Android Devices
    • Automotive
    • Reference
  • Android Code Search
  • Overview
  • Architecture
    • Overview
    • Hardware abstraction layer (HAL)
      • Overview
      • HIDL (deprecated)
        • Overview
        • Interfaces and packages
        • Interface hashing
        • Services and data transfer
        • Fast Message Queue
        • Use Binder IPC
        • Use MemoryBlock
        • Network stack configuration tools
        • Model threading
        • Convert HAL modules
        • Data types
        • Safe union
        • Interface versioning
        • Code style guide
        • HIDL C++
        • Overview
        • Packages
        • Interfaces
        • Data types
        • Functions
        • HIDL Java
        • Overview
        • Data types
        • Interface methods and errors
        • Export constants
        • Other
        • HIDL framework backward compatibility verification
        • Dynamically available HALs
      • Legacy HALs (AOSP <=v7)
    • Kernel
      • Overview
      • Kernel release notes
      • Stable kernel releases and updates
      • Android common kernels
      • GKI project
      • GKI development
      • GKI versioning scheme
      • GKI release builds
        • Overview
        • android12-5.10 release builds
        • android13-5.10 release builds
        • android13-5.15 release builds
        • android14-5.15 release builds
        • android14-6.1 release builds
        • android15-6.6 release builds
        • android16-6.12 release builds
      • GKI deprecated builds
        • android12-5.10 deprecated builds
        • android13-5.10 deprecated builds
        • android13-5.15 deprecated builds
        • android14-5.15 deprecated builds
        • android14-6.1 deprecated builds
        • android15-6.6 deprecated builds
        • android16-6.12 deprecated builds
      • GKI release process
      • GKI 16-6.12 android-mainline errata
      • Maintain a stable KMI
      • Kernel ABI monitoring
        • Overview
        • Run ABI monitoring
        • Work with symbol lists
      • Modules
        • Overview
        • Configure kernel features as GKI modules
        • Vendor module guidelines
        • Loadable kernel modules
        • Kernel module support
        • Test GKI modules
      • Boot time optimization
      • Debug features
      • Develop kernel code for GKI
      • Android kernel file system support
      • Extend the kernel with eBPF
      • Use DebugFS in Android 12
      • FIPS 140-3 certifiable GKI crypto module
      • EROFS
      • Android kernel FAQ
      • Kernel networking unit tests
      • Transition from ION to DMA-BUF heaps (5.4 kernel)
      • Incremental file system
    • Configuration
      • Overview
      • Implement system properties as APIs
      • Add system properties
      • Implement Config File Schema API
      • Archive
        • Overview
        • ConfigStore
        • Create the HAL interface
        • Implement the service
        • Client-side use
        • Add ConfigStore classes and items
    • Device tree overlays
      • Overview
      • Implement DTOs
      • DTO syntax
      • Compile and verify
      • Use multiple DTs
      • DTB and DTBO partitions
      • Optimize DTO
    • Vendor NDK (<=AOSP 14)
      • Overview
      • Enable VNDK
      • VNDK build system support
      • VNDK extensions
      • VNDK snapshot design
      • Generate VNDK snapshots
      • Generate vendor snapshots
      • Linker namespace
      • Directories, rules, and sepolicy
      • RenderScript
      • ABI stability
      • Prebuilt ABI usages checker
    • Vendor interface object
      • Overview
      • Manifests
      • Compatibility matrixes
      • FCM lifecycle
      • Device manifest development
      • Match rules
      • Additional resources
    • AIDL
      • Overview
      • AIDL language
      • AIDL backends
      • Stable AIDL
      • AIDL for HALs
      • Run AIDL services dynamically
      • Annotations in AIDL
      • FMQ with AIDL
      • AIDL fuzzing
      • AIDL style guide
    • Interprocess communication with Binder
      • Overview
      • Handle threads
      • Priority inheritance
    • Bootloader
      • Overview
      • Canonical boot reason
      • Boot image header
      • Implement bootconfig
      • Recovery images
      • DTB images
      • Implement OTA updates
      • Lock and unlock the bootloader
      • Version information in AVB properties
      • Move fastboot to userspace
      • Generic Bootloader
        • Overview
        • Deploy GBL
    • Partitions
      • Overview
      • Partition layout
      • Vendor boot partitions
      • Vendor and ODM DLKM partitions
      • Android shared system image
      • Ramdisk partitions
      • Generic boot partition
      • ODM partitions
      • Product partitions
      • Implement a GKI module partition
      • Enforce product partition interfaces
      • Trusty OS partitions
    • 16 KB page size
      • Overview
      • Use Cuttlefish with 16 KB page size on ARM64
      • Simulate Cuttlefish with 16 KB page size on x86-64
      • Build and Flash Pixel 8 devices with 16 KB support
      • Flash Pixel with 16 KB page size support
      • Get the page size
      • Optimize performance for 16 KB mode
      • 16 KB system properties
      • Enable 16 KB toggle
      • Enable 16 KB backcompat option
    • Vendor API level
  • Audio
    • Overview
    • Terminology
    • Implementation
      • Audio HAL
      • AIDL Audio HAL
      • Configurable Audio Policy support in AIDL HAL
      • AIDL and HIDL Audio HAL comparison
      • HIDL
        • HIDL Audio HAL
        • Configure audio policies
        • Configure a shared library
      • Configure preprocessing effects
    • Data formats
    • Attributes
    • Effects
    • High-resolution audio
    • Device type limit
    • AAudio and MMAP
    • Audio warmup
    • Latency
      • Overview
      • Contributors
      • Design for reduced latency
      • Measure audio latency
      • Audio loopback dongle
      • Measurements
      • For app developers
    • Avoid priority inversion
    • Sample rate conversion
    • Debugging
    • MIDI
      • Overview
      • MIDI architecture
      • MIDI test procedure
    • USB
      • USB digital audio
      • Preferred mixer attributes on USB devices
    • TV audio
    • Concurrent capture
    • Sound Trigger
    • Combined audio device routing
    • Spatial audio
      • Spatial audio and head tracking
      • Implementation
      • Head tracking over LE audio
    • Sound dose
    • Dynamic soundbar mode
  • Camera
    • Overview
    • Architecture
    • Camera HAL
    • HAL subsystem
    • Core concepts
    • 3A modes and state transition
    • Camera debugging
    • Error and stream handling
    • Metadata and controls
    • Output streams, cropping, and zoom
    • Request creation and submission
    • Stream configurations
    • Performance
    • Camera HAL3 buffer management APIs
    • Session parameters
    • Single producer, multiple consumer
    • Camera features
    • 10-bit camera output
    • Camera bokeh
    • Concurrent camera streaming
    • Camera extensions
    • Camera extensions validation tool
    • Camera preview stabilization
    • External USB cameras
    • High dynamic range modes
    • HEIF imaging
    • Monochrome cameras
    • Motion tracking
    • Multi-camera support
    • System cameras
    • Torch strength control
    • Ultra HDR
    • Use a device as a webcam
    • Wide gamut capture
    • Versioning
    • Camera version support
  • Connectivity
    • Overview
    • Bluetooth
      • Overview
      • Bluetooth services
      • Bluetooth Low Energy
      • Hearing aid audio support using BLE
      • BLE advertising
      • Verify and debug
      • HCI requirements
      • Presence calibration
      • Android OS identification
    • NFC
      • Host card emulation of FeliCa
      • NFC off-host payment synchronization
      • Secure NFC
      • Quick Access Wallet
      • Android proprietary NCI commands
    • Calling and messaging
      • 5G non-standalone (NSA)
      • Implement phone number blocking
      • Call notifications
      • Domain selection service
      • Implement Emergency Affordance
      • Android emergency number database
      • Emergency numbers and emergency calling
      • Implement IMS
      • IMS service entitlement
      • IMS single registration
      • Phone account suggestion
      • Implement RTT
      • Support third-party calling apps
      • Visual voicemail
    • Carrier
      • Overview
      • 5G network slicing
      • APN and CarrierConfig
      • Carrier identification
      • Implement data plans
      • Device identifiers
      • eSIM
        • Implement eSIM
        • Modem requirements for eSIM support
        • eUICC APIs
        • Multiple enabled profiles
        • Handle eUICC API errors
        • Downloadable test profiles
        • eSIM transfer carrier integration
      • Improve VPN user experience
      • Multi-operator network support
      • Customize device behavior for out-of-balance users
      • RIL refactoring
      • Small cell support
      • UICC carrier privileges
    • Time
      • Overview
      • Location time zone detection
      • Telephony time zone detection
      • Network time detection
      • GNSS time detection
      • External time detection
      • Time source priority
      • Time zone policy and recommendations
      • Time zone rules
    • Ultra-wideband
      • Overview
      • UWB HAL interface
    • Wi-Fi
      • Overview
      • Wi-Fi HAL
      • Wi-Fi infrastructure features
      • Test, debug, and tune Wi-Fi
      • Android Packet Filter
      • Carrier Wi-Fi
      • MAC randomization behavior
      • Implement MAC randomization
      • Passpoint (Hotspot 2.0)
      • Wi-Fi STA/AP concurrency
      • Wi-Fi STA/STA concurrency
      • Trust on First Use (TOFU)
      • Wi-Fi Aware
      • Wi-Fi/cellular coex channel avoidance
      • Wi-Fi Direct
      • Wi-Fi Easy Connect
      • Wi-Fi hotspot (Soft AP)
      • Wi-Fi AP/AP concurrency
      • Wi-Fi low-latency mode
      • Wi-Fi network selection
      • Wi-Fi preferred network offload scanning
      • Wi-Fi Round Trip Time (RTT)
      • WPA3 and Wi-Fi Enhanced Open
      • Wi-Fi 7
    • Companion device profiles
    • Connectivity Diagnostics API
    • Connectivity user interface
    • Network selection
    • Ranging: Out-of-band message sequence and payload specification
    • Signal strength reporting
  • Data
    • Overview
    • Data usage tags explained
    • Data Saver mode
    • eBPF traffic monitoring
    • Exclude network types from usage data
    • Network interface statistics overview
    • Tethering data
    • Tethering hardware offload
    • Usage cycle reset dates
    • Kernel overview
    • Kernel changes
  • Display
    • Overview
    • Apps
      • Implement adaptive icons
      • App shortcuts
      • Implement circular icons
      • Conversation notifications and widgets
      • Window blurs
      • Widgets and shortcuts
      • Implement synchronized app transitions
    • Color
      • Color management
      • Display cutouts
      • Do not disturb
      • HDR video playback
      • Implement night light
      • Tone mapping HDR luminance to an SDR-compatible range
      • Material You design
      • Dynamic color
    • Multi-Window
      • Overview
      • Desktop windowing features
      • Split-screen interactions
      • Picture-in-picture
      • Window magnification
    • Multi-Display
      • Overview
      • Recommended practices
      • Testing and development environment
      • Frequently asked questions
      • Multi-resume
      • Activity launch policy
      • Display support
      • System decorations support
      • Lock screen
      • Input method editor support
      • Input routing
      • Multi-zone audio
    • Notifications
      • Notification history
      • Permission for opt-In notifications
    • Task Manager
    • Retail demo mode
    • Rotate suggestions
    • Implement text classifier
    • Mixed SDR and HDR composition
    • Media controls in System UI
    • WindowManager extensions
  • Fonts
    • Implement custom font fallback
  • Graphics
    • Overview
    • Architecture
    • BufferQueue and Gralloc
    • Implement DMABUF and GPU memory accounting
    • Trace window transitions using Winscope
      • Overview
      • Run Winscope
      • Capture traces
        • Overview
        • ViewCapture in system apps
        • On device
        • Use Winscope
        • Use adb commands
      • Load traces
      • Analyze traces
        • Overview
        • Timeline navigation
        • Trace search
        • SurfaceFlinger
        • WindowManager
        • Protolog
        • Shell transitions
        • ViewCapture
    • Surface and SurfaceHolder
      • Overview
      • SurfaceView and GLSurfaceView
      • SurfaceTexture
      • TextureView
    • SurfaceFlinger and WindowManager
      • Overview
      • System properties in SurfaceFlinger
    • Hardware Composer HAL
      • Overview
      • Implement HWC HAL
      • Hotplug handling
      • AIDL for HWC HAL
      • Client framebuffer management
      • Reduce graphics memory consumption
    • Layers and displays
    • VSync
    • Frame pacing
    • Multiple refresh rate
    • Adaptive refresh rate
    • EGLSurfaces and OpenGL ES
      • Overview
      • Implement OpenGL ES and EGL
      • OpenGLRenderer configuration
    • Vulkan
      • Overview
      • Implement Vulkan
    • Synchronization framework
    • Testing
      • Implementation testing
      • Integrate with Android CTS
      • drawElements Quality Program testing
    • Unsignaled buffer latching with AutoSingleLayer
    • Add new pixel formats to Android
    • HDR in Android screenshots
  • Interaction
    • Overview
    • Input
    • Overview
    • Key layout files
    • Key character map files
    • Input device configuration files
    • Migration guide
    • Keyboard devices
    • Touch devices
    • getevent tool
    • validatekeymaps tool
    • Haptics
    • Overview
    • Implement haptics
      • Overview
      • Implement constants and primitives
      • Map constants between HAL and API
      • Implement piecewise linear envelope effects
      • Assess the hardware
    • UX foundation for haptic framework
    • Haptics UX design
    • Hardware assessment
      • Overview
      • Set up the testing equipment
      • Set up the test software
      • Measure and record target effects
      • Analyze the waveform
      • Compare results using the performance map
    • Neural Networks
    • Overview
    • Burst executions and fast message queues
    • Compilation caching
    • Control flow
    • Device discovery and assignment
    • Memory pools
    • NNAPI driver implementation best practices
    • Quality of service
    • Vendor extensions
    • Peripherals
    • Overview
    • Audio accessories
      • Overview
      • 3.5 mm headset
        • Headset spec
        • Headset jack device spec
      • USB headset
        • Headset spec
        • Adapter spec
        • Device spec
      • Headset expected behavior
      • Headset testing
    • Custom accessories
      • Overview
      • Android Open Accessory
        • Overview
        • AOA 2.0
        • AOA 1.0
        • Disable data signaling over USB
      • Stylus
    • Sensors
    • Overview
    • Sensor stack
    • Sensor types
    • Interaction
    • Head tracker HID protocol
    • Power
      • Batching
      • Power consumption
    • Modes
      • Reporting modes
      • Suspend mode
      • Sensors off
    • Sensors HAL
      • Sensors AIDL HAL
      • Sensors Multi-HAL
      • Sensors HAL 2.0
      • Sensors HAL 1.0
      • HAL version deprecation
    • Context Hub Runtime Environment
    • Overview
  • Media
    • Overview
    • Media modules
    • MediaProvider module
    • Customize media components
    • Low-latency decoding in MediaCodec
    • Media framework hardening
    • SoC vendor dependencies
    • OEM dependencies
    • DRM
    • Compatible media transcoding
    • Export video encoding statistics
    • OEM guidance for RoI implementation
  • Performance
    • Overview
    • APK caching
    • Cached apps freezer
    • Optimize boot times
    • Health
      • Overview
      • Implement Health 2.1
    • Cgroup abstraction layer
    • Low memory killer daemon
    • Automatic Feedback-Directed Optimization (12 or higher)
    • Use profile-guided optimization
    • Task snapshots
    • Compatibility write-ahead logging
    • App hibernation
    • Performance boost for games
    • MM events historical memory statistics
    • Obtain system health information
  • Permissions
    • Overview
    • Ambient capabilities
    • Background location access reminder
    • Contacts provider and affinities
    • Discretionary access control
    • Immutable device IDs
    • Namespaces for native libraries
    • Privileged permission allowlist
    • Preinstalled system packages
    • Privacy indicators
    • Platform-signed shared UID allowlist
    • Privacy indicators
    • Restrict opportunistic locations
    • Restricted screen reading
    • Android roles
    • Runtime permissions
    • Signature permission allowlist
    • Tristate location permissions
    • Implement USB HAL
    • Companion app streaming
    • Full-screen intent limits
    • Capture Content for Notes
  • Power
    • Overview
    • Power management
    • Thermal mitigation
    • Power stats HAL
    • App power management
    • Platform power management with Doze
    • Performance management
    • App background behavior trackers
    • Support batteryless devices
    • Measure component power
    • Measure device power
    • Measure power values
    • Routine battery saver
    • TV standby
    • SystemSuspend service
  • Runtime
    • Overview
    • Dexpreopt and <uses-library> checks
    • Android 8.0 ART improvements
    • Dalvik bytecode format
    • Dalvik executable format
    • Dalvik executable instruction formats
    • Constraints
    • Configuration
      • Overview
      • ART Service configuration
      • Package manager configuration (deprecated)
    • ART TI
    • Implement Signed Config
    • Debug ART garbage collection
    • Implement ART JIT compiler
    • Change the value of an app's resources at runtime
    • Troubleshoot RROs
    • Boot image profiles
    • Soft restarts (<= AOSP 14)
    • About the Zygote
  • Settings
    • Overview
    • Design guidelines
    • Patterns and components
    • Information architecture
    • Personalized settings
    • Universal search
  • Storage
    • Overview
    • Traditional storage
    • Adoptable storage
    • Scoped storage
    • FUSE passthrough
    • Device configuration
    • Configuration examples
    • Faster statistics
    • SDCardFS deprecation
  • Tests
    • Overview
    • Test development workflow
    • Overview
    • Simple build configuration
    • Complex test configuration
    • Instrumentation tests
      • Overview
      • Self-instrumenting tests example
      • Target an app example
    • GoogleTests (GTests)
      • Overview
      • Add new GTests
      • Metric tests
    • JAR host tests
    • Test mapping
    • Run tests with Atest
    • OmniLab Android Test Station
      • User guide
      • Virtual devices in OmniLab ATS
      • Autoenable USB debugging on user builds
      • Run UIConductor tests
      • API
      • Release notes
      • FAQ
    • Vendor Test Suite (VTS)
    • Overview
    • Parameterized GTest for HAL testing
    • Test setup
    • Generic system image (GSI)
    • Vendor Test Suite (VTS) 10
    • Overview
    • Video tutorials
    • Systems testing with VTS
    • Test framework
      • Device shell commands
      • Test templates
      • Service name aware HAL testing
      • HAL testability check
      • Multi-device testing
      • VTS with debug ramdisk
    • VTS Dashboard
      • Setup
      • Database
      • User interface
    • Lab infrastructure
      • Automated testing infrastructure
      • Host controller architecture
    • Performance testing
    • Trade Federation (TF) test harness
    • Get started
      • Overview
      • Start
      • Development environment
      • Work with devices
      • Console
      • Test lifecycle
      • Option handling
      • End-to-end example
    • Write and run Tradefed tests
      • Overview
      • Test through Tradefed
        • Overview
        • Write a test runner
        • Write a sharded IRemoteTest test runner
        • Write a host-driven test
        • Write a host-side deviceless test
        • Report metrics or data from a test
        • Automatic test retry
        • Retry isolation
        • Automated log on failure collection
        • Dry run a configuration
        • Run instrumentation tests from APKs
        • Write a shell test
        • Global filters
      • Test through suites
        • Overview
        • Set up suites
        • Pass options and filters
        • Check system status
        • AndroidTest.xml structure
        • Configure sharding
        • Employ module controllers
        • Use suite retry
        • Multi-device modules
    • Develop TF
      • Overview
      • Test harness guidelines
      • Set up Eclipse
      • Include unit and functional tests
      • Run Error Prone bug checker
      • Contribute non-core code
    • Architecture
      • Overview
      • XML configuration
        • High-level structure
        • Templates and includes
        • Configuration object
      • Global Configuration
        • File options
        • Host options
      • Advanced concepts
        • Keystore secrets
        • Test Command Scheduler
        • Structure of a test runner
        • Test sharding
        • Run tests with multiple devices
        • Use Scripting Layer
        • Load protocols with global config
        • Native device
      • Device Manager
        • Device states
        • Device allocation
        • Device detection
      • Build
        • Build providers
        • BuildInfo
      • Device setup
        • Target preparers
        • Multi-target preparers
      • Results
        • Create a result reporter
        • Handle log files
        • Result reporter summary
        • Log saver
      • Metrics
        • Host-driven metrics collector
        • Device-side metric collection
    • Package index
    • Multidevice testing with Mobly
    • Overview
    • Debug native platform code
    • Overview
    • Read bug reports
    • Understand logging
    • Implement scoped vendor logging
    • Diagnose native crashes
    • Evaluate performance
      • Overview
      • Understand systrace
      • Use ftrace
      • Identify capacity-related jank
      • Identify jitter-related jank
    • Feature implementation
      • Implement Test Harness Mode
    • Use debuggers
    • Debug native memory use
    • Rescue party
    • Implement storaged
    • Use strace
  • Updates
    • Overview
    • APEX
      • APEX file format
      • Vendor APEX
    • Build OTA packages
    • Sign builds for release
    • Reduce OTA size
    • Virtual A/B
      • Overview
      • Implement Virtual A/B
      • Implement Virtual A/B - patches
    • Legacy A/B system updates
      • Overview
      • Implement A/B updates
      • Frequently asked questions
    • (Deprecated) Non-A/B system updates
      • Overview
      • Block-based OTA
      • Inside OTA packages
      • Device-specific code
    • Dynamic partitions
      • Overview
      • Implement dynamic partitions
      • OTA for A/B devices
      • OTA for legacy A/B devices
      • OTA for non-A/B devices
      • Size the super partition
    • Time zone rules
    • User data checkpoint
    • Dynamic system updates
    • Resume-on-Reboot
    • Upgrade Party for OS updates
    • Upgrade Invite for pending OS updates
    • Mainline
      • Overview
      • AdServices
      • adbd
      • Android Health
      • AppSearch
      • ART
      • Bluetooth
      • CellBroadcast
      • Config Infrastructure
      • Conscrypt
      • Crash Recovery
      • Device Scheduling
      • DNS Resolver
      • DocumentsUI