<!DOCTYPE html>
<html>
 <head>
  <title>
   Android 7.0, (N) Compatibility Definition
  </title>
  <link href="source/android-cdd.css" rel="stylesheet" type="text/css"/>
 </head>
 <meta charset="UTF-8">
 <body>
  <h6>
   Table of Contents
  </h6>
  <div id="toc">
   <div id="toc_left">
    <p class="toc_h1"><a href="#1_introduction">1. Introduction</a> </p>

    <p class="toc_h1"><a href="#2_device_types">2. Device Types</a> </p>

    <p class="toc_h2"><a href="#2_1_device_configurations">2.1 Device Configurations</a> </p>

    <p class="toc_h1"><a href="#3_software">3. Software</a> </p>

    <p class="toc_h2"><a href="#3_1_managed_api_compatibility">3.1. Managed API Compatibility</a> </p>

    <p class="toc_h2"><a href="#3_1_1_android_extensions">3.1.1. Android Extensions</a> </p>

    <p class="toc_h2"><a href="#3_2_soft_api_compatibility">3.2. Soft API Compatibility</a> </p>

    <p class="toc_h3"><a href="#3_2_1_permissions">3.2.1. Permissions</a> </p>

    <p class="toc_h3"><a href="#3_2_2_build_parameters">3.2.2. Build Parameters</a> </p>

    <p class="toc_h3"><a href="#3_2_3_intent_compatibility">3.2.3. Intent Compatibility</a> </p>

    <p class="toc_h4"><a href="#3_2_3_1_core_application_intents">3.2.3.1. Core Application Intents</a> </p>

    <p class="toc_h4"><a href="#3_2_3_2_intent_resolution">3.2.3.2. Intent Resolution</a> </p>

    <p class="toc_h4"><a href="#3_2_3_3_intent_namespaces">3.2.3.3. Intent Namespaces</a> </p>

    <p class="toc_h4"><a href="#3_2_3_4_broadcast_intents">3.2.3.4. Broadcast Intents</a> </p>

    <p class="toc_h4"><a href="#3_2_3_5_default_app_settings">3.2.3.5. Default App Settings</a> </p>

    <p class="toc_h2"><a href="#3_3_native_api_compatibility">3.3. Native API Compatibility</a> </p>

    <p class="toc_h3"><a href="#3_3_1_application_binary_interfaces">3.3.1. Application Binary Interfaces</a> </p>

    <p class="toc_h4"><a href="#3_3_1_1_graphic_libraries">3.3.1.1. Graphic Libraries</a> </p>

    <p class="toc_h3"><a href="#3_3_2_32-bit_arm_native_code_compatibility">3.3.2. 32-bit ARM Native Code Compatibility</a> </p>

    <p class="toc_h2"><a href="#3_4_web_compatibility">3.4. Web Compatibility</a> </p>

    <p class="toc_h3"><a href="#3_4_1_webview_compatibility">3.4.1. WebView Compatibility</a> </p>

    <p class="toc_h3"><a href="#3_4_2_browser_compatibility">3.4.2. Browser Compatibility</a> </p>

    <p class="toc_h2"><a href="#3_5_api_behavioral_compatibility">3.5. API Behavioral Compatibility</a> </p>

    <p class="toc_h2"><a href="#3_6_api_namespaces">3.6. API Namespaces</a> </p>

    <p class="toc_h2"><a href="#3_7_runtime_compatibility">3.7. Runtime Compatibility</a> </p>

    <p class="toc_h2"><a href="#3_8_user_interface_compatibility">3.8. User Interface Compatibility</a> </p>

    <p class="toc_h3"><a href="#3_8_1_launcher_(home_screen)">3.8.1. Launcher (Home Screen)</a> </p>

    <p class="toc_h3"><a href="#3_8_2_widgets">3.8.2. Widgets</a> </p>

    <p class="toc_h3"><a href="#3_8_3_notifications">3.8.3. Notifications</a> </p>

    <p class="toc_h3"><a href="#3_8_4_search">3.8.4. Search</a> </p>

    <p class="toc_h3"><a href="#3_8_5_toasts">3.8.5. Toasts</a> </p>

    <p class="toc_h3"><a href="#3_8_6_themes">3.8.6. Themes</a> </p>

    <p class="toc_h3"><a href="#3_8_7_live_wallpapers">3.8.7. Live Wallpapers</a> </p>

    <p class="toc_h3"><a href="#3_8_8_activity_switching">3.8.8. Activity Switching</a> </p>

   </div>
   <div id="toc_right">
    <p class="toc_h3"><a href="#3_8_9_input_management">3.8.9. Input Management</a> </p>

    <p class="toc_h3"><a href="#3_8_10_lock_screen_media_control">3.8.10. Lock Screen Media Control</a> </p>

    <p class="toc_h3"><a href="#3_8_11_screen_savers_(previously_dreams)">3.8.11. Screen savers (previously Dreams)</a> </p>

    <p class="toc_h3"><a href="#3_8_12_location">3.8.12. Location</a> </p>

    <p class="toc_h3"><a href="#3_8_13_unicode_and_font">3.8.13. Unicode and Font</a> </p>

    <p class="toc_h3"><a href="#3_8_14_multi-windows">3.8.14. Multi-windows</a> </p>

    <p class="toc_h2"><a href="#3_9_device_administration">3.9. Device Administration</a> </p>

    <p class="toc_h3"><a href="#3_9_1_device_provisioning">3.9.1 Device Provisioning</a> </p>

    <p class="toc_h4"><a href="#3_9_1_1_device_owner_provisioning">3.9.1.1 Device owner provisioning</a> </p>

    <p class="toc_h4"><a href="#3_9_1_2_managed_profile_provisioning">3.9.1.2 Managed profile provisioning</a> </p>

    <p class="toc_h2"><a href="#3_9_2_managed_profile_support">3.9.2 Managed Profile Support</a> </p>

    <p class="toc_h2"><a href="#3_10_accessibility">3.10. Accessibility</a> </p>

    <p class="toc_h2"><a href="#3_11_text-to-speech">3.11. Text-to-Speech</a> </p>

    <p class="toc_h2"><a href="#3_12_tv_input_framework">3.12. TV Input Framework</a> </p>

    <p class="toc_h3"><a href="#3_12_1_tv_app">3.12.1. TV App</a> </p>

    <p class="toc_h4"><a href="#3_12_1_1_electronic_program_guide">3.12.1.1. Electronic Program Guide</a> </p>

    <p class="toc_h4"><a href="#3_12_1_2_navigation">3.12.1.2. Navigation</a> </p>

    <p class="toc_h4"><a href="#3_12_1_3_tv_input_app_linking">3.12.1.3. TV input app linking</a> </p>

    <p class="toc_h4"><a href="#3_12_1_4_time_shifting">3.12.1.4. Time shifting</a> </p>

    <p class="toc_h4"><a href="#3_12_1_5_tv_recording">3.12.1.5. TV recording</a> </p>

    <p class="toc_h2"><a href="#3_13_quick_settings">3.13. Quick Settings</a> </p>

    <p class="toc_h2"><a href="#3_14_vehicle_ui_apis">3.14. Vehicle UI APIs</a> </p>

    <p class="toc_h3"><a href="#3_14_1__vehicle_media_ui">3.14.1.  Vehicle Media UI</a> </p>

    <p class="toc_h1"><a href="#4_application_packaging_compatibility">4. Application Packaging Compatibility</a> </p>

    <p class="toc_h1"><a href="#5_multimedia_compatibility">5. Multimedia Compatibility</a> </p>

    <p class="toc_h2"><a href="#5_1_media_codecs">5.1. Media Codecs</a> </p>

    <p class="toc_h3"><a href="#5_1_1_audio_codecs">5.1.1. Audio Codecs</a> </p>

    <p class="toc_h3"><a href="#5_1_2_image_codecs">5.1.2. Image Codecs</a> </p>

    <p class="toc_h3"><a href="#5_1_3_video_codecs">5.1.3. Video Codecs</a> </p>

    <p class="toc_h2"><a href="#5_2_video_encoding">5.2. Video Encoding</a> </p>

    <p class="toc_h3"><a href="#5_2_1_h_263">5.2.1. H.263</a> </p>

    <p class="toc_h3"><a href="#5_2_2_h-264">5.2.2. H-264</a> </p>

    <p class="toc_h3"><a href="#5_2_3_vp8">5.2.3. VP8</a> </p>

    <p class="toc_h2"><a href="#5_3_video_decoding">5.3. Video Decoding</a> </p>

   </div>
   <div style="clear: both; page-break-after:always; height:1px">
   </div>
   <div id="toc_left">
    <p class="toc_h3"><a href="#5_3_1_mpeg-2">5.3.1. MPEG-2</a> </p>

    <p class="toc_h3"><a href="#5_3_2_h_263">5.3.2. H.263</a> </p>

    <p class="toc_h3"><a href="#5_3_3_mpeg-4">5.3.3. MPEG-4</a> </p>

    <p class="toc_h3"><a href="#5_3_4_h_264">5.3.4. H.264</a> </p>

    <p class="toc_h3"><a href="#5_3_5_h_265_(hevc)">5.3.5. H.265 (HEVC)</a> </p>

    <p class="toc_h3"><a href="#5_3_6_vp8">5.3.6. VP8</a> </p>

    <p class="toc_h3"><a href="#5_3_7_vp9">5.3.7. VP9</a> </p>

    <p class="toc_h2"><a href="#5_4_audio_recording">5.4. Audio Recording</a> </p>

    <p class="toc_h3"><a href="#5_4_1_raw_audio_capture">5.4.1. Raw Audio Capture</a> </p>

    <p class="toc_h3"><a href="#5_4_2_capture_for_voice_recognition">5.4.2. Capture for Voice Recognition</a> </p>

    <p class="toc_h3"><a href="#5_4_3_capture_for_rerouting_of_playback">5.4.3. Capture for Rerouting of Playback</a> </p>

    <p class="toc_h2"><a href="#5_5_audio_playback">5.5. Audio Playback</a> </p>

    <p class="toc_h3"><a href="#5_5_1_raw_audio_playback">5.5.1. Raw Audio Playback</a> </p>

    <p class="toc_h3"><a href="#5_5_2_audio_effects">5.5.2. Audio Effects</a> </p>

    <p class="toc_h3"><a href="#5_5_3_audio_output_volume">5.5.3. Audio Output Volume</a> </p>

    <p class="toc_h2"><a href="#5_6_audio_latency">5.6. Audio Latency</a> </p>

    <p class="toc_h2"><a href="#5_7_network_protocols">5.7. Network Protocols</a> </p>

    <p class="toc_h2"><a href="#5_8_secure_media">5.8. Secure Media</a> </p>

    <p class="toc_h2"><a href="#5_9_musical_instrument_digital_interface_(midi)">5.9. Musical Instrument Digital Interface (MIDI)</a> </p>

    <p class="toc_h2"><a href="#5_10_professional_audio">5.10. Professional Audio</a> </p>

    <p class="toc_h2"><a href="#5_11_capture_for_unprocessed">5.11. Capture for Unprocessed</a> </p>

    <p class="toc_h1"><a href="#6_developer_tools_and_options_compatibility">6. Developer Tools and Options Compatibility</a> </p>

    <p class="toc_h2"><a href="#6_1_developer_tools">6.1. Developer Tools</a> </p>

    <p class="toc_h2"><a href="#6_2_developer_options">6.2. Developer Options</a> </p>

    <p class="toc_h1"><a href="#7_hardware_compatibility">7. Hardware Compatibility</a> </p>

    <p class="toc_h2"><a href="#7_1_display_and_graphics">7.1. Display and Graphics</a> </p>

    <p class="toc_h3"><a href="#7_1_1_screen_configuration">7.1.1. Screen Configuration</a> </p>

    <p class="toc_h4"><a href="#7_1_1_1_screen_size">7.1.1.1. Screen Size</a> </p>

    <p class="toc_h4"><a href="#7_1_1_2_screen_aspect_ratio">7.1.1.2. Screen Aspect Ratio</a> </p>

    <p class="toc_h4"><a href="#7_1_1_3_screen_density">7.1.1.3. Screen Density</a> </p>

    <p class="toc_h3"><a href="#7_1_2_display_metrics">7.1.2. Display Metrics</a> </p>

    <p class="toc_h3"><a href="#7_1_3_screen_orientation">7.1.3. Screen Orientation</a> </p>

    <p class="toc_h3"><a href="#7_1_4_2d_and_3d_graphics_acceleration">7.1.4. 2D and 3D Graphics Acceleration</a> </p>

    <p class="toc_h3"><a href="#7_1_5_legacy_application_compatibility_mode">7.1.5. Legacy Application Compatibility Mode</a> </p>

   </div>
   <div id="toc_right">
    <p class="toc_h3"><a href="#7_1_6_screen_technology">7.1.6. Screen Technology</a> </p>

    <p class="toc_h3"><a href="#7_1_7_secondary_displays">7.1.7. Secondary Displays</a> </p>

    <p class="toc_h2"><a href="#7_2_input_devices">7.2. Input Devices</a> </p>

    <p class="toc_h3"><a href="#7_2_1_keyboard">7.2.1. Keyboard</a> </p>

    <p class="toc_h3"><a href="#7_2_2_non_touch_navigation">7.2.2. Non-touch Navigation</a> </p>

    <p class="toc_h3"><a href="#7_2_3_navigation_keys">7.2.3. Navigation Keys</a> </p>

    <p class="toc_h3"><a href="#7_2_4_touchscreen_input">7.2.4. Touchscreen Input</a> </p>

    <p class="toc_h3"><a href="#7_2_5_fake_touch_input">7.2.5. Fake Touch Input</a> </p>

    <p class="toc_h3"><a href="#7_2_6_game_controller_support">7.2.6. Game Controller Support</a> </p>

    <p class="toc_h4"><a href="#7_2_6_1_button_mappings">7.2.6.1. Button Mappings</a> </p>

    <p class="toc_h3"><a href="#7_2_7_remote_control">7.2.7. Remote Control</a> </p>

    <p class="toc_h2"><a href="#7_3_sensors">7.3. Sensors</a> </p>

    <p class="toc_h3"><a href="#7_3_1_accelerometer">7.3.1. Accelerometer</a> </p>

    <p class="toc_h3"><a href="#7_3_2_magnetometer">7.3.2. Magnetometer</a> </p>

    <p class="toc_h3"><a href="#7_3_3_gps">7.3.3. GPS</a> </p>

    <p class="toc_h3"><a href="#7_3_4_gyroscope">7.3.4. Gyroscope</a> </p>

    <p class="toc_h3"><a href="#7_3_5_barometer">7.3.5. Barometer</a> </p>

    <p class="toc_h3"><a href="#7_3_6_thermometer">7.3.6. Thermometer</a> </p>

    <p class="toc_h3"><a href="#7_3_7_photometer">7.3.7. Photometer</a> </p>

    <p class="toc_h3"><a href="#7_3_8_proximity_sensor">7.3.8. Proximity Sensor</a> </p>

    <p class="toc_h3"><a href="#7_3_9_high_fidelity_sensors">7.3.9. High Fidelity Sensors</a> </p>

    <p class="toc_h3"><a href="#7_3_10_fingerprint_sensor">7.3.10. Fingerprint Sensor</a> </p>

    <p class="toc_h3"><a href="#7_3_11_android_automotive-only_sensors">7.3.11. Android Automotive-only sensors</a> </p>

    <p class="toc_h4"><a href="#7_3_11_1_current_gear">7.3.11.1. Current Gear</a> </p>

    <p class="toc_h4"><a href="#7_3_11_2_day_night_mode">7.3.11.2. Day Night Mode</a> </p>

    <p class="toc_h4"><a href="#7_3_11_3_driving_status">7.3.11.3. Driving Status</a> </p>

    <p class="toc_h4"><a href="#7_3_11_4_wheel_speed">7.3.11.4. Wheel Speed</a> </p>

    <p class="toc_h2"><a href="#7_3_12_pose_sensor">7.3.12. Pose Sensor</a> </p>

    <p class="toc_h2"><a href="#7_4_data_connectivity">7.4. Data Connectivity</a> </p>

    <p class="toc_h3"><a href="#7_4_1_telephony">7.4.1. Telephony</a> </p>

    <p class="toc_h4"><a href="#7_4_1_1_number_blocking_compatibility">7.4.1.1. Number Blocking Compatibility</a> </p>

    <p class="toc_h3"><a href="#7_4_2_ieee_802_11_(wi-fi)">7.4.2. IEEE 802.11 (Wi-Fi)</a> </p>

    <p class="toc_h4"><a href="#7_4_2_1_wi-fi_direct">7.4.2.1. Wi-Fi Direct</a> </p>

    <p class="toc_h4"><a href="#7_4_2_2_wi-fi_tunneled_direct_link_setup">7.4.2.2. Wi-Fi Tunneled Direct Link Setup</a> </p>

   </div>
   <div style="clear: both; page-break-after:always; height:1px">
   </div>
   <div id="toc_left">
    <p class="toc_h3"><a href="#7_4_3_bluetooth">7.4.3. Bluetooth</a> </p>

    <p class="toc_h3"><a href="#7_4_4_near-field_communications">7.4.4. Near-Field Communications</a> </p>

    <p class="toc_h3"><a href="#7_4_5_minimum_network_capability">7.4.5. Minimum Network Capability</a> </p>

    <p class="toc_h3"><a href="#7_4_6_sync_settings">7.4.6. Sync Settings</a> </p>

    <p class="toc_h3"><a href="#7_4_7_data_saver">7.4.7. Data Saver</a> </p>

    <p class="toc_h2"><a href="#7_5_cameras">7.5. Cameras</a> </p>

    <p class="toc_h3"><a href="#7_5_1_rear-facing_camera">7.5.1. Rear-Facing Camera</a> </p>

    <p class="toc_h3"><a href="#7_5_2_front-facing_camera">7.5.2. Front-Facing Camera</a> </p>

    <p class="toc_h3"><a href="#7_5_3_external_camera">7.5.3. External Camera</a> </p>

    <p class="toc_h3"><a href="#7_5_4_camera_api_behavior">7.5.4. Camera API Behavior</a> </p>

    <p class="toc_h3"><a href="#7_5_5_camera_orientation">7.5.5. Camera Orientation</a> </p>

    <p class="toc_h2"><a href="#7_6_memory_and_storage">7.6. Memory and Storage</a> </p>

    <p class="toc_h3"><a href="#7_6_1_minimum_memory_and_storage">7.6.1. Minimum Memory and Storage</a> </p>

    <p class="toc_h3"><a href="#7_6_2_application_shared_storage">7.6.2. Application Shared Storage</a> </p>

    <p class="toc_h3"><a href="#7_6_3_adoptable_storage">7.6.3. Adoptable Storage</a> </p>

    <p class="toc_h2"><a href="#7_7_usb">7.7. USB</a> </p>

    <p class="toc_h3"><a href="#7_7_1_usb_peripheral_mode">7.7.1. USB peripheral mode</a> </p>

    <p class="toc_h3"><a href="#7_7_2_usb_host_mode">7.7.2. USB host mode</a> </p>

    <p class="toc_h2"><a href="#7_8_audio">7.8. Audio</a> </p>

    <p class="toc_h3"><a href="#7_8_1_microphone">7.8.1. Microphone</a> </p>

    <p class="toc_h3"><a href="#7_8_2_audio_output">7.8.2. Audio Output</a> </p>

    <p class="toc_h4"><a href="#7_8_2_1_analog_audio_ports">7.8.2.1. Analog Audio Ports</a> </p>

    <p class="toc_h3"><a href="#7_8_3_near-ultrasound">7.8.3. Near-Ultrasound</a> </p>

    <p class="toc_h2"><a href="#7_9_virtual_reality">7.9. Virtual Reality</a> </p>

    <p class="toc_h3"><a href="#7_9_1_virtual_reality_mode">7.9.1. Virtual Reality Mode</a> </p>

    <p class="toc_h3"><a href="#7_9_2_virtual_reality_high_performance">7.9.2. Virtual Reality High Performance</a> </p>

    <p class="toc_h1"><a href="#8_performance_and_power">8. Performance and Power</a> </p>

    <p class="toc_h2"><a href="#8_1_user_experience_consistency">8.1. User Experience Consistency</a> </p>

    <p class="toc_h2"><a href="#8_2_file_i/o_access_performance">8.2. File I/O Access Performance</a> </p>

    <p class="toc_h2"><a href="#8_3_power-saving_modes">8.3. Power-Saving Modes</a> </p>

    <p class="toc_h2"><a href="#8_4_power_consumption_accounting">8.4. Power Consumption Accounting</a> </p>

    <p class="toc_h2"><a href="#8_5_consistent_performance">8.5. Consistent Performance</a> </p>

    <p class="toc_h1"><a href="#9_security_model_compatibility">9. Security Model Compatibility</a> </p>

    <p class="toc_h2"><a href="#9_1_permissions">9.1. Permissions</a> </p>

   </div>
   <div id="toc_right">
    <p class="toc_h2"><a href="#9_2_uid_and_process_isolation">9.2. UID and Process Isolation</a> </p>

    <p class="toc_h2"><a href="#9_3_filesystem_permissions">9.3. Filesystem Permissions</a> </p>

    <p class="toc_h2"><a href="#9_4_alternate_execution_environments">9.4. Alternate Execution Environments</a> </p>

    <p class="toc_h2"><a href="#9_5_multi-user_support">9.5. Multi-User Support</a> </p>

    <p class="toc_h2"><a href="#9_6_premium_sms_warning">9.6. Premium SMS Warning</a> </p>

    <p class="toc_h2"><a href="#9_7_kernel_security_features">9.7. Kernel Security Features</a> </p>

    <p class="toc_h2"><a href="#9_8_privacy">9.8. Privacy</a> </p>

    <p class="toc_h2"><a href="#9_9_data_storage_encryption">9.9. Data Storage Encryption</a> </p>

    <p class="toc_h3"><a href="#9_9_1_direct_boot">9.9.1. Direct Boot</a> </p>

    <p class="toc_h3"><a href="#9_9_2_file_based_encryption">9.9.2. File Based Encryption</a> </p>

    <p class="toc_h3"><a href="#9_9_3_full_disk_encryption">9.9.3. Full Disk Encryption</a> </p>

    <p class="toc_h2"><a href="#9_10_device_integrity">9.10. Device Integrity</a> </p>

    <p class="toc_h2"><a href="#9_11_keys_and_credentials">9.11. Keys and Credentials</a> </p>

    <p class="toc_h3"><a href="#9_11_1_secure_lock_screen">9.11.1. Secure Lock Screen</a> </p>

    <p class="toc_h2"><a href="#9_12_data_deletion">9.12. Data Deletion</a> </p>

    <p class="toc_h2"><a href="#9_13_safe_boot_mode">9.13. Safe Boot Mode</a> </p>

    <p class="toc_h2"><a href="#9_14_automotive_vehicle_system_isolation">9.14. Automotive Vehicle System Isolation</a> </p>

    <p class="toc_h1"><a href="#10_software_compatibility_testing">10. Software Compatibility Testing</a> </p>

    <p class="toc_h2"><a href="#10_1_compatibility_test_suite">10.1. Compatibility Test Suite</a> </p>

    <p class="toc_h2"><a href="#10_2_cts_verifier">10.2. CTS Verifier</a> </p>

    <p class="toc_h1"><a href="#11_updatable_software">11. Updatable Software</a> </p>

    <p class="toc_h1"><a href="#12_document_changelog">12. Document Changelog</a> </p>

    <p class="toc_h2"><a href="#12_1_changelog_viewing_tips">12.1. Changelog Viewing Tips</a> </p>

    <p class="toc_h1"><a href="#13_contact_us">13. Contact Us</a> </p>

   </div>
   <div style="clear: both; page-break-after:always; height:1px">
   </div>
   <div style="clear: both">
   </div>
  </div>
  <div id="main">
   <h1 id="1_introduction">
    1. Introduction
   </h1>
   <p>
    This document enumerates the requirements that must be met in order for devices
to be compatible with Android 7.0.
   </p>
   <p>
    The use of &ldquo;MUST&rdquo;, &ldquo;MUST NOT&rdquo;, &ldquo;REQUIRED&rdquo;, &ldquo;SHALL&rdquo;, &ldquo;SHALL NOT&rdquo;, &ldquo;SHOULD&rdquo;,
&ldquo;SHOULD NOT&rdquo;, &ldquo;RECOMMENDED&rdquo;, &ldquo;MAY&rdquo;, and &ldquo;OPTIONAL&rdquo; is per the IETF standard
defined in
    <a href="http://www.ietf.org/rfc/rfc2119.txt">RFC2119</a>.
   </p>
   <p>
    As used in this document, a &ldquo;device implementer&rdquo; or &ldquo;implementer&rdquo; is a person
or organization developing a hardware/software solution running Android
7.0. A &ldquo;device implementation&rdquo; or &ldquo;implementation is the
hardware/software solution so developed.
   </p>
   <p>
    To be considered compatible with Android 7.0, device
implementations MUST meet the requirements presented in this Compatibility
Definition, including any documents incorporated via reference.
   </p>
   <p>
    Where this definition or the software tests described in
    <a href="#10_software_compatibility_testing">
     section 10</a> is silent, ambiguous, or incomplete, it
is the responsibility of the device implementer to ensure compatibility with
existing implementations.
   </p>
   <p>
    For this reason, the
    <a href="http://source.android.com/">Android Open Source Project</a>  is both the reference and preferred implementation of Android. Device
implementers are STRONGLY RECOMMENDED to base their implementations to the
greatest extent possible on the &ldquo;upstream&rdquo; source code available from the
Android Open Source Project. While some components can hypothetically be
replaced with alternate implementations, it is STRONGLY RECOMMENDED to not
follow this practice, as passing the software tests will become substantially
more difficult. It is the implementer&rsquo;s responsibility to ensure full
behavioral compatibility with the standard Android implementation, including
and beyond the Compatibility Test Suite. Finally, note that certain component
substitutions and modifications are explicitly forbidden by this document.
   </p>
   <p>
    Many of the resources linked to in this document are derived directly or
indirectly from the Android SDK and will be functionally identical to the
information in that SDK&rsquo;s documentation. In any cases where this Compatibility
Definition or the Compatibility Test Suite disagrees with the SDK
documentation, the SDK documentation is considered authoritative. Any technical
details provided in the linked resources throughout this document are
considered by inclusion to be part of this Compatibility Definition.
   </p>
   <h1 id="2_device_types">
    2. Device Types
   </h1>
   <p>
    While the Android Open Source Project has been used in the implementation of a
variety of device types and form factors, many aspects of the architecture and
compatibility requirements were optimized for handheld devices. Starting from
Android 5.0, the Android Open Source Project aims to embrace a wider variety of
device types as described in this section.
   </p>
   <p>
    <strong>
     Android Handheld device
    </strong>
    refers to an Android device implementation that is
typically used by holding it in the hand, such as mp3 players, phones, and
tablets. Android Handheld device implementations:
   </p>
   <ul>
    <li>
     MUST have a touchscreen embedded in the device.
    </li>
    <li>
     MUST have a power source that provides mobility, such as a battery.
    </li>
   </ul>
   <p>
    <strong>
     Android Television device
    </strong>
    refers to an Android device implementation that
is an entertainment interface for consuming digital media, movies, games, apps,
and/or live TV for users sitting about ten feet away (a &ldquo;lean back&rdquo; or &ldquo;10-foot
user interface&rdquo;). Android Television devices:
   </p>
   <ul>
    <li>
     MUST have an embedded screen OR include a video output port, such as VGA,
    HDMI, or a wireless port for display.
    </li>
    <li>
     MUST declare the features
     <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_LEANBACK">android.software.leanback</a>  and android.hardware.type.television.
    </li>
   </ul>
   <p>
    <strong>
     Android Watch device
    </strong>
    refers to an Android device implementation intended to
be worn on the body, perhaps on the wrist, and:
   </p>
   <ul>
    <li>
     MUST have a screen with the physical diagonal length in the range from 1.1
    to 2.5 inches.
    </li>
    <li>
     MUST declare the feature android.hardware.type.watch.
    </li>
    <li>
     MUST support uiMode =
     <a href="http://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_WATCH">UI_MODE_TYPE_WATCH</a>.  
    </li>
   </ul>
   <p>
    <strong>
     Android Automotive implementation
    </strong>
    refers to a vehicle head unit running
Android as an operating system for part or all of the system and/or
infotainment functionality. Android Automotive implementations:
   </p>
   <ul>
    <li>
     MUST have a screen with the physical diagonal length equal to or greater
    than 6 inches.
    </li>
    <li>
     MUST declare the feature android.hardware.type.automotive.
    </li>
    <li>
     MUST support uiMode =
     <a href="http://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_CAR">UI_MODE_TYPE_CAR</a>.  
    </li>
    <li>
     Android Automotive implementations MUST support all public APIs in the
     <code>
      android.car.*
     </code>
     namespace.
    </li>
   </ul>
   <p>
    All Android device implementations that do not fit into any of the above device
types still MUST meet all requirements in this document to be Android
7.0 compatible, unless the requirement is explicitly described to
be only applicable to a specific Android device type from above.
   </p>
   <h2 id="2_1_device_configurations">
    2.1 Device Configurations
   </h2>
   <p>
    This is a summary of major differences in hardware configuration by device
type. (Empty cells denote a &ldquo;MAY&rdquo;). Not all configurations are covered in this
table; see relevant hardware sections for more detail.
   </p>
   <table>
    <tr>
     <th>
      Category
     </th>
     <th>
      Feature
     </th>
     <th>
      Section
     </th>
     <th>
      Handheld
     </th>
     <th>
      Television
     </th>
     <th>
      Watch
     </th>
     <th>
      Automotive
     </th>
     <th>
      Other
     </th>
    </tr>
    <tr>
     <td rowspan="3">
      Input
     </td>
     <td>
      D-pad
     </td>
     <td>
      <a href="#7_2_2_non_touch_navigation">7.2.2. Non-touch Navigation</a>  </td>
     <td>
     </td>
     <td>
      MUST
     </td>
     <td>
     </td>
     <td>
     </td>
     <td>
     </td>
    </tr>
    <tr>
     <td>
      Touchscreen
     </td>
     <td>
      <a href="#7_2_4_touchscreen_input">7.2.4. Touchscreen input</a>  </td>
     <td>
      MUST
     </td>
     <td>
     </td>
     <td>
      MUST
     </td>
     <td>
     </td>
     <td>
      SHOULD
     </td>
    </tr>
    <tr>
     <td>
      Microphone
     </td>
     <td>
      <a href="#7_8_1_microphone">7.8.1. Microphone</a>  </td>
     <td>
      MUST
     </td>
     <td>
      SHOULD
     </td>
     <td>
      MUST
     </td>
     <td>
      MUST
     </td>
     <td>
      SHOULD
     </td>
    </tr>
    <tr>
     <td rowspan="2">
      Sensors
     </td>
     <td>
      Accelerometer
     </td>
     <td>
      <a href="#7_3_1_accelerometer">7.3.1 Accelerometer</a>  </td>
     <td>
      SHOULD
     </td>
     <td>
     </td>
     <td>
      SHOULD
     </td>
     <td>
     </td>
     <td>
      SHOULD
     </td>
    </tr>
    <tr>
     <td>
      GPS
     </td>
     <td>
      <a href="#7_3_3_gps">7.3.3. GPS</a>  </td>
     <td>
      SHOULD
     </td>
     <td>
     </td>
     <td>
     </td>
     <td>
      SHOULD
     </td>
     <td>
     </td>
    </tr>
    <tr>
     <td rowspan="6">
      Connectivity
     </td>
     <td>
      Wi-Fi
     </td>
     <td>
      <a href="#7_4_2_ieee_802.11">7.4.2. IEEE 802.11</a>  </td>
     <td>
      SHOULD
     </td>
     <td>
      SHOULD
     </td>
     <td>
     </td>
     <td>
      SHOULD
     </td>
     <td>
      SHOULD
     </td>
    </tr>
    <tr>
     <td>
      Wi-Fi Direct
     </td>
     <td>
      <a href="#7_4_2_1_wi-fi-direct">7.4.2.1. Wi-Fi Direct</a>  </td>
     <td>
      SHOULD
     </td>
     <td>
      SHOULD
     </td>
     <td>
     </td>
     <td>
     </td>
     <td>
      SHOULD
     </td>
    </tr>
    <tr>
     <td>
      Bluetooth
     </td>
     <td>
      <a href="#7_4_3_bluetooth">7.4.3. Bluetooth</a>  </td>
     <td>
      SHOULD
     </td>
     <td>
      MUST
     </td>
     <td>
      MUST
     </td>
     <td>
      MUST
     </td>
     <td>
      SHOULD
     </td>
    </tr>
    <tr>
     <td>
      Bluetooth Low Energy
     </td>
     <td>
      <a href="#7_4_3_bluetooth">7.4.3. Bluetooth</a>  </td>
     <td>
      SHOULD
     </td>
     <td>
      MUST
     </td>
     <td>
      SHOULD
     </td>
     <td>
      SHOULD
     </td>
     <td>
      SHOULD
     </td>
    </tr>
    <tr>
     <td>
      Cellular radio
     </td>
     <td>
      <a href="#7_4_5_minimum_network_capability">7.4.5. Minimum Network Capability</a>  </td>
     <td>
     </td>
     <td>
     </td>
     <td>
     </td>
     <td>
      SHOULD
     </td>
     <td>
     </td>
    </tr>
    <tr>
     <td>
      USB peripheral/host mode
     </td>
     <td>
      <a href="#7_7_usb">7.7. USB</a>  </td>
     <td>
      SHOULD
     </td>
     <td>
     </td>
     <td>
     </td>
     <td>
      SHOULD
     </td>
     <td>
      SHOULD
     </td>
    </tr>
    <tr>
     <td>
      Output
     </td>
     <td>
      Speaker and/or Audio output ports
     </td>
     <td>
      <a href="#7_8_2_audio_output">7.8.2. Audio Output</a>  </td>
     <td>
      MUST
     </td>
     <td>
      MUST
     </td>
     <td>
     </td>
     <td>
      MUST
     </td>
     <td>
      MUST
     </td>
    </tr>
   </table>
   <h1 id="3_software">
    3. Software
   </h1>
   <h2 id="3_1_managed_api_compatibility">
    3.1. Managed API Compatibility
   </h2>
   <p>
    The managed Dalvik bytecode execution environment is the primary vehicle for
Android applications. The Android application programming interface (API) is the
set of Android platform interfaces exposed to applications running in the
managed runtime environment. Device implementations MUST provide complete
implementations, including all documented behaviors, of any documented API
exposed by the
    <a href="http://developer.android.com/reference/packages.html">
     Android SDK</a> or any API decorated
with the &ldquo;@SystemApi&rdquo; marker in the upstream Android source code.
   </p>
   <p>
    Device implementations MUST support/preserve all classes, methods, and
associated elements marked by the TestApi annotation (@TestApi).
   </p>
   <p>
    Device implementations MUST NOT omit any managed APIs, alter API interfaces or
signatures, deviate from the documented behavior, or include no-ops, except
where specifically allowed by this Compatibility Definition.
   </p>
   <p>
    This Compatibility Definition permits some types of hardware for which Android
includes APIs to be omitted by device implementations. In such cases, the APIs
MUST still be present and behave in a reasonable way. See
    <a href="#7_hardware_compatibility">
     section 7</a> for specific requirements for this scenario.
   </p>
   <h2 id="3_1_1_android_extensions">
    3.1.1. Android Extensions
   </h2>
   <p>
    Android includes the support of extending the managed APIs while keeping the same API
level version. Android device implementations MUST preload the AOSP implementation
of both the shared library
    <code>
     ExtShared
    </code>
    and services
    <code>
     ExtServices
    </code>
    with versions higher
than or equal to the minimum versions allowed per each API level.
For example, Android 7.0 device implementations, running API level 24 MUST include
at least version 1.
   </p>
   <h2 id="3_2_soft_api_compatibility">
    3.2. Soft API Compatibility
   </h2>
   <p>
    In addition to the managed APIs from
    <a href="#3_1_managed_api_compatibility">
     section 3.1</a>, Android also includes a significant
runtime-only &ldquo;soft&rdquo; API, in the form of such things as intents, permissions,
and similar aspects of Android applications that cannot be enforced at
application compile time.
   </p>
   <h3 id="3_2_1_permissions">
    3.2.1. Permissions
   </h3>
   <p>
    Device implementers MUST support and enforce all permission constants as
documented by the
    <a href="http://developer.android.com/reference/android/Manifest.permission.html">
     Permission reference page</a>.
Note that
    <a href="#9_security_model_compatibility">section 9</a>  lists additional
requirements related to the Android security model.
   </p>
   <h3 id="3_2_2_build_parameters">
    3.2.2. Build Parameters
   </h3>
   <p>
    The Android APIs include a number of constants on the
    <a href="http://developer.android.com/reference/android/os/Build.html">
     android.os.Build
class
    </a>
    that are
intended to describe the current device. To provide consistent, meaningful
values across device implementations, the table below includes additional
restrictions on the formats of these values to which device implementations
MUST conform.
   </p>
   <table>
    <tr>
     <th>
      Parameter
     </th>
     <th>
      Details
     </th>
    </tr>
    <tr>
     <td>
      VERSION.RELEASE
     </td>
     <td>
      The version of the currently-executing Android system, in human-readable
    format. This field MUST have one of the string values defined in
      <a href="http://source.android.com/compatibility/7.0/versions.html">7.0</a>.  
     </td>
    </tr>
    <tr>
     <td>
      VERSION.SDK
     </td>
     <td>
      The version of the currently-executing Android system, in a format
    accessible to third-party application code. For Android 7.0,
    this field MUST have the integer value 7.0_INT.
     </td>
    </tr>
    <tr>
     <td>
      VERSION.SDK_INT
     </td>
     <td>
      The version of the currently-executing Android system, in a format
    accessible to third-party application code. For Android 7.0,
    this field MUST have the integer value 7.0_INT.
     </td>
    </tr>
    <tr>
     <td>
      VERSION.INCREMENTAL
     </td>
     <td>
      A value chosen by the device implementer designating the specific build
    of the currently-executing Android system, in human-readable format. This
    value MUST NOT be reused for different builds made available to end users. A
    typical use of this field is to indicate which build number or
    source-control change identifier was used to generate the build. There are
    no requirements on the specific format of this field, except that it MUST
    NOT be null or the empty string ("").
     </td>
    </tr>
    <tr>
     <td>
      BOARD
     </td>
     <td>
      A value chosen by the device implementer identifying the specific
    internal hardware used by the device, in human-readable format. A possible
    use of this field is to indicate the specific revision of the board powering
    the device. The value of this field MUST be encodable as 7-bit ASCII and
    match the regular expression &ldquo;^[a-zA-Z0-9_-]+$&rdquo;.
     </td>
    </tr>
    <tr>
     <td>
      BRAND
     </td>
     <td>
      A value reflecting the brand name associated with the device as known to
    the end users. MUST be in human-readable format and SHOULD represent the
    manufacturer of the device or the company brand under which the device is
    marketed. The value of this field MUST be encodable as 7-bit ASCII and match
    the regular expression &ldquo;^[a-zA-Z0-9_-]+$&rdquo;.
     </td>
    </tr>
    <tr>
     <td>
      SUPPORTED_ABIS
     </td>
     <td>
      The name of the instruction set (CPU type + ABI convention) of native
    code. See
      <a href="#3_3_native_api_compatibility"> section 3.3. Native API Compatibility</a>.
     </td>
    </tr>
    <tr>
     <td>
      SUPPORTED_32_BIT_ABIS
     </td>
     <td>
      The name of the instruction set (CPU type + ABI convention) of native
    code. See <a href="#3_3_native_api_compatibility"> section 3.3. Native API Compatibility</a>.
     </td>
    </tr>
    <tr>
     <td>
      SUPPORTED_64_BIT_ABIS
     </td>
     <td>
      The name of the second instruction set (CPU type + ABI convention) of
    native code. See
      <a href="#3_3_native_api_compatibility"> section 3.3. Native API Compatibility</a>.
     </td>
    </tr>
    <tr>
     <td>
      CPU_ABI
     </td>
     <td>
      The name of the instruction set (CPU type + ABI convention) of native
    code. See
      <a href="#3_3_native_api_compatibility"> section 3.3. Native API Compatibility</a>.
     </td>
    </tr>
    <tr>
     <td>
      CPU_ABI2
     </td>
     <td>
      The name of the second instruction set (CPU type + ABI convention) of
    native code. See
      <a href="#3_3_native_api_compatibility"> section 3.3. Native API Compatibility</a>.
     </td>
    </tr>
    <tr>
     <td>
      DEVICE
     </td>
     <td>
      A value chosen by the device implementer containing the development name
    or code name identifying the configuration of the hardware features and
    industrial design of the device. The value of this field MUST be encodable
    as 7-bit ASCII and match the regular expression
    &ldquo;^[a-zA-Z0-9_-]+$&rdquo;. This device name MUST NOT change during the
    lifetime of the product.
     </td>
    </tr>
    <tr>
     <td>
      FINGERPRINT
     </td>
     <td>
      A string that uniquely identifies this build. It SHOULD be reasonably
    human-readable. It MUST follow this template:
      <p class="small">
       $(BRAND)/$(PRODUCT)/
       <br/>
       &nbsp;&nbsp;&nbsp;&nbsp;$(DEVICE):$(VERSION.RELEASE)/$(ID)/$(VERSION.INCREMENTAL):$(TYPE)/$(TAGS)
      </p>
      <p>
       For example:
      </p>
      <p class="small">
       acme/myproduct/
       <br/>
       &nbsp;&nbsp;&nbsp;&nbsp;mydevice:7.0/LMYXX/3359:userdebug/test-keys
      </p>
      <p>
       The fingerprint MUST NOT include whitespace characters. If other fields
    included in the template above have whitespace characters, they MUST be
    replaced in the build fingerprint with another character, such as the
    underscore ("_") character. The value of this field MUST be encodable as
    7-bit ASCII.
      </p>
     </td>
    </tr>
    <tr>
     <td>
      HARDWARE
     </td>
     <td>
      The name of the hardware (from the kernel command line or /proc). It
    SHOULD be reasonably human-readable. The value of this field MUST be
    encodable as 7-bit ASCII and match the regular expression
    &ldquo;^[a-zA-Z0-9_-]+$&rdquo;.
     </td>
    </tr>
    <tr>
     <td>
      HOST
     </td>
     <td>
      A string that uniquely identifies the host the build was built on, in
    human-readable format. There are no requirements on the specific format of
    this field, except that it MUST NOT be null or the empty string ("").
     </td>
    </tr>
    <tr>
     <td>
      ID
     </td>
     <td>
      An identifier chosen by the device implementer to refer to a specific
    release, in human-readable format. This field can be the same as
    android.os.Build.VERSION.INCREMENTAL, but SHOULD be a value sufficiently
    meaningful for end users to distinguish between software builds. The value
    of this field MUST be encodable as 7-bit ASCII and match the regular
    expression &ldquo;^[a-zA-Z0-9._-]+$&rdquo;.
     </td>
    </tr>
    <tr>
     <td>
      MANUFACTURER
     </td>
     <td>
      The trade name of the Original Equipment Manufacturer (OEM) of the
    product. There are no requirements on the specific format of this field,
    except that it MUST NOT be null or the empty string ("").
     </td>
    </tr>
    <tr>
     <td>
      MODEL
     </td>
     <td>
      A value chosen by the device implementer containing the name of the
    device as known to the end user. This SHOULD be the same name under which
    the device is marketed and sold to end users. There are no requirements on
    the specific format of this field, except that it MUST NOT be null or the
    empty string ("").
     </td>
    </tr>
    <tr>
     <td>
      PRODUCT
     </td>
     <td>
      A value chosen by the device implementer containing the development name
    or code name of the specific product (SKU) that MUST be unique within the
    same brand. MUST be human-readable, but is not necessarily intended for view
    by end users. The value of this field MUST be encodable as 7-bit ASCII and
    match the regular expression &ldquo;^[a-zA-Z0-9_-]+$&rdquo;. This product
    name MUST NOT change during the lifetime of the product.
     </td>
    </tr>
    <tr>
     <td>
      SERIAL
     </td>
     <td>
      A hardware serial number, which MUST be available and unique across
    devices with the same MODEL and MANUFACTURER. The value of this field MUST
    be encodable as 7-bit ASCII and match the regular expression
    &ldquo;^([a-zA-Z0-9]{6,20})$&rdquo;.
     </td>
    </tr>
    <tr>
     <td>
      TAGS
     </td>
     <td>
      A comma-separated list of tags chosen by the device implementer that
    further distinguishes the build. This field MUST have one of the values
    corresponding to the three typical Android platform signing configurations:
    release-keys, dev-keys, test-keys.
     </td>
    </tr>
    <tr>
     <td>
      TIME
     </td>
     <td>
      A value representing the timestamp of when the build occurred.
     </td>
    </tr>
    <tr>
     <td>
      TYPE
     </td>
     <td>
      A value chosen by the device implementer specifying the runtime
    configuration of the build. This field MUST have one of the values
    corresponding to the three typical Android runtime configurations: user,
    userdebug, or eng.
     </td>
    </tr>
    <tr>
     <td>
      USER
     </td>
     <td>
      A name or user ID of the user (or automated user) that generated the
    build. There are no requirements on the specific format of this field,
    except that it MUST NOT be null or the empty string ("").
     </td>
    </tr>
    <tr>
     <td>
      SECURITY_PATCH
     </td>
     <td>
      A value indicating the security patch level of a build. It MUST signify
    that the build includes all security patches issued up through the
    designated Android Public Security Bulletin. It MUST be in the format
    [YYYY-MM-DD], matching one of the Android Security Patch Level strings of
    the
      <a href="source.android.com/security/bulletin">
       Public Security
    Bulletins
      </a>
      , for example "2015-11-01".
     </td>
    </tr>
    <tr>
     <td>
      BASE_OS
     </td>
     <td>
      A value representing the FINGERPRINT parameter of the build that is
    otherwise identical to this build except for the patches provided in the
    Android Public Security Bulletin. It MUST report the correct value and if
    such a build does not exist, report an empty string ("").
     </td>
    </tr>
   </table>
   <h3 id="3_2_3_intent_compatibility">
    3.2.3. Intent Compatibility
   </h3>
   <h4 id="3_2_3_1_core_application_intents">
    3.2.3.1. Core Application Intents
   </h4>
   <p>
    Android intents allow application components to request functionality from
other Android components. The Android upstream project includes a list of
applications considered core Android applications, which implements several
intent patterns to perform common actions. The core Android applications are:
   </p>
   <ul>
    <li>
     Desk Clock
    </li>
    <li>
     Browser
    </li>
    <li>
     Calendar
    </li>
    <li>
     Contacts
    </li>
    <li>
     Gallery
    </li>
    <li>
     GlobalSearch
    </li>
    <li>
     Launcher
    </li>
    <li>
     Music
    </li>
    <li>
     Settings
    </li>
   </ul>
   <p>
    Device implementations MUST include the core Android applications as
appropriate or a component implementing the same intent patterns defined by
all the Activity or Service components of these core Android applications
exposed to other applications, implicitly or explicitly, through the
    <code>
     android:exported
    </code>
    attribute.
   </p>
   <h4 id="3_2_3_2_intent_resolution">
    3.2.3.2. Intent Resolution
   </h4>
   <p>
    As Android is an extensible platform, device implementations MUST allow each
intent pattern referenced in
    <a href="#3_2_3_1_core_application_intents">section 3.2.3.1</a>
    to be overridden by third-party
applications. The upstream Android open source implementation allows this by
default; device implementers MUST NOT attach special privileges to system
applications' use of these intent patterns, or prevent third-party applications
from binding to and assuming control of these patterns. This prohibition
specifically includes but is not limited to disabling the &ldquo;Chooser&rdquo; user
interface that allows the user to select between multiple applications that all
handle the same intent pattern.
   </p>
   <p>
    Device implementations MUST provide a user interface for users to modify the
default activity for intents.
   </p>
   <p>
    However, device implementations MAY provide default activities for specific URI
patterns (e.g. http://play.google.com) when the default activity provides a
more specific attribute for the data URI. For example, an intent filter pattern
specifying the data URI &ldquo;http://www.android.com&rdquo; is more specific than the
browser's core intent pattern for &ldquo;http://&rdquo;.
   </p>
   <p>
    Android also includes a mechanism for third-party apps to declare an
authoritative default
    <a href="https://developer.android.com/training/app-links">app linking behavior</a>
    for certain types
of web URI intents. When such authoritative declarations are defined in an
app's intent filter patterns, device implementations:
   </p>
   <ul>
    <li>
     MUST attempt to validate any intent filters by performing the validation
steps defined in the
     <a href="https://developers.google.com/digital-asset-links">Digital Asset Links specification</a> as
implemented by the Package Manager in the upstream Android Open Source
Project.
    </li>
    <li>
     MUST attempt validation of the intent filters during the installation of
the application and set all successfully validated UIR intent filters as
default app handlers for their UIRs.
    </li>
    <li>
     MAY set specific URI intent filters as default app handlers for their URIs,
if they are successfully verified but other candidate URI filters fail
verification. If a device implementation does this, it MUST provide the
user appropriate per-URI pattern overrides in the settings menu.
    </li>
    <li>
     MUST provide the user with per-app App Links controls in Settings as
follows:
     <ul>
      <li>
       The user MUST be able to override holistically the default app links
behavior for an app to be: always open, always ask, or never open,
which must apply to all candidate URI intent filters equally.
      </li>
      <li>
       The user MUST be able to see a list of the candidate URI intent filters.
      </li>
      <li>
       The device implementation MAY provide the user with the ability to
override specific candidate URI intent filters that were successfully
verified, on a per-intent filter basis.
      </li>
      <li>
       The device implementation MUST provide users with the ability to view
and override specific candidate URI intent filters if the device
implementation lets some candidate URI intent filters succeed
verification while some others can fail.
      </li>
     </ul>
    </li>
   </ul>
   <h4 id="3_2_3_3_intent_namespaces">
    3.2.3.3. Intent Namespaces
   </h4>
   <p>
    Device implementations MUST NOT include any Android component that honors any
new intent or broadcast intent patterns using an ACTION, CATEGORY, or other key
string in the android.
    <em>
     or com.android.
    </em>
    namespace. Device implementers MUST
NOT include any Android components that honor any new intent or broadcast
intent patterns using an ACTION, CATEGORY, or other key string in a package
space belonging to another organization. Device implementers MUST NOT alter or
extend any of the intent patterns used by the core apps listed in
    <a href="#3_2_3_1_core_application_intents">section 3.2.3.1</a>. Device implementations MAY include
intent patterns using namespaces clearly and obviously associated with their
own organization. This prohibition is analogous to that specified for Java
language classes in
    <a href="#3_6_api_namespaces">section 3.6</a>.  
   </p>
   <h4 id="3_2_3_4_broadcast_intents">
    3.2.3.4. Broadcast Intents
   </h4>
   <p>
    Third-party applications rely on the platform to broadcast certain intents to
notify them of changes in the hardware or software environment.
Android-compatible devices MUST broadcast the public broadcast intents in
response to appropriate system events. Broadcast intents are described in the
SDK documentation.
   </p>
   <h4 id="3_2_3_5_default_app_settings">
    3.2.3.5. Default App Settings
   </h4>
   <p>
    Android includes settings that provide users an easy way to select their
default applications, for example for Home screen or SMS. Where it makes sense,
device implementations MUST provide a similar settings menu and be compatible
with the intent filter pattern and API methods described in the SDK
documentation as below.
   </p>
   <p>
    Device implementations:
   </p>
   <ul>
    <li>
     MUST honor the
     <a href="http://developer.android.com/reference/android/provider/Settings.html#ACTION_HOME_SETTINGS">android.settings.HOME_SETTINGS</a>  intent to show a default app settings menu for Home Screen, if the device
implementation reports android.software.home_screen.
    </li>
    <li>
     MUST provide a settings menu that will call the
     <a href="http://developer.android.com/reference/android/provider/Telephony.Sms.Intents.html">android.provider.Telephony.ACTION_CHANGE_DEFAULT</a>  intent to show a dialog to change the default SMS application, if the
device implementation reports android.hardware.telephony.
    </li>
    <li>
     MUST honor the
     <a href="http://developer.android.com/reference/android/provider/Settings.html#ACTION_NFC_PAYMENT_SETTINGS">android.settings.NFC_PAYMENT_SETTINGS</a>  intent to show a default app settings menu for Tap and Pay, if the device
implementation reports android.hardware.nfc.hce.
    </li>
    <li>
     MUST honor the
     <a href="https://developer.android.com/reference/android/telecom/TelecomManager.html#ACTION_CHANGE_DEFAULT_DIALER">
      <code>android.telecom.action.CHANGE_DEFAULT_DIALER</code></a>
     intent to show a dialog to allow the user to change the default Phone application, if the
device implementation reports
     <code>
      android.hardware.telephony
     </code>.
    </li>
   </ul>
   <h2 id="3_3_native_api_compatibility">
    3.3. Native API Compatibility
   </h2>
   <p>
    Native code compatibility is challenging. For this reason, device implementers
are
    <strong>
     STRONGLY RECOMMENDED
    </strong>
    to use the implementations of the libraries listed
below from the upstream Android Open Source Project.
   </p>
   <h3 id="3_3_1_application_binary_interfaces">
    3.3.1. Application Binary Interfaces
   </h3>
   <p>
    Managed Dalvik bytecode can call into native code provided in the application
.apk file as an ELF .so file compiled for the appropriate device hardware
architecture. As native code is highly dependent on the underlying processor
technology, Android defines a number of Application Binary Interfaces (ABIs) in
the Android NDK. Device implementations MUST be compatible with one or more
defined ABIs, and MUST implement compatibility with the Android NDK, as below.
   </p>
   <p>
    If a device implementation includes support for an Android ABI, it:
   </p>
   <ul>
    <li>
     MUST include support for code running in the managed environment to call
    into native code, using the standard Java Native Interface (JNI) semantics.
    </li>
    <li>
     MUST be source-compatible (i.e. header compatible) and binary-compatible
    (for the ABI) with each required library in the list below.
    </li>
    <li>
     MUST support the equivalent 32-bit ABI if any 64-bit ABI is supported.
    </li>
    <li>
     MUST accurately report the native Application Binary Interface (ABI)
    supported by the device, via the android.os.Build.SUPPORTED_ABIS,
    android.os.Build.SUPPORTED_32_BIT_ABIS, and
    android.os.Build.SUPPORTED_64_BIT_ABIS parameters, each a comma separated
    list of ABIs ordered from the most to the least preferred one.
    </li>
    <li>
     MUST report, via the above parameters, only those ABIs documented and
    described in the latest version of the
     <a href="https://developer.android.com/ndk/guides/abis.html">Android NDK ABI Management documentation</a>,  and MUST
    include support for the
     <a href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0388f/Beijfcja.html">Advanced SIMD</a> ( a.k.a. NEON) extension.
    </li>
    <li>
     SHOULD be built using the source code and header files available in the
    upstream Android Open Source Project
    </li>
   </ul>
   <p>
    Note that future releases of the Android NDK may introduce support for
additional ABIs. If a device implementation is not compatible with an existing
predefined ABI, it MUST NOT report support for any ABIs at all.
   </p>
   <p>
    The following native code APIs MUST be available to apps that include native code:
   </p>
   <ul>
    <li>
     libandroid.so (native Android activity support)
    </li>
    <li>
     libc (C library)
    </li>
    <li>
     libcamera2ndk.so
    </li>
    <li>
     libdl (dynamic linker)
    </li>
    <li>
     libEGL.so (native OpenGL surface management)
    </li>
    <li>
     libGLESv1_CM.so (OpenGL ES 1.x)
    </li>
    <li>
     libGLESv2.so (OpenGL ES 2.0)
    </li>
    <li>
     libGLESv3.so (OpenGL ES 3.x)
    </li>
    <li>
     libicui18n.so
    </li>
    <li>
     libicuuc.so
    </li>
    <li>
     libjnigraphics.so
    </li>
    <li>
     liblog (Android logging)
    </li>
    <li>
     libmediandk.so (native media APIs support)
    </li>
    <li>
     libm (math library)
    </li>
    <li>
     libOpenMAXAL.so (OpenMAX AL 1.0.1 support)
    </li>
    <li>
     libOpenSLES.so (OpenSL ES 1.0.1 audio support)
    </li>
    <li>
     libRS.so
    </li>
    <li>
     libstdc++ (Minimal support for C++)
    </li>
    <li>
     libvukan.so (Vulkan)
    </li>
    <li>
     libz (Zlib compression)
    </li>
    <li>
     JNI interface
    </li>
    <li>
     Support for OpenGL, as described below
    </li>
   </ul>
   <p>
    For the native libraries listed above, the device implementation MUST NOT add
or remove the public functions.
   </p>
   <p>
    Native libraries not listed above but implemented and provided in AOSP as system
libraries are reserved and MUST NOT be exposed to third-party apps targeting API
level 24 or higher.
   </p>
   <p>
    Device implementations MAY add non-AOSP libraries and expose them directly as
an API to third-party apps but the additional libraries SHOULD be in
    <code>
     /vendor/lib
    </code>
    or
    <code>
     /vendor/lib64
    </code>
    and MUST be listed in
    <code>
     /vendor/etc/public.libraries.txt
    </code>.
   </p>
   <p>
    Note that device implementations MUST include libGLESv3.so and in turn, MUST export
all the OpenGL ES 3.1 and
    <a href="http://developer.android.com/guide/topics/graphics/opengl.html#aep">Android Extension Pack</a> function symbols as defined in the NDK release android-24. Although all the
symbols must be present, only the corresponding functions for OpenGL ES versions
and extensions actually supported by the device must be fully implemented.
   </p>
   <h4 id="3_3_1_1_graphic_libraries">
    3.3.1.1. Graphic Libraries
   </h4>
   <p>
    <a href="https://www.khronos.org/registry/vulkan/specs/1.0-wsi_extensions/xhtml/vkspec.html">Vulkan</a> is a low-overhead, cross-platform API for high-performance 3D graphics. Device
implementations, even if not including support of the Vulkan APIs, MUST satisfy
the following requirements:
   </p>
   <ul>
    <li>
     It MUST always provide a native library named
     <code>
      libvulkan.so
     </code>
     which exports
    function symbols for the core Vulkan 1.0 API as well as the
     <code>
      VK_KHR_surface
     </code>,
     <code>
      VK_KHR_android_surface
     </code>, and
     <code>
      VK_KHR_swapchain
     </code>
     extensions.
    </li>
   </ul>
   <p>
    Device implementations, if including support of the Vulkan APIs:
   </p>
   <ul>
    <li>
     MUST report, one or more
     <code>
      VkPhysicalDevices
     </code>
     through the
     <code>
      vkEnumeratePhysicalDevices
     </code>
     call.
    </li>
    <li>
     Each enumerated
     <code>
      VkPhysicalDevices
     </code>
     MUST fully implement the Vulkan 1.0 API.
    </li>
    <li>
     MUST report the correct
     <a href="https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_VULKAN_HARDWARE_LEVEL">
      <code>PackageManager#FEATURE_VULKAN_HARDWARE_LEVEL</code></a> and
     <a href="https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_VULKAN_HARDWARE_VERSION">
      <code>PackageManager#FEATURE_VULKAN_HARDWARE_VERSION</code></a> feature flags.
    </li>
    <li>
     MUST enumerate layers, contained in native libraries named
     <code>
      libVkLayer*.so
     </code>
     in the application package&rsquo;s native library directory, through the
     <code>
      vkEnumerateInstanceLayerProperties
     </code>
     and
     <code>
      vkEnumerateDeviceLayerProperties
     </code>
     functions in
     <code>
      libvulkan.so
     </code>
    </li>
    <li>
     MUST NOT enumerate layers provided by libraries outside of the application
    package, or provide other ways of tracing or intercepting the Vulkan API,
    unless the application has the
     <code>
      android:debuggable=&rdquo;true&rdquo;
     </code>
     attribute.
    </li>
   </ul>
   <p>
    Device implementations, if not including support of the Vulkan APIs:
   </p>
   <ul>
    <li>
     MUST report 0
     <code>
      VkPhysicalDevices
     </code>
     through the
     <code>
      vkEnumeratePhysicalDevices
     </code>
     call.
    </li>
    <li>
     MUST NOT delare any of the Vulkan feature flags
     <a href="https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_VULKAN_HARDWARE_LEVEL">
      <code> PackageManager#FEATURE_VULKAN_HARDWARE_LEVEL</code></a> and
     <a href="https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_VULKAN_HARDWARE_VERSION">
      <code> PackageManager#FEATURE_VULKAN_HARDWARE_VERSION</code></a>.
    </li>
   </ul>
   <h3 id="3_3_2_32-bit_arm_native_code_compatibility">
    3.3.2. 32-bit ARM Native Code Compatibility
   </h3>
   <p>
    The ARMv8 architecture deprecates several CPU operations, including some
operations used in existing native code. On 64-bit ARM devices, the following
deprecated operations MUST remain available to 32-bit native ARM code, either
through native CPU support or through software emulation:
   </p>
   <ul>
    <li>
     SWP and SWPB instructions
    </li>
    <li>
     SETEND instruction
    </li>
    <li>
     CP15ISB, CP15DSB, and CP15DMB barrier operations
    </li>
   </ul>
   <p>
    Legacy versions of the Android NDK used /proc/cpuinfo to discover CPU features
from 32-bit ARM native code. For compatibility with applications built using
this NDK, devices MUST include the following lines in /proc/cpuinfo when it is
read by 32-bit ARM applications:
   </p>
   <ul>
    <li>
     "Features: ", followed by a list of any optional ARMv7 CPU features supported by the device.
    </li>
    <li>
     "CPU architecture: ", followed by an integer describing the device's highest
    supported ARM architecture (e.g., "8" for ARMv8 devices).
    </li>
   </ul>
   <p>
    These requirements only apply when /proc/cpuinfo is read by 32-bit ARM
applications. Devices SHOULD not alter /proc/cpuinfo when read by 64-bit ARM or
non-ARM applications.
   </p>
   <h2 id="3_4_web_compatibility">
    3.4. Web Compatibility
   </h2>
   <h3 id="3_4_1_webview_compatibility">
    3.4.1. WebView Compatibility
   </h3>
   <div class="note">
    Android Watch devices MAY, but all other device implementations MUST provide a
complete implementation of the android.webkit.Webview API.
   </div>
   <p>
    The platform feature android.software.webview MUST be reported on any device
that provides a complete implementation of the android.webkit.WebView API, and
MUST NOT be reported on devices without a complete implementation of the API.
The Android Open Source implementation uses code from the Chromium Project to
implement the
    <a href="http://developer.android.com/reference/android/webkit/WebView.html">android.webkit.WebView</a>. 
Because it is not feasible to develop a comprehensive test suite for a web
rendering system, device implementers MUST use the specific upstream build of
Chromium in the WebView implementation. Specifically:
   </p>
   <ul>
    <li>
     Device android.webkit.WebView implementations MUST be based on the
     <a href="http://www.chromium.org/">Chromium</a> build from the upstream Android Open
    Source Project for Android 7.0. This build includes a specific
    set of functionality and security fixes for the WebView.
    </li>
    <li>
     <p>
      The user agent string reported by the WebView MUST be in this format:
     </p>
     <p>
      Mozilla/5.0 (Linux; Android $(VERSION); $(MODEL) Build/$(BUILD); wv)
AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 $(CHROMIUM_VER) Mobile
Safari/537.36
     </p>
     <ul>
      <li>
       The value of the $(VERSION) string MUST be the same as the value for android.os.Build.VERSION.RELEASE.
      </li>
      <li>
       The value of the $(MODEL) string MUST be the same as the value for android.os.Build.MODEL.
      </li>
      <li>
       The value of the $(BUILD) string MUST be the same as the value for android.os.Build.ID.
      </li>
      <li>
       The value of the $(CHROMIUM_VER) string MUST be the version of Chromium in the upstream Android Open Source Project.
      </li>
      <li>
       Device implementations MAY omit Mobile in the user agent string.
      </li>
     </ul>
    </li>
   </ul>
   <p>
    The WebView component SHOULD include support for as many HTML5 features as
possible and if it supports the feature SHOULD conform to the
    <a href="http://html.spec.whatwg.org/multipage/">HTML5 specification</a>. 
   </p>
   <h3 id="3_4_2_browser_compatibility">
    3.4.2. Browser Compatibility
   </h3>
   <div class="note">
    Android Television, Watch, and Android Automotive implementations MAY omit a
browser application, but MUST support the public intent patterns as described in
    <a href="#3_2_3_1_core_application_intents">section 3.2.3.1</a>.  All other types of device
implementations MUST include a standalone Browser application for general user
web browsing.
   </div>
   <p>
    The standalone Browser MAY be based on a browser technology other than WebKit.
However, even if an alternate Browser application is used, the
android.webkit.WebView component provided to third-party applications MUST be
based on WebKit, as described in
    <a href="#3_4_1_webview_compatibility">section 3.4.1</a>. 
   </p>
   <p>
    Implementations MAY ship a custom user agent string in the standalone Browser application.
   </p>
   <p>
    The standalone Browser application (whether based on the upstream WebKit Browser
application or a third-party replacement) SHOULD include support for as much of
    <a href="http://html.spec.whatwg.org/multipage/">HTML5</a> as possible. Minimally, device
implementations MUST support each of these APIs associated with HTML5:
   </p>
   <ul>
    <li>
     <a href="http://www.w3.org/html/wg/drafts/html/master/browsers.html#offline">application cache/offline operation</a> </li>
    <li>
     <a href="http://www.w3.org/html/wg/drafts/html/master/semantics.html#video">&lt;video&gt; tag</a> </li>
    <li>
     <a href="http://www.w3.org/TR/geolocation-API/">geolocation</a> </li>
   </ul>
   <p>
    Additionally, device implementations MUST support the HTML5/W3C
    <a href="http://www.w3.org/TR/webstorage/">webstorage API</a> and SHOULD support the HTML5/W3C
    <a href="http://www.w3.org/TR/IndexedDB/">IndexedDB API</a>.  Note that as the web
development standards bodies are transitioning to favor IndexedDB over
webstorage, IndexedDB is expected to become a required component in a future
version of Android.
   </p>
   <h2 id="3_5_api_behavioral_compatibility">
    3.5. API Behavioral Compatibility
   </h2>
   <p>
    The behaviors of each of the API types (managed, soft, native, and web) must be
consistent with the preferred implementation of the upstream
    <a href="http://source.android.com/">Android Open Source Project</a>.  Some specific areas of
compatibility are:
   </p>
   <ul>
    <li>
     Devices MUST NOT change the behavior or semantics of a standard intent.
    </li>
    <li>
     Devices MUST NOT alter the lifecycle or lifecycle semantics of a particular
    type of system component (such as Service, Activity, ContentProvider, etc.).
    </li>
    <li>
     Devices MUST NOT change the semantics of a standard permission.
    </li>
   </ul>
   <p>
    The above list is not comprehensive. The Compatibility Test Suite (CTS) tests
significant portions of the platform for behavioral compatibility, but not all.
It is the responsibility of the implementer to ensure behavioral compatibility
with the Android Open Source Project. For this reason, device implementers
SHOULD use the source code available via the Android Open Source Project where
possible, rather than re-implement significant parts of the system.
   </p>
   <h2 id="3_6_api_namespaces">
    3.6. API Namespaces
   </h2>
   <p>
    Android follows the package and class namespace conventions defined by the Java
programming language. To ensure compatibility with third-party applications,
device implementers MUST NOT make any prohibited modifications (see below) to
these package namespaces:
   </p>
   <ul>
    <li>
     java.*
    </li>
    <li>
     javax.*
    </li>
    <li>
     sun.*
    </li>
    <li>
     android.*
    </li>
    <li>
     com.android.*
    </li>
   </ul>
   <p>
    <strong>
     Prohibited modifications include
    </strong>
    :
   </p>
   <ul>
    <li>
     Device implementations MUST NOT modify the publicly exposed APIs on the
    Android platform by changing any method or class signatures, or by removing
    classes or class fields.
    </li>
    <li>
     Device implementers MAY modify the underlying implementation of the APIs,
    but such modifications MUST NOT impact the stated behavior and Java-language
    signature of any publicly exposed APIs.
    </li>
    <li>
     Device implementers MUST NOT add any publicly exposed elements (such as
    classes or interfaces, or fields or methods to existing classes or
    interfaces) to the APIs above.
    </li>
   </ul>
   <p>
    A &ldquo;publicly exposed element&rdquo; is any construct that is not decorated with
the&ldquo;@hide&rdquo; marker as used in the upstream Android source code. In other words,
device implementers MUST NOT expose new APIs or alter existing APIs in the
namespaces noted above. Device implementers MAY make internal-only
modifications, but those modifications MUST NOT be advertised or otherwise
exposed to developers.
   </p>
   <p>
    Device implementers MAY add custom APIs, but any such APIs MUST NOT be in a
namespace owned by or referring to another organization. For instance, device
implementers MUST NOT add APIs to the com.google.* or similar namespace: only
Google may do so. Similarly, Google MUST NOT add APIs to other companies'
namespaces. Additionally, if a device implementation includes custom APIs
outside the standard Android namespace, those APIs MUST be packaged in an
Android shared library so that only apps that explicitly use them (via the
&lt;uses-library&gt; mechanism) are affected by the increased memory usage of such
APIs.
   </p>
   <p>
    If a device implementer proposes to improve one of the package namespaces above
(such as by adding useful new functionality to an existing API, or adding a new
API), the implementer SHOULD visit
    <a href="http://source.android.com/">source.android.com</a> and begin the process for
contributing changes and code, according to the information on that site.
   </p>
   <p>
    Note that the restrictions above correspond to standard conventions for naming
APIs in the Java programming language; this section simply aims to reinforce
those conventions and make them binding through inclusion in this Compatibility
Definition.
   </p>
   <h2 id="3_7_runtime_compatibility">
    3.7. Runtime Compatibility
   </h2>
   <p>
    Device implementations MUST support the full Dalvik Executable (DEX) format and
    <a href="https://android.googlesource.com/platform/dalvik/">Dalvik bytecode specification and semantics</a>. 
Device implementers SHOULD use ART, the reference upstream implementation of the Dalvik
Executable Format, and the reference implementation&rsquo;s package management system.
   </p>
   <p>
    Device implementations MUST configure Dalvik runtimes to allocate memory in
accordance with the upstream Android platform, and as specified by the following
table. (See
    <a href="#7_1_1_screen_configuration">section 7.1.1</a> for screen size and
screen density definitions.) Note that memory values specified below are
considered minimum values and device implementations MAY allocate more memory
per application.
   </p>
   <table>
    <tr>
     <th>
      Screen Layout
     </th>
     <th>
      Screen Density
     </th>
     <th>
      Minimum Application Memory
     </th>
    </tr>
    <tr>
     <td rowspan="12">
      Android Watch
     </td>
     <td>
      120 dpi (ldpi)
     </td>
     <td rowspan="3">
      32MB
     </td>
    </tr>
    <tr>
     <td>
      160 dpi (mdpi)
     </td>
    </tr>
    <tr>
     <td>
      213 dpi (tvdpi)
     </td>
    </tr>
    <tr>
     <td>
      240 dpi (hdpi)
     </td>
     <td rowspan="2">
      36MB
     </td>
    </tr>
    <tr>
     <td>
      280 dpi (280dpi)
     </td>
    </tr>
    <tr>
     <td>
      320 dpi (xhdpi)
     </td>
     <td rowspan="2">
      48MB
     </td>
    </tr>
    <tr>
     <td>
      360 dpi (360dpi)
     </td>
    </tr>
    <tr>
     <td>
      400 dpi (400dpi)
     </td>
     <td>
      56MB
     </td>
    </tr>
    <tr>
     <td>
      420 dpi (420dpi)
     </td>
     <td>
      64MB
     </td>
    </tr>
    <tr>
     <td>
      480 dpi (xxhdpi)
     </td>
     <td>
      88MB
     </td>
    </tr>
    <tr>
     <td>
      560 dpi (560dpi)
     </td>
     <td>
      112MB
     </td>
    </tr>
    <tr>
     <td>
      640 dpi (xxxhdpi)
     </td>
     <td>
      154MB
     </td>
    </tr>
    <tr>
     <td rowspan="12">
      small/normal
     </td>
     <td>
      120 dpi (ldpi)
     </td>
     <td rowspan="2">
      32MB
     </td>
    </tr>
    <tr>
     <td>
      160 dpi (mdpi)
     </td>
    </tr>
    <tr>
     <td>
      213 dpi (tvdpi)
     </td>
     <td rowspan="3">
      48MB
     </td>
    </tr>
    <tr>
     <td>
      240 dpi (hdpi)
     </td>
    </tr>
    <tr>
     <td>
      280 dpi (280dpi)
     </td>
    </tr>
    <tr>
     <td>
      320 dpi (xhdpi)
     </td>
     <td rowspan="2">
      80MB
     </td>
    </tr>
    <tr>
     <td>
      360 dpi (360dpi)
     </td>
    </tr>
    <tr>
     <td>
      400 dpi (400dpi)
     </td>
     <td>
      96MB
     </td>
    </tr>
    <tr>
     <td>
      420 dpi (420dpi)
     </td>
     <td>
      112MB
     </td>
    </tr>
    <tr>
     <td>
      480 dpi (xxhdpi)
     </td>
     <td>
      128MB
     </td>
    </tr>
    <tr>
     <td>
      560 dpi (560dpi)
     </td>
     <td>
      192MB
     </td>
    </tr>
    <tr>
     <td>
      640 dpi (xxxhdpi)
     </td>
     <td>
      256MB
     </td>
    </tr>
    <tr>
     <td rowspan="12">
      large
     </td>
     <td>
      120 dpi (ldpi)
     </td>
     <td>
      32MB
     </td>
    </tr>
    <tr>
     <td>
      160 dpi (mdpi)
     </td>
     <td>
      48MB
     </td>
    </tr>
    <tr>
     <td>
      213 dpi (tvdpi)
     </td>
     <td rowspan="2">
      80MB
     </td>
    </tr>
    <tr>
     <td>
      240 dpi (hdpi)
     </td>
    </tr>
    <tr>
     <td>
      280 dpi (280dpi)
     </td>
     <td>
      96MB
     </td>
    </tr>
    <tr>
     <td>
      320 dpi (xhdpi)
     </td>
     <td>
      128MB
     </td>
    </tr>
    <tr>
     <td>
      360 dpi (360dpi)
     </td>
     <td>
      160MB
     </td>
    </tr>
    <tr>
     <td>
      400 dpi (400dpi)
     </td>
     <td>
      192MB
     </td>
    </tr>
    <tr>
     <td>
      420 dpi (420dpi)
     </td>
     <td>
      228MB
     </td>
    </tr>
    <tr>
     <td>
      480 dpi (xxhdpi)
     </td>
     <td>
      256MB
     </td>
    </tr>
    <tr>
     <td>
      560 dpi (560dpi)
     </td>
     <td>
      384MB
     </td>
    </tr>
    <tr>
     <td>
      640 dpi (xxxhdpi)
     </td>
     <td>
      512MB
     </td>
    </tr>
    <tr>
     <td rowspan="12">
      xlarge
     </td>
     <td>
      120 dpi (ldpi)
     </td>
     <td>
      48MB
     </td>
    </tr>
    <tr>
     <td>
      160 dpi (mdpi)
     </td>
     <td>
      80MB
     </td>
    </tr>
    <tr>
     <td>
      213 dpi (tvdpi)
     </td>
     <td rowspan="2">
      96MB
     </td>
    </tr>
    <tr>
     <td>
      240 dpi (hdpi)
     </td>
    </tr>
    <tr>
     <td>
      280 dpi (280dpi)
     </td>
     <td>
      144MB
     </td>
    </tr>
    <tr>
     <td>
      320 dpi (xhdpi)
     </td>
     <td>
      192MB
     </td>
    </tr>
    <tr>
     <td>
      360 dpi (360dpi)
     </td>
     <td>
      240MB
     </td>
    </tr>
    <tr>
     <td>
      400 dpi (400dpi)
     </td>
     <td>
      288MB
     </td>
    </tr>
    <tr>
     <td>
      420 dpi (420dpi)
     </td>
     <td>
      336MB
     </td>
    </tr>
    <tr>
     <td>
      480 dpi (xxhdpi)
     </td>
     <td>
      384MB
     </td>
    </tr>
    <tr>
     <td>
      560 dpi (560dpi)
     </td>
     <td>
      576MB
     </td>
    </tr>
    <tr>
     <td>
      640 dpi (xxxhdpi)
     </td>
     <td>
      768MB
     </td>
    </tr>
   </table>
   <h2 id="3_8_user_interface_compatibility">
    3.8. User Interface Compatibility
   </h2>
   <h3 id="3_8_1_launcher_(home_screen)">
    3.8.1. Launcher (Home Screen)
   </h3>
   <p>
    Android includes a launcher application (home screen) and support for
third-party applications to replace the device launcher (home screen). Device
implementations that allow third-party applications to replace the device home
screen MUST declare the platform feature android.software.home_screen.
   </p>
   <h3 id="3_8_2_widgets">
    3.8.2. Widgets
   </h3>
   <div class="note">
    Widgets are optional for all Android device implementations, but SHOULD be
supported on Android Handheld devices.
   </div>
   <p>
    Android defines a component type and corresponding API and lifecycle that allows
applications to expose an
    <a href="http://developer.android.com/guide/practices/ui_guidelines/widget_design.html">&ldquo;AppWidget&rdquo;</a> to the end user, a feature that is STRONGLY RECOMMENDED to be supported on
Handheld Device implementations. Device implementations that support embedding
widgets on the home screen MUST meet the following requirements and declare
support for platform feature android.software.app_widgets.
   </p>
   <ul>
    <li>
     Device launchers MUST include built-in support for AppWidgets and expose
    user interface affordances to add, configure, view, and remove AppWidgets
    directly within the Launcher.
    </li>
    <li>
     Device implementations MUST be capable of rendering widgets that are 4 x 4
    in the standard grid size. See the
     <a href="http://developer.android.com/guide/practices/ui_guidelines/widget_design.html">App Widget Design Guidelines</a>
     in the Android SDK documentation for details.
    </li>
    <li>
     Device implementations that include support for lock screen MAY support
    application widgets on the lock screen.
    </li>
    <li>
     SHOULD trigger the fast-switch action between the two most recently used apps,
    when the recents function key is tapped twice.
    </li>
    <li>
     SHOULD trigger the split-screen multiwindow-mode, if supported, when the recents
    functions key is long pressed.
    </li>
   </ul>
   <h3 id="3_8_3_notifications">
    3.8.3. Notifications
   </h3>
   <p>
    Android includes APIs that allow developers to
    <a href="http://developer.android.com/guide/topics/ui/notifiers/notifications.html">notify users of notable events</a> using hardware and software features of the device.
   </p>
   <p>
    Some APIs allow applications to perform notifications or attract attention using
hardware&mdash;specifically sound, vibration, and light. Device implementations MUST
support notifications that use hardware features, as described in the SDK
documentation, and to the extent possible with the device implementation
hardware. For instance, if a device implementation includes a vibrator, it MUST
correctly implement the vibration APIs. If a device implementation lacks
hardware, the corresponding APIs MUST be implemented as no-ops. This behavior is
further detailed in
    <a href="#7_hardware_compatibility">section 7</a>. 
   </p>
   <p>
    Additionally, the implementation MUST correctly render all
    <a href="https://developer.android.com/guide/topics/resources/available-resources.html">resources</a> (icons, animation files etc.) provided for in the APIs, or in the Status/System
Bar
    <a href="http://developer.android.com/design/style/iconography.html">icon style guide</a>,  which in the
case of an Android Television device includes the possibility to not display the
notifications. Device implementers MAY provide an alternative user experience
for notifications than that provided by the reference Android Open Source
implementation; however, such alternative notification systems MUST support
existing notification resources, as above.
   </p>
   <div class="note">
    Android Automotive implementations MAY manage the visibility and timing of
notifications to mitigate driver distraction, but MUST display
notifications that use
    <a href="https://developer.android.com/reference/android/app/Notification.CarExtender.html">CarExtender</a> when requested by applications.
   </div>
   <p>
    Android includes support for various notifications, such as:
   </p>
   <ul>
    <li>
     <strong>
      Rich notifications
     </strong>
     . Interactive Views for ongoing notifications.
    </li>
    <li>
     <strong>
      Heads-up notifications
     </strong>
     . Interactive Views users can act on or dismiss without leaving the current app.
    </li>
    <li>
     <strong>
      Lock screen notifications
     </strong>
     . Notifications shown over a lock screen with granular control on visibility.
    </li>
   </ul>
   <p>
    Android device implementations, when such notifications are made visible, MUST
properly execute Rich and Heads-up notifications and include the title/name,
icon, text as
    <a href="https://developer.android.com/design/patterns/notifications.html">documented in the Android APIs</a>. 
   </p>
   <p>
    Android includes Notification Listener Service APIs that allow apps (once
explicitly enabled by the user) to receive a copy of all notifications as they
are posted or updated. Device implementations MUST correctly and promptly send
notifications in their entirety to all such installed and user-enabled listener
services, including any and all metadata attached to the Notification object.
   </p>
   <p>
    Device implementations that support the DND (Do not Disturb) feature MUST meet
the following requirements:
   </p>
   <ul>
    <li>
     MUST implement an activity where the user can grant or deny the app access
    to DND policy configurations in response to the intent
     <a href="https://developer.android.com/reference/android/provider/Settings.html#ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS">ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS</a>. 
    </li>
    <li>
     MUST display
     <a href="https://developer.android.com/reference/android/app/NotificationManager.html#addAutomaticZenRule(android.app.AutomaticZenRule)">Automatic DND rules</a> created by applications alongside the user-created and pre-defined rules.
    </li>
    <li>
     MUST honor the
     <a href="https://developer.android.com/reference/android/app/NotificationManager.Policy.html#suppressedVisualEffects">
      <code>suppressedVisualEffects</code></a> values passed along the
     <a href="https://developer.android.com/reference/android/app/NotificationManager.Policy.html#NotificationManager.Policy(int, int, int, int)">
      <code> NotificationManager.Policy</code></a>.
    </li>
   </ul>
   <h3 id="3_8_4_search">
    3.8.4. Search
   </h3>
   <p>
    Android includes APIs that allow developers to
    <a href="http://developer.android.com/reference/android/app/SearchManager.html">incorporate search</a> into their applications and expose their application&rsquo;s data into the global
system search. Generally speaking, this functionality consists of a single,
system-wide user interface that allows users to enter queries, displays
suggestions as users type, and displays results. The Android APIs allow
developers to reuse this interface to provide search within their own apps and
allow developers to supply results to the common global search user interface.
   </p>
   <p>
    Android device implementations SHOULD include global search, a single, shared,
system-wide search user interface capable of real-time suggestions in response
to user input. Device implementations SHOULD implement the APIs that allow
developers to reuse this user interface to provide search within their own
applications. Device implementations that implement the global search interface
MUST implement the APIs that allow third-party applications to add suggestions
to the search box when it is run in global search mode. If no third-party
applications are installed that make use of this functionality, the default
behavior SHOULD be to display web search engine results and suggestions.
   </p>
   <p>
    Android device implementations SHOULD, and Android Automotive implementations
MUST, implement an assistant on the device to
handle the
    <a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST">Assist action</a>. 
   </p>
   <p>
    Android also includes the
    <a href="https://developer.android.com/reference/android/app/assist/package-summary.html">Assist APIs</a> to allow applications to elect how much information of the current context is
shared with the assistant on the device. Device implementations supporting the
Assist action MUST indicate clearly to the end user when the context is
shared by displaying a white light around the edges of the screen. To ensure
clear visibility to the end user, the indication MUST meet or exceed the
duration and brightness of the Android Open Source Project implementation.
   </p>
   <h3 id="3_8_5_toasts">
    3.8.5. Toasts
   </h3>
   <p>
    Applications can use the
    <a href="http://developer.android.com/reference/android/widget/Toast.html">&ldquo;Toast&rdquo; API</a> to
display short non-modal strings to the end user that disappear after a brief
period of time. Device implementations MUST display Toasts from applications to
end users in some high-visibility manner.
   </p>
   <h3 id="3_8_6_themes">
    3.8.6. Themes
   </h3>
   <p>
    Android provides &ldquo;themes&rdquo; as a mechanism for applications to apply styles across
an entire Activity or application.
   </p>
   <p>
    Android includes a &ldquo;Holo&rdquo; theme family as a set of defined styles for
application developers to use if they want to match the
    <a href="http://developer.android.com/guide/topics/ui/themes.html">Holo theme look and feel</a> as defined by the Android SDK. Device implementations MUST NOT alter any of the
    <a href="http://developer.android.com/reference/android/R.style.html">Holo theme attributes</a> exposed to applications.
   </p>
   <p>
    Android includes a &ldquo;Material&rdquo; theme family as a set of defined styles for
application developers to use if they want to match the design theme&rsquo;s look and
feel across the wide variety of different Android device types. Device
implementations MUST support the &ldquo;Material&rdquo; theme family and MUST NOT alter any
of the
    <a href="http://developer.android.com/reference/android/R.style.html#Theme_Material">Material theme attributes</a> or their assets exposed to applications.
   </p>
   <p>
    Android also includes a &ldquo;Device Default&rdquo; theme family as a set of defined styles
for application developers to use if they want to match the look and feel of the
device theme as defined by the device implementer. Device implementations MAY
modify the
    <a href="http://developer.android.com/reference/android/R.style.html">Device Default theme attributes</a> exposed
to applications.
   </p>
   <p>
    Android supports a variant theme with translucent system bars, which allows
application developers to fill the area behind the status and navigation bar
with their app content. To enable a consistent developer experience in this
configuration, it is important the status bar icon style is maintained across
different device implementations. Therefore, Android device implementations MUST
use white for system status icons (such as signal strength and battery level)
and notifications issued by the system, unless the icon is indicating a
problematic status or an app requests a light status bar using the
SYSTEM_UI_FLAG_LIGHT_STATUS_BAR flag. When an app requests a light status bar,
Android device implementations MUST change the color of the system status icons
to black (for details, refer to
    <a href="http://developer.android.com/reference/android/R.style.html">R.style</a> ).
   </p>
   <h3 id="3_8_7_live_wallpapers">
    3.8.7. Live Wallpapers
   </h3>
   <p>
    Android defines a component type and corresponding API and lifecycle that allows
applications to expose one or more
    <a href="http://developer.android.com/reference/android/service/wallpaper/WallpaperService.html">&ldquo;Live Wallpapers&rdquo;</a> to the end user. Live wallpapers are animations, patterns, or similar images
with limited input capabilities that display as a wallpaper, behind other
applications.
   </p>
   <p>
    Hardware is considered capable of reliably running live wallpapers if it can run
all live wallpapers, with no limitations on functionality, at a reasonable frame
rate with no adverse effects on other applications. If limitations in the
hardware cause wallpapers and/or applications to crash, malfunction, consume
excessive CPU or battery power, or run at unacceptably low frame rates, the
hardware is considered incapable of running live wallpaper. As an example, some
live wallpapers may use an OpenGL 2.0 or 3.x context to render their content.
Live wallpaper will not run reliably on hardware that does not support multiple
OpenGL contexts because the live wallpaper use of an OpenGL context may conflict
with other applications that also use an OpenGL context.
   </p>
   <p>
    Device implementations capable of running live wallpapers reliably as described
above SHOULD implement live wallpapers, and when implemented MUST report the
platform feature flag android.software.live_wallpaper.
   </p>
   <h3 id="3_8_8_activity_switching">
    3.8.8. Activity Switching
   </h3>
   <div class="note">
    As the Recent function navigation key is OPTIONAL, the requirement to implement
the overview screen is OPTIONAL for Android Watch and Android Automotive implementations,
and RECOMMENDED for Android Television devices. There SHOULD still be a
method to switch between activities on Android Automotive implementations.
   </div>
   <p>
    The upstream Android source code includes the
    <a href="http://developer.android.com/guide/components/recents.html">overview screen</a>,  a
system-level user interface for task switching and displaying recently accessed
activities and tasks using a thumbnail image of the application&rsquo;s graphical
state at the moment the user last left the application. Device implementations
including the recents function navigation key as detailed in
    <a href="#7_2_3_navigation_keys">section 7.2.3</a> MAY alter the interface but MUST meet the
following requirements:
   </p>
   <ul>
    <li>
     MUST support at least up to 20 displayed activities.
    </li>
    <li>
     MUST at least display the title of 4 activities at a time.
    </li>
    <li>
     MUST implement the
     <a href="http://developer.android.com/about/versions/android-5.0.html#ScreenPinning">screen pinning behavior</a> and provide the user with a settings menu to toggle the feature.
    </li>
    <li>
     SHOULD display highlight color, icon, screen title in recents.
    </li>
    <li>
     SHOULD display a closing affordance ("x") but MAY delay this until user interacts with screens.
    </li>
    <li>
     SHOULD implement a shortcut to switch easily to the previous activity
    </li>
    <li>
     MAY display affiliated recents as a group that moves together.
    </li>
   </ul>
   <p>
    Device implementations are STRONGLY RECOMMENDED to use the upstream Android user
interface (or a similar thumbnail-based interface) for the overview screen.
   </p>
   <h3 id="3_8_9_input_management">
    3.8.9. Input Management
   </h3>
   <p>
    Android includes support for
    <a href="http://developer.android.com/guide/topics/text/creating-input-method.html">Input Management</a> and support for third-party input method editors. Device implementations that
allow users to use third-party input methods on the device MUST declare the
platform feature android.software.input_methods and support IME APIs as defined
in the Android SDK documentation.
   </p>
   <p>
    Device implementations that declare the android.software.input_methods feature
MUST provide a user-accessible mechanism to add and configure third-party input
methods. Device implementations MUST display the settings interface in response
to the android.settings.INPUT_METHOD_SETTINGS intent.
   </p>
   <h3 id="3_8_10_lock_screen_media_control">
    3.8.10. Lock Screen Media Control
   </h3>
   <p>
    The Remote Control Client API is deprecated from Android 5.0 in favor of the
    <a href="http://developer.android.com/reference/android/app/Notification.MediaStyle.html">Media Notification Template</a> that allows media applications to integrate with playback controls that are
displayed on the lock screen. Device implementations that support a lock screen,
unless an Android Automotive or Watch implementation, MUST display the
Lock screen Notifications including the Media Notification Template.
   </p>
   <h3 id="3_8_11_screen_savers_(previously_dreams)">
    3.8.11. Screen savers (previously Dreams)
   </h3>
   <p>
    Android includes support for
    <a href="http://developer.android.com/reference/android/service/dreams/DreamService.html">interactivescreensavers</a>, 
previously referred to as Dreams. Screen savers allow users to interact with
applications when a device connected to a power source is idle or docked in a
desk dock.  Android Watch devices MAY implement screen savers, but other types
of device implementations SHOULD include support for screen savers and provide
a settings option for users toconfigure screen savers in response to the
    <code>
     android.settings.DREAM_SETTINGS
    </code>
    intent.
   </p>
   <h3 id="3_8_12_location">
    3.8.12. Location
   </h3>
   <p>
    When a device has a hardware sensor (e.g. GPS) that is capable of providing the
location coordinates,
    <a href="http://developer.android.com/reference/android/provider/Settings.Secure.html#LOCATION_MODE">location modes</a> MUST be displayed in the Location menu within Settings.
   </p>
   <h3 id="3_8_13_unicode_and_font">
    3.8.13. Unicode and Font
   </h3>
   <p>
    Android includes support for the emoji characters defined in
    <a href="http://www.unicode.org/versions/Unicode9.0.0/">Unicode 9.0</a>.  All device
implementations MUST be capable of rendering these emoji characters
in color glyph and when Android device implementations include an IME,
it SHOULD provide an input method to the user for these emoji characters.
   </p>
   <p>
    Android handheld devices SHOULD support the skin tone and diverse family emojis
as specified in the
    <a href="http://unicode.org/reports/tr51">Unicode Technical Report #51</a>. 
   </p>
   <p>
    Android includes support for Roboto 2 font with different
weights&mdash;sans-serif-thin, sans-serif-light, sans-serif-medium, sans-serif-black,
sans-serif-condensed, sans-serif-condensed-light&mdash;which MUST all be included for
the languages available on the device and full Unicode 7.0 coverage of Latin,
Greek, and Cyrillic, including the Latin Extended A, B, C, and D ranges, and all
glyphs in the currency symbols block of Unicode 7.0.
   </p>
   <h3 id="3_8_14_multi-windows">
    3.8.14. Multi-windows
   </h3>
   <p>
    A device implementation MAY choose not to implement any multi-window modes, but
if it has the capability to display multiple activities at the same time it
MUST implement such multi-window mode(s) in accordance with the application
behaviors and APIs described in the Android SDK
    <a href="https://developer.android.com/preview/features/multi-window.html">multi-window mode support documentation</a> and meet the following requirements:
   </p>
   <ul>
    <li>
     Applications can indicate whether they are capable of operating in
    multi-window mode in the AndroidManifest.xml file, either explicitly via the
     <a href="https://developer.android.com/reference/android/R.attr.html#resizeableActivity">
      <code>android:resizeableActivity</code></a>
     attribute or implicitly by having the targetSdkVersion &gt; 24. Apps that
    explicitly set this attribute to false in their manifest MUST not be
    launched in multi-window mode. Apps that don't set the attribute in their
    manifest file (targetSdkVersion &lt; 24) can be launched in multi-window mode,
    but the system MUST provide warning that the app may not work as expected in
    multi-window mode.
    </li>
    <li>
     Device implementations MUST NOT offer split-screen or freeform mode
    if both the screen height and width is less than 440 dp.
    </li>
    <li>
     Device implementations with screen size
     <code>
      xlarge
     </code>
     SHOULD support freeform mode.
    </li>
    <li>
     Android Television device implementations MUST support picture-in-picture (PIP) mode multi-window
    and place the PIP multi-window in the top right corner when PIP is ON.
    </li>
    <li>
     Device implementations with PIP mode multi-window support
    MUST allocate at least 240x135 dp for the PIP window.
    </li>
    <li>
     If the PIP multi-window mode is supported the
     <a href="https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_WINDOW">
      <code>KeyEvent.KEYCODE_WINDOW</code></a> key MUST be used to control the PIP window; otherwise, the key MUST be
    available to the foreground activity.
    </li>
   </ul>
   <h2 id="3_9_device_administration">
    3.9. Device Administration
   </h2>
   <p>
    Android includes features that allow security-aware applications to perform
device administration functions at the system level, such as enforcing password
policies or performing remote wipe, through the
    <a href="http://developer.android.com/guide/topics/admin/device-admin.html">Android Device Administration API</a> ].
Device implementations MUST provide an implementation of the
    <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html">DevicePolicyManager</a> class. Device implementations that supports a secure lock screen MUST implement
the full range of
    <a href="http://developer.android.com/guide/topics/admin/device-admin.html">device administration</a> policies defined in the Android SDK documentation and report the platform
feature android.software.device_admin.
   </p>
   <h3 id="3_9_1_device_provisioning">
    3.9.1 Device Provisioning
   </h3>
   <h4 id="3_9_1_1_device_owner_provisioning">
    3.9.1.1 Device owner provisioning
   </h4>
   <p>
    If a device implementation declares the
    <code>
     android.software.device_admin
    </code>
    feature
then it MUST implement the provisioning of the
    <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#isDeviceOwnerApp(java.lang.String)">Device Owner app</a> of a Device Policy Client (DPC) application as indicated below:
   </p>
   <ul>
    <li>
     When the device implementation has no user data configured yet, it:
     <ul>
      <li>
       MUST report
       <code>
        true
       </code>
       for
       <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#isProvisioningAllowed(java.lang.String)">
        DevicePolicyManager.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE)</a>.
      </li>
      <li>
       MUST enroll the DPC application as the Device Owner app in response to
     the intent action
       <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#ACTION_PROVISION_MANAGED_DEVICE">
        android.app.action.PROVISION_MANAGED_DEVICE</a>.
      </li>
      <li>
       MUST enroll the DPC application as the Device Owner app if the device
     declares Near-Field Communications (NFC) support via the feature flag
     android.hardware.nfc and receives an NFC message containing a record
     with MIME type
       <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#MIME_TYPE_PROVISIONING_NFC">
        MIME_TYPE_PROVISIONING_NFC</a>.
      </li>
     </ul>
    </li>
    <li>
     When the device implementation has user data, it:
     <ul>
      <li>
       MUST report
       <code>
        false
       </code>
       for the
       <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#isProvisioningAllowed(java.lang.String)">
        DevicePolicyManager.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE)</a>.
      </li>
      <li>
       MUST not enroll any DPC application as the Device Owner App any more.
      </li>
     </ul>
    </li>
   </ul>
   <p>
    Device implementations MAY have a preinstalled application performing device
administration functions but this application MUST NOT be set as the Device
Owner app without explicit consent or action from the user or the administrator
of the device.
   </p>
   <h4 id="3_9_1_2_managed_profile_provisioning">
    3.9.1.2 Managed profile provisioning
   </h4>
   <p>
    If a device implementation declares the android.software.managed_users, it MUST
be possible to enroll a Device Policy Controller (DPC) application as the
    <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#isProfileOwnerApp(java.lang.String)">owner of a new Managed Profile</a>. 
   </p>
   <p>
    The managed profile provisioning process (the flow initiated by
    <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#ACTION_PROVISION_MANAGED_PROFILE">android.app.action.PROVISION_MANAGED_PROFILE</a> )
user experience MUST align with the AOSP implementation.
   </p>
   <p>
    Device implementations MUST provide the following user affordances within the
Settings user interface to indicate to the user when a particular system function
has been disabled by the Device Policy Controller (DPC):
   </p>
   <ul>
    <li>
     A consistent icon or other user affordance (for example the upstream AOSP
     info icon) to represent when a particular setting is restricted by a
     Device Admin.
    </li>
    <li>
     A short explanation message, as provided by the Device Admin via the
     <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setShortSupportMessage%28android.content.ComponentName, java.lang.CharSequence%29">
      <code> setShortSupportMessage</code></a>.
    </li>
    <li>
     The DPC application&rsquo;s icon.
    </li>
   </ul>
   <h2 id="3_9_2_managed_profile_support">
    3.9.2 Managed Profile Support
   </h2>
   <p>
    Managed profile capable devices are those devices that:
   </p>
   <ul>
    <li>
     Declare android.software.device_admin (see
     <a href="#3_9_device_administration">section 3.9 Device Administration</a> ).
    </li>
    <li>
     Are not low RAM devices (see
     <a href="#7_6_1_minimum_memory_and_storage">section 7.6.1</a> ).
    </li>
    <li>
     Allocate internal (non-removable) storage as shared storage (see
     <a href="#7_6_2_application_shared_storage">section 7.6.2</a> ).
    </li>
   </ul>
   <p>
    Managed profile capable devices MUST:
   </p>
   <ul>
    <li>
     Declare the platform feature flag
     <code>
      android.software.managed_users
     </code>.
    </li>
    <li>
     Support managed profiles via the
     <code>
      android.app.admin.DevicePolicyManager
     </code>
     APIs.
    </li>
    <li>
     Allow one and only
     <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#ACTION_PROVISION_MANAGED_PROFILE">one managed profile to be created</a>. 
    </li>
    <li>
     Use an icon badge (similar to the AOSP upstream work badge) to represent the
    managed applications and widgets and other badged UI elements like
    Recents &amp; Notifications.
    </li>
    <li>
     Display a notification icon (similar to the AOSP upstream work badge) to
    indicate when user is within a managed profile application.
    </li>
    <li>
     Display a toast indicating that the user is in the managed profile if and
    when the device wakes up (ACTION_USER_PRESENT) and the foreground
    application is within the managed profile.
    </li>
    <li>
     Where a managed profile exists, show a visual affordance in the Intent
    'Chooser' to allow the user to forward the intent from the managed profile
    to the primary user or vice versa, if enabled by the Device Policy
    Controller.
    </li>
    <li>
     Where a managed profile exists, expose the following user affordances for
    both the primary user and the managed profile:
     <ul>
      <li>
       Separate accounting for battery, location, mobile data and storage usage
    for the primary user and managed profile.
      </li>
      <li>
       Independent management of VPN Applications installed within the primary
    user or managed profile.
      </li>
      <li>
       Independent management of applications installed within the primary user
    or managed profile.
      </li>
      <li>
       Independent management of accounts within the primary user or managed
    profile.
      </li>
     </ul>
    </li>
    <li>
     Ensure the preinstalled dialer, contacts and messaging applications can
    search for and look up caller information from the managed profile (if one
    exists) alongside those from the primary profile, if the Device Policy
    Controller permits it. When contacts from the managed profile are displayed
    in the preinstalled call log, in-call UI, in-progress and missed-call
    notifications, contacts and messaging apps they SHOULD be badged with the
    same badge used to indicate managed profile applications.
    </li>
    <li>
     MUST ensure that it satisfies all the security requirements applicable for a
    device with multiple users enabled (see
     <a href="#9_5_multi-user_support">section 9.5</a> ),
    even though the managed profile is not counted as another user in addition
    to the primary user.
    </li>
    <li>
     Support the ability to specify a separate lock screen meeting the following
    requirements to grant access to apps running in a managed profile.
     <ul>
      <li>
       Device implementations MUST honor the
       <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#ACTION_SET_NEW_PASSWORD">
        <code>DevicePolicyManager.ACTION_SET_NEW_PASSWORD</code></a>
       intent and show an interface to configure a separate lock screen
    credential for the managed profile.
      </li>
      <li>
       The lock screen credentials of the managed profile MUST use the same
    credential storage and management mechanisms as the parent profile,
    as documented on the
       <a href="http://source.android.com/security/authentication/index.html">Android Open Source Project Site</a> </li>
      <li>
       The DPC
       <a href="https://developer.android.com/guide/topics/admin/device-admin.html#pwd">password policies</a> MUST apply to only the managed profile's lock screen credentials unless
    called upon the
       <code>
        DevicePolicyManager
       </code>
       instance returned by
       <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#getParentProfileInstance(android.content.ComponentName)">getParentProfileInstance</a>. 
      </li>
     </ul>
    </li>
   </ul>
   <h2 id="3_10_accessibility">
    3.10. Accessibility
   </h2>
   <p>
    Android provides an accessibility layer that helps users with disabilities to
navigate their devices more easily. In addition, Android provides platform APIs
that enable
    <a href="http://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html">accessibility service implementations</a> to receive callbacks for user and system events and generate alternate feedback
mechanisms, such as text-to-speech, haptic feedback, and trackball/d-pad
navigation.
   </p>
   <p>
    Device implementations include the following requirements:
   </p>
   <ul>
    <li>
     Android Automotive implementations SHOULD provide an implementation of the
    Android accessibility framework consistent with the default Android
    implementation.
    </li>
    <li>
     Device implementations (Android Automotive excluded) MUST provide an
    implementation of the Android accessibility framework consistent with the
    default Android implementation.
    </li>
    <li>
     Device implementations (Android Automotive excluded) MUST support
    third-party accessibility service implementations through the
     <a href="http://developer.android.com/reference/android/view/accessibility/package-summary.html">android.accessibilityservice APIs</a>. 
    </li>
    <li>
     Device implementations (Android Automotive excluded) MUST generate
    AccessibilityEvents and deliver these events to all registered
    AccessibilityService implementations in a manner consistent with the default
    Android implementation
    </li>
    <li>
     <p>
      Device implementations (Android Automotive and Android Watch devices with no
    audio output excluded), MUST provide a user-accessible mechanism to enable
    and disable accessibility services, and MUST display this interface in
    response to the android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS
    intent.
     </p>
    </li>
    <li>
     <p>
      Android device implementations with audio output are STRONGLY RECOMMENDED to provide
  implementations of accessibility services on the device comparable in or exceeding functionality
  of the TalkBack** and Switch Access accessibility services (https://github.com/google/talkback).
     </p>
    </li>
    <li>
     Android Watch devices with audio output SHOULD provide implementations of an accessibility service
  on the device comparable in or exceeding functionality of the TalkBack accessibility service
  (https://github.com/google/talkback).
    </li>
    <li>
     Device implementations SHOULD provide a mechanism in the out-of-box setup flow for users to enable
  relevant accessibility services, as well as options to adjust the font size, display size and
  magnification gestures.
    </li>
   </ul>
   <p>
    ** For languages supported by Text-to-speech.
   </p>
   <p>
    Also, note that if there is a preloaded accessibility service, it MUST be a Direct Boot aware
{directBootAware} app if the device has encrypted storage using File Based
Encryption (FBE).
   </p>
   <h2 id="3_11_text-to-speech">
    3.11. Text-to-Speech
   </h2>
   <p>
    Android includes APIs that allow applications to make use of text-to-speech
(TTS) services and allows service providers to provide implementations of TTS
services. Device implementations reporting the feature
android.hardware.audio.output MUST meet these requirements related to the
    <a href="http://developer.android.com/reference/android/speech/tts/package-summary.html">Android TTS framework</a>. 
   </p>
   <p>
    Android Automotive implementations:
   </p>
   <ul>
    <li>
     MUST support the Android TTS framework APIs.
    </li>
    <li>
     MAY support installation of third-party TTS engines. If supported, partners
    MUST provide a user-accessible interface that allows the user to select a
    TTS engine for use at system level.
    </li>
   </ul>
   <p>
    All other device implementations:
   </p>
   <ul>
    <li>
     MUST support the Android TTS framework APIs and SHOULD include a TTS engine
    supporting the languages available on the device. Note that the upstream
    Android open source software includes a full-featured TTS engine
    implementation.
    </li>
    <li>
     MUST support installation of third-party TTS engines.
    </li>
    <li>
     MUST provide a user-accessible interface that allows users to select a TTS
    engine for use at the system level.
    </li>
   </ul>
   <h2 id="3_12_tv_input_framework">
    3.12. TV Input Framework
   </h2>
   <p>
    The
    <a href="http://source.android.com/devices/tv/index.html">Android Television Input Framework (TIF)</a> simplifies the delivery of live content to Android Television devices. TIF
provides a standard API to create input modules that control Android Television
devices. Android Television device implementations MUST support TV Input
Framework.
   </p>
   <p>
    Device implementations that support TIF MUST declare the platform feature
android.software.live_tv.
   </p>
   <h3 id="3_12_1_tv_app">
    3.12.1. TV App
   </h3>
   <p>
    Any device implementation that declares support for Live TV MUST have an
installed TV application (TV App). The Android Open Source Project provides an
implementation of the TV App.
   </p>
   <p>
    The TV App MUST provide facilities to install and use
    <a href="http://developer.android.com/reference/android/media/tv/TvContract.Channels.html">TV Channels</a> and meet the following requirements:
   </p>
   <ul>
    <li>
     Device implementations MUST allow third-party TIF-based inputs
    (<a href="https://source.android.com/devices/tv/index.html#third-party_input_example">third-party inputs</a>)
    to be installed and managed.
    </li>
    <li>
     Device implementations MAY provide visual separation between pre-installed
     <a href="https://source.android.com/devices/tv/index.html#tv_inputs">TIF-based inputs</a> (installed inputs) and third-party inputs.
    </li>
    <li>
     Device implementations MUST NOT display the third-party inputs more than a
    single navigation action away from the TV App (i.e. expanding a list of
    third-party inputs from the TV App).
    </li>
   </ul>
   <h4 id="3_12_1_1_electronic_program_guide">
    3.12.1.1. Electronic Program Guide
   </h4>
   <p>
    Android Television device implementations MUST show an informational and
interactive overlay, which MUST include an electronic program guide (EPG)
generated from the values in the
    <a href="https://developer.android.com/reference/android/media/tv/TvContract.Programs.html">TvContract.Programs</a> fields. The EPG MUST meet the following requirements:
   </p>
   <ul>
    <li>
     The EPG MUST display information from all installed inputs and third-party
    inputs.
    </li>
    <li>
     The EPG MAY provide visual separation between the installed inputs and
    third-party inputs.
    </li>
    <li>
     The EPG is STRONGLY RECOMMENDED to display installed inputs and third-party
    inputs with equal prominence. The EPG MUST NOT display the third-party
    inputs more than a single navigation action away from the installed inputs
    on the EPG.
    </li>
    <li>
     On channel change, device implementations MUST display EPG data for the
    currently playing program.
    </li>
   </ul>
   <h4 id="3_12_1_2_navigation">
    3.12.1.2. Navigation
   </h4>
   <p>
    The TV App MUST allow navigation for the following functions via the D-pad,
Back, and Home keys on the Android Television device&rsquo;s input device(s)
(i.e. remote control, remote control application, or game controller):
   </p>
   <ul>
    <li>
     Changing TV channels
    </li>
    <li>
     Opening EPG
    </li>
    <li>
     Configuring and tuning to third-party TIF-based inputs
    </li>
    <li>
     Opening Settings menu
    </li>
   </ul>
   <p>
    The TV App SHOULD pass key events to HDMI inputs through CEC.
   </p>
   <h4 id="3_12_1_3_tv_input_app_linking">
    3.12.1.3. TV input app linking
   </h4>
   <p>
    Android Television device implementations MUST support
    <a href="http://developer.android.com/reference/android/media/tv/TvContract.Channels.html#COLUMN_APP_LINK_INTENT_URI">TV input app linking</a>, 
which allows all inputs to provide activity links from the current activity to
another activity (i.e. a link from live programming to related content). The TV
App MUST show TV input app linking when it is provided.
   </p>
   <h4 id="3_12_1_4_time_shifting">
    3.12.1.4. Time shifting
   </h4>
   <p>
    Android Television device implementations MUST support time shifting, which
allows the user to pause and resume live content. Device implementations MUST
provide the user a way to pause and resume the currently playing program, if
time shifting for that program
    <a href="https://developer.android.com/reference/android/media/tv/TvInputManager.html#TIME_SHIFT_STATUS_AVAILABLE">is available</a>. 
   </p>
   <h4 id="3_12_1_5_tv_recording">
    3.12.1.5. TV recording
   </h4>
   <p>
    Android Television device implementations are STRONGLY RECOMMENDED to support
TV recording. If the TV input supports recording, the EPG MAY provide a way to
    <a href="https://developer.android.com/reference/android/media/tv/TvInputInfo.html#canRecord()">record a program</a> if the recording of such a program is not
    <a href="https://developer.android.com/reference/android/media/tv/TvContract.Programs.html#COLUMN_RECORDING_PROHIBITED">prohibited</a>. 
Device implementations SHOULD provide a user interface to play recorded programs.
   </p>
   <h2 id="3_13_quick_settings">
    3.13. Quick Settings
   </h2>
   <p>
    Android device implementations SHOULD include a Quick Settings UI component that
allow quick access to frequently used or urgently needed actions.
   </p>
   <p>
    Android includes the
    <a href="https://developer.android.com/reference/android/service/quicksettings/package-summary.html">
     <code>quicksettings</code></a> API allowing third party apps to implement tiles that can be added by the user
alongside the system-provided tiles in the Quick Settings UI component. If a
device implementation has a Quick Settings UI component, it:
   </p>
   <ul>
    <li>
     MUST allow the user to add or remove tiles from a third-party app to Quick
    Settings.
    </li>
    <li>
     MUST NOT automatically add a tile from a third-party app directly to Quick
    Settings.
    </li>
    <li>
     MUST display all the user-added tiles from third-party apps alongside the
    system-provided quick setting tiles.
    </li>
   </ul>
   <h2 id="3_14_vehicle_ui_apis">
    3.14. Vehicle UI APIs
   </h2>
   <h3 id="3_14_1__vehicle_media_ui">
    3.14.1.  Vehicle Media UI
   </h3>
   <p>
    Any device implementation that
    <a href="https://developer.android.com/reference/android/content/pm/PackageManager.html?#FEATURE_AUTOMOTIVE?">declares automotive support</a> MUST include a UI framework to support third-party apps consuming the
    <a href="http://developer.android.com/reference/android/media/browse/MediaBrowser.html">MediaBrowser</a> and
    <a href="http://developer.android.com/reference/android/media/session/MediaSession.html">MediaSession</a> APIs.
   </p>
   <p>
    The UI framework supporting third-party apps that depend on MediaBrowser and
MediaSession has the following visual requirements:
   </p>
   <ul>
    <li>
     MUST display
     <a href="http://developer.android.com/reference/android/media/browse/MediaBrowser.MediaItem.html">MediaItem</a> icons and notification icons unaltered.
    </li>
    <li>
     MUST display those items as described by MediaSession, e.g., metadata, icons,
  imagery.
    </li>
    <li>
     MUST show app title.
    </li>
    <li>
     MUST have drawer to present
     <a href="http://developer.android.com/reference/android/media/browse/MediaBrowser.html">MediaBrowser</a> hierarchy.
    </li>
   </ul>
   <h1 id="4_application_packaging_compatibility">
    4. Application Packaging Compatibility
   </h1>
   <p>
    Device implementations MUST install and run Android &ldquo;.apk&rdquo; files as generated
by the &ldquo;aapt&rdquo; tool included in the
    <a href="http://developer.android.com/tools/help/index.html">
     official Android
SDK
    </a>
    . For this reason device
implementations SHOULD use the reference implementation&rsquo;s package management
system.
   </p>
   <p>
    The package manager MUST support verifying &ldquo;.apk&rdquo; files using the
    <a href="https://source.android.com/security/apksigning/v2.html">
     APK Signature
Scheme v2
    </a>
    .
   </p>
   <p>
    Devices implementations MUST NOT extend either the
    <a href="http://developer.android.com/guide/components/fundamentals.html">.apk</a>, 
    <a href="http://developer.android.com/guide/topics/manifest/manifest-intro.html">Android Manifest</a>, 
    <a href="https://android.googlesource.com/platform/dalvik/">Dalvik bytecode</a>,  or
RenderScript bytecode formats in such a way that would prevent those files from
installing and running correctly on other compatible devices.
   </p>
   <h1 id="5_multimedia_compatibility">
    5. Multimedia Compatibility
   </h1>
   <h2 id="5_1_media_codecs">
    5.1. Media Codecs
   </h2>
   <p>
    Device implementations&mdash;
   </p>
   <ul>
    <li>
     <p>
      MUST support the
      <a href="http://developer.android.com/guide/appendix/media-formats.html">
       core media formats </a> specified in the Android SDK documentation, except where explicitly permitted
in this document.
     </p>
    </li>
    <li>
     <p>
      MUST support the media formats, encoders, decoders, file types, and
container formats defined in the tables below and reported via
      <a href="http://developer.android.com/reference/android/media/MediaCodecList.html">MediaCodecList</a>. 
     </p>
    </li>
    <li>
     <p>
      MUST also be able to decode all profiles reported in its
      <a href="http://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>.</p>
    </li>
    <li>
     <p>
      MUST be able to decode all formats it can encode. This includes all
    bitstreams that its encoders generate.
     </p>
    </li>
   </ul>
   <p>
    Codecs SHOULD aim for minimum codec latency, in other words, codecs&mdash;
   </p>
   <ul>
    <li>
     SHOULD NOT consume and store input buffers and return input buffers only
once processed
    </li>
    <li>
     SHOULD NOT hold onto decoded buffers for longer than as specified by the
standard (e.g. SPS).
    </li>
    <li>
     SHOULD NOT hold onto encoded buffers longer than required by the GOP
structure.
    </li>
   </ul>
   <p>
    All of the  codecs listed in the table below are provided as software
implementations in the preferred Android implementation from the Android Open
Source Project.
   </p>
   <p>
    Please note that neither Google nor the Open Handset Alliance make any
representation that these codecs are free from third-party patents. Those
intending to use this source code in hardware or software products are advised
that implementations of this code, including in open source software or
shareware, may require patent licenses from the relevant patent holders.
   </p>
   <h3 id="5_1_1_audio_codecs">
    5.1.1. Audio Codecs
   </h3>
   <table>
    <tr>
     <th>
      Format/Codec
     </th>
     <th>
      Encoder
     </th>
     <th>
      Decoder
     </th>
     <th>
      Details
     </th>
     <th>
      Supported File Types/Container Formats
     </th>
    </tr>
    <tr>
     <td>
      MPEG-4 AAC Profile
      <br/>
      (AAC LC)
     </td>
     <td>
      REQUIRED
      <sup>
       1
      </sup>
     </td>
     <td>
      REQUIRED
     </td>
     <td>
      Support for mono/stereo/5.0/5.1
      <sup>
       2
      </sup>
      content with standard
    sampling rates from 8 to 48 kHz.
     </td>
     <td>
      <ul>
       <li class="table_list">
        3GPP (.3gp)
       </li>
       <li class="table_list">
        MPEG-4 (.mp4, .m4a)
       </li>
       <li class="table_list">
        ADTS raw AAC (.aac, decode in Android 3.1+, encode in
    Android 4.0+, ADIF not supported)
       </li>
       <li class="table_list">
        MPEG-TS (.ts, not seekable, Android 3.0+)
       </li>
      </ul>
     </td>
    </tr>
    <tr>
     <td>
      MPEG-4 HE AAC Profile (AAC+)
     </td>
     <td>
      REQUIRED
      <sup>
       1
      </sup>
      <br/>
      (Android 4.1+)
     </td>
     <td>
      REQUIRED
     </td>
     <td>
      Support for mono/stereo/5.0/5.1
      <sup>
       2
      </sup>
      content with standard
    sampling rates from 16 to 48 kHz.
     </td>
     <td>
     </td>
    </tr>
    <tr>
     <td>
      MPEG-4 HE AACv2
      <br/>
      Profile (enhanced AAC+)
     </td>
     <td>
     </td>
     <td>
      REQUIRED
     </td>
     <td>
      Support for mono/stereo/5.0/5.1
      <sup>
       2
      </sup>
      content with standard
    sampling rates from 16 to 48 kHz.
     </td>
     <td>
     </td>
    </tr>
    <tr>
     <td>
      AAC ELD (enhanced low delay AAC)
     </td>
     <td>
      REQUIRED
      <sup>
       1
      </sup>
      <br/>
      (Android 4.1+)
     </td>
     <td>
      REQUIRED
      <br/>
      (Android 4.1+)
     </td>
     <td>
      Support for mono/stereo content with standard sampling rates from 16 to
    48 kHz.
     </td>
     <td>
     </td>
    </tr>
    <tr>
     <td>
      AMR-NB
     </td>
     <td>
      REQUIRED
      <sup>
       3
      </sup>
     </td>
     <td>
      REQUIRED
      <sup>
       3
      </sup>
     </td>
     <td>
      4.75 to 12.2 kbps sampled @ 8 kHz
     </td>
     <td>
      3GPP (.3gp)
     </td>
    </tr>
    <tr>
     <td>
      AMR-WB
     </td>
     <td>
      REQUIRED
      <sup>
       3
      </sup>
     </td>
     <td>
      REQUIRED
      <sup>
       3
      </sup>
     </td>
     <td>
      9 rates from 6.60 kbit/s to 23.85 kbit/s sampled @ 16 kHz
     </td>
     <td>
     </td>
    </tr>
    <tr>
     <td>
      FLAC
     </td>
     <td>
     </td>
     <td>
      REQUIRED
      <br/>
      (Android 3.1+)
     </td>
     <td>
      Mono/Stereo (no multichannel). Sample rates up to 48 kHz (but up to 44.1
    kHz is RECOMMENDED on devices with 44.1 kHz output, as the 48 to 44.1 kHz
    downsampler does not include a low-pass filter). 16-bit RECOMMENDED; no
    dither applied for 24-bit.
     </td>
     <td>
      FLAC (.flac) only
     </td>
    </tr>
    <tr>
     <td>
      MP3
     </td>
     <td>
     </td>
     <td>
      REQUIRED
     </td>
     <td>
      Mono/Stereo 8-320Kbps constant (CBR) or variable bitrate (VBR)
     </td>
     <td>
      MP3 (.mp3)
     </td>
    </tr>
    <tr>
     <td>
      MIDI
     </td>
     <td>
     </td>
     <td>
      REQUIRED
     </td>
     <td>
      MIDI Type 0 and 1. DLS Version 1 and 2. XMF and Mobile XMF. Support for
    ringtone formats RTTTL/RTX, OTA, and iMelody
     </td>
     <td>
      <ul>
       <li class="table_list">
        Type 0 and 1 (.mid, .xmf, .mxmf)
       </li>
       <li class="table_list">
        RTTTL/RTX (.rtttl, .rtx)
       </li>
       <li class="table_list">
        OTA (.ota)
       </li>
       <li class="table_list">
        iMelody (.imy)
       </li>
      </ul>
     </td>
    </tr>
    <tr>
     <td>
      Vorbis
     </td>
     <td>
     </td>
     <td>
      REQUIRED
     </td>
     <td>
     </td>
     <td>
      <ul>
       <li class="table_list">
        Ogg (.ogg)
       </li>
       <li class="table_list">
        Matroska (.mkv, Android 4.0+)
       </li>
      </ul>
     </td>
    </tr>
    <tr>
     <td>
      PCM/WAVE
     </td>
     <td>
      REQUIRED
      <sup>
       4
      </sup>
      <br/>
      (Android 4.1+)
     </td>
     <td>
      REQUIRED
     </td>
     <td>
      16-bit linear PCM (rates up to limit of hardware). Devices MUST support
    sampling rates for raw PCM recording at 8000, 11025, 16000, and 44100 Hz
    frequencies.
     </td>
     <td>
      WAVE (.wav)
     </td>
    </tr>
    <tr>
     <td>
      Opus
     </td>
     <td>
     </td>
     <td>
      REQUIRED
      <br/>
      (Android 5.0+)
     </td>
     <td>
     </td>
     <td>
      Matroska (.mkv), Ogg(.ogg)
     </td>
    </tr>
   </table>
   <p class="table_footnote">
    1 Required for device implementations that define
android.hardware.microphone but optional for Android Watch device
implementations.
   </p>
   <p class="table_footnote">
    2 Recording or playback MAY be performed in mono
or stereo, but the decoding of AAC input buffers of multichannel streams
(i.e. more than two channels) to PCM through the default AAC audio decoder
in the android.media.MediaCodec API, the following MUST be supported:
   </p>
   <ul class="table_footnote">
    <li>
     decoding is performed without downmixing (e.g. a 5.0 AAC stream must be
decoded to five channels of PCM, a 5.1 AAC stream must be decoded to six
channels of PCM),
    </li>
    <li>
     dynamic range metadata, as defined in "Dynamic Range Control (DRC)"
in ISO/IEC 14496-3, and the android.media.MediaFormat DRC keys to
configure the dynamic range-related behaviors of the audio decoder. The
AAC DRC keys were introduced in API 21,and are:
KEY_AAC_DRC_ATTENUATION_FACTOR, KEY_AAC_DRC_BOOST_FACTOR,
KEY_AAC_DRC_HEAVY_COMPRESSION, KEY_AAC_DRC_TARGET_REFERENCE_LEVEL and
KEY_AAC_ENCODED_TARGET_LEVEL
    </li>
   </ul>
   <p class="table_footnote">
    3 Required for Android Handheld device
implementations.
   </p>
   <p class="table_footnote">
    4 Required for device implementations that define
android.hardware.microphone, including Android Watch device implementations.
   </p>
   <h3 id="5_1_2_image_codecs">
    5.1.2. Image Codecs
   </h3>
   <table>
    <tr>
     <th>
      Format/Codec
     </th>
     <th>
      Encoder
     </th>
     <th>
      Decoder
     </th>
     <th>
      Details
     </th>
     <th>
      Supported File Types/Container Formats
     </th>
    </tr>
    <tr>
     <td>
      JPEG
     </td>
     <td>
      REQUIRED
     </td>
     <td>
      REQUIRED
     </td>
     <td>
      Base+progressive
     </td>
     <td>
      JPEG (.jpg)
     </td>
    </tr>
    <tr>
     <td>
      GIF
     </td>
     <td>
     </td>
     <td>
      REQUIRED
     </td>
     <td>
     </td>
     <td>
      GIF (.gif)
     </td>
    </tr>
    <tr>
     <td>
      PNG
     </td>
     <td>
      REQUIRED
     </td>
     <td>
      REQUIRED
     </td>
     <td>
     </td>
     <td>
      PNG (.png)
     </td>
    </tr>
    <tr>
     <td>
      BMP
     </td>
     <td>
     </td>
     <td>
      REQUIRED
     </td>
     <td>
     </td>
     <td>
      BMP (.bmp)
     </td>
    </tr>
    <tr>
     <td>
      WebP
     </td>
     <td>
      REQUIRED
     </td>
     <td>
      REQUIRED
     </td>
     <td>
     </td>
     <td>
      WebP (.webp)
     </td>
    </tr>
    <tr>
     <td>
      Raw
     </td>
     <td>
     </td>
     <td>
      REQUIRED
     </td>
     <td>
     </td>
     <td>
      ARW (.arw), CR2 (.cr2), DNG (.dng), NEF (.nef), NRW (.nrw), ORF (.orf),
        PEF (.pef), RAF (.raf), RW2 (.rw2), SRW (.srw)
     </td>
    </tr>
   </table>
   <h3 id="5_1_3_video_codecs">
    5.1.3. Video Codecs
   </h3>
   <ul>
    <li>
     <p>
      Codecs advertising HDR profile support MUST support HDR static metadata
parsing and handling.
     </p>
    </li>
    <li>
     <p>
      If a media codec advertises intra refresh support, then it MUST support the
refresh periods in the range of 10 - 60 frames and accurately operate within
20% of configured refresh period.
     </p>
    </li>
    <li>
     <p>
      Video codecs MUST support output and input bytebuffer sizes that
accommodate the largest feasible compressed and uncompressed frame as dictated
by the standard and configuration but also not overallocate.
     </p>
    </li>
    <li>
     <p>
      Video encoders and decoders MUST support YUV420 flexible color format
(COLOR_FormatYUV420Flexible).
     </p>
    </li>
   </ul>
   <table>
    <tr>
     <th>
      Format/Codec
     </th>
     <th>
      Encoder
     </th>
     <th>
      Decoder
     </th>
     <th>
      Details
     </th>
     <th>
      Supported File Types/
      <br/>
      Container Formats
     </th>
    </tr>
    <tr>
     <td>
      H.263
     </td>
     <td>
      MAY
     </td>
     <td>
      MAY
     </td>
     <td>
     </td>
     <td>
      <ul>
       <li class="table_list">
        3GPP (.3gp)
       </li>
       <li class="table_list">
        MPEG-4 (.mp4)
       </li>
      </ul>
     </td>
    </tr>
    <tr>
     <td>
      H.264 AVC
     </td>
     <td>
      REQUIRED
      <sup>
       2
      </sup>
     </td>
     <td>
      REQUIRED
      <sup>
       2
      </sup>
     </td>
     <td>
      See
      <a href="#5_2_video_encoding">section 5.2</a> and
      <a href="#5_3_video_decoding">5.3</a> for details
     </td>
     <td>
      <ul>
       <li class="table_list">
        3GPP (.3gp)
       </li>
       <li class="table_list">
        MPEG-4 (.mp4)
       </li>
       <li class="table_list">
        MPEG-2 TS (.ts, AAC audio only, not seekable, Android
    3.0+)
       </li>
      </ul>
     </td>
    </tr>
    <tr>
     <td>
      H.265 HEVC
     </td>
     <td>
     </td>
     <td>
      REQUIRED
      <sup>
       5
      </sup>
     </td>
     <td>
      See
      <a href="#5_3_video_decoding">section 5.3</a> for details
     </td>
     <td>
      MPEG-4 (.mp4)
     </td>
    </tr>
    <tr>
     <td>
      MPEG-2
     </td>
     <td>
     </td>
     <td>
      STRONGLY RECOMMENDED
      <sup>
       6
      </sup>
     </td>
     <td>
      Main Profile
     </td>
     <td>
      MPEG2-TS
     </td>
    </tr>
    <tr>
     <td>
      MPEG-4 SP
     </td>
     <td>
     </td>
     <td>
      REQUIRED
      <sup>
       2
      </sup>
     </td>
     <td>
     </td>
     <td>
      3GPP (.3gp)
     </td>
    </tr>
    <tr>
     <td>
      VP8
      <sup>
       3
      </sup>
     </td>
     <td>
      REQUIRED
      <sup>
       2
      </sup>
      <br/>
      (Android 4.3+)
     </td>
     <td>
      REQUIRED
      <sup>
       2
      </sup>
      <br/>
      (Android 2.3.3+)
     </td>
     <td>
      See
      <a href="#5_2_video_encoding">section 5.2</a> and
      <a href="#5_3_video_decoding">5.3</a> for details
     </td>
     <td>
      <ul>
       <li class="table_list">
        <a href="http://www.webmproject.org/">
         WebM
    (.webm)
        </a>
       </li>
       <li class="table_list">
        Matroska (.mkv, Android 4.0+)
        <sup>
         4
        </sup>
       </li>
      </ul>
     </td>
    </tr>
    <tr>
     <td>
      VP9
     </td>
     <td>
     </td>
     <td>
      REQUIRED
      <sup>
       2
      </sup>
      <br/>
      (Android 4.4+)
     </td>
     <td>
      See
      <a href="#5_3_video_decoding">section 5.3</a> for details
     </td>
     <td>
      <ul>
       <li class="table_list">
        <a href="http://www.webmproject.org/">
         WebM
    (.webm)
        </a>
       </li>
       <li class="table_list">
        Matroska (.mkv, Android 4.0+)
        <sup>
         4
        </sup>
       </li>
      </ul>
     </td>
    </tr>
   </table>
   <p class="table_footnote">
    1 Required for device implementations that include
camera hardware and define android.hardware.camera or
android.hardware.camera.front.
   </p>
   <p class="table_footnote">
    2 Required for device implementations except Android
Watch devices.
   </p>
   <p class="table_footnote">
    3 For acceptable quality of web video streaming and
video-conference services, device implementations SHOULD use a hardware VP8
codec that meets the
    <a href="http://www.webmproject.org/hardware/rtc-coding-requirements/">requirements</a>. 
   </p>
   <p class="table_footnote">
    4 Device implementations SHOULD support writing
Matroska WebM files.
   </p>
   <p class="table_footnote">
    5 STRONGLY RECOMMENDED for Android Automotive,
optional for Android Watch, and required for all other device types.
   </p>
   <p class="table_footnote">
    6 Applies only to Android Television device
implementations.
   </p>
   <h2 id="5_2_video_encoding">
    5.2. Video Encoding
   </h2>
   <div class="note">
    Video codecs are optional for Android Watch device implementations.
   </div>
   <p>
    H.264, VP8, VP9 and HEVC video encoders&mdash;
   </p>
   <ul>
    <li>
     MUST support dynamically configurable bitrates.
    </li>
    <li>
     SHOULD support variable frame rates, where video encoder SHOULD determine
instantaneous frame duration based on the timestamps of input buffers, and
allocate its bit bucket based on that frame duration.
    </li>
   </ul>
   <p>
    H.263 and MPEG-4 video encoder SHOULD support dynamically configurable
bitrates.
   </p>
   <p>
    All video encoders SHOULD meet the following bitrate targets over two sliding
windows:
   </p>
   <ul>
    <li>
     It SHOULD be not more than ~15% over the bitrate between intraframe
(I-frame) intervals.
    </li>
    <li>
     It SHOULD be not more than ~100% over the bitrate over a sliding window of
1 second.
    </li>
   </ul>
   <h3 id="5_2_1_h_263">
    5.2.1. H.263
   </h3>
   <p>
    Android device implementations with H.263 encoders MUST support Baseline Profile Level 45.
   </p>
   <h3 id="5_2_2_h-264">
    5.2.2. H-264
   </h3>
   <p>
    Android device implementations with H.264 codec support:
   </p>
   <ul>
    <li>
     MUST support Baseline Profile Level 3.
     <br/>
     However, support for ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock
    Ordering) and RS (Redundant Slices) is OPTIONAL. Moreover, to maintain
    compatibility with other Android devices, it is RECOMMENDED that ASO, FMO
    and RS are not used for Baseline Profile by encoders.
    </li>
    <li>
     MUST support the  SD (Standard Definition) video encoding profiles in the following table.
    </li>
    <li>
     SHOULD support Main Profile Level 4.
    </li>
    <li>
     SHOULD support the  HD (High Definition) video encoding profiles as indicated in the following table.
    </li>
    <li>
     In addition, Android Television devices are STRONGLY RECOMMENDED to encode HD 1080p video at 30 fps.
    </li>
   </ul>
   <table>
    <tr>
     <th>
     </th>
     <th>
      SD (Low quality)
     </th>
     <th>
      SD (High quality)
     </th>
     <th>
      HD 720p
      <sup>
       1
      </sup>
     </th>
     <th>
      HD 1080p
      <sup>
       1
      </sup>
     </th>
    </tr>
    <tr>
     <th>
      Video resolution
     </th>
     <td>
      320 x 240 px
     </td>
     <td>
      720 x 480 px
     </td>
     <td>
      1280 x 720 px
     </td>
     <td>
      1920 x 1080 px
     </td>
    </tr>
    <tr>
     <th>
      Video frame rate
     </th>
     <td>
      20 fps
     </td>
     <td>
      30 fps
     </td>
     <td>
      30 fps
     </td>
     <td>
      30 fps
     </td>
    </tr>
    <tr>
     <th>
      Video bitrate
     </th>
     <td>
      384 Kbps
     </td>
     <td>
      2 Mbps
     </td>
     <td>
      4 Mbps
     </td>
     <td>
      10 Mbps
     </td>
    </tr>
   </table>
   <p class="table_footnote">
    1 When supported by hardware, but STRONGLY RECOMMENDED
for Android Television devices.
   </p>
   <h3 id="5_2_3_vp8">
    5.2.3. VP8
   </h3>
   <p>
    Android device implementations with VP8 codec support MUST support the SD video
encoding profiles and SHOULD support the following HD (High Definition) video encoding profiles.
   </p>
   <table>
    <tr>
     <th>
     </th>
     <th>
      SD (Low quality)
     </th>
     <th>
      SD (High quality)
     </th>
     <th>
      HD 720p
      <sup>
       1
      </sup>
     </th>
     <th>
      HD 1080p
      <sup>
       1
      </sup>
     </th>
    </tr>
    <tr>
     <th>
      Video resolution
     </th>
     <td>
      320 x 180 px
     </td>
     <td>
      640 x 360 px
     </td>
     <td>
      1280 x 720 px
     </td>
     <td>
      1920 x 1080 px
     </td>
    </tr>
    <tr>
     <th>
      Video frame rate
     </th>
     <td>
      30 fps
     </td>
     <td>
      30 fps
     </td>
     <td>
      30 fps
     </td>
     <td>
      30 fps
     </td>
    </tr>
    <tr>
     <th>
      Video bitrate
     </th>
     <td>
      800 Kbps
     </td>
     <td>
      2 Mbps
     </td>
     <td>
      4 Mbps
     </td>
     <td>
      10 Mbps
     </td>
    </tr>
   </table>
   <p class="table_footnote">
    1 When supported by hardware.
   </p>
   <h2 id="5_3_video_decoding">
    5.3. Video Decoding
   </h2>
   <div class="note">
    Video codecs are optional for Android Watch device implementations.
   </div>
   <p>
    Device implementations&mdash;
   </p>
   <ul>
    <li>
     <p>
      MUST support dynamic video resolution and frame rate switching through the
    standard Android APIs within the same stream for all VP8, VP9, H.264, and
    H.265 codecs in real time and up to the maximum resolution supported by each
    codec on the device.
     </p>
    </li>
    <li>
     <p>
      Implementations that support the Dolby Vision decoder&mdash;
     </p>
    </li>
    <li>
     MUST provide a Dolby Vision-capable extractor.
    </li>
    <li>
     <p>
      MUST properly display Dolby Vision content on the device screen or on a
       standard video output port (e.g., HDMI).
     </p>
    </li>
    <li>
     <p>
      Implementations that provide a Dolby Vision-capable extractor MUST set the
    track index of backward-compatible base-layer(s) (if present) to be the same
    as the combined Dolby Vision layer's track index.
     </p>
    </li>
   </ul>
   <h3 id="5_3_1_mpeg-2">
    5.3.1. MPEG-2
   </h3>
   <p>
    Android device implementations with MPEG-2 decoders must support the Main
Profile High Level.
   </p>
   <h3 id="5_3_2_h_263">
    5.3.2. H.263
   </h3>
   <p>
    Android device implementations with H.263 decoders MUST support Baseline Profile
Level 30 and Level 45.
   </p>
   <h3 id="5_3_3_mpeg-4">
    5.3.3. MPEG-4
   </h3>
   <p>
    Android device implementations with MPEG-4 decoders MUST support Simple Profile
Level 3.
   </p>
   <h3 id="5_3_4_h_264">
    5.3.4. H.264
   </h3>
   <p>
    Android device implementations with H.264 decoders:
   </p>
   <ul>
    <li>
     MUST support Main Profile Level 3.1 and Baseline Profile.
     <br/>
     Support for ASO (Arbitrary Slice Ordering), FMO (Flexible Macroblock Ordering)
    and RS (Redundant Slices) is OPTIONAL.
    </li>
    <li>
     MUST be capable of decoding videos with the SD (Standard Definition)
    profiles listed in the following table and encoded with the Baseline Profile and
    Main Profile Level 3.1 (including 720p30).
    </li>
    <li>
     SHOULD be capable of decoding videos with the HD (High Definition) profiles
    as indicated in the following table.
    </li>
    <li>
     In addition, Android Television devices&mdash;
     <ul>
      <li>
       MUST support High Profile Level 4.2 and the HD 1080p60 decoding profile.
      </li>
      <li>
       MUST be capable of decoding videos with both HD profiles as indicated
    in the following table and encoded with either the Baseline Profile, Main
    Profile, or the High Profile Level 4.2
      </li>
     </ul>
    </li>
   </ul>
   <table>
    <tr>
     <th>
     </th>
     <th>
      SD (Low quality)
     </th>
     <th>
      SD (High quality)
     </th>
     <th>
      HD 720p
      <sup>
       1
      </sup>
     </th>
     <th>
      HD 1080p
      <sup>
       1
      </sup>
     </th>
    </tr>
    <tr>
     <th>
      Video resolution
     </th>
     <td>
      320 x 240 px
     </td>
     <td>
      720 x 480 px
     </td>
     <td>
      1280 x 720 px
     </td>
     <td>
      1920 x 1080 px
     </td>
    </tr>
    <tr>
     <th>
      Video frame rate
     </th>
     <td>
      30 fps
     </td>
     <td>
      30 fps
     </td>
     <td>
      60 fps
     </td>
     <td>
      30 fps (60 fps
      <sup>
       2
      </sup>
      )
     </td>
    </tr>
    <tr>
     <th>
      Video bitrate
     </th>
     <td>
      800 Kbps
     </td>
     <td>
      2 Mbps
     </td>
     <td>
      8 Mbps
     </td>
     <td>
      20 Mbps
     </td>
    </tr>
   </table>
   <p class="table_footnote">
    1 REQUIRED for when the height as reported by the
Display.getSupportedModes() method is equal or greater than the video resolution.
   </p>
   <p class="table_footnote">
    2 REQUIRED for Android Television device
implementations.
   </p>
   <h3 id="5_3_5_h_265_(hevc)">
    5.3.5. H.265 (HEVC)
   </h3>
   <p>
    Android device implementations, when supporting H.265 codec as described in
    <a href="#5_1_3_video_codecs">section 5.1.3</a>: 
   </p>
   <ul>
    <li>
     MUST support the Main Profile Level 3 Main tier and the SD video decoding profiles
    as indicated in the following table.
    </li>
    <li>
     SHOULD support the HD decoding profiles as indicated in the following table.
    </li>
    <li>
     MUST support the HD decoding profiles as indicated in the following table
    if there is a hardware decoder.
    </li>
    <li>
     In addition, Android Television devices:
    </li>
    <li>
     MUST support the HD 720p decoding profile.
    </li>
    <li>
     STRONGLY RECOMMENDED to support the HD 1080p decoding profile. If the HD 1080p
       decoding profile is supported, it MUST support the Main Profile Level 4.1 Main tier.
    </li>
    <li>
     SHOULD support the UHD decoding profile. If the UHD decoding profile is supported the
    codec MUST support Main10 Level 5 Main Tier profile.
    </li>
   </ul>
   <table>
    <tr>
     <th>
     </th>
     <th>
      SD (Low quality)
     </th>
     <th>
      SD (High quality)
     </th>
     <th>
      HD 720p
     </th>
     <th>
      HD 1080p
     </th>
     <th>
      UHD
     </th>
    </tr>
    <tr>
     <th>
      Video resolution
     </th>
     <td>
      352 x 288 px
     </td>
     <td>
      720 x 480 px
     </td>
     <td>
      1280 x 720 px
     </td>
     <td>
      1920 x 1080 px
     </td>
     <td>
      3840 x 2160 px
     </td>
    </tr>
    <tr>
     <th>
      Video frame rate
     </th>
     <td>
      30 fps
     </td>
     <td>
      30 fps
     </td>
     <td>
      30 fps
     </td>
     <td>
      30 fps (60 fps
      <sup>
       1
      </sup>
      )
     </td>
     <td>
      60 fps
     </td>
    </tr>
    <tr>
     <th>
      Video bitrate
     </th>
     <td>
      600 Kbps
     </td>
     <td>
      1.6 Mbps
     </td>
     <td>
      4 Mbps
     </td>
     <td>
      10 Mbps
     </td>
     <td>
      20 Mbps
     </td>
    </tr>
   </table>
   <p class="table_footnote">
    1 REQUIRED for Android Television device
implementations with H.265 hardware decoding.
   </p>
   <h3 id="5_3_6_vp8">
    5.3.6. VP8
   </h3>
   <p>
    Android device implementations, when supporting VP8 codec as described in
    <a href="https://source.android.com/compatibility/android-cdd.html#5_1_3_video_codecs">section 5.1.3</a>: 
   </p>
   <ul>
    <li>
     MUST support the SD decoding profiles in the following table.
    </li>
    <li>
     SHOULD support the HD decoding profiles in the following table.
    </li>
    <li>
     Android Television devices MUST support the HD 1080p60 decoding profile.
    </li>
   </ul>
   <table>
    <tr>
     <th>
     </th>
     <th>
      SD (Low quality)
     </th>
     <th>
      SD (High quality)
     </th>
     <th>
      HD 720p
      <sup>
       1
      </sup>
     </th>
     <th>
      HD 1080p
      <sup>
       1
      </sup>
     </th>
    </tr>
    <tr>
     <th>
      Video resolution
     </th>
     <td>
      320 x 180 px
     </td>
     <td>
      640 x 360 px
     </td>
     <td>
      1280 x 720 px
     </td>
     <td>
      1920 x 1080 px
     </td>
    </tr>
    <tr>
     <th>
      Video frame rate
     </th>
     <td>
      30 fps
     </td>
     <td>
      30 fps
     </td>
     <td>
      30 fps (60 fps
      <sup>
       2
      </sup>
      )
     </td>
     <td>
      30 (60 fps
      <sup>
       2
      </sup>
      )
     </td>
    </tr>
    <tr>
     <th>
      Video bitrate
     </th>
     <td>
      800 Kbps
     </td>
     <td>
      2 Mbps
     </td>
     <td>
      8 Mbps
     </td>
     <td>
      20 Mbps
     </td>
    </tr>
   </table>
   <p class="table_footnote">
    1 REQUIRED for when the height as reported by the
Display.getSupportedModes() method is equal or greater than the video resolution.
   </p>
   <p class="table_footnote">
    2 REQUIRED for Android Television device
implementations.
   </p>
   <h3 id="5_3_7_vp9">
    5.3.7. VP9
   </h3>
   <p>
    Android device implementations, when supporting VP9 codec as described in
    <a href="https://source.android.com/compatibility/android-cdd.html#5_1_3_video_codecs">section 5.1.3</a>: 
   </p>
   <ul>
    <li>
     MUST support the SD video decoding profiles as indicated in the following table.
    </li>
    <li>
     SHOULD support the HD decoding profiles as indicated in the following table.
    </li>
    <li>
     MUST support the HD decoding profiles as indicated in the following table,
    if there is a hardware decoder.
    </li>
    <li>
     <p>
      In addition, Android Television devices:
     </p>
     <ul>
      <li>
       MUST support the HD 720p decoding profile.
      </li>
      <li>
       STRONGLY RECOMMENDED to support the HD 1080p decoding profile.
      </li>
      <li>
       SHOULD support the UHD decoding profile. If the UHD video decoding
    profile is supported, it MUST support 8-bit color depth and SHOULD
    support VP9 Profile 2 (10-bit).
      </li>
     </ul>
    </li>
   </ul>
   <table>
    <tr>
     <th>
     </th>
     <th>
      SD (Low quality)
     </th>
     <th>
      SD (High quality)
     </th>
     <th>
      HD 720p
     </th>
     <th>
      HD 1080p
     </th>
     <th>
      UHD
     </th>
    </tr>
    <tr>
     <th>
      Video resolution
     </th>
     <td>
      320 x 180 px
     </td>
     <td>
      640 x 360 px
     </td>
     <td>
      1280 x 720 px
     </td>
     <td>
      1920 x 1080 px
     </td>
     <td>
      3840 x 2160 px
     </td>
    </tr>
    <tr>
     <th>
      Video frame rate
     </th>
     <td>
      30 fps
     </td>
     <td>
      30 fps
     </td>
     <td>
      30 fps
     </td>
     <td>
      30 fps (60 fps
      <sup>
       1
      </sup>
      )
     </td>
     <td>
      60 fps
     </td>
    </tr>
    <tr>
     <th>
      Video bitrate
     </th>
     <td>
      600 Kbps
     </td>
     <td>
      1.6 Mbps
     </td>
     <td>
      4 Mbps
     </td>
     <td>
      5 Mbps
     </td>
     <td>
      20 Mbps
     </td>
    </tr>
   </table>
   <p class="table_footnote">
    1 REQUIRED for Android Television
device implementations with VP9 hardware decoding.
   </p>
   <h2 id="5_4_audio_recording">
    5.4. Audio Recording
   </h2>
   <p>
    While some of the requirements outlined in this section are stated as SHOULD
since Android 4.3, the Compatibility Definition for a future version is planned
to change these to MUST. Existing and new Android devices are
    <strong>
     STRONGLY
RECOMMENDED
    </strong>
    to meet these requirements that are stated as SHOULD, or they
will not be able to attain Android compatibility when upgraded to the future
version.
   </p>
   <h3 id="5_4_1_raw_audio_capture">
    5.4.1. Raw Audio Capture
   </h3>
   <p>
    Device implementations that declare android.hardware.microphone MUST allow
capture of raw audio content with the following characteristics:
   </p>
   <ul>
    <li>
     <strong>
      Format
     </strong>
     : Linear PCM, 16-bit
    </li>
    <li>
     <strong>
      Sampling rates
     </strong>
     : 8000, 11025, 16000, 44100
    </li>
    <li>
     <strong>
      Channels
     </strong>
     : Mono
    </li>
   </ul>
   <p>
    The capture for the above sample rates MUST be done without up-sampling, and
any down-sampling MUST include an appropriate anti-aliasing filter.
   </p>
   <p>
    Device implementations that declare android.hardware.microphone SHOULD allow
capture of raw audio content with the following characteristics:
   </p>
   <ul>
    <li>
     <strong>
      Format
     </strong>
     : Linear PCM, 16-bit
    </li>
    <li>
     <strong>
      Sampling rates
     </strong>
     : 22050, 48000
    </li>
    <li>
     <strong>
      Channels
     </strong>
     : Stereo
    </li>
   </ul>
   <p>
    If capture for the above sample rates is supported, then the capture MUST be
done without up-sampling at any ratio higher than 16000:22050 or 44100:48000.
Any up-sampling or down-sampling MUST include an appropriate anti-aliasing
filter.
   </p>
   <h3 id="5_4_2_capture_for_voice_recognition">
    5.4.2. Capture for Voice Recognition
   </h3>
   <p>
    The android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION audio source MUST
support capture at one of the sampling rates, 44100 and 48000.
   </p>
   <p>
    In addition to the above recording specifications, when an application has
started recording an audio stream using the
android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION audio source:
   </p>
   <ul>
    <li>
     The device SHOULD exhibit approximately flat amplitude versus frequency
    characteristics: specifically, &plusmn;3 dB, from 100 Hz to 4000 Hz.
    </li>
    <li>
     Audio input sensitivity SHOULD be set such that a 90 dB sound power level
    (SPL) source at 1000 Hz yields RMS of 2500 for 16-bit samples.
    </li>
    <li>
     PCM amplitude levels SHOULD linearly track input SPL changes over at least a
    30 dB range from -18 dB to +12 dB re 90 dB SPL at the microphone.
    </li>
    <li>
     Total harmonic distortion SHOULD be less than 1% for 1 kHz at 90 dB SPL
    input level at the microphone.
    </li>
    <li>
     Noise reduction processing, if present, MUST be disabled.
    </li>
    <li>
     Automatic gain control, if present, MUST be disabled.
    </li>
   </ul>
   <p>
    If the platform supports noise suppression technologies tuned for speech
recognition, the effect MUST be controllable from the
android.media.audiofx.NoiseSuppressor API. Moreover, the UUID field for the
noise suppressor&rsquo;s effect descriptor MUST uniquely identify each implementation
of the noise suppression technology.
   </p>
   <h3 id="5_4_3_capture_for_rerouting_of_playback">
    5.4.3. Capture for Rerouting of Playback
   </h3>
   <p>
    The android.media.MediaRecorder.AudioSource class includes the REMOTE_SUBMIX
audio source. Devices that declare android.hardware.audio.output MUST properly
implement the REMOTE_SUBMIX audio source so that when an application uses the
android.media.AudioRecord API to record from this audio source, it can capture
a mix of all audio streams except for the following:
   </p>
   <ul>
    <li>
     STREAM_RING
    </li>
    <li>
     STREAM_ALARM
    </li>
    <li>
     STREAM_NOTIFICATION
    </li>
   </ul>
   <h2 id="5_5_audio_playback">
    5.5. Audio Playback
   </h2>
   <p>
    Device implementations that declare android.hardware.audio.output MUST conform
to the requirements in this section.
   </p>
   <h3 id="5_5_1_raw_audio_playback">
    5.5.1. Raw Audio Playback
   </h3>
   <p>
    The device MUST allow playback of raw audio content with the following
characteristics:
   </p>
   <ul>
    <li>
     <strong>
      Format
     </strong>
     : Linear PCM, 16-bit
    </li>
    <li>
     <strong>
      Sampling rates
     </strong>
     : 8000, 11025, 16000, 22050, 32000, 44100
    </li>
    <li>
     <strong>
      Channels
     </strong>
     : Mono, Stereo
    </li>
   </ul>
   <p>
    The device SHOULD allow playback of raw audio content with the following
characteristics:
   </p>
   <ul>
    <li>
     <strong>
      Sampling rates
     </strong>
     : 24000, 48000
    </li>
   </ul>
   <h3 id="5_5_2_audio_effects">
    5.5.2. Audio Effects
   </h3>
   <p>
    Android provides an
    <a href="http://developer.android.com/reference/android/media/audiofx/AudioEffect.html">
     API for audio effects</a> for device implementations. Device implementations that declare the feature
android.hardware.audio.output:
   </p>
   <ul>
    <li>
     MUST support the EFFECT_TYPE_EQUALIZER and EFFECT_TYPE_LOUDNESS_ENHANCER
implementations controllable through the AudioEffect subclasses Equalizer,
LoudnessEnhancer.
    </li>
    <li>
     MUST support the visualizer API implementation, controllable through the
Visualizer class.
    </li>
    <li>
     SHOULD support the EFFECT_TYPE_BASS_BOOST, EFFECT_TYPE_ENV_REVERB,
EFFECT_TYPE_PRESET_REVERB, and EFFECT_TYPE_VIRTUALIZER implementations
controllable through the AudioEffect sub-classes BassBoost,
EnvironmentalReverb, PresetReverb, and Virtualizer.
    </li>
   </ul>
   <h3 id="5_5_3_audio_output_volume">
    5.5.3. Audio Output Volume
   </h3>
   <p>
    Android Television device implementations MUST include support for system
Master Volume and digital audio output volume attenuation on supported outputs,
except for compressed audio passthrough output (where no audio decoding is done
on the device).
   </p>
   <p>
    Android Automotive device implementations SHOULD allow adjusting audio volume
separately per each audio stream using the content type or usage as defined
by
    <a href="" title="http://developer.android.com/reference/android/media/AudioAttributes.html">AudioAttributes</a> and car audio usage as publicly defined in
    <code>
     android.car.CarAudioManager
    </code>.
   </p>
   <h2 id="5_6_audio_latency">
    5.6. Audio Latency
   </h2>
   <p>
    Audio latency is the time delay as an audio signal passes through a system.
Many classes of applications rely on short latencies, to achieve real-time
sound effects.
   </p>
   <p>
    For the purposes of this section, use the following definitions:
   </p>
   <ul>
    <li>
     <strong>output latency</strong>. The interval between when an application writes a frame
of PCM-coded data and when the corresponding sound is presented to environment at an on-device transducer
or signal leaves the device via a port and can be observed externally.
    </li>
    <li>
     <strong>cold output latency</strong>. The output latency for the first frame, when the
audio output system has been idle and powered down prior to the request.
    </li>
    <li>
     <strong> continuous output latency</strong>. The output latency for subsequent frames,
after the device is playing audio.
    </li>
    <li>
     <strong>input latency</strong>. The interval between when a sound is presented by environment to device
at an on-device transducer or signal enters the device via a port
and when an application reads the corresponding frame of
PCM-coded data.
    </li>
    <li>
     <strong>lost input</strong>. The initial portion of an input signal that is unusable or unavailable. </li>
    <li>
     <strong>cold input latency</strong>. The sum of lost input time and the input latency
for the first frame, when the audio input system has been idle and powered down
prior to the request.
    </li>
    <li>
     <strong> continuous input latency</strong>. The input latency for subsequent frames,
while the device is capturing audio.
    </li>
    <li>
     <strong> cold output jitter</strong>. The variability among separate measurements of cold
output latency values.
    </li>
    <li>
     <strong> cold input jitter</strong>. The variability among separate measurements of cold
input latency values.
    </li>
    <li>
     <strong> continuous round-trip latency</strong>. The sum of continuous input latency plus
continuous output latency plus one buffer period. The buffer period allows
time for the app to process the signal and time for the app to mitigate phase difference
between input and output streams.
    </li>
    <li>
     <strong> OpenSL ES PCM buffer queue API</strong>. The set of PCM-related OpenSL ES APIs
within
     <a href="https://developer.android.com/ndk/index.html">Android NDK</a>. 
    </li>
   </ul>
   <p>
    Device implementations that declare android.hardware.audio.output are STRONGLY
RECOMMENDED to meet or exceed these audio output requirements:
   </p>
   <ul>
    <li>
     cold output latency of 100 milliseconds or less
    </li>
    <li>
     continuous output latency of 45 milliseconds or less
    </li>
    <li>
     minimize the cold output jitter
    </li>
   </ul>
   <p>
    If a device implementation meets the requirements of this section after any
initial calibration when using the OpenSL ES PCM buffer queue API, for
continuous output latency and cold output latency over at least one supported
audio output device, it is STRONGLY RECOMMENDED to report support for
low-latency audio, by reporting the feature android.hardware.audio.low_latency
via the
    <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">android.content.pm.PackageManager</a> class. Conversely, if the device implementation does not meet these
requirements it MUST NOT report support for low-latency audio.
   </p>
   <p>
    Device implementations that include android.hardware.microphone are STRONGLY
RECOMMENDED to meet these input audio requirements:
   </p>
   <ul>
    <li>
     cold input latency of 100 milliseconds or less
    </li>
    <li>
     continuous input latency of 30 milliseconds or less
    </li>
    <li>
     continuous round-trip latency of 50 milliseconds or less
    </li>
    <li>
     minimize the cold input jitter
    </li>
   </ul>
   <h2 id="5_7_network_protocols">
    5.7. Network Protocols
   </h2>
   <p>
    Devices MUST support the
    <a href="http://developer.android.com/guide/appendix/media-formats.html"> media network protocols</a> for
audio and video playback as specified in the Android SDK documentation.
Specifically, devices MUST support the following media network protocols:
   </p>
   <ul>
    <li>
     <p>
      HTTP(S) progressive streaming
      <br/>
      All required codecs and container formats in
      <a href="#5_1_media_codecs">section 5.1</a> MUST
    be supported over HTTP(S)
     </p>
    </li>
    <li>
     <p>
      <a href="http://tools.ietf.org/html/draft-pantos-http-live-streaming-07">HTTP Live Streaming draft protocol, Version 7</a> <br/>
      The following media segment formats MUST be supported:
     </p>
    </li>
   </ul>
   <table>
    <tr>
     <th>
      Segment formats
     </th>
     <th>
      Reference(s)
     </th>
     <th>
      Required codec support
     </th>
    </tr>
    <tr id="mp2t">
     <td>
      MPEG-2 Transport Stream
     </td>
     <td>
      <a href="http://www.iso.org/iso/catalogue_detail?csnumber=44169">ISO 13818</a> </td>
     <td>
      Video codecs:
      <ul>
       <li class="table_list">
        H264 AVC
       </li>
       <li class="table_list">
        MPEG-4 SP
       </li>
       <li class="table_list">
        MPEG-2
       </li>
      </ul>
      See
      <a href="#5_1_3_video_codecs">section 5.1.3</a> for details on H264 AVC, MPEG2-4 SP,
      <br/>
      and MPEG-2.
      <p>
       Audio codecs:
      </p>
      <ul>
       <li class="table_list">
        AAC
       </li>
      </ul>
      See
      <a href="#5_1_1_audio_codecs">section 5.1.1</a> for details on AAC and its variants.
     </td>
    </tr>
    <tr>
     <td>
      AAC with ADTS framing and ID3 tags
     </td>
     <td>
      <a href="http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=43345">ISO 13818-7</a> </td>
     <td>
      See
      <a href="#5_1_1_audio_codecs">section 5.1.1</a> for details on AAC and its variants
     </td>
    </tr>
    <tr>
     <td>
      WebVTT
     </td>
     <td>
      <a href="http://dev.w3.org/html5/webvtt/">WebVTT</a> </td>
     <td>
     </td>
    </tr>
   </table>
   <ul>
    <li>
     <p>
      RTSP (RTP, SDP)
     </p>
     <p>
      The following RTP audio video profile and related codecs MUST be supported.
For exceptions please see the table footnotes in
      <a href="#5_1_media_codecs">section 5.1</a>. 
     </p>
    </li>
   </ul>
   <table>
    <tr>
     <th>
      Profile name
     </th>
     <th>
      Reference(s)
     </th>
     <th>
      Required codec support
     </th>
    </tr>
    <tr>
     <td>
      H264 AVC
     </td>
     <td>
      <a href="https://tools.ietf.org/html/rfc6184">RFC 6184</a> </td>
     <td>
      See
      <a href="#5_1_3_video_codecs">section 5.1.3</a> for details on H264 AVC
     </td>
    </tr>
    <tr>
     <td>
      MP4A-LATM
     </td>
     <td>
      <a href="https://tools.ietf.org/html/rfc6416">RFC 6416</a> </td>
     <td>
      See
      <a href="#5_1_1_audio_codecs">section 5.1.1</a> for details on AAC and its variants
     </td>
    </tr>
    <tr>
     <td>
      H263-1998
     </td>
     <td>
      <a href="https://tools.ietf.org/html/rfc3551">RFC 3551</a> <br/>
      <a href="https://tools.ietf.org/html/rfc4629">RFC 4629</a> <br/>
      <a href="https://tools.ietf.org/html/rfc2190">RFC 2190</a> </td>
     <td>
      See
      <a href="#5_1_3_video_codecs">section 5.1.3</a> for details on H263
     </td>
    </tr>
    <tr>
     <td>
      H263-2000
     </td>
     <td>
      <a href="https://tools.ietf.org/html/rfc4629">RFC 4629</a> </td>
     <td>
      See
      <a href="#5_1_3_video_codecs">section 5.1.3</a> for details on H263
     </td>
    </tr>
    <tr>
     <td>
      AMR
     </td>
     <td>
      <a href="https://tools.ietf.org/html/rfc4867">RFC 4867</a> </td>
     <td>
      See
      <a href="#5_1_1_audio_codecs">section 5.1.1</a> for details on AMR-NB
     </td>
    </tr>
    <tr>
     <td>
      AMR-WB
     </td>
     <td>
      <a href="https://tools.ietf.org/html/rfc4867">RFC 4867</a> </td>
     <td>
      See
      <a href="#5_1_1_audio_codecs">section 5.1.1</a> for details on AMR-WB
     </td>
    </tr>
    <tr>
     <td>
      MP4V-ES
     </td>
     <td>
      <a href="https://tools.ietf.org/html/rfc6416">RFC 6416</a> </td>
     <td>
      See
      <a href="#5_1_3_video_codecs">section 5.1.3</a> for details on MPEG-4 SP
     </td>
    </tr>
    <tr>
     <td>
      mpeg4-generic
     </td>
     <td>
      <a href="https://tools.ietf.org/html/rfc3640">RFC 3640</a> </td>
     <td>
      See
      <a href="#5_1_1_audio_codecs">section 5.1.1</a> for details on AAC and its variants
     </td>
    </tr>
    <tr>
     <td>
      MP2T
     </td>
     <td>
      <a href="https://tools.ietf.org/html/rfc2250">RFC 2250</a> </td>
     <td>
      See
      <a href="#mp2t">MPEG-2 Transport Stream</a> underneath HTTP Live Streaming for details
     </td>
    </tr>
   </table>
   <h2 id="5_8_secure_media">
    5.8. Secure Media
   </h2>
   <p>
    Device implementations that support secure video output and are capable of
supporting secure surfaces MUST declare support for Display.FLAG_SECURE. Device
implementations that declare support for Display.FLAG_SECURE, if they support a
wireless display protocol, MUST secure the link with a cryptographically strong
mechanism such as HDCP 2.x or higher for Miracast wireless displays. Similarly
if they support a wired external display, the device implementations MUST
support HDCP 1.2 or higher. Android Television device implementations MUST
support HDCP 2.2 for devices supporting 4K resolution and HDCP 1.4 or above for
lower resolutions. The upstream Android open source implementation includes
support for wireless (Miracast) and wired (HDMI) displays that satisfies this
requirement.
   </p>
   <h2 id="5_9_musical_instrument_digital_interface_(midi)">
    5.9. Musical Instrument Digital Interface (MIDI)
   </h2>
   <p>
    If a device implementation supports the inter-app MIDI software transport
(virtual MIDI devices), and it supports MIDI over
    <em>
     all
    </em>
    of the following
MIDI-capable hardware transports for which it provides generic non-MIDI
connectivity, it is STRONGLY RECOMMENDED to report support for feature
android.software.midi via the
    <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">android.content.pm.PackageManager</a> class.
   </p>
   <p>
    The MIDI-capable hardware transports are:
   </p>
   <ul>
    <li>
     USB host mode (section 7.7 USB)
    </li>
    <li>
     USB peripheral mode (section 7.7 USB)
    </li>
    <li>
     MIDI over Bluetooth LE acting in central role (section 7.4.3 Bluetooth)
    </li>
   </ul>
   <p>
    Conversely, if the device implementation provides generic non-MIDI connectivity
over a particular MIDI-capable hardware transport listed above, but does not
support MIDI over that hardware transport, it MUST NOT report support for
feature android.software.midi.
   </p>
   <h2 id="5_10_professional_audio">
    5.10. Professional Audio
   </h2>
   <p>
    If a device implementation meets
    <em>
     all
    </em>
    of the following requirements, it is
STRONGLY RECOMMENDED to report support for feature android.hardware.audio.pro
via the
    <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">android.content.pm.PackageManager</a> class.
   </p>
   <ul>
    <li>
     The device implementation MUST report support for feature
android.hardware.audio.low_latency.
    </li>
    <li>
     The continuous round-trip audio latency, as defined in section 5.6 Audio
Latency, MUST be 20 milliseconds or less and SHOULD be 10 milliseconds or less
over at least one supported path.
    </li>
    <li>
     If the device includes a 4 conductor 3.5mm audio jack, the continuous
round-trip audio latency MUST be 20 milliseconds or less over the audio jack
path, and SHOULD be 10 milliseconds or less over at the audio jack path.
    </li>
    <li>
     The device implementation MUST include a USB port(s) supporting USB host
mode and USB peripheral mode.
    </li>
    <li>
     The USB host mode MUST implement the USB audio class.
    </li>
    <li>
     If the device includes an HDMI port, the device implementation MUST support
output in stereo and eight channels at 20-bit or 24-bit depth and 192 kHz
without bit-depth loss or resampling.
    </li>
    <li>
     The device implementation MUST report support for feature
android.software.midi.
    </li>
    <li>
     If the device includes a 4 conductor 3.5mm audio jack, the device
implementation is STRONGLY RECOMMENDED to comply with section
     <a href="https://source.android.com/accessories/headset/specification.html#mobile_device_jack_specifications">
      Mobile device (jack) specifications</a> of the
     <a href="https://source.android.com/accessories/headset/specification.html">Wired Audio Headset Specification (v1.1)</a>. 
    </li>
   </ul>
   <p>
    Latencies and USB audio requirements MUST be met using the
    <a href="https://developer.android.com/ndk/guides/audio/opensl-for-android.html">OpenSL ES</a> PCM buffer queue API.
   </p>
   <p>
    In addition, a device implementation that reports support for this feature SHOULD:
   </p>
   <ul>
    <li>
     Provide a sustainable level of CPU performance while audio is active.
    </li>
    <li>
     Minimize audio clock inaccuracy and drift relative to standard time.
    </li>
    <li>
     Minimize audio clock drift relative to the CPU
     <code>
      CLOCK_MONOTONIC
     </code>
     when both are active.
    </li>
    <li>
     Minimize audio latency over on-device transducers.
    </li>
    <li>
     Minimize audio latency over USB digital audio.
    </li>
    <li>
     Document audio latency measurements over all paths.
    </li>
    <li>
     Minimize jitter in audio buffer completion callback entry times, as this affects usable percentage of full CPU bandwidth by the callback.
    </li>
    <li>
     Provide zero audio underruns (output) or overruns (input) under normal use at reported latency.
    </li>
    <li>
     Provide zero inter-channel latency difference.
    </li>
    <li>
     Minimize MIDI mean latency over all transports.
    </li>
    <li>
     Minimize MIDI latency variability under load (jitter) over all transports.
    </li>
    <li>
     Provide accurate MIDI timestamps over all transports.
    </li>
    <li>
     Minimize audio signal noise over on-device transducers, including the period immediately after cold start.
    </li>
    <li>
     Provide zero audio clock difference between the input and output sides of corresponding
    end-points, when both are active.  Examples of corresponding end-points include
    the on-device microphone and speaker, or the audio jack input and output.
    </li>
    <li>
     Handle audio buffer completion callbacks for the input and output sides of corresponding
    end-points on the same thread when both are active, and enter the output callback immediately
    after the return from the input callback.  Or if it is not feasible to handle the callbacks
    on the same thread, then enter the output callback shortly after entering the input callback
    to permit the application to have a consistent timing of the input and output sides.
    </li>
    <li>
     Minimize the phase difference between HAL audio buffering for the input and output
    sides of corresponding end-points.
    </li>
    <li>
     Minimize touch latency.
    </li>
    <li>
     Minimize touch latency variability under load (jitter).
    </li>
   </ul>
   <h2 id="5_11_capture_for_unprocessed">
    5.11. Capture for Unprocessed
   </h2>
   <p>
    Starting from Android 7.0,
a new recording source has been added. It can be accessed using
the
    <code>
     android.media.MediaRecorder.AudioSource.UNPROCESSED
    </code>
    audio
source. In OpenSL ES, it can be accessed with the record preset
    <code>
     SL_ANDROID_RECORDING_PRESET_UNPROCESSED
    </code>.
   </p>
   <p>
    A device MUST satisfy all of the following requirements to report support
of the unprocessed audio source via the
    <code>
     android.media.AudioManager
    </code>
    property
    <a href="http://developer.android.com/reference/android/media/AudioManager.html#PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED">PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED</a>: 
   </p>
   <ul>
    <li>
     <p>
      The device MUST exhibit approximately flat amplitude-versus-frequency
characteristics in the mid-frequency range: specifically &plusmn;10dB from
100 Hz to 7000 Hz.
     </p>
    </li>
    <li>
     <p>
      The device MUST exhibit amplitude levels in the low frequency range:
specifically from &plusmn;20 dB from 5 Hz to 100 Hz compared to the mid-frequency range.
     </p>
    </li>
    <li>
     <p>
      The device MUST exhibit amplitude levels in the high frequency range:
specifically from &plusmn;30 dB from 4000 Hz to 22 KHz compared to the mid-frequency range.
     </p>
    </li>
    <li>
     <p>
      Audio input sensitivity MUST be set such that a 1000 Hz sinusoidal tone
source played at 94 dB Sound Pressure Level (SPL)
yields a response with RMS of 520 for 16
bit-samples (or -36 dB Full Scale for floating point/double precision
samples).
     </p>
    </li>
    <li>
     <p>
      SNR &gt; 60 dB (difference between 94 dB SPL and equivalent SPL of self
noise, A-weighted).
     </p>
    </li>
    <li>
     <p>
      Total harmonic distortion MUST be less than 1% for 1 kHZ at 90 dB SPL
input level at the microphone.
     </p>
    </li>
    <li>
     <p>
      The only signal processing allowed in the path is a level multiplier
to bring the level to desired range. This level multiplier MUST NOT
introduce delay or latency to the signal path.
     </p>
    </li>
    <li>
     <p>
      No other signal processing is allowed in the path, such as Automatic Gain
Control, High Pass Filter, or Echo Cancellation. If any signal processing
is present in the architecture for any reason, it MUST be disabled and
effectively introduce zero delay or extra latency to the signal path.
     </p>
    </li>
   </ul>
   <p>
    All SPL measurements are made directly next to the microphone under test.
   </p>
   <p>
    For multiple microphone configurations, these requirements apply to each
microphone.
   </p>
   <p>
    It is STRONGLY RECOMMENDED that a device satisfy as many of the requirements for the signal
path for the unprocessed recording source; however, a device must satisfy
    <em>
     all
    </em>
    of these
requirements, listed above, if it claims to support the unprocessed audio source.
   </p>
   <h1 id="6_developer_tools_and_options_compatibility">
    6. Developer Tools and Options Compatibility
   </h1>
   <h2 id="6_1_developer_tools">
    6.1. Developer Tools
   </h2>
   <p>
    Device implementations MUST support the Android Developer Tools provided in the
Android SDK. Android compatible devices MUST be compatible with:
   </p>
   <ul>
    <li>
     <a href="http://developer.android.com/tools/help/adb.html">
      <strong>
       Android Debug Bridge (adb)
      </strong>
     </a>
     <ul>
      <li>
       Device implementations MUST support all adb functions as documented in
the Android SDK including
       <a href="https://source.android.com/devices/input/diagnostics.html">dumpsys</a>. 
      </li>
      <li>
       The device-side adb daemon MUST be inactive by default and there MUST
be a user-accessible mechanism to turn on the Android Debug Bridge. If a device
implementation omits USB peripheral mode, it MUST implement the Android Debug
Bridge via local-area network (such as Ethernet or 802.11).
      </li>
      <li>
       Android includes support for secure adb. Secure adb enables adb on
known authenticated hosts. Device implementations MUST support secure adb.
      </li>
     </ul>
    </li>
    <li>
     <a href="http://developer.android.com/tools/debugging/ddms.html">
      <strong>
       Dalvik Debug Monitor Service (ddms)
      </strong>
     </a>
     <ul>
      <li>
       Device implementations MUST support all ddms features as documented in the Android SDK.
      </li>
      <li>
       As ddms uses adb, support for ddms SHOULD be inactive by default, but MUST be supported whenever the user has activated the Android Debug Bridge, as above.
      </li>
     </ul>
    </li>
    <li>
     <a href="http://developer.android.com/tools/help/monkey.html">
      <strong>
       Monkey
      </strong>
     </a>
     . Device
implementations MUST include the Monkey framework, and make it available for
applications to use.
    </li>
    <li>
     <a href="http://developer.android.com/tools/help/systrace.html">
      <strong>
       SysTrace
      </strong>
     </a>
     <ul>
      <li>
       Device implementations MUST support systrace tool as documented in the
Android SDK. Systrace must be inactive by default, and there MUST be a
user-accessible mechanism to turn on Systrace.
      </li>
      <li>
       Most Linux-based systems and Apple Macintosh systems recognize Android
devices using the standard Android SDK tools, without additional support;
however Microsoft Windows systems typically require a driver for new Android
devices. (For instance, new vendor IDs and sometimes new device IDs require
custom USB drivers for Windows systems.)
      </li>
      <li>
       If a device implementation is unrecognized by the adb tool as provided
in the standard Android SDK, device implementers MUST provide Windows drivers
allowing developers to connect to the device using the adb protocol. These
drivers MUST be provided for Windows XP, Windows Vista, Windows 7, Windows 8,
and Windows 10 in both 32-bit and 64-bit versions.
      </li>
     </ul>
    </li>
   </ul>
   <h2 id="6_2_developer_options">
    6.2. Developer Options
   </h2>
   <p>
    Android includes support for developers to configure application
development-related settings. Device implementations MUST honor the
    <a href="http://developer.android.com/reference/android/provider/Settings.html#ACTION_APPLICATION_DEVELOPMENT_SETTINGS">android.settings.APPLICATION_DEVELOPMENT_SETTINGS</a> intent to show application development-related settings The upstream Android
implementation hides the Developer Options menu by default and enables users to
launch Developer Options after pressing seven (7) times on the
    <strong>
     Settings
    </strong>
    &gt;
    <strong>
     About Device
    </strong>
    &gt;
    <strong>
     Build Number
    </strong>
    menu item. Device implementations MUST
provide a consistent experience for Developer Options. Specifically, device
implementations MUST hide Developer Options by default and MUST provide a
mechanism to enable Developer Options that is consistent with the upstream
Android implementation.
   </p>
   <div class="note">
    Android Automotive implementations MAY limit access to the Developer Options
menu by visually hiding or disabling the menu when the vehicle is in motion.
   </div>
   <h1 id="7_hardware_compatibility">
    7. Hardware Compatibility
   </h1>
   <p>
    If a device includes a particular hardware component that has a corresponding
API for third-party developers, the device implementation MUST implement that
API as described in the Android SDK documentation. If an API in the SDK
interacts with a hardware component that is stated to be optional and the
device implementation does not possess that component:
   </p>
   <ul>
    <li>
     Complete class definitions (as documented by the SDK) for the component
APIs MUST still be presented.
    </li>
    <li>
     The API&rsquo;s behaviors MUST be implemented as no-ops in some reasonable
fashion.
    </li>
    <li>
     API methods MUST return null values where permitted by the SDK
documentation.
    </li>
    <li>
     API methods MUST return no-op implementations of classes where null values
are not permitted by the SDK documentation.
    </li>
    <li>
     API methods MUST NOT throw exceptions not documented by the SDK
documentation.
    </li>
   </ul>
   <p>
    A typical example of a scenario where these requirements apply is the telephony
API: Even on non-phone devices, these APIs must be implemented as reasonable
no-ops.
   </p>
   <p>
    Device implementations MUST consistently report accurate hardware configuration
information via the getSystemAvailableFeatures() and hasSystemFeature(String)
methods on the
    <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">android.content.pm.PackageManager</a> class for the same build fingerprint.
   </p>
   <h2 id="7_1_display_and_graphics">
    7.1. Display and Graphics
   </h2>
   <p>
    Android includes facilities that automatically adjust application assets and UI
layouts appropriately for the device to ensure that third-party applications
run well on a
    <a href="http://developer.android.com/guide/practices/screens_support.html">
     variety of hardware configurations</a>.
Devices MUST properly implement these APIs and behaviors, as detailed in this
section.
   </p>
   <p>
    The units referenced by the requirements in this section are defined as follows:
   </p>
   <ul>
    <li>
     <strong>
      physical diagonal size
     </strong>
     . The distance in inches between two opposing
corners of the illuminated portion of the display.
    </li>
    <li>
     <strong>
      dots per inch (dpi)
     </strong>
     . The number of pixels encompassed by a linear
horizontal or vertical span of 1&rdquo;. Where dpi values are listed, both horizontal
and vertical dpi must fall within the range.
    </li>
    <li>
     <strong>
      aspect ratio
     </strong>
     . The ratio of the pixels of the longer dimension to the
shorter dimension of the screen. For example, a display of 480x854 pixels would
be 854/480 = 1.779, or roughly &ldquo;16:9&rdquo;.
    </li>
    <li>
     <strong>
      density-independent pixel (dp)
     </strong>
     . The virtual pixel unit normalized to a
160 dpi screen, calculated as: pixels = dps * (density/160).
    </li>
   </ul>
   <h3 id="7_1_1_screen_configuration">
    7.1.1. Screen Configuration
   </h3>
   <h4 id="7_1_1_1_screen_size">
    7.1.1.1. Screen Size
   </h4>
   <div class="note">
    Android Watch devices (detailed in
    <a href="#2_device_types">section 2</a> ) MAY have
smaller screen sizes as described in this section.
   </div>
   <p>
    The Android UI framework supports a variety of different screen sizes, and
allows applications to query the device screen size (aka &ldquo;screen layout") via
android.content.res.Configuration.screenLayout with the SCREENLAYOUT_SIZE_MASK.
Device implementations MUST report the correct
    <a href="http://developer.android.com/guide/practices/screens_support.html">
     screen size</a> as
defined in the Android SDK documentation and determined by the upstream Android
platform. Specifically, device implementations MUST report the correct screen
size according to the following logical density-independent pixel (dp) screen
dimensions.
   </p>
   <ul>
    <li>
     Devices MUST have screen sizes of at least 426 dp x 320 dp (&lsquo;small&rsquo;),
unless it is an Android Watch device.
    </li>
    <li>
     Devices that report screen size &lsquo;normal&rsquo; MUST have screen sizes of at least
480 dp x 320 dp.
    </li>
    <li>
     Devices that report screen size &lsquo;large&rsquo; MUST have screen sizes of at least
640 dp x 480 dp.
    </li>
    <li>
     Devices that report screen size &lsquo;xlarge&rsquo; MUST have screen sizes of at least
960 dp x 720 dp.
    </li>
   </ul>
   <p>
    In addition:
   </p>
   <ul>
    <li>
     Android Watch devices MUST have a screen with the physical diagonal size in
the range from 1.1 to 2.5 inches.
    </li>
    <li>
     Android Automotive devices MUST have a screen with the physical diagonal
size greater than or equal to 6 inches.
    </li>
    <li>
     Android Automotive devices MUST have a screen size of at least 750 dp x
480 dp.
    </li>
    <li>
     Other types of Android device implementations, with a physically integrated
screen, MUST have a screen at least 2.5 inches in physical diagonal size.
    </li>
   </ul>
   <p>
    Devices MUST NOT change their reported screen size at any time.
   </p>
   <p>
    Applications optionally indicate which screen sizes they support via the
&lt;supports-screens&gt; attribute in the AndroidManifest.xml file. Device
implementations MUST correctly honor applications' stated support for small,
normal, large, and xlarge screens, as described in the Android SDK
documentation.
   </p>
   <h4 id="7_1_1_2_screen_aspect_ratio">
    7.1.1.2. Screen Aspect Ratio
   </h4>
   <div class="note">
    Android Watch devices MAY have an aspect ratio of 1.0 (1:1).
   </div>
   <p>
    The screen aspect ratio MUST be a value from 1.3333 (4:3) to 1.86 (roughly
16:9), but Android Watch devices MAY have an aspect ratio of 1.0 (1:1) because
such a device implementation will use a UI_MODE_TYPE_WATCH as the
android.content.res.Configuration.uiMode.
   </p>
   <h4 id="7_1_1_3_screen_density">
    7.1.1.3. Screen Density
   </h4>
   <p>
    The Android UI framework defines a set of standard logical densities to help
application developers target application resources. Device implementations
MUST report only one of the following logical Android framework densities
through the android.util.DisplayMetrics APIs, and MUST execute applications at
this standard density and MUST NOT change the value at at any time for the
default display.
   </p>
   <ul>
    <li>
     120 dpi (ldpi)
    </li>
    <li>
     160 dpi (mdpi)
    </li>
    <li>
     213 dpi (tvdpi)
    </li>
    <li>
     240 dpi (hdpi)
    </li>
    <li>
     280 dpi (280dpi)
    </li>
    <li>
     320 dpi (xhdpi)
    </li>
    <li>
     360 dpi (360dpi)
    </li>
    <li>
     400 dpi (400dpi)
    </li>
    <li>
     420 dpi (420dpi)
    </li>
    <li>
     480 dpi (xxhdpi)
    </li>
    <li>
     560 dpi (560dpi)
    </li>
    <li>
     640 dpi (xxxhdpi)
    </li>
   </ul>
   <p>
    Device implementations SHOULD define the standard Android framework density
that is numerically closest to the physical density of the screen, unless that
logical density pushes the reported screen size below the minimum supported. If
the standard Android framework density that is numerically closest to the
physical density results in a screen size that is smaller than the smallest
supported compatible screen size (320 dp width), device implementations SHOULD
report the next lowest standard Android framework density.
   </p>
   <p>
    Device implementations are STRONGLY RECOMMENDED to provide users a setting to change
the display size. If there is an implementation to change the display size of the device,
it MUST align with the AOSP implementation as indicated below:
   </p>
   <ul>
    <li>
     The display size MUST NOT be scaled any larger than 1.5 times the native density or
   produce an effective minimum screen dimension smaller than 320dp (equivalent
   to resource qualifier sw320dp), whichever comes first.
    </li>
    <li>
     Display size MUST NOT be scaled any smaller than 0.85 times the native density.
    </li>
    <li>
     To ensure good usability and consistent font sizes, it is RECOMMENDED that the
   following scaling of Native Display options be provided (while complying with the limits
   specified above)
    </li>
    <li>
     Small: 0.85x
    </li>
    <li>
     Default: 1x (Native display scale)
    </li>
    <li>
     Large: 1.15x
    </li>
    <li>
     Larger: 1.3x
    </li>
    <li>
     Largest 1.45x
    </li>
   </ul>
   <h3 id="7_1_2_display_metrics">
    7.1.2. Display Metrics
   </h3>
   <p>
    Device implementations MUST report correct values for all display metrics
defined in
    <a href="http://developer.android.com/reference/android/util/DisplayMetrics.html">android.util.DisplayMetrics</a> and MUST report the same values regardless of whether the embedded or external
screen is used as the default display.
   </p>
   <h3 id="7_1_3_screen_orientation">
    7.1.3. Screen Orientation
   </h3>
   <p>
    Devices MUST report which screen orientations they support
(android.hardware.screen.portrait and/or android.hardware.screen.landscape) and
MUST report at least one supported orientation. For example, a device with a
fixed orientation landscape screen, such as a television or laptop, SHOULD only
report android.hardware.screen.landscape.
   </p>
   <p>
    Devices that report both screen orientations MUST support dynamic orientation
by applications to either portrait or landscape screen orientation. That is,
the device must respect the application&rsquo;s request for a specific screen
orientation. Device implementations MAY select either portrait or landscape
orientation as the default.
   </p>
   <p>
    Devices MUST report the correct value for the device&rsquo;s current orientation,
whenever queried via the android.content.res.Configuration.orientation,
android.view.Display.getOrientation(), or other APIs.
   </p>
   <p>
    Devices MUST NOT change the reported screen size or density when changing orientation.
   </p>
   <h3 id="7_1_4_2d_and_3d_graphics_acceleration">
    7.1.4. 2D and 3D Graphics Acceleration
   </h3>
   <p>
    Device implementations MUST support both OpenGL ES 1.0 and 2.0, as embodied and
detailed in the Android SDK documentations. Device implementations SHOULD
support OpenGL ES 3.0, 3.1, or 3.2 on devices capable of supporting it. Device
implementations MUST also support
    <a href="http://developer.android.com/guide/topics/renderscript/">
     Android RenderScript</a>, as detailed in the Android SDK documentation.
   </p>
   <p>
    Device implementations MUST also correctly identify themselves as supporting
OpenGL ES 1.0, OpenGL ES 2.0, OpenGL ES 3.0, OpenGL 3.1, or OpenGL 3.2. That is:
   </p>
   <ul>
    <li>
     The managed APIs (such as via the GLES10.getString() method) MUST report
support for OpenGL ES 1.0 and OpenGL ES 2.0.
    </li>
    <li>
     The native C/C++ OpenGL APIs (APIs available to apps via libGLES_v1CM.so,
libGLES_v2.so, or libEGL.so) MUST report support for OpenGL ES 1.0 and OpenGL
ES 2.0.
    </li>
    <li>
     Device implementations that declare support for OpenGL ES 3.0, 3.1, or 3.2 MUST
support the corresponding managed APIs and include support for native C/C++
APIs. On device implementations that declare support for OpenGL ES 3.0, 3.1, or
3.2 libGLESv2.so MUST export the corresponding function symbols in addition to
the OpenGL ES 2.0 function symbols.
    </li>
   </ul>
   <p>
    Android provides an OpenGL ES
    <a href="https://developer.android.com/reference/android/opengl/GLES31Ext.html">extension pack</a> with Java interfaces and native support for advanced graphics functionality
such as tessellation and the ASTC texture compression format. Android device
implementations MUST support the extension pack if the device supports OpenGL
ES 3.2 and MAY support it otherwise. If the extension pack is supported in its
entirety, the device MUST identify the support through the
    <code>
     android.hardware.opengles.aep
    </code>
    feature flag.
   </p>
   <p>
    Also, device implementations MAY implement any desired OpenGL ES extensions.
However, device implementations MUST report via the OpenGL ES managed and
native APIs all extension strings that they do support, and conversely MUST NOT
report extension strings that they do not support.
   </p>
   <p>
    Note that Android includes support for applications to optionally specify that
they require specific OpenGL texture compression formats. These formats are
typically vendor-specific. Device implementations are not required by Android
to implement any specific texture compression format. However, they SHOULD
accurately report any texture compression formats that they do support, via the
getString() method in the OpenGL API.
   </p>
   <p>
    Android includes a mechanism for applications to declare that they want to
enable hardware acceleration for 2D graphics at the Application, Activity,
Window, or View level through the use of a manifest tag
    <a href="http://developer.android.com/guide/topics/graphics/hardware-accel.html">android:hardwareAccelerated</a> or direct API calls.
   </p>
   <p>
    Device implementations MUST enable hardware acceleration by default, and MUST
disable hardware acceleration if the developer so requests by setting
android:hardwareAccelerated="false&rdquo; or disabling hardware acceleration directly
through the Android View APIs.
   </p>
   <p>
    In addition, device implementations MUST exhibit behavior consistent with the
Android SDK documentation on
    <a href="http://developer.android.com/guide/topics/graphics/hardware-accel.html">
     hardware acceleration</a>.
   </p>
   <p>
    Android includes a TextureView object that lets developers directly integrate
hardware-accelerated OpenGL ES textures as rendering targets in a UI hierarchy.
Device implementations MUST support the TextureView API, and MUST exhibit
consistent behavior with the upstream Android implementation.
   </p>
   <p>
    Android includes support for EGL_ANDROID_RECORDABLE, an EGLConfig attribute
that indicates whether the EGLConfig supports rendering to an ANativeWindow
that records images to a video. Device implementations MUST support
    <a href="https://www.khronos.org/registry/egl/extensions/ANDROID/EGL_ANDROID_recordable.txt">EGL_ANDROID_RECORDABLE</a> extension.
   </p>
   <h3 id="7_1_5_legacy_application_compatibility_mode">
    7.1.5. Legacy Application Compatibility Mode
   </h3>
   <p>
    Android specifies a &ldquo;compatibility mode&rdquo; in which the framework operates in a
'normal' screen size equivalent (320dp width) mode for the benefit of legacy
applications not developed for old versions of Android that pre-date
screen-size independence.
   </p>
   <ul>
    <li>
     Android Automotive does not support legacy compatibility mode.
    </li>
    <li>
     All other device implementations MUST include support for legacy
application compatibility mode as implemented by the upstream Android open
source code. That is, device implementations MUST NOT alter the triggers or
thresholds at which compatibility mode is activated, and MUST NOT alter the
behavior of the compatibility mode itself.
    </li>
   </ul>
   <h3 id="7_1_6_screen_technology">
    7.1.6. Screen Technology
   </h3>
   <p>
    The Android platform includes APIs that allow applications to render rich
graphics to the display. Devices MUST support all of these APIs as defined by
the Android SDK unless specifically allowed in this document.
   </p>
   <ul>
    <li>
     Devices MUST support displays capable of rendering 16-bit color graphics
and SHOULD support displays capable of 24-bit color graphics.
    </li>
    <li>
     Devices MUST support displays capable of rendering animations.
    </li>
    <li>
     The display technology used MUST have a pixel aspect ratio (PAR) between
0.9 and 1.15. That is, the pixel aspect ratio MUST be near square (1.0) with a
10 ~ 15% tolerance.
    </li>
   </ul>
   <h3 id="7_1_7_secondary_displays">
    7.1.7. Secondary Displays
   </h3>
   <p>
    Android includes support for secondary display to enable media sharing
capabilities and developer APIs for accessing external displays. If a device
supports an external display either via a wired, wireless, or an embedded
additional display connection then the device implementation MUST implement the
    <a href="http://developer.android.com/reference/android/hardware/display/DisplayManager.html">
     display manager API</a> as described in the Android SDK documentation.
   </p>
   <h2 id="7_2_input_devices">
    7.2. Input Devices
   </h2>
   <p>
    Devices MUST support a touchscreen or meet the requirements listed in 7.2.2 for
non-touch navigation.
   </p>
   <h3 id="7_2_1_keyboard">
    7.2.1. Keyboard
   </h3>
   <div class="note">
    Android Watch and Android Automotive implementations MAY implement a soft
keyboard. All other device implementations MUST implement a soft keyboard and:
   </div>
   <p>
    Device implementations:
   </p>
   <ul>
    <li>
     MUST include support for the Input Management Framework (which allows
third-party developers to create Input Method Editors&mdash;i.e. soft keyboard) as
detailed at
     <a href="http://developer.android.com">http://developer.android.com</a>. 
    </li>
    <li>
     MUST provide at least one soft keyboard implementation (regardless of
whether a hard keyboard is present) except for Android Watch devices where the
screen size makes it less reasonable to have a soft keyboard.
    </li>
    <li>
     MAY include additional soft keyboard implementations.
    </li>
    <li>
     MAY include a hardware keyboard.
    </li>
    <li>
     MUST NOT include a hardware keyboard that does not match one of the formats
specified in
     <a href="http://developer.android.com/reference/android/content/res/Configuration.html">android.content.res.Configuration.keyboard</a> (QWERTY or 12-key).
    </li>
   </ul>
   <h3 id="7_2_2_non_touch_navigation">
    7.2.2. Non-touch Navigation
   </h3>
   <div class="note">
    Android Television devices MUST support D-pad.
   </div>
   <p>
    Device implementations:
   </p>
   <ul>
    <li>
     MAY omit a non-touch navigation option (trackball, d-pad, or wheel) if the
device implementation is not an Android Television device.
    </li>
    <li>
     MUST report the correct value for
     <a href="http://developer.android.com/reference/android/content/res/Configuration.html">android.content.res.Configuration.navigation</a>. 
    </li>
    <li>
     MUST provide a reasonable alternative user interface mechanism for the
selection and editing of text, compatible with Input Management Engines. The
upstream Android open source implementation includes a selection mechanism
suitable for use with devices that lack non-touch navigation inputs.
    </li>
   </ul>
   <h3 id="7_2_3_navigation_keys">
    7.2.3. Navigation Keys
   </h3>
   <div class="note">
    The availability and visibility requirement of the Home, Recents, and Back
functions differ between device types as described in this section.
   </div>
   <p>
    The Home, Recents, and Back functions (mapped to the key events KEYCODE_HOME,
KEYCODE_APP_SWITCH, KEYCODE_BACK, respectively) are essential to the Android
navigation paradigm and therefore:
   </p>
   <ul>
    <li>
     Android Handheld device implementations MUST provide the Home, Recents, and
    Back functions.
    </li>
    <li>
     Android Television device implementations MUST provide the Home and Back
    functions.
    </li>
    <li>
     Android Watch device implementations MUST have the Home function available
    to the user, and the Back function except for when it is in
     <code>
      UI_MODE_TYPE_WATCH
     </code>.
    </li>
    <li>
     Android Watch device implementations, and no other Android device types,
    MAY consume the long press event on the key event
     <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK">
      <code>KEYCODE_BACK</code></a>
     and omit it from being sent to the foreground application.
    </li>
    <li>
     Android Automotive implementations MUST provide the Home function and MAY
    provide Back and Recent functions.
    </li>
    <li>
     All other types of device implementations MUST provide the Home and Back
    functions.
    </li>
   </ul>
   <p>
    These functions MAY be implemented via dedicated physical buttons (such as
mechanical or capacitive touch buttons), or MAY be implemented using dedicated
software keys on a distinct portion of the screen, gestures, touch panel, etc.
Android supports both implementations. All of these functions MUST be accessible
with a single action (e.g. tap, double-click or gesture) when visible.
   </p>
   <p>
    Recents function, if provided, MUST have a visible button or icon unless hidden
together with other navigation functions in full-screen mode. This does not
apply to devices upgrading from earlier Android versions that have physical
buttons for navigation and no recents key.
   </p>
   <p>
    The Home and Back functions, if provided, MUST each have a visible button or
icon unless hidden together with other navigation functions in full-screen mode
or when the uiMode UI_MODE_TYPE_MASK is set to UI_MODE_TYPE_WATCH.
   </p>
   <p>
    The Menu function is deprecated in favor of action bar since Android 4.0.
Therefore the new device implementations shipping with Android 7.0
and later MUST NOT implement a dedicated physical button for the Menu function.
Older device implementations SHOULD NOT implement a dedicated physical button
for the Menu function, but if the physical Menu button is implemented and the
device is running applications with targetSdkVersion &gt; 10, the device
implementation:
   </p>
   <ul>
    <li>
     MUST display the action overflow button on the action bar when it is visible
and the resulting action overflow menu popup is not empty. For a device
implementation launched before Android 4.4 but upgrading to Android
7.0, this is RECOMMENDED.
    </li>
    <li>
     MUST NOT modify the position of the action overflow popup displayed by
selecting the overflow button in the action bar.
    </li>
    <li>
     MAY render the action overflow popup at a modified position on the screen
when it is displayed by selecting the physical menu button.
    </li>
   </ul>
   <p>
    For backwards compatibility, device implementations MUST make the Menu function
available to applications when targetSdkVersion is less than 10, either by a
physical button, a software key, or gestures. This Menu function should be
presented unless hidden together with other navigation functions.
   </p>
   <p>
    Android device implementations supporting the
    <a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST">Assist action</a> and/or
    <a href="https://developer.android.com/reference/android/service/voice/VoiceInteractionService.html">
     <code> VoiceInteractionService</code></a>
    MUST be able to launch an assist app with a single interaction (e.g. tap,
double-click, or gesture) when other navigation keys are visible. It is STRONGLY
RECOMMENDED to use long press on home as this interaction. The designated
interaction MUST launch the user-selected assist app, in other words the app
that implements a VoiceInteractionService, or an activity handling the ACTION_ASSIST intent.
   </p>
   <p>
    Device implementations MAY use a distinct portion of the screen to display the
navigation keys, but if so, MUST meet these requirements:
   </p>
   <ul>
    <li>
     Device implementation navigation keys MUST use a distinct portion of the
screen, not available to applications, and MUST NOT obscure or otherwise
interfere with the portion of the screen available to applications.
    </li>
    <li>
     Device implementations MUST make available a portion of the display to
applications that meets the requirements defined in
     <a href="#7_1_1_screen_configuration">
      section
7.1.1
     </a>
     .
    </li>
    <li>
     Device implementations MUST display the navigation keys when applications do
not specify a system UI mode, or specify SYSTEM_UI_FLAG_VISIBLE.
    </li>
    <li>
     Device implementations MUST present the navigation keys in an unobtrusive
&ldquo;low profile&rdquo; (eg. dimmed) mode when applications specify
SYSTEM_UI_FLAG_LOW_PROFILE.
    </li>
    <li>
     Device implementations MUST hide the navigation keys when applications
specify SYSTEM_UI_FLAG_HIDE_NAVIGATION.
    </li>
   </ul>
   <h3 id="7_2_4_touchscreen_input">
    7.2.4. Touchscreen Input
   </h3>
   <div class="note">
    Android Handhelds and Watch Devices MUST support touchscreen input.
   </div>
   <p>
    Device implementations SHOULD have a pointer input system of some kind (either
mouse-like or touch). However, if a device implementation does not support a
pointer input system, it MUST NOT report the android.hardware.touchscreen or
android.hardware.faketouch feature constant. Device implementations that do
include a pointer input system:
   </p>
   <ul>
    <li>
     SHOULD support fully independently tracked pointers, if the device input
system supports multiple pointers.
    </li>
    <li>
     MUST report the value of
     <a href="http://developer.android.com/reference/android/content/res/Configuration.html">android.content.res.Configuration.touchscreen</a> corresponding to the type of the specific touchscreen on the device.
    </li>
   </ul>
   <p>
    Android includes support for a variety of touchscreens, touch pads, and fake
touch input devices.
    <a href="http://source.android.com/devices/tech/input/touch-devices.html">
     Touchscreen based device implementations</a> are associated with a display
     such that the user has the impression of directly
manipulating items on screen. Since the user is directly touching the screen,
the system does not require any additional affordances to indicate the objects
being manipulated. In contrast, a fake touch interface provides a user input
system that approximates a subset of touchscreen capabilities. For example, a
mouse or remote control that drives an on-screen cursor approximates touch, but
requires the user to first point or focus then click. Numerous input devices
like the mouse, trackpad, gyro-based air mouse, gyro-pointer, joystick, and
multi-touch trackpad can support fake touch interactions. Android includes the
feature constant android.hardware.faketouch, which corresponds to a
high-fidelity non-touch (pointer-based) input device such as a mouse or trackpad
that can adequately emulate touch-based input (including basic gesture support),
and indicates that the device supports an emulated subset of touchscreen
functionality. Device implementations that declare the fake touch feature MUST
meet the fake touch requirements in
    <a href="#7_2_5_fake_touch_input">section 7.2.5</a>. 
   </p>
   <p>
    Device implementations MUST report the correct feature corresponding to the type
of input used. Device implementations that include a touchscreen (single-touch
or better) MUST report the platform feature constant
android.hardware.touchscreen. Device implementations that report the platform
feature constant android.hardware.touchscreen MUST also report the platform
feature constant android.hardware.faketouch. Device implementations that do not
include a touchscreen (and rely on a pointer device only) MUST NOT report any
touchscreen feature, and MUST report only android.hardware.faketouch if they
meet the fake touch requirements in
    <a href="#7_2_5_fake_touch_input">section 7.2.5</a>. 
   </p>
   <h3 id="7_2_5_fake_touch_input">
    7.2.5. Fake Touch Input
   </h3>
   <p>
    Device implementations that declare support for android.hardware.faketouch:
   </p>
   <ul>
    <li>
     MUST report the
     <a href="http://developer.android.com/reference/android/view/MotionEvent.html">
      absolute X and Y screen positions</a> of the pointer location and display a visual pointer on the screen.
    </li>
    <li>
     MUST report touch event with the action code that specifies the state change
that occurs on the pointer
     <a href="http://developer.android.com/reference/android/view/MotionEvent.html">
      going down or up on the screen</a>.
    </li>
    <li>
     MUST support pointer down and up on an object on the screen, which allows
users to emulate tap on an object on the screen.
    </li>
    <li>
     MUST support pointer down, pointer up, pointer down then pointer up in the
same place on an object on the screen within a time threshold, which allows
users to
     <a href="http://developer.android.com/reference/android/view/MotionEvent.html">
      emulate double tap</a> on an object on the screen.
    </li>
    <li>
     MUST support pointer down on an arbitrary point on the screen, pointer move
to any other arbitrary point on the screen, followed by a pointer up, which
allows users to emulate a touch drag.
    </li>
    <li>
     MUST support pointer down then allow users to quickly move the object to a
different position on the screen and then pointer up on the screen, which allows
users to fling an object on the screen.
    </li>
   </ul>
   <p>
    Devices that declare support for android.hardware.faketouch.multitouch.distinct
MUST meet the requirements for faketouch above, and MUST also support distinct
tracking of two or more independent pointer inputs.
   </p>
   <h3 id="7_2_6_game_controller_support">
    7.2.6. Game Controller Support
   </h3>
   <p>
    Android Television device implementations MUST support button mappings for game
controllers as listed below. The upstream Android implementation includes
implementation for game controllers that satisfies this requirement.
   </p>
   <h4 id="7_2_6_1_button_mappings">
    7.2.6.1. Button Mappings
   </h4>
   <p>
    Android Television device implementations MUST support the following key mappings:
   </p>
   <table>
    <tr>
     <th>
      Button
     </th>
     <th>
      HID Usage
      <sup>
       2
      </sup>
     </th>
     <th>
      Android Button
     </th>
    </tr>
    <tr>
     <td>
      <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_A">A</a> <sup>
       1
      </sup>
     </td>
     <td>
      0x09 0x0001
     </td>
     <td>
      KEYCODE_BUTTON_A (96)
     </td>
    </tr>
    <tr>
     <td>
      <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_B">B</a> <sup>
       1
      </sup>
     </td>
     <td>
      0x09 0x0002
     </td>
     <td>
      KEYCODE_BUTTON_B (97)
     </td>
    </tr>
    <tr>
     <td>
      <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_X">X</a> <sup>
       1
      </sup>
     </td>
     <td>
      0x09 0x0004
     </td>
     <td>
      KEYCODE_BUTTON_X (99)
     </td>
    </tr>
    <tr>
     <td>
      <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_Y">Y</a> <sup>
       1
      </sup>
     </td>
     <td>
      0x09 0x0005
     </td>
     <td>
      KEYCODE_BUTTON_Y (100)
     </td>
    </tr>
    <tr>
     <td>
      <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_DPAD_UP">D-pad up</a> <sup>
       1
      </sup>
      <br/>
      <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_DPAD_DOWN">D-pad down</a> <sup>
       1
      </sup>
     </td>
     <td>
      0x01 0x0039
      <sup>
       3
      </sup>
     </td>
     <td>
      <a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_HAT_Y">AXIS_HAT_Y</a> <sup>
       4
      </sup>
     </td>
    </tr>
    <tr>
     <td>
      <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_DPAD_LEFT">D-pad left</a> 1
      <br/>
      <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_DPAD_RIGHT">D-pad right</a> <sup>
       1
      </sup>
     </td>
     <td>
      0x01 0x0039
      <sup>
       3
      </sup>
     </td>
     <td>
      <a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_HAT_X">AXIS_HAT_X</a> <sup>
       4
      </sup>
     </td>
    </tr>
    <tr>
     <td>
      <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_L1">Left shoulder button</a> <sup>
       1
      </sup>
     </td>
     <td>
      0x09 0x0007
     </td>
     <td>
      KEYCODE_BUTTON_L1 (102)
     </td>
    </tr>
    <tr>
     <td>
      <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_R1">Right shoulder button</a> <sup>
       1
      </sup>
     </td>
     <td>
      0x09 0x0008
     </td>
     <td>
      KEYCODE_BUTTON_R1 (103)
     </td>
    </tr>
    <tr>
     <td>
      <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_THUMBL">Left stick click</a> <sup>
       1
      </sup>
     </td>
     <td>
      0x09 0x000E
     </td>
     <td>
      KEYCODE_BUTTON_THUMBL (106)
     </td>
    </tr>
    <tr>
     <td>
      <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BUTTON_THUMBR">Right stick click</a> <sup>
       1
      </sup>
     </td>
     <td>
      0x09 0x000F
     </td>
     <td>
      KEYCODE_BUTTON_THUMBR (107)
     </td>
    </tr>
    <tr>
     <td>
      <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_HOME">Home</a> <sup>
       1
      </sup>
     </td>
     <td>
      0x0c 0x0223
     </td>
     <td>
      KEYCODE_HOME (3)
     </td>
    </tr>
    <tr>
     <td>
      <a href="http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK">Back</a> <sup>
       1
      </sup>
     </td>
     <td>
      0x0c 0x0224
     </td>
     <td>
      KEYCODE_BACK (4)
     </td>
    </tr>
   </table>
   <p class="table_footnote">
    1
    <a href="http://developer.android.com/reference/android/view/KeyEvent.html">KeyEvent</a> </p>
   <p class="table_footnote">
    2 The above HID usages must be declared within a Game
pad CA (0x01 0x0005).
   </p>
   <p class="table_footnote">
    3 This usage must have a Logical Minimum of 0, a
Logical Maximum of 7, a Physical Minimum of 0, a Physical Maximum of 315, Units
in Degrees, and a Report Size of 4. The logical value is defined to be the
clockwise rotation away from the vertical axis; for example, a logical value of
0 represents no rotation and the up button being pressed, while a logical value
of 1 represents a rotation of 45 degrees and both the up and left keys being
pressed.
   </p>
   <p class="table_footnote">
    4
    <a href="http://developer.android.com/reference/android/view/MotionEvent.html">MotionEvent</a> </p>
   <table>
    <tr>
     <th>
      Analog Controls
      <sup>
       1
      </sup>
     </th>
     <th>
      HID Usage
     </th>
     <th>
      Android Button
     </th>
    </tr>
    <tr>
     <td>
      <a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_LTRIGGER">Left Trigger</a> </td>
     <td>
      0x02 0x00C5
     </td>
     <td>
      AXIS_LTRIGGER
     </td>
    </tr>
    <tr>
     <td>
      <a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_THROTTLE">Right Trigger</a> </td>
     <td>
      0x02 0x00C4
     </td>
     <td>
      AXIS_RTRIGGER
     </td>
    </tr>
    <tr>
     <td>
      <a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_Y">Left Joystick</a> </td>
     <td>
      0x01 0x0030
      <br/>
      0x01 0x0031
     </td>
     <td>
      AXIS_X
      <br/>
      AXIS_Y
     </td>
    </tr>
    <tr>
     <td>
      <a href="http://developer.android.com/reference/android/view/MotionEvent.html#AXIS_Z">Right Joystick</a> </td>
     <td>
      0x01 0x0032
      <br/>
      0x01 0x0035
     </td>
     <td>
      AXIS_Z
      <br/>
      AXIS_RZ
     </td>
    </tr>
   </table>
   <p class="table_footnote">
    1
    <a href="http://developer.android.com/reference/android/view/MotionEvent.html">MotionEvent</a> </p>
   <h3 id="7_2_7_remote_control">
    7.2.7. Remote Control
   </h3>
   <p>
    Android Television device implementations SHOULD provide a remote control to
allow users to access the TV interface. The remote control MAY be a physical
remote or can be a software-based remote that is accessible from a mobile phone
or tablet. The remote control MUST meet the requirements defined below.
   </p>
   <ul>
    <li>
     <strong>
      Search affordance
     </strong>
     . Device implementations MUST fire KEYCODE_SEARCH when
the user invokes voice search either on the physical or software-based remote.
    </li>
    <li>
     <strong>
      Navigation
     </strong>
     . All Android Television remotes MUST include
     <a href="http://developer.android.com/reference/android/view/KeyEvent.html">
      Back, Home, and
Select buttons and support for D-pad events</a>.
    </li>
   </ul>
   <h2 id="7_3_sensors">
    7.3. Sensors
   </h2>
   <p>
    Android includes APIs for accessing a variety of sensor types. Devices
implementations generally MAY omit these sensors, as provided for in the
following subsections. If a device includes a particular sensor type that has a
corresponding API for third-party developers, the device implementation MUST
implement that API as described in the Android SDK documentation and the
Android Open Source documentation on
    <a href="http://source.android.com/devices/sensors/">sensors</a>.  For example, device
implementations:
   </p>
   <ul>
    <li>
     MUST accurately report the presence or absence of sensors per the
     <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">android.content.pm.PackageManager</a> class.
    </li>
    <li>
     MUST return an accurate list of supported sensors via the
SensorManager.getSensorList() and similar methods.
    </li>
    <li>
     MUST behave reasonably for all other sensor APIs (for example, by returning
true or false as appropriate when applications attempt to register listeners,
not calling sensor listeners when the corresponding sensors are not present;
etc.).
    </li>
    <li>
     MUST
     <a href="http://developer.android.com/reference/android/hardware/SensorEvent.html">
      report all sensor measurements</a> using the relevant International System of Units (metric) values for each
sensor type as defined in the Android SDK documentation.
    </li>
    <li>
     SHOULD
     <a href="http://developer.android.com/reference/android/hardware/SensorEvent.html#timestamp">
      report the event time</a> in nanoseconds as defined in the Android SDK documentation, representing the
time the event happened and synchronized with the
SystemClock.elapsedRealtimeNano() clock. Existing and new Android devices are
     <strong>
      STRONGLY RECOMMENDED
     </strong>
     to meet these requirements so they will be able to
upgrade to the future platform releases where this might become a REQUIRED
component. The synchronization error SHOULD be below 100 milliseconds.
    </li>
    <li>
     MUST report sensor data with a maximum latency of 100 milliseconds + 2 *
sample_time for the case of a sensor streamed with a minimum required latency
of 5 ms + 2 * sample_time when the application processor is active. This delay
does not include any filtering delays.
    </li>
    <li>
     MUST report the first sensor sample within 400 milliseconds + 2 *
sample_time of the sensor being activated. It is acceptable for this sample to
have an accuracy of 0.
    </li>
   </ul>
   <p>
    The list above is not comprehensive; the documented behavior of the Android SDK
and the Android Open Source Documentations on
    <a href="http://source.android.com/devices/sensors/">sensors</a> is to be considered
authoritative.
   </p>
   <p>
    Some sensor types are composite, meaning they can be derived from data provided
by one or more other sensors. (Examples include the orientation sensor and the
linear acceleration sensor.) Device implementations SHOULD implement these
sensor types, when they include the prerequisite physical sensors as described
in
    <a href="https://source.android.com/devices/sensors/sensor-types.html">
     sensor types</a>. If a
device implementation includes a composite sensor it MUST implement the sensor
as described in the Android Open Source documentation on
    <a href="https://source.android.com/devices/sensors/sensor-types.html#composite_sensor_type_summary">
     composite sensors</a>.</p>
   <p>
    Some Android sensors support a
    <a href="https://source.android.com/devices/sensors/report-modes.html#continuous">
     &ldquo;continuous&rdquo; trigger mode</a>,
which returns data continuously. For any API indicated by the Android SDK
documentation to be a continuous sensor, device implementations MUST
continuously provide periodic data samples that SHOULD have a jitter below 3%,
where jitter is defined as the standard deviation of the difference of the
reported timestamp values between consecutive events.
   </p>
   <p>
    Note that the device implementations MUST ensure that the sensor event stream
MUST NOT prevent the device CPU from entering a suspend state or waking up from
a suspend state.
   </p>
   <p>
    Finally, when several sensors are activated, the power consumption SHOULD NOT
exceed the sum of the individual sensor&rsquo;s reported power consumption.
   </p>
   <h3 id="7_3_1_accelerometer">
    7.3.1. Accelerometer
   </h3>
   <p>
    Device implementations SHOULD include a 3-axis accelerometer. Android Handheld
devices, Android Automotive implementations, and Android Watch devices are STRONGLY
RECOMMENDED to include this sensor. If a device implementation does include a
3-axis accelerometer, it:
   </p>
   <ul>
    <li>
     MUST implement and report
     <a href="http://developer.android.com/reference/android/hardware/Sensor.html#TYPE_ACCELEROMETER">
      TYPE_ACCELEROMETER sensor</a>.
    </li>
    <li>
     MUST be able to report events up to a frequency of at least 50 Hz for
Android Watch devices as such devices have a stricter power constraint and 100
Hz for all other device types.
    </li>
    <li>
     SHOULD report events up to at least 200 Hz.
    </li>
    <li>
     MUST comply with the
     <a href="http://developer.android.com/reference/android/hardware/SensorEvent.html">
      Android sensor coordinate system </a>
     as detailed in the Android APIs. Android Automotive implementations MUST comply
with the Android
     <a href="http://source.android.com/devices/sensors/sensor-types.html#auto_axes">car sensor coordinate system</a>. 
    </li>
    <li>
     MUST be capable of measuring from freefall up to four times the gravity
(4g) or more on any axis.
    </li>
    <li>
     MUST have a resolution of at least 12-bits and SHOULD have a resolution of
at least 16-bits.
    </li>
    <li>
     SHOULD be calibrated while in use if the characteristics changes over the
life cycle and compensated, and preserve the compensation parameters between
device reboots.
    </li>
    <li>
     SHOULD be temperature compensated.
    </li>
    <li>
     MUST have a standard deviation no greater than 0.05 m/s^, where the
standard deviation should be calculated on a per axis basis on samples
collected over a period of at least 3 seconds at the fastest sampling rate.
    </li>
    <li>
     SHOULD implement the TYPE_SIGNIFICANT_MOTION, TYPE_TILT_DETECTOR,
TYPE_STEP_DETECTOR, TYPE_STEP_COUNTER composite sensors as described in the
Android SDK document. Existing and new Android devices are
     <strong>
      STRONGLY
RECOMMENDED
     </strong>
     to implement the TYPE_SIGNIFICANT_MOTION composite sensor. If any
of these sensors are implemented, the sum of their power consumption MUST
always be less than 4 mW and SHOULD each be below 2 mW and 0.5 mW for when the
device is in a dynamic or static condition.
    </li>
    <li>
     If a gyroscope sensor is included, MUST implement the TYPE_GRAVITY and
TYPE_LINEAR_ACCELERATION composite sensors and SHOULD implement the
TYPE_GAME_ROTATION_VECTOR composite sensor. Existing and new Android devices
are STRONGLY RECOMMENDED to implement the TYPE_GAME_ROTATION_VECTOR sensor.
    </li>
    <li>
     MUST implement a TYPE_ROTATION_VECTOR composite sensor, if a gyroscope
sensor and a magnetometer sensor is also included.
    </li>
   </ul>
   <h3 id="7_3_2_magnetometer">
    7.3.2. Magnetometer
   </h3>
   <p>
    Device implementations SHOULD include a 3-axis magnetometer (compass). If a
device does include a 3-axis magnetometer, it:
   </p>
   <ul>
    <li>
     MUST implement the TYPE_MAGNETIC_FIELD sensor and SHOULD also implement
TYPE_MAGNETIC_FIELD_UNCALIBRATED sensor. Existing and new Android devices are
STRONGLY RECOMMENDED to implement the TYPE_MAGNETIC_FIELD_UNCALIBRATED sensor.
    </li>
    <li>
     MUST be able to report events up to a frequency of at least 10 Hz and
SHOULD report events up to at least 50 Hz.
    </li>
    <li>
     MUST comply with the
     <a href="http://developer.android.com/reference/android/hardware/SensorEvent.html">
      Android sensor coordinate system</a> as detailed in the Android APIs.
    </li>
    <li>
     MUST be capable of measuring between -900 &micro;T and +900 &micro;T on each axis
before saturating.
    </li>
    <li>
     MUST have a hard iron offset value less than 700 &micro;T and SHOULD have a value
below 200 &micro;T, by placing the magnetometer far from dynamic (current-induced)
and static (magnet-induced) magnetic fields.
    </li>
    <li>
     MUST have a resolution equal or denser than 0.6 &micro;T and SHOULD have a
resolution equal or denser than 0.2 &micro;T.
    </li>
    <li>
     SHOULD be temperature compensated.
    </li>
    <li>
     MUST support online calibration and compensation of the hard iron bias, and
preserve the compensation parameters between device reboots.
    </li>
    <li>
     MUST have the soft iron compensation applied&mdash;the calibration can be done
either while in use or during the production of the device.
    </li>
    <li>
     SHOULD have a standard deviation, calculated on a per axis basis on samples
collected over a period of at least 3 seconds at the fastest sampling rate, no
greater than 0.5 &micro;T.
    </li>
    <li>
     MUST implement a TYPE_ROTATION_VECTOR composite sensor, if an accelerometer
sensor and a gyroscope sensor is also included.
    </li>
    <li>
     MAY implement the TYPE_GEOMAGNETIC_ROTATION_VECTOR sensor if an
accelerometer sensor is also implemented. However if implemented, it MUST
consume less than 10 mW and SHOULD consume less than 3 mW when the sensor is
registered for batch mode at 10 Hz.
    </li>
   </ul>
   <h3 id="7_3_3_gps">
    7.3.3. GPS
   </h3>
   <p>
    Device implementations SHOULD include a GPS/GNSS receiver. If a device implementation
does include a GPS/GNSS receiver and reports the capability to applications through the
    <code>
     android.hardware.location.gps
    </code>
    feature flag:
   </p>
   <ul>
    <li>
     It is STRONGLY RECOMMENDED that the device continue to deliver normal GPS/GNSS
    outputs to applications during an emergency phone call and that location output
    not be blocked during an emergency phone call.
    </li>
    <li>
     It MUST support location outputs at a rate of at least 1 Hz when requested via
     <code>
      LocationManager#requestLocationUpdate
     </code>.
    </li>
    <li>
     It MUST be able to determine the location in open-sky conditions (strong signals,
    negligible multipath, HDOP &lt; 2) within 10 seconds (fast time to first fix), when
    connected to a 0.5 Mbps or faster data speed internet connection. This requirement
    is typically met by the use of some form of Assisted or Predicted GPS/GNSS technique
    to minimize GPS/GNSS lock-on time (Assistance data includes Reference Time, Reference
    Location and Satellite Ephemeris/Clock).
     <ul>
      <li>
       After making such a location calculation, it is STRONGLY RECOMMENDED for the device to
     be able to determine its location, in open sky, within 10 seconds, when location
     requests are restarted, up to an hour after the initial location calculation,
     even when the subsequent request is made without a data connection, and/or after a power
     cycle.
      </li>
     </ul>
    </li>
    <li>
     In open sky conditions after determining the location, while stationary or moving with less
    than 1 meter per second squared of acceleration:
     <ul>
      <li>
       It MUST be able to determine location within 20 meters, and speed within 0.5 meters
     per second, at least 95% of the time.
      </li>
      <li>
       It MUST simultaneously track and report via
       <a href="https://developer.android.com/reference/android/location/GnssStatus.Callback.html#GnssStatus.Callback()'">GnssStatus.Callback</a> at least 8 satellites from one constellation.
      </li>
      <li>
       It SHOULD be able to simultaneously track at least 24 satellites, from multiple
     constellations (e.g. GPS + at least one of Glonass, Beidou, Galileo).
      </li>
     </ul>
    </li>
    <li>
     It MUST report the GNSS technology generation through the test API &lsquo;getGnssYearOfHardware&rsquo;.
    </li>
    <li>
     It is STRONGLY RECOMMENDED to meet and MUST meet all requirements below if the GNSS technology
    generation is reported as the year "2016" or newer.
     <ul>
      <li>
       It MUST report GPS measurements, as soon as they are found, even if a location calculated
     from GPS/GNSS is not yet reported.
      </li>
      <li>
       It MUST report GPS pseudoranges and pseudorange rates, that, in open-sky conditions
     after determining the location, while stationary or moving with less than 0.2 meter
     per second squared of acceleration, are sufficient to calculate position within
     20 meters, and speed within 0.2 meters per second, at least 95% of the time.
      </li>
     </ul>
    </li>
   </ul>
   <p>
    Note that while some of the GPS requirements above are stated as STRONGLY RECOMMENDED, the
Compatibility Definition for the next major version is expected to change these to a MUST.
   </p>
   <h3 id="7_3_4_gyroscope">
    7.3.4. Gyroscope
   </h3>
   <p>
    Device implementations SHOULD include a gyroscope (angular change sensor).
Devices SHOULD NOT include a gyroscope sensor unless a 3-axis accelerometer is
also included. If a device implementation includes a gyroscope, it:
   </p>
   <ul>
    <li>
     MUST implement the TYPE_GYROSCOPE sensor and SHOULD also implement
TYPE_GYROSCOPE_UNCALIBRATED sensor. Existing and new Android devices are
STRONGLY RECOMMENDED to implement the SENSOR_TYPE_GYROSCOPE_UNCALIBRATED
sensor.
    </li>
    <li>
     MUST be capable of measuring orientation changes up to 1,000 degrees per
second.
    </li>
    <li>
     MUST be able to report events up to a frequency of at least 50 Hz for
Android Watch devices as such devices have a stricter power constraint and 100
Hz for all other device types.
    </li>
    <li>
     SHOULD report events up to at least 200 Hz.
    </li>
    <li>
     MUST have a resolution of 12-bits or more and SHOULD have a resolution of
16-bits or more.
    </li>
    <li>
     MUST be temperature compensated.
    </li>
    <li>
     MUST be calibrated and compensated while in use, and preserve the
compensation parameters between device reboots.
    </li>
    <li>
     MUST have a variance no greater than 1e-7 rad^2 / s^2 per Hz (variance per
Hz, or rad^2 / s). The variance is allowed to vary with the sampling rate, but
must be constrained by this value. In other words, if you measure the variance
of the gyro at 1 Hz sampling rate it should be no greater than 1e-7 rad^2/s^2.
    </li>
    <li>
     MUST implement a TYPE_ROTATION_VECTOR composite sensor, if an accelerometer
sensor and a magnetometer sensor is also included.
    </li>
    <li>
     If an accelerometer sensor is included, MUST implement the TYPE_GRAVITY and
TYPE_LINEAR_ACCELERATION composite sensors and SHOULD implement the
TYPE_GAME_ROTATION_VECTOR composite sensor. Existing and new Android devices
are STRONGLY RECOMMENDED to implement the TYPE_GAME_ROTATION_VECTOR sensor.
    </li>
   </ul>
   <h3 id="7_3_5_barometer">
    7.3.5. Barometer
   </h3>
   <p>
    Device implementations SHOULD include a barometer (ambient air pressure
sensor). If a device implementation includes a barometer, it:
   </p>
   <ul>
    <li>
     MUST implement and report TYPE_PRESSURE sensor.
    </li>
    <li>
     MUST be able to deliver events at 5 Hz or greater.
    </li>
    <li>
     MUST have adequate precision to enable estimating altitude.
    </li>
    <li>
     MUST be temperature compensated.
    </li>
   </ul>
   <h3 id="7_3_6_thermometer">
    7.3.6. Thermometer
   </h3>
   <p>
    Device implementations MAY include an ambient thermometer (temperature sensor).
If present, it MUST be defined as SENSOR_TYPE_AMBIENT_TEMPERATURE and it MUST
measure the ambient (room) temperature in degrees Celsius.
   </p>
   <p>
    Device implementations MAY but SHOULD NOT include a CPU temperature sensor. If
present, it MUST be defined as SENSOR_TYPE_TEMPERATURE, it MUST measure the
temperature of the device CPU, and it MUST NOT measure any other temperature.
Note the SENSOR_TYPE_TEMPERATURE sensor type was deprecated in Android 4.0.
   </p>
   <div class="note">
    For Android Automotive implementations, SENSOR_TYPE_AMBIENT_TEMPERATURE MUST
measure the temperature inside the vehicle cabin.
   </div>
   <h3 id="7_3_7_photometer">
    7.3.7. Photometer
   </h3>
   <p>
    Device implementations MAY include a photometer (ambient light sensor).
   </p>
   <h3 id="7_3_8_proximity_sensor">
    7.3.8. Proximity Sensor
   </h3>
   <p>
    Device implementations MAY include a proximity sensor. Devices that can make a
voice call and indicate any value other than PHONE_TYPE_NONE in getPhoneType
SHOULD include a proximity sensor. If a device implementation does include a
proximity sensor, it:
   </p>
   <ul>
    <li>
     MUST measure the proximity of an object in the same direction as the
screen. That is, the proximity sensor MUST be oriented to detect objects close
to the screen, as the primary intent of this sensor type is to detect a phone
in use by the user. If a device implementation includes a proximity sensor with
any other orientation, it MUST NOT be accessible through this API.
    </li>
    <li>
     MUST have 1-bit of accuracy or more.
    </li>
   </ul>
   <h3 id="7_3_9_high_fidelity_sensors">
    7.3.9. High Fidelity Sensors
   </h3>
   <p>
    Device implementations supporting a set of higher quality sensors that can meet
all the requirements listed in this section MUST identify the support through
the
    <code>
     android.hardware.sensor.hifi_sensors
    </code>
    feature flag.
   </p>
   <p>
    A device declaring android.hardware.sensor.hifi_sensors MUST support all of the
following sensor types meeting the quality requirements as below:
   </p>
   <ul>
    <li>
     SENSOR_TYPE_ACCELEROMETER
     <ul>
      <li>
       MUST have a measurement range between at least -8g and +8g.
      </li>
      <li>
       MUST have a measurement resolution of at least 1024 LSB/G.
      </li>
      <li>
       MUST have a minimum measurement frequency of 12.5 Hz or lower.
      </li>
      <li>
       MUST have a maximum measurement frequency of 400 Hz or higher.
      </li>
      <li>
       MUST have a measurement noise not above 400 uG/&radic;Hz.
      </li>
      <li>
       MUST implement a non-wake-up form of this sensor with a buffering
    capability of at least 3000 sensor events.
      </li>
      <li>
       MUST have a batching power consumption not worse than 3 mW.
      </li>
      <li>
       SHOULD have a stationary noise bias stability of \&lt;15 &mu;g &radic;Hz from 24hr static
    dataset.
      </li>
      <li>
       SHOULD have a bias change vs. temperature of &le; +/- 1mg / &deg;C.
      </li>
      <li>
       SHOULD have a best-fit line non-linearity of &le; 0.5%, and sensitivity change vs. temperature of &le;
    0.03%/C&deg;.
      </li>
     </ul>
    </li>
    <li>
     <p>
      SENSOR_TYPE_GYROSCOPE
     </p>
     <ul>
      <li>
       MUST have a measurement range between at least -1000 and +1000 dps.
      </li>
      <li>
       MUST have a measurement resolution of at least 16 LSB/dps.
      </li>
      <li>
       MUST have a minimum measurement frequency of 12.5 Hz or lower.
      </li>
      <li>
       MUST have a maximum measurement frequency of 200 Hz or higher.
      </li>
      <li>
       MUST have a measurement noise not above 0.014&deg;/s/&radic;Hz.
      </li>
      <li>
       SHOULD have a stationary bias stability of &lt; 0.0002 &deg;/s &radic;Hz from 24-hour static dataset.
      </li>
      <li>
       SHOULD have a bias change vs. temperature of &le; +/- 0.05 &deg;/ s / &deg;C.
      </li>
      <li>
       SHOULD have a sensitivity change vs. temperature of &le; 0.02% / &deg;C.
      </li>
      <li>
       SHOULD have a best-fit line non-linearity of &le; 0.2%.
      </li>
      <li>
       SHOULD have a noise density of &le; 0.07 &deg;/s/&radic;Hz.
      </li>
     </ul>
    </li>
    <li>
     <p>
      SENSOR_TYPE_GYROSCOPE_UNCALIBRATED with the same quality requirements as
    SENSOR_TYPE_GYROSCOPE.
     </p>
    </li>
    <li>
     SENSOR_TYPE_GEOMAGNETIC_FIELD
     <ul>
      <li>
       MUST have a measurement range between at least -900 and +900 uT.
      </li>
      <li>
       MUST have a measurement resolution of at least 5 LSB/uT.
      </li>
      <li>
       MUST have a minimum measurement frequency of 5 Hz or lower.
      </li>
      <li>
       MUST have a maximum measurement frequency of 50 Hz or higher.
      </li>
      <li>
       MUST have a measurement noise not above 0.5 uT.
      </li>
     </ul>
    </li>
    <li>
     SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED with the same quality requirements
    as SENSOR_TYPE_GEOMAGNETIC_FIELD and in addition:
     <ul>
      <li>
       MUST implement a non-wake-up form of this sensor with a buffering
    capability of at least 600 sensor events.
      </li>
     </ul>
    </li>
    <li>
     SENSOR_TYPE_PRESSURE
     <ul>
      <li>
       MUST have a measurement range between at least 300 and 1100 hPa.
      </li>
      <li>
       MUST have a measurement resolution of at least 80 LSB/hPa.
      </li>
      <li>
       MUST have a minimum measurement frequency of 1 Hz or lower.
      </li>
      <li>
       MUST have a maximum measurement frequency of 10 Hz or higher.
      </li>
      <li>
       MUST have a measurement noise not above 2 Pa/&radic;Hz.
      </li>
      <li>
       MUST implement a non-wake-up form of this sensor with a buffering
    capability of at least 300 sensor events.
      </li>
      <li>
       MUST have a batching power consumption not worse than 2 mW.
      </li>
     </ul>
    </li>
    <li>
     SENSOR_TYPE_GAME_ROTATION_VECTOR
     <ul>
      <li>
       MUST implement a non-wake-up form of this sensor with a buffering
    capability of at least 300 sensor events.
      </li>
      <li>
       MUST have a batching power consumption not worse than 4 mW.
      </li>
     </ul>
    </li>
    <li>
     SENSOR_TYPE_SIGNIFICANT_MOTION
     <ul>
      <li>
       MUST have a power consumption not worse than 0.5 mW when device is
    static and 1.5 mW when device is moving.
      </li>
     </ul>
    </li>
    <li>
     SENSOR_TYPE_STEP_DETECTOR
     <ul>
      <li>
       MUST implement a non-wake-up form of this sensor with a buffering
    capability of at least 100 sensor events.
      </li>
      <li>
       MUST have a power consumption not worse than 0.5 mW when device is
    static and 1.5 mW when device is moving.
      </li>
      <li>
       MUST have a batching power consumption not worse than 4 mW.
      </li>
     </ul>
    </li>
    <li>
     SENSOR_TYPE_STEP_COUNTER
     <ul>
      <li>
       MUST have a power consumption not worse than 0.5 mW when device is
    static and 1.5 mW when device is moving.
      </li>
     </ul>
    </li>
    <li>
     SENSOR_TILT_DETECTOR
     <ul>
      <li>
       MUST have a power consumption not worse than 0.5 mW when device is
    static and 1.5 mW when device is moving.
      </li>
     </ul>
    </li>
   </ul>
   <p>
    Also such a device MUST meet the following sensor subsystem requirements:
   </p>
   <ul>
    <li>
     The event timestamp of the same physical event reported by the
Accelerometer, Gyroscope sensor and Magnetometer MUST be within 2.5
milliseconds of each other.
    </li>
    <li>
     The Gyroscope sensor event timestamps MUST be on the same time base as the
camera subsystem and within 1 milliseconds of error.
    </li>
    <li>
     High Fidelity sensors MUST deliver samples to applications within 5
milliseconds from the time when the data is available on the physical sensor
to the application.
    </li>
    <li>
     The power consumption MUST not be higher than 0.5 mW when device is static
and 2.0 mW when device is moving when any combination of the following sensors
are enabled:
     <ul>
      <li>
       SENSOR_TYPE_SIGNIFICANT_MOTION
      </li>
      <li>
       SENSOR_TYPE_STEP_DETECTOR
      </li>
      <li>
       SENSOR_TYPE_STEP_COUNTER
      </li>
      <li>
       SENSOR_TILT_DETECTORS
      </li>
     </ul>
    </li>
   </ul>
   <p>
    Note that all power consumption requirements in this section do not include the
power consumption of the Application Processor. It is inclusive of the power
drawn by the entire sensor chain&mdash;the sensor, any supporting circuitry, any
dedicated sensor processing system, etc.
   </p>
   <p>
    The following sensor types MAY also be supported on a device implementation
declaring android.hardware.sensor.hifi_sensors, but if these sensor types are
present they MUST meet the following minimum buffering capability requirement:
   </p>
   <ul>
    <li>
     SENSOR_TYPE_PROXIMITY: 100 sensor events
    </li>
   </ul>
   <h3 id="7_3_10_fingerprint_sensor">
    7.3.10. Fingerprint Sensor
   </h3>
   <p>
    Device implementations with a secure lock screen SHOULD include a fingerprint
sensor. If a device implementation includes a fingerprint sensor and has a
corresponding API for third-party developers, it:
   </p>
   <ul>
    <li>
     MUST declare support for the android.hardware.fingerprint feature.
    </li>
    <li>
     MUST fully implement the
     <a href="https://developer.android.com/reference/android/hardware/fingerprint/package-summary.html">
      corresponding API</a> as described in the Android SDK documentation.
    </li>
    <li>
     MUST have a false acceptance rate not higher than 0.002%.
    </li>
    <li>
     Is STRONGLY RECOMMENDED to have a false rejection rate of less than 10%, as
measured on the device
    </li>
    <li>
     Is STRONGLY RECOMMENDED to have a latency below 1 second, measured from
when the fingerprint sensor is touched until the screen is unlocked, for one
enrolled finger.
    </li>
    <li>
     MUST rate limit attempts for at least 30 seconds after five false trials
for fingerprint verification.
    </li>
    <li>
     MUST have a hardware-backed keystore implementation, and perform the
fingerprint matching in a Trusted Execution Environment (TEE) or on a chip with
a secure channel to the TEE.
    </li>
    <li>
     MUST have all identifiable fingerprint data encrypted and cryptographically
authenticated such that they cannot be acquired, read or altered outside of the
Trusted Execution Environment (TEE) as documented in the
     <a href="https://source.android.com/devices/tech/security/authentication/fingerprint-hal.html">
      implementation guidelines</a> on the Android Open Source Project site.
    </li>
    <li>
     MUST prevent adding a fingerprint without first establishing a chain of
trust by having the user confirm existing or add a new device credential
(PIN/pattern/password) using the TEE as implemented in the Android Open Source
project.
    </li>
    <li>
     MUST NOT enable 3rd-party applications to distinguish between individual
fingerprints.
    </li>
    <li>
     MUST honor the DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT flag.
    </li>
    <li>
     MUST, when upgraded from a version earlier than Android 6.0, have the
fingerprint data securely migrated to meet the above requirements or removed.
    </li>
    <li>
     SHOULD use the Android Fingerprint icon provided in the Android Open Source
Project.
    </li>
   </ul>
   <h3 id="7_3_11_android_automotive-only_sensors">
    7.3.11. Android Automotive-only sensors
   </h3>
   <p>
    Automotive-specific sensors are defined in the
    <code>
     android.car.CarSensorManager API
    </code>.
   </p>
   <h4 id="7_3_11_1_current_gear">
    7.3.11.1. Current Gear
   </h4>
   <p>
    Android Automotive implementations SHOULD provide current gear as SENSOR_TYPE_GEAR.
   </p>
   <h4 id="7_3_11_2_day_night_mode">
    7.3.11.2. Day Night Mode
   </h4>
   <p>
    Android Automotive implementations MUST support day/night mode defined as
SENSOR_TYPE_NIGHT. The value of this flag MUST be consistent with dashboard
day/night mode and SHOULD be based on ambient light sensor input. The
underlying ambient light sensor MAY be the same as
    <a href="#7_3_7_photometer">Photometer</a>. 
   </p>
   <h4 id="7_3_11_3_driving_status">
    7.3.11.3. Driving Status
   </h4>
   <p>
    Android Automotive implementations MUST support driving status defined as
SENSOR_TYPE_DRIVING_STATUS, with a default value of DRIVE_STATUS_UNRESTRICTED
when the vehicle is fully stopped and parked. It is the responsibility of device
manufacturers to configure SENSOR_TYPE_DRIVING_STATUS in compliance with all
laws and regulations that apply to markets where the product is shipping.
   </p>
   <h4 id="7_3_11_4_wheel_speed">
    7.3.11.4. Wheel Speed
   </h4>
   <p>
    Android Automotive implementations MUST provide vehicle speed defined as
SENSOR_TYPE_CAR_SPEED.
   </p>
   <h2 id="7_3_12_pose_sensor">
    7.3.12. Pose Sensor
   </h2>
   <p>
    Device implementations MAY support pose sensor with 6 degrees of freedom. Android Handheld
devices are RECOMMENDED to support this sensor. If a device implementation does support pose
sensor with 6 degrees of freedom, it:
   </p>
   <ul>
    <li>
     MUST implement and report
     <a href="https://developer.android.com/reference/android/hardware/Sensor.html#TYPE_POSE_6DOF">
      <code> TYPE_POSE_6DOF</code></a> sensor.
    </li>
    <li>
     MUST be more accurate than the rotation vector alone.
    </li>
   </ul>
   <h2 id="7_4_data_connectivity">
    7.4. Data Connectivity
   </h2>
   <h3 id="7_4_1_telephony">
    7.4.1. Telephony
   </h3>
   <p>
    &ldquo;Telephony&rdquo; as used by the Android APIs and this document refers specifically
to hardware related to placing voice calls and sending SMS messages via a GSM
or CDMA network. While these voice calls may or may not be packet-switched,
they are for the purposes of Android considered independent of any data
connectivity that may be implemented using the same network. In other words,
the Android &ldquo;telephony&rdquo; functionality and APIs refer specifically to voice
calls and SMS. For instance, device implementations that cannot place calls or
send/receive SMS messages MUST NOT report the android.hardware.telephony
feature or any subfeatures, regardless of whether they use a cellular network
for data connectivity.
   </p>
   <p>
    Android MAY be used on devices that do not include telephony hardware. That is,
Android is compatible with devices that are not phones. However, if a device
implementation does include GSM or CDMA telephony, it MUST implement full
support for the API for that technology. Device implementations that do not
include telephony hardware MUST implement the full APIs as no-ops.
   </p>
   <h4 id="7_4_1_1_number_blocking_compatibility">
    7.4.1.1. Number Blocking Compatibility
   </h4>
   <p>
    Android Telephony device implementations MUST include number blocking support
and:
   </p>
   <ul>
    <li>
     MUST fully implement
     <a href="http://developer.android.com/reference/android/provider/BlockedNumberContract.html">BlockedNumberContract</a> and the corresponding API as described in the SDK documentation.
    </li>
    <li>
     MUST block all calls and messages from a phone number in
'BlockedNumberProvider' without any interaction with apps. The only exception
is when number blocking is temporarily lifted as described in the SDK
documentation.
    </li>
    <li>
     MUST NOT write to the
     <a href="http://developer.android.com/reference/android/provider/CallLog.html">platform call log provider</a> for a blocked call.
    </li>
    <li>
     MUST NOT write to the
     <a href="http://developer.android.com/reference/android/provider/Telephony.html">telephony provider</a> for a blocked message.
    </li>
    <li>
     MUST implement a blocked numbers management UI, which is opened with the
intent returned by TelecomManager.createManageBlockedNumbersIntent() method.
    </li>
    <li>
     MUST NOT allow secondary users to view or edit the blocked numbers on the
device as the Android platform assumes the primary user to have full control
of the telephony services, a single instance, on the device. All blocking
related UI MUST be hidden for secondary users and the blocked list MUST still
be respected.
    </li>
    <li>
     SHOULD migrate the blocked numbers into the provider when a device updates
to Android 7.0.
    </li>
   </ul>
   <h3 id="7_4_2_ieee_802_11_(wi-fi)">
    7.4.2. IEEE 802.11 (Wi-Fi)
   </h3>
   <p>
    All Android device implementations SHOULD include support for one or more forms
of 802.11. If a device implementation does include support for 802.11 and exposes the
functionality to a third-party application, it MUST implement the corresponding
Android API and:
   </p>
   <ul>
    <li>
     MUST report the hardware feature flag android.hardware.wifi.
    </li>
    <li>
     MUST implement the
     <a href="http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html">multicast API</a> as described in the SDK documentation.
    </li>
    <li>
     MUST support multicast DNS (mDNS) and MUST NOT filter mDNS packets
(224.0.0.251) at any time of operation including:
     <ul>
      <li>
       Even when the screen is not in an active state.
      </li>
      <li>
       For Android Television device implementations, even when in standby
power states.
      </li>
     </ul>
    </li>
   </ul>
   <h4 id="7_4_2_1_wi-fi_direct">
    7.4.2.1. Wi-Fi Direct
   </h4>
   <p>
    Device implementations SHOULD include support for Wi-Fi Direct (Wi-Fi
peer-to-peer). If a device implementation does include support for Wi-Fi
Direct, it MUST implement the
    <a href="http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html">corresponding Android API</a> as described in the SDK documentation. If a device implementation includes
support for Wi-Fi Direct, then it:
   </p>
   <ul>
    <li>
     MUST report the hardware feature android.hardware.wifi.direct.
    </li>
    <li>
     MUST support regular Wi-Fi operation.
    </li>
    <li>
     SHOULD support concurrent Wi-Fi and Wi-Fi Direct operation.
    </li>
   </ul>
   <h4 id="7_4_2_2_wi-fi_tunneled_direct_link_setup">
    7.4.2.2. Wi-Fi Tunneled Direct Link Setup
   </h4>
   <p>
    Device implementations SHOULD include support for
    <a href="http://developer.android.com/reference/android/net/wifi/WifiManager.html">
     Wi-Fi Tunneled Direct Link Setup (TDLS)</a> as described in the Android SDK Documentation. If a device
implementation does include support for TDLS and TDLS is enabled by the
WiFiManager API, the device:
   </p>
   <ul>
    <li>
     SHOULD use TDLS only when it is possible AND beneficial.
    </li>
    <li>
     SHOULD have some heuristic and NOT use TDLS when its performance might be
worse than going through the Wi-Fi access point.
    </li>
   </ul>
   <h3 id="7_4_3_bluetooth">
    7.4.3. Bluetooth
   </h3>
   <div class="note">
    Android Watch implementations MUST support Bluetooth. Android Television
implementations MUST support Bluetooth and Bluetooth LE. Android Automotive
implementations MUST support Bluetooth and SHOULD support Bluetooth LE.
   </div>
   <p>
    Device implementations that support
    <code>
     android.hardware.vr.high_performance
    </code>
    feature MUST
support Bluetooth 4.2 and Bluetooth LE Data Length Extension.
   </p>
   <p>
    Android includes support for
    <a href="http://developer.android.com/reference/android/bluetooth/package-summary.html">Bluetooth and Bluetooth Low Energy</a>.  Device implementations that include support for Bluetooth and Bluetooth Low
Energy MUST declare the relevant platform features (android.hardware.bluetooth
and android.hardware.bluetooth_le respectively) and implement the platform
APIs. Device implementations SHOULD implement relevant Bluetooth profiles such
as A2DP, AVCP, OBEX, etc. as appropriate for the device.
   </p>
   <p>
    Android Automotive implementations SHOULD support Message Access Profile (MAP).
Android Automotive implementations MUST support the following Bluetooth
profiles:
   </p>
   <ul>
    <li>
     Phone calling over Hands-Free Profile (HFP).
    </li>
    <li>
     Media playback over Audio Distribution Profile (A2DP).
    </li>
    <li>
     Media playback control over Remote Control Profile (AVRCP).
    </li>
    <li>
     Contact sharing using the Phone Book Access Profile (PBAP).
    </li>
   </ul>
   <p>
    Device implementations including support for Bluetooth Low Energy:
   </p>
   <ul>
    <li>
     MUST declare the hardware feature android.hardware.bluetooth_le.
    </li>
    <li>
     MUST enable the GATT (generic attribute profile) based Bluetooth APIs as
described in the SDK documentation and
     <a href="http://developer.android.com/reference/android/bluetooth/package-summary.html">android.bluetooth</a>. 
    </li>
    <li>
     are STRONGLY RECOMMENDED to implement a Resolvable Private Address (RPA)
timeout no longer than 15 minutes and rotate the address at timeout to protect
user privacy.
    </li>
    <li>
     SHOULD support offloading of the filtering logic to the bluetooth chipset
when implementing the
     <a href="https://developer.android.com/reference/android/bluetooth/le/ScanFilter.html">ScanFilter API</a>, 
and MUST report the correct value of where the filtering logic is implemented
whenever queried via the
android.bluetooth.BluetoothAdapter.isOffloadedFilteringSupported() method.
    </li>
    <li>
     SHOULD support offloading of the batched scanning to the bluetooth chipset,
but if not supported, MUST report &lsquo;false&rsquo; whenever queried via the
android.bluetooth.BluetoothAdapter.isOffloadedScanBatchingSupported() method.
    </li>
    <li>
     SHOULD support multi advertisement with at least 4 slots, but if not
supported, MUST report &lsquo;false&rsquo; whenever queried via the
android.bluetooth.BluetoothAdapter.isMultipleAdvertisementSupported() method.
    </li>
   </ul>
   <h3 id="7_4_4_near-field_communications">
    7.4.4. Near-Field Communications
   </h3>
   <p>
    Device implementations SHOULD include a transceiver and related hardware for
Near-Field Communications (NFC). If a device implementation does include NFC
hardware and plans to make it available to third-party apps, then it:
   </p>
   <ul>
    <li>
     MUST report the android.hardware.nfc feature from the
     <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">android.content.pm.PackageManager.hasSystemFeature() method</a>. 
    </li>
    <li>
     <p>
      MUST be capable of reading and writing NDEF messages via the following NFC
standards:
     </p>
     <ul>
      <li>
       MUST be capable of acting as an NFC Forum reader/writer (as defined by
the NFC Forum technical specification NFCForum-TS-DigitalProtocol-1.0) via the
following NFC standards:
       <ul>
        <li>
         NfcA (ISO14443-3A)
        </li>
        <li>
         NfcB (ISO14443-3B)
        </li>
        <li>
         NfcF (JIS X 6319-4)
        </li>
        <li>
         IsoDep (ISO 14443-4)
        </li>
        <li>
         NFC Forum Tag Types 1, 2, 3, 4 (defined by the NFC Forum)
        </li>
        <li>
         STRONGLY RECOMMENDED to be capable of reading and writing NDEF messages
as well as raw data via the following NFC standards. Note that while the NFC
standards below are stated as STRONGLY RECOMMENDED, the Compatibility
Definition for a future version is planned to change these to MUST. These
standards are optional in this version but will be required in future versions.
Existing and new devices that run this version of Android are very strongly
encouraged to meet these requirements now so they will be able to upgrade to
the future platform releases.
        </li>
        <li>
         NfcV (ISO 15693)
        </li>
       </ul>
      </li>
      <li>
       SHOULD be capable of reading the barcode and URL (if encoded) of
       <a href="http://developer.android.com/reference/android/nfc/tech/NfcBarcode.html">Thinfilm NFC Barcode</a> products.
      </li>
      <li>
       MUST be capable of transmitting and receiving data via the following
peer-to-peer standards and protocols:
       <ul>
        <li>
         ISO 18092
        </li>
        <li>
         LLCP 1.2 (defined by the NFC Forum)
        </li>
        <li>
         SDP 1.0 (defined by the NFC Forum)
        </li>
        <li>
         <a href="http://static.googleusercontent.com/media/source.android.com/en/us/compatibility/ndef-push-protocol.pdf">NDEF Push Protocol</a> </li>
        <li>
         SNEP 1.0 (defined by the NFC Forum)
        </li>
       </ul>
      </li>
      <li>
       MUST include support for
       <a href="http://developer.android.com/guide/topics/connectivity/nfc/nfc.html">Android Beam</a>. 
      </li>
      <li>
       MUST implement the SNEP default server. Valid NDEF messages received by
    the default SNEP server MUST be dispatched to applications using the
    android.nfc.ACTION_NDEF_DISCOVERED intent. Disabling Android Beam in
    settings MUST NOT disable dispatch of incoming NDEF message.
      </li>
      <li>
       MUST honor the android.settings.NFCSHARING_SETTINGS intent to show
       <a href="http://developer.android.com/reference/android/provider/Settings.html#ACTION_NFCSHARING_SETTINGS">NFC sharing settings</a>. 
      </li>
      <li>
       MUST implement the NPP server. Messages received by the NPP server MUST
    be processed the same way as the SNEP default server.
      </li>
      <li>
       MUST implement a SNEP client and attempt to send outbound P2P NDEF to
    the default SNEP server when Android Beam is enabled. If no default SNEP
    server is found then the client MUST attempt to send to an NPP server.
      </li>
      <li>
       MUST allow foreground activities to set the outbound P2P NDEF message
    using android.nfc.NfcAdapter.setNdefPushMessage, and
    android.nfc.NfcAdapter.setNdefPushMessageCallback, and
    android.nfc.NfcAdapter.enableForegroundNdefPush.
      </li>
      <li>
       SHOULD use a gesture or on-screen confirmation, such as 'Touch to Beam',
    before sending outbound P2P NDEF messages.
      </li>
      <li>
       <p>
        SHOULD enable Android Beam by default and MUST be able to send and
    receive using Android Beam, even when another proprietary NFC P2p mode
    is turned on.
       </p>
      </li>
      <li>
       <p>
        MUST support NFC Connection handover to Bluetooth when the device
supports Bluetooth Object Push Profile. Device implementations MUST support
connection handover to Bluetooth when using
android.nfc.NfcAdapter.setBeamPushUris, by implementing the &ldquo;
        <a href="http://members.nfc-forum.org/specs/spec_list/#conn_handover">Connection Handover version 1.2</a> &rdquo; and
&ldquo;
        <a href="http://members.nfc-forum.org/apps/group_public/download.php/18688/NFCForum-AD-BTSSP_1_1.pdf">Bluetooth Secure Simple Pairing Using NFC version 1.0</a> &rdquo;
specs from the NFC Forum. Such an implementation MUST implement the handover
LLCP service with service name &ldquo;urn:nfc:sn:handover&rdquo; for exchanging the
handover request/select records over NFC, and it MUST use the Bluetooth Object
Push Profile for the actual Bluetooth data transfer. For legacy reasons (to
remain compatible with Android 4.1 devices), the implementation SHOULD still
accept SNEP GET requests for exchanging the handover request/select records
over NFC. However an implementation itself SHOULD NOT send SNEP GET requests
for performing connection handover.
       </p>
      </li>
      <li>
       MUST poll for all supported technologies while in NFC discovery mode.
      </li>
      <li>
       SHOULD be in NFC discovery mode while the device is awake with the
screen active and the lock-screen unlocked.
      </li>
     </ul>
    </li>
   </ul>
   <p>
    (Note that publicly available links are not available for the JIS, ISO, and NFC
Forum specifications cited above.)
   </p>
   <p>
    Android includes support for NFC Host Card Emulation (HCE) mode. If a device
implementation does include an NFC controller chipset capable of HCE (for NfcA
and/or NfcB) and it supports Application ID (AID) routing, then it:
   </p>
   <ul>
    <li>
     MUST report the android.hardware.nfc.hce feature constant.
    </li>
    <li>
     MUST support
     <a href="http://developer.android.com/guide/topics/connectivity/nfc/hce.html">
      NFC HCE APIs</a> as defined in the Android SDK.
    </li>
   </ul>
   <p>
    If a device implementation does include an NFC controller chipset capable of HCE
for NfcF, and it implements the feature for third-party applications, then it:
   </p>
   <ul>
    <li>
     MUST report the android.hardware.nfc.hcef feature constant.
    </li>
    <li>
     MUST implement the
     <a href="https://developer.android.com/reference/android/nfc/cardemulation/NfcFCardEmulation.html">NfcF Card Emulation APIs</a> as defined in the Android SDK.
    </li>
   </ul>
   <p>
    Additionally, device implementations MAY include reader/writer support for the
following MIFARE technologies.
   </p>
   <ul>
    <li>
     MIFARE Classic
    </li>
    <li>
     MIFARE Ultralight
    </li>
    <li>
     NDEF on MIFARE Classic
    </li>
   </ul>
   <p>
    Note that Android includes APIs for these MIFARE types. If a device
implementation supports MIFARE in the reader/writer role, it:
   </p>
   <ul>
    <li>
     MUST implement the corresponding Android APIs as documented by the Android SDK.
    </li>
    <li>
     MUST report the feature com.nxp.mifare from the
     <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">android.content.pm.PackageManager.hasSystemFeature()</a> method. Note that this is not a standard Android feature and as such does
    not appear as a constant in the android.content.pm.PackageManager class.
    </li>
    <li>
     MUST NOT implement the corresponding Android APIs nor report the
    com.nxp.mifare feature unless it also implements general NFC support as
    described in this section.
    </li>
   </ul>
   <p>
    If a device implementation does not include NFC hardware, it MUST NOT declare
the android.hardware.nfc feature from the
    <a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">android.content.pm.PackageManager.hasSystemFeature()</a> method, and MUST implement the Android NFC API as a no-op.
   </p>
   <p>
    As the classes android.nfc.NdefMessage and android.nfc.NdefRecord represent a
protocol-independent data representation format, device implementations MUST
implement these APIs even if they do not include support for NFC or declare the
android.hardware.nfc feature.
   </p>
   <h3 id="7_4_5_minimum_network_capability">
    7.4.5. Minimum Network Capability
   </h3>
   <p>
    Device implementations MUST include support for one or more forms of data
networking. Specifically, device implementations MUST include support for at
least one data standard capable of 200 Kbit/sec or greater. Examples of
technologies that satisfy this requirement include EDGE, HSPA, EV-DO, 802.11g,
Ethernet, Bluetooth PAN, etc.
   </p>
   <p>
    Device implementations where a physical networking standard (such as Ethernet)
is the primary data connection SHOULD also include support for at least one
common wireless data standard, such as 802.11 (Wi-Fi).
   </p>
   <p>
    Devices MAY implement more than one form of data connectivity.
   </p>
   <p>
    Devices MUST include an IPv6 networking stack and support IPv6 communication
using the managed APIs, such as
    <code>
     java.net.Socket
    </code>
    and
    <code>
     java.net.URLConnection
    </code>,
as well as the native APIs, such as
    <code>
     AF_INET6
    </code>
    sockets. The required level of
IPv6 support depends on the network type, as follows:
   </p>
   <ul>
    <li>
     Devices that support Wi-Fi networks MUST support dual-stack and IPv6-only
    operation on Wi-Fi.
    </li>
    <li>
     Devices that support Ethernet networks MUST support dual-stack operation on
    Ethernet.
    </li>
    <li>
     Devices that support cellular data SHOULD support IPv6 operation (IPv6-only
    and possibly dual-stack) on cellular data.
    </li>
    <li>
     When a device is simultaneously connected to more than one network (e.g.,
    Wi-Fi and cellular data), it MUST simultaneously meet these requirements on
    each network to which it is connected.
    </li>
   </ul>
   <p>
    IPv6 MUST be enabled by default.
   </p>
   <p>
    In order to ensure that IPv6 communication is as reliable as IPv4, unicast IPv6
packets sent to the device MUST NOT be dropped, even when the screen is not in
an active state. Redundant multicast IPv6 packets, such as repeated identical
Router Advertisements, MAY be rate-limited in hardware or firmware if doing so
is necessary to save power. In such cases, rate-limiting MUST NOT cause the
device to lose IPv6 connectivity on any IPv6-compliant network that uses RA
lifetimes of at least 180 seconds.
   </p>
   <p>
    IPv6 connectivity MUST be maintained in doze mode.
   </p>
   <h3 id="7_4_6_sync_settings">
    7.4.6. Sync Settings
   </h3>
   <p>
    Device implementations MUST have the master auto-sync setting on by default so
that the method
    <a href="http://developer.android.com/reference/android/content/ContentResolver.html">getMasterSyncAutomatically()</a> returns &ldquo;true&rdquo;.
   </p>
   <h3 id="7_4_7_data_saver">
    7.4.7. Data Saver
   </h3>
   <p>
    Device implementations with a metered connection are STRONGLY RECOMMENDED to provide the
data saver mode.
   </p>
   <p>
    If a device implementation provides the data saver mode, it:
   </p>
   <ul>
    <li>
     <p>
      MUST support all the APIs in the
      <code>
       ConnectivityManager
      </code>
      class as described in the
      <a href="https://developer.android.com/training/basics/network-ops/data-saver.html">SDK documentation</a>. 
     </p>
    </li>
    <li>
     <p>
      MUST provide a user interface in the settings, allowing users to add
    applications to or remove applications from the whitelist.
     </p>
    </li>
   </ul>
   <p>
    Conversely if a device implementation does not provide the data saver mode, it:
   </p>
   <ul>
    <li>
     <p>
      MUST return the value
      <code>
       RESTRICT_BACKGROUND_STATUS_DISABLED
      </code>
      for
      <a href="https://developer.android.com/reference/android/net/ConnectivityManager.html#getRestrictBackgroundStatus%28%29">
       <code>
        ConnectivityManager.getRestrictBackgroundStatus
       </code>
      </a>
     </p>
    </li>
    <li>
     <p>
      MUST not broadcast
      <code>
       ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED
      </code>
     </p>
    </li>
    <li>
     <p>
      MUST have an activity that handles the
      <code>
       Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS
      </code>
      intent but MAY implement it as a no-op.
     </p>
    </li>
   </ul>
   <h2 id="7_5_cameras">
    7.5. Cameras
   </h2>
   <p>
    Device implementations SHOULD include a rear-facing camera and MAY include a
front-facing camera. A rear-facing camera is a camera located on the side of
the device opposite the display; that is, it images scenes on the far side of
the device, like a traditional camera. A front-facing camera is a camera
located on the same side of the device as the display; that is, a camera
typically used to image the user, such as for video conferencing and similar
applications.
   </p>
   <p>
    If a device implementation includes at least one camera, it MUST be possible for
an application to simultaneously allocate 3 RGBA_8888 bitmaps equal to the size
of the images produced by the largest-resolution camera sensor on the device,
while camera is open for the purpose of basic preview and still capture.
   </p>
   <h3 id="7_5_1_rear-facing_camera">
    7.5.1. Rear-Facing Camera
   </h3>
   <p>
    Device implementations SHOULD include a rear-facing camera. If a device
implementation includes at least one rear-facing camera, it:
   </p>
   <ul>
    <li>
     MUST report the feature flag android.hardware.camera and
android.hardware.camera.any.
    </li>
    <li>
     MUST have a resolution of at least 2 megapixels.
    </li>
    <li>
     SHOULD have either hardware auto-focus or software auto-focus implemented
in the camera driver (transparent to application software).
    </li>
    <li>
     MAY have fixed-focus or EDOF (extended depth of field) hardware.
    </li>
    <li>
     MAY include a flash. If the Camera includes a flash, the flash lamp MUST
NOT be lit while an android.hardware.Camera.PreviewCallback instance has been
registered on a Camera preview surface, unless the application has explicitly
enabled the flash by enabling the FLASH_MODE_AUTO or FLASH_MODE_ON attributes
of a Camera.Parameters object. Note that this constraint does not apply to the
device&rsquo;s built-in system camera application, but only to third-party
applications using Camera.PreviewCallback.
    </li>
   </ul>
   <h3 id="7_5_2_front-facing_camera">
    7.5.2. Front-Facing Camera
   </h3>
   <p>
    Device implementations MAY include a front-facing camera. If a device
implementation includes at least one front-facing camera, it:
   </p>
   <ul>
    <li>
     MUST report the feature flag android.hardware.camera.any and
android.hardware.camera.front.
    </li>
    <li>
     MUST have a resolution of at least VGA (640x480 pixels).
    </li>
    <li>
     MUST NOT use a front-facing camera as the default for the Camera API. The
camera API in Android has specific support for front-facing cameras and device
implementations MUST NOT configure the API to to treat a front-facing camera as
the default rear-facing camera, even if it is the only camera on the device.
    </li>
    <li>
     MAY include features (such as auto-focus, flash, etc.) available to
rear-facing cameras as described in
     <a href="#7_5_1_rear-facing_camera">section 7.5.1</a>. 
    </li>
    <li>
     MUST horizontally reflect (i.e. mirror) the stream displayed by an app in a
CameraPreview, as follows:
     <ul>
      <li>
       If the device implementation is capable of being rotated by user (such
as automatically via an accelerometer or manually via user input), the camera
preview MUST be mirrored horizontally relative to the device&rsquo;s current
orientation.
      </li>
      <li>
       If the current application has explicitly requested that the Camera
display be rotated via a call to the
       <a href="http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation(int)">android.hardware.Camera.setDisplayOrientation()</a> method, the camera preview MUST be mirrored horizontally relative to the
orientation specified by the application.
      </li>
      <li>
       Otherwise, the preview MUST be mirrored along the device&rsquo;s default
horizontal axis.
      </li>
     </ul>
    </li>
    <li>
     MUST mirror the image displayed by the postview in the same manner as the
camera preview image stream. If the device implementation does not support
postview, this requirement obviously does not apply.
    </li>
    <li>
     MUST NOT mirror the final captured still image or video streams returned to
application callbacks or committed to media storage.
    </li>
   </ul>
   <h3 id="7_5_3_external_camera">
    7.5.3. External Camera
   </h3>
   <p>
    Device implementations MAY include support for an external camera that is not
necessarily always connected. If a device includes support for an external camera,
it:
   </p>
   <ul>
    <li>
     MUST declare the platform feature flag
     <code>
      android.hardware.camera.external
     </code>
     and
     <code>
      android.hardware camera.any
     </code>.
    </li>
    <li>
     MAY support multiple cameras.
    </li>
    <li>
     MUST support USB Video Class (UVC 1.0 or higher) if the external camera
    connects through the USB port.
    </li>
    <li>
     SHOULD support video compressions such as MJPEG to enable transfer of
    high-quality unencoded streams (i.e. raw or independently compressed picture
    streams).
    </li>
    <li>
     MAY support camera-based video encoding. If supported, a simultaneous
    unencoded / MJPEG stream (QVGA or greater resolution) MUST be accessible to
    the device implementation.
    </li>
   </ul>
   <h3 id="7_5_4_camera_api_behavior">
    7.5.4. Camera API Behavior
   </h3>
   <p>
    Android includes two API packages to access the camera, the newer
android.hardware.camera2 API expose lower-level camera control to the app,
including efficient zero-copy burst/streaming flows and per-frame controls of
exposure, gain, white balance gains, color conversion, denoising, sharpening,
and more.
   </p>
   <p>
    The older API package, android.hardware.Camera, is marked as deprecated in
Android 5.0 but as it should still be available for apps to use Android device
implementations MUST ensure the continued support of the API as described in
this section and in the Android SDK.
   </p>
   <p>
    Device implementations MUST implement the following behaviors for the
camera-related APIs, for all available cameras:
   </p>
   <ul>
    <li>
     If an application has never called
android.hardware.Camera.Parameters.setPreviewFormat(int), then the device MUST
use android.hardware.PixelFormat.YCbCr_420_SP for preview data provided to
application callbacks.
    </li>
    <li>
     If an application registers an android.hardware.Camera.PreviewCallback
instance and the system calls the onPreviewFrame() method when the preview
format is YCbCr_420_SP, the data in the byte[] passed into onPreviewFrame()
must further be in the NV21 encoding format. That is, NV21 MUST be the default.
    </li>
    <li>
     For android.hardware.Camera, device implementations MUST support the YV12
format (as denoted by the android.graphics.ImageFormat.YV12 constant) for
camera previews for both front- and rear-facing cameras. (The hardware video
encoder and camera may use any native pixel format, but the device
implementation MUST support conversion to YV12.)
    </li>
    <li>
     For android.hardware.camera2, device implementations must support the
android.hardware.ImageFormat.YUV_420_888 and android.hardware.ImageFormat.JPEG
formats as outputs through the android.media.ImageReader API.
    </li>
   </ul>
   <p>
    Device implementations MUST still implement the full
    <a href="http://developer.android.com/reference/android/hardware/Camera.html">
     Camera
API
    </a>
    included in the Android SDK documentation, regardless of whether the device
includes hardware autofocus or other capabilities. For instance, cameras that
lack autofocus MUST still call any registered
android.hardware.Camera.AutoFocusCallback instances (even though this has no
relevance to a non-autofocus camera.) Note that this does apply to front-facing
cameras; for instance, even though most front-facing cameras do not support
autofocus, the API callbacks must still be &ldquo;faked&rdquo; as described.
   </p>
   <p>
    Device implementations MUST recognize and honor each parameter name defined as
a constant on the
    <a href="http://developer.android.com/reference/android/hardware/Camera.Parameters.html">android.hardware.Camera.Parameters</a> class, if the underlying hardware supports the feature. If the device hardware
does not support a feature, the API must behave as documented. Conversely,
device implementations MUST NOT honor or recognize string constants passed to
the android.hardware.Camera.setParameters() method other than those documented
as constants on the android.hardware.Camera.Parameters. That is, device
implementations MUST support all standard Camera parameters if the hardware
allows, and MUST NOT support custom Camera parameter types. For instance,
device implementations that support image capture using high dynamic range
(HDR) imaging techniques MUST support camera parameter Camera.SCENE_MODE_HDR.
   </p>
   <p>
    Because not all device implementations can fully support all the features of
the android.hardware.camera2 API, device implementations MUST report the proper
level of support with the
    <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#INFO_SUPPORTED_HARDWARE_LEVEL">android.info.supportedHardwareLevel</a> property as described in the Android SDK and report the appropriate
    <a href="http://source.android.com/devices/camera/versioning.html">
     framework feature flags</a>.
   </p>
   <p>
    Device implementations MUST also declare its Individual camera capabilities of
android.hardware.camera2 via the android.request.availableCapabilities property
and declare the appropriate
    <a href="http://source.android.com/devices/camera/versioning.html">
     feature flags</a>; a device must
define the feature flag if any of its attached camera devices supports the
feature.
   </p>
   <p>
    Device implementations MUST broadcast the Camera.ACTION_NEW_PICTURE intent
whenever a new picture is taken by the camera and the entry of the picture has
been added to the media store.
   </p>
   <p>
    Device implementations MUST broadcast the Camera.ACTION_NEW_VIDEO intent
whenever a new video is recorded by the camera and the entry of the picture has
been added to the media store.
   </p>
   <h3 id="7_5_5_camera_orientation">
    7.5.5. Camera Orientation
   </h3>
   <p>
    Both front- and rear-facing cameras, if present, MUST be oriented so that the
long dimension of the camera aligns with the screen&rsquo;s long dimension. That is,
when the device is held in the landscape orientation, cameras MUST capture
images in the landscape orientation. This applies regardless of the device&rsquo;s
natural orientation; that is, it applies to landscape-primary devices as well
as portrait-primary devices.
   </p>
   <h2 id="7_6_memory_and_storage">
    7.6. Memory and Storage
   </h2>
   <h3 id="7_6_1_minimum_memory_and_storage">
    7.6.1. Minimum Memory and Storage
   </h3>
   <div class="note">
    Android Television devices MUST have at least 4GB of non-volatile storage
available for application private data.
   </div>
   <p>
    The memory available to the kernel and userspace on device implementations MUST
be at least equal or larger than the minimum values specified by the following
table. (See
    <a href="#7_1_1_screen_configuration">section 7.1.1</a> for screen size and
density definitions.)
   </p>
   <table>
    <tr>
     <th>
      Density and screen size
     </th>
     <th>
      32-bit device
     </th>
     <th>
      64-bit device
     </th>
    </tr>
    <tr>
     <td>
      Android Watch devices (due to smaller screens)
     </td>
     <td>
      416MB
     </td>
     <td>
      Not applicable
     </td>
    </tr>
    <tr>
     <td>
      <ul>
       <li class="table_list">
        280dpi or lower on small/normal screens
       </li>
       <li class="table_list">
        mdpi or lower on large screens
       </li>
       <li class="table_list">
        ldpi or lower on extra large screens
       </li>
      </ul>
     </td>
     <td>
      512MB
     </td>
     <td>
      816MB
     </td>
    </tr>
    <tr>
     <td>
      <ul>
       <li class="table_list">
        xhdpi or higher on small/normal screens
       </li>
       <li class="table_list">
        hdpi or higher on large screens
       </li>
       <li class="table_list">
        mdpi or higher on extra large screens
       </li>
      </ul>
     </td>
     <td>
      608MB
     </td>
     <td>
      944MB
     </td>
    </tr>
    <tr>
     <td>
      <ul>
       <li class="table_list">
        400dpi or higher on small/normal screens
       </li>
       <li class="table_list">
        xhdpi or higher on large screens
       </li>
       <li class="table_list">
        tvdpi or higher on extra large screens
       </li>
      </ul>
     </td>
     <td>
      896MB
     </td>
     <td>
      1280MB
     </td>
    </tr>
    <tr>
     <td>
      <ul>
       <li class="table_list">
        560dpi or higher on small/normal screens
       </li>
       <li class="table_list">
        400dpi or higher on large screens
       </li>
       <li class="table_list">
        xhdpi or higher on extra large screens
       </li>
      </ul>
     </td>
     <td>
      1344MB
     </td>
     <td>
      1824MB
     </td>
    </tr>
   </table>
   <p>
    The minimum memory values MUST be in addition to any memory space already
dedicated to hardware components such as radio, video, and so on that is not
under the kernel&rsquo;s control.
   </p>
   <p>
    Device implementations with less than 512MB of memory available to the kernel
and userspace, unless an Android Watch, MUST return the value "true" for
ActivityManager.isLowRamDevice().
   </p>
   <p>
    Android Television devices MUST have at least 4GB and other device
implementations MUST have at least 3GB of non-volatile storage available for
application private data. That is, the /data partition MUST be at least 4GB for
Android Television devices and at least 3GB for other device implementations.
Device implementations that run Android are
    <strong>
     STRONGLY RECOMMENDED
    </strong>
    to have at
least 4GB of non-volatile storage for application private data so they will be
able to upgrade to the future platform releases.
   </p>
   <p>
    The Android APIs include a
    <a href="http://developer.android.com/reference/android/app/DownloadManager.html">
     Download Manager</a> that applications MAY use to download data files. The device implementation of
the Download Manager MUST be capable of downloading individual files of at
least 100MB in size to the default &ldquo;cache&rdquo; location.
   </p>
   <h3 id="7_6_2_application_shared_storage">
    7.6.2. Application Shared Storage
   </h3>
   <p>
    Device implementations MUST offer shared storage for applications also often
referred as &ldquo;shared external storage&rdquo;.
   </p>
   <p>
    Device implementations MUST be configured with shared storage mounted by
default, &ldquo;out of the box&rdquo;. If the shared storage is not mounted on the
Linuxpath /sdcard, then the device MUST include a Linux symbolic link from
/sdcard to the actual mount point.
   </p>
   <p>
    Device implementations MAY have hardware for user-accessible removable storage,
such as a Secure Digital (SD) card slot. If this slot is used to satisfy the
shared storage requirement, the device implementation:
   </p>
   <ul>
    <li>
     MUST implement a toast or pop-up user interface warning the user when there
is no SD card.
    </li>
    <li>
     MUST include a FAT-formatted SD card 1GB in size or larger OR show on the
box and other material available at time of purchase that the SD card has to be
separately purchased.
    </li>
    <li>
     MUST mount the SD card by default.
    </li>
   </ul>
   <p>
    Alternatively, device implementations MAY allocate internal (non-removable)
storage as shared storage for apps as included in the upstream Android Open
Source Project; device implementations SHOULD use this configuration and
software implementation. If a device implementation uses internal
(non-removable) storage to satisfy the shared storage requirement, while that
storage MAY share space with the application private data, it MUST be at least
1GB in size and mounted on /sdcard (or /sdcard MUST be a symbolic link to the
physical location if it is mounted elsewhere).
   </p>
   <p>
    Device implementations MUST enforce as documented the
android.permission.WRITE_EXTERNAL_STORAGE permission on this shared storage.
Shared storage MUST otherwise be writable by any application that obtains that
permission.
   </p>
   <p>
    Device implementations that include multiple shared storage paths (such as both
an SD card slot and shared internal storage) MUST allow only pre-installed &amp;
privileged Android applications with the WRITE_EXTERNAL_STORAGE permission to
write to the secondary external storage, except when writing to their
package-specific directories or within the
    <code>
     URI
    </code>
    returned by firing the
    <code>
     ACTION_OPEN_DOCUMENT_TREE
    </code>
    intent.
   </p>
   <p>
    However, device implementations SHOULD expose content from both storage paths
transparently through Android&rsquo;s media scanner service and
android.provider.MediaStore.
   </p>
   <p>
    Regardless of the form of shared storage used, if the device implementation has
a USB port with USB peripheral mode support, it MUST provide some mechanism to
access the contents of shared storage from a host computer. Device
implementations MAY use USB mass storage, but SHOULD use Media Transfer
Protocol to satisfy this requirement. If the device implementation supports
Media Transfer Protocol, it:
   </p>
   <ul>
    <li>
     SHOULD be compatible with the reference Android MTP host,
     <a href="http://www.android.com/filetransfer">
      Android File
Transfer
     </a>
     .
    </li>
    <li>
     SHOULD report a USB device class of 0x00.
    </li>
    <li>
     SHOULD report a USB interface name of 'MTP'.
    </li>
   </ul>
   <h3 id="7_6_3_adoptable_storage">
    7.6.3. Adoptable Storage
   </h3>
   <p>
    Device implementations are STRONGLY RECOMMENDED to implement
    <a href="http://source.android.com/devices/storage/adoptable.html">
     adoptable storage</a> if the
removable storage device port is in a long-term stable location, such as within
the battery compartment or other protective cover.
   </p>
   <p>
    Device implementations such as a television, MAY enable adoption through USB
ports as the device is expected to be static and not mobile. But for other
device implementations that are mobile in nature, it is STRONGLY RECOMMENDED to
implement the adoptable storage in a long-term stable location, since
accidentally disconnecting them can cause data loss/corruption.
   </p>
   <h2 id="7_7_usb">
    7.7. USB
   </h2>
   <p>
    Device implementations SHOULD support USB peripheral mode and SHOULD support USB
host mode.
   </p>
   <h3 id="7_7_1_usb_peripheral_mode">
    7.7.1. USB peripheral mode
   </h3>
   <p>
    If a device implementation includes a USB port supporting peripheral mode:
   </p>
   <ul>
    <li>
     The port MUST be connectable to a USB host that has a standard type-A or
    type-C USB port.
    </li>
    <li>
     The port SHOULD use micro-B, micro-AB or Type-C USB form factor. Existing
    and new Android devices are
     <strong>
      STRONGLY RECOMMENDED to meet these
    requirements
     </strong>
     so they will be able to upgrade to the future platform
    releases.
    </li>
    <li>
     The port SHOULD be located on the bottom of the device
    (according to natural orientation) or enable software screen rotation for
    all apps (including home screen), so that the display draws correctly when
    the device is oriented with the port at bottom. Existing and new Android
    devices are
     <strong>
      STRONGLY RECOMMENDED to meet these requirements
     </strong>
     so they will
    be able to upgrade to future platform releases.
    </li>
    <li>
     It MUST allow a USB host connected with the Android device to access the
    contents of the shared storage volume using either USB mass storage or Media
    Transfer Protocol.
    </li>
    <li>
     It SHOULD implement the Android Open Accessory (AOA) API and specification
    as documented in the Android SDK documentation, and if it is an Android
    Handheld device it MUST implement the AOA API. Device implementations
    implementing the AOA specification:
     <ul>
      <li>
       MUST declare support for the hardware feature
       <a href="http://developer.android.com/guide/topics/connectivity/usb/accessory.html">android.hardware.usb.accessory</a>. 
      </li>
      <li>
       MUST implement the
       <a href="http://developer.android.com/reference/android/hardware/usb/UsbConstants.html#USB_CLASS_AUDIO">
        USB audio
    class
       </a>
       as
    documented in the Android SDK documentation.
      </li>
      <li>
       The USB mass storage class MUST include the string "android" at the end
    of the interface description
       <code>
        iInterface
       </code>
       string of the USB mass storage
      </li>
     </ul>
    </li>
    <li>
     It SHOULD implement support to draw 1.5 A current during HS chirp and
    traffic as specified in the
     <a href="http://www.usb.org/developers/docs/devclass_docs/BCv1.2_070312.zip">
      USB Battery Charging specification, revision
    1.2
     </a>
     .
    Existing and new Android devices are
     <strong>
      STRONGLY RECOMMENDED to meet these
    requirements
     </strong>
     so they will be able to upgrade to the future platform
    releases.
    </li>
    <li>
     Type-C devices MUST detect 1.5A and 3.0A chargers per the Type-C resistor
    standard and it must detect changes in the advertisement.
    </li>
    <li>
     Type-C devices also supporting USB host mode are STRONGLY RECOMMENDED to
    support Power Delivery for data and power role swapping.
    </li>
    <li>
     Type-C devices SHOULD support Power Delivery for high-voltage charging and
    support for Alternate Modes such as display out.
    </li>
    <li>
     The value of iSerialNumber in USB standard device descriptor MUST be equal
    to the value of android.os.Build.SERIAL.
    </li>
    <li>
     Type-C devices are STRONGLY RECOMMENDED to not support proprietary charging
    methods that modify Vbus voltage beyond default levels, or alter sink/source
    roles as such may result in interoperability issues with the chargers or
    devices that support the standard USB Power Delivery methods. While this is
    called out as "STRONGLY RECOMMENDED", in future Android versions we might
    REQUIRE all type-C devices to support full interoperability with standard
    type-C chargers.
    </li>
   </ul>
   <h3 id="7_7_2_usb_host_mode">
    7.7.2. USB host mode
   </h3>
   <p>
    If a device implementation includes a USB port supporting host mode, it:
   </p>
   <ul>
    <li>
     SHOULD use a type-C USB port, if the device implementation supports USB 3.1.
    </li>
    <li>
     MAY use a non-standard port form factor, but if so MUST ship with a cable or
    cables adapting the port to a standard type-A or type-C USB port.
    </li>
    <li>
     MAY use a micro-AB USB port, but if so SHOULD ship with a cable or cables adapting the port to a standard type-A or type-C USB port.
    </li>
    <li>
     is
     <strong>
      STRONGLY RECOMMENDED
     </strong>
     to implement the
     <a href="http://developer.android.com/reference/android/hardware/usb/UsbConstants.html#USB_CLASS_AUDIO">
      USB audio
    class
     </a>
     as documented in the Android SDK documentation.
    </li>
    <li>
     MUST implement the Android USB host API as documented in the Android SDK,
    and MUST declare support for the hardware feature
     <a href="http://developer.android.com/guide/topics/connectivity/usb/host.html">android.hardware.usb.host</a>. 
    </li>
    <li>
     SHOULD support the Charging Downstream Port output current range of 1.5 A ~
    5 A as specified in the
     <a href="http://www.usb.org/developers/docs/devclass_docs/BCv1.2_070312.zip">USB Battery Charging specifications, revision 1.2</a>. 
    </li>
    <li>
     USB Type-C devices are STRONGLY RECOMMENDED to support DisplayPort, SHOULD
    support USB SuperSpeed Data Rates, and are STRONGLY RECOMMENDED to support
    Power Delivery for data and power role swapping.
    </li>
    <li>
     Devices with any type-A or type-AB ports MUST NOT ship with an adapter converting
    from this port to a type-C receptacle.
    </li>
    <li>
     MUST recognize any remotely connected MTP (Media Transfer Protocol) devices
    and make their contents accessible through the
     <code>
      ACTION_GET_CONTENT
     </code>,
     <code>
      ACTION_OPEN_DOCUMENT
     </code>, and
     <code>
      ACTION_CREATE_DOCUMENT
     </code>
     intents, if the Storage Access
    Framework (SAF) is supported.
    </li>
    <li>
     MUST, if using a Type-C USB port and including support for peripheral mode,
    implement Dual Role Port functionality as defined by the USB Type-C
    specification (section 4.5.1.3.3).
    </li>
    <li>
     SHOULD, if the Dual Role Port functionality is supported, implement the
    Try.* model that is most appropriate for the device form factor. For
    example a handheld device SHOULD implement the Try.SNK model.
    </li>
   </ul>
   <h2 id="7_8_audio">
    7.8. Audio
   </h2>
   <h3 id="7_8_1_microphone">
    7.8.1. Microphone
   </h3>
   <div class="note">
    Android Handheld, Watch, and Automotive implementations MUST include a
microphone.
   </div>
   <p>
    Device implementations MAY omit a microphone. However, if a device
implementation omits a microphone, it MUST NOT report the
android.hardware.microphone feature constant, and MUST implement the audio
recording API at least as no-ops, per
    <a href="#7_hardware_compatibility">section 7</a>. 
Conversely, device implementations that do possess a microphone:
   </p>
   <ul>
    <li>
     MUST report the android.hardware.microphone feature constant.
    </li>
    <li>
     MUST meet the audio recording requirements in
     <a href="#5_4_audio_recording">section 5.4</a>. 
    </li>
    <li>
     MUST meet the audio latency requirements in
     <a href="#5_6_audio_latency">section 5.6</a>. 
    </li>
    <li>
     STRONGLY RECOMMENDED to support near-ultrasound recording as described in
     <a href="#7_8_3_near_ultrasound">section 7.8.3</a>. 
    </li>
   </ul>
   <h3 id="7_8_2_audio_output">
    7.8.2. Audio Output
   </h3>
   <div class="note">
    Android Watch devices MAY include an audio output.
   </div>
   <p>
    Device implementations including a speaker or with an audio/multimedia output
port for an audio output peripheral as a headset or an external speaker:
   </p>
   <ul>
    <li>
     MUST report the android.hardware.audio.output feature constant.
    </li>
    <li>
     MUST meet the audio playback requirements in
     <a href="#5_5_audio_playback">section 5.5</a>. 
    </li>
    <li>
     MUST meet the audio latency requirements in
     <a href="#5_6_audio_latency">section 5.6</a>. 
    </li>
    <li>
     STRONGLY RECOMMENDED to support near-ultrasound playback as described in
     <a href="#7_8_3_near_ultrasound">section 7.8.3</a>. 
    </li>
   </ul>
   <p>
    Conversely, if a device implementation does not include a speaker or audio
output port, it MUST NOT report the android.hardware.audio output feature, and
MUST implement the Audio Output related APIs as no-ops at least.
   </p>
   <p>
    Android Watch device implementation MAY but SHOULD NOT have audio output, but
other types of Android device implementations MUST have an audio output and
declare android.hardware.audio.output.
   </p>
   <h4 id="7_8_2_1_analog_audio_ports">
    7.8.2.1. Analog Audio Ports
   </h4>
   <p>
    In order to be compatible with the
    <a href="http://source.android.com/accessories/headset-spec.html">
     headsets and other audio accessories</a> using the
3.5mm audio plug across the Android ecosystem, if a device implementation
includes one or more analog audio ports, at least one of the audio port(s)
SHOULD be a 4 conductor 3.5mm audio jack. If a device implementation has a 4
conductor 3.5mm audio jack, it:
   </p>
   <ul>
    <li>
     MUST support audio playback to stereo headphones and stereo headsets with a
microphone, and SHOULD support audio recording from stereo headsets with a
microphone.
    </li>
    <li>
     MUST support TRRS audio plugs with the CTIA pin-out order, and SHOULD
support audio plugs with the OMTP pin-out order.
    </li>
    <li>
     MUST support the detection of microphone on the plugged in audio accessory,
if the device implementation supports a microphone, and broadcast the
android.intent.action.HEADSET_PLUG with the extra value microphone set as 1.
    </li>
    <li>
     MUST support the detection and mapping to the keycodes for the following
3 ranges of equivalent impedance between the microphone and ground conductors
on the audio plug:
     <ul>
      <li>
       <strong>
        70 ohm or less
       </strong>
       : KEYCODE_HEADSETHOOK
      </li>
      <li>
       <strong>
        210-290 Ohm
       </strong>
       : KEYCODE_VOLUME_UP
      </li>
      <li>
       <strong>
        360-680 Ohm
       </strong>
       : KEYCODE_VOLUME_DOWN
      </li>
     </ul>
    </li>
    <li>
     STRONGLY RECOMMENDED to detect and map to the keycode for the following
range of equivalent impedance between the microphone and ground conductors
on the audio plug:
     <ul>
      <li>
       <strong>
        110-180 Ohm:
       </strong>
       KEYCODE_VOICE_ASSIST
      </li>
     </ul>
    </li>
    <li>
     MUST trigger ACTION_HEADSET_PLUG upon a plug insert, but only after all
contacts on plug are touching their relevant segments on the jack.
    </li>
    <li>
     MUST be capable of driving at least 150mV &plusmn; 10% of output voltage on a 32
Ohm speaker impedance.
    </li>
    <li>
     MUST have a microphone bias voltage between 1.8V ~ 2.9V.
    </li>
   </ul>
   <h3 id="7_8_3_near-ultrasound">
    7.8.3. Near-Ultrasound
   </h3>
   <p>
    Near-Ultrasound audio is the 18.5 kHz to 20 kHz band. Device implementations
MUST correctly report the support of near-ultrasound audio capability via the
    <a href="http://developer.android.com/reference/android/media/AudioManager.html#getProperty(java.lang.String)">AudioManager.getProperty</a> API as follows:
   </p>
   <ul>
    <li>
     If
     <a href="http://developer.android.com/reference/android/media/AudioManager.html#PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND">PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND</a> is "true", then the following requirements must be met by the
VOICE_RECOGNITION and UNPROCESSED audio sources:
     <ul>
      <li>
       The microphone's mean power response in the 18.5 kHz to 20 kHz band
MUST be no more than 15 dB below the response at 2 kHz.
      </li>
      <li>
       The microphone's unweighted signal to noise ratio over 18.5 kHz to 20 kHz
for a 19 kHz tone at -26 dBFS MUST be no lower than 50 dB.
      </li>
     </ul>
    </li>
    <li>
     If
     <a href="http://developer.android.com/reference/android/media/AudioManager.html#PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND">PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND</a> is "true", then the speaker's mean response in 18.5 kHz - 20 kHz MUST be no
lower than 40 dB below the response at 2 kHz.
    </li>
   </ul>
   <h2 id="7_9_virtual_reality">
    7.9. Virtual Reality
   </h2>
   <p>
    Android includes APIs and facilities to build "Virtual Reality" (VR) applications including high
quality mobile VR experiences. Device implementations MUST properly implement these APIs and
behaviors, as detailed in this section.
   </p>
   <h3 id="7_9_1_virtual_reality_mode">
    7.9.1. Virtual Reality Mode
   </h3>
   <p>
    Android handheld device implementations that support a mode for VR applications that handles
stereoscopic rendering of notifications and disable monocular system UI components while a VR
application has user focus MUST declare
    <code>
     android.software.vr.mode
    </code>
    feature. Devices declaring this
feature MUST include an application implementing
    <code>
     android.service.vr.VrListenerService
    </code>
    that can be
enabled by VR applications via
    <code>
     android.app.Activity#setVrModeEnabled
    </code>.
   </p>
   <h3 id="7_9_2_virtual_reality_high_performance">
    7.9.2. Virtual Reality High Performance
   </h3>
   <p>
    Android handheld device implementations MUST identify the support of high performance virtual
reality for longer user periods through the
    <code>
     android.hardware.vr.high_performance
    </code>
    feature flag and
meet the following requirements.
   </p>
   <ul>
    <li>
     Device implementations MUST have at least 2 physical cores.
    </li>
    <li>
     Device implementations MUST declare android.software.vr.mode feature.
    </li>
    <li>
     Device implementations MUST provide an exclusive core to the foreground application and MUST
    support the Process.getExclusiveCores API to return the numbers of the cpu cores that are
    exclusive to the top foreground application. This core MUST not allow any other userspace
    processes to run on it (except device drivers used by the application), but MAY allow some
    kernel processes to run as necessary.
    </li>
    <li>
     Device implementations MUST support sustained performance mode.
    </li>
    <li>
     Device implementations MUST support OpenGL ES 3.2.
    </li>
    <li>
     Device implementations MUST support Vulkan Hardware Level 0 and SHOULD support
    Vulkan Hardware Level 1.
    </li>
    <li>
     Device implementations MUST implement EGL_KHR_mutable_render_buffer and
    EGL_ANDROID_front_buffer_auto_refresh, EGL_ANDROID_create_native_client_buffer,
    EGL_KHR_fence_sync and EGL_KHR_wait_sync so that they may be used for Shared Buffer Mode, and
    expose the extensions in the list of available EGL extensions.
    </li>
    <li>
     The GPU and display MUST be able to synchronize access to the shared front buffer such that
    alternating-eye rendering of VR content at 60fps with two render contexts will be displayed with
    no visible tearing artifacts.
    </li>
    <li>
     Device implementations MUST implement EGL_IMG_context_priority, and expose the extension in the
    list of available EGL extensions.
    </li>
    <li>
     Device implementations MUST implement GL_EXT_multisampled_render_to_texture, GL_OVR_multiview,
    GL_OVR_multiview2 and GL_OVR_multiview_multisampled_render_to_texture, and expose the extensions
    in the list of available GL extensions.
    </li>
    <li>
     Device implementations MUST implement EGL_EXT_protected_content and GL_EXT_protected_textures so
    that it may be used for Secure Texture Video Playback, and expose the extensions in the list of
    available EGL and GL extensions.
    </li>
    <li>
     Device implementations MUST support H.264 decoding at least 3840x2160@30fps-40Mbps (equivalent
    to 4 instances of 1920x1080@30fps-10Mbps or 2 instances of 1920x1080@60fps-20Mbps).
    </li>
    <li>
     Device implementations MUST support HEVC and VP9, MUST be capable to decode at least
    1920x1080@30fps-10Mbps and SHOULD be capable to decode 3840x2160@30fps-20Mbps (equivalent to
    4 instances of 1920x1080@30fps-5Mbps).
    </li>
    <li>
     The device implementations are STRONGLY RECOMMENDED to support
    android.hardware.sensor.hifi_sensors feature and MUST meet the gyroscope, accelerometer, and
    magnetometer related requirements for android.hardware.hifi_sensors.
    </li>
    <li>
     Device implementations MUST support HardwarePropertiesManager.getDeviceTemperatures API and
    return accurate values for skin temperature.
    </li>
    <li>
     The device implementation MUST have an embedded screen, and its resolution MUST be at least be
    FullHD(1080p) and STRONGLY RECOMMENDED TO BE  be QuadHD (1440p) or higher.
    </li>
    <li>
     The display MUST measure between 4.7" and 6" diagonal.
    </li>
    <li>
     The display MUST update at least 60 Hz while in VR Mode.
    </li>
    <li>
     The display latency on Gray-to-Gray, White-to-Black, and Black-to-White switching time MUST
    be &le; 3 ms.
    </li>
    <li>
     The display MUST support a low-persistence mode with &le;5 ms persistence,persistence being
    defined as the amount of time for which a pixel is emitting light.
    </li>
    <li>
     Device implementations MUST support Bluetooth 4.2 and Bluetooth LE Data Length Extension
     <a href="#7_4_3_bluetooth">section 7.4.3</a>. 
    </li>
   </ul>
   <h1 id="8_performance_and_power">
    8. Performance and Power
   </h1>
   <p>
    Some minimum performance and power criteria are critical to the user experience
and impact the baseline assumptions developers would have when developing an
app. Android Watch devices SHOULD and other type of device implementations MUST
meet the following criteria.
   </p>
   <h2 id="8_1_user_experience_consistency">
    8.1. User Experience Consistency
   </h2>
   <p>
    Device implementations MUST provide a smooth user interface by ensuring a
consistent frame rate and response times for applications and games. Device
implementations MUST meet the following requirements:
   </p>
   <ul>
    <li>
     <strong>
      Consistent frame latency
     </strong>
     . Inconsistent frame latency or a delay to
render frames MUST NOT happen more often than 5 frames in a second, and SHOULD
be below 1 frames in a second.
    </li>
    <li>
     <strong>
      User interface latency
     </strong>
     . Device implementations MUST ensure low latency
user experience by scrolling a list of 10K list entries as defined by the
Android Compatibility Test Suite (CTS) in less than 36 secs.
    </li>
    <li>
     <strong>
      Task switching
     </strong>
     . When multiple applications have been launched,
re-launching an already-running application after it has been launched MUST
take less than 1 second.
    </li>
   </ul>
   <h2 id="8_2_file_i/o_access_performance">
    8.2. File I/O Access Performance
   </h2>
   <p>
    Device implementations MUST ensure internal storage file access performance
consistency for read and write operations.
   </p>
   <ul>
    <li>
     <strong>
      Sequential write
     </strong>
     . Device implementations MUST ensure a sequential write
performance of at least 5MB/s for a 256MB file using 10MB write buffer.
    </li>
    <li>
     <strong>
      Random write
     </strong>
     . Device implementations MUST ensure a random write
performance of at least 0.5MB/s for a 256MB file using 4KB write buffer.
    </li>
    <li>
     <strong>
      Sequential read
     </strong>
     . Device implementations MUST ensure a sequential read
performance of at least 15MB/s for a 256MB file using 10MB write buffer.
    </li>
    <li>
     <strong>
      Random read
     </strong>
     . Device implementations MUST ensure a random read
performance of at least 3.5MB/s for a 256MB file using 4KB write buffer.
    </li>
   </ul>
   <h2 id="8_3_power-saving_modes">
    8.3. Power-Saving Modes
   </h2>
   <p>
    Android 6.0 introduced App Standby and Doze power-saving modes to optimize
battery usage.  All Apps exempted from these modes MUST be made visible to the
end user. Further, the triggering, maintenance, wakeup algorithms and the use of
global system settings of these power-saving modes MUST not deviate from the
Android Open Source Project.
   </p>
   <p>
    In addition to the power-saving modes, Android device implementations MAY
implement any or all of the 4 sleeping power states as defined by the Advanced
Configuration and Power Interface (ACPI), but if it implements S3 and S4
power states, it can only enter these states when closing a lid that is
physically part of the device.
   </p>
   <h2 id="8_4_power_consumption_accounting">
    8.4. Power Consumption Accounting
   </h2>
   <p>
    A more accurate accounting and reporting of the power consumption provides the
app developer both the incentives and the tools to optimize the power usage
pattern of the application. Therefore, device implementations:
   </p>
   <ul>
    <li>
     MUST be able to track hardware component power usage and attribute that
power usage to specific applications. Specifically, implementations:
     <ul>
      <li>
       MUST provide a per-component power profile that defines the
       <a href="http://source.android.com/devices/tech/power/values.html">
        current consumption value</a> for each hardware component and the approximate battery drain caused by the
components over time as documented in the Android Open Source Project site.
      </li>
      <li>
       MUST report all power consumption values in milliampere hours (mAh).
      </li>
      <li>
       SHOULD be attributed to the hardware component itself if unable to
attribute hardware component power usage to an application.
      </li>
      <li>
       MUST report CPU power consumption per each process's UID. The Android
Open Source Project meets the requirement through the
       <code>
        uid_cputime
       </code>
       kernel
module implementation.
      </li>
     </ul>
    </li>
    <li>
     MUST make this power usage available via the
     <a href="http://source.android.com/devices/tech/power/batterystats.html">
      <code> adb shell dumpsys batterystats </code></a> shell command to the app developer.
    </li>
    <li>
     MUST honor the
     <a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_POWER_USAGE_SUMMARY">android.intent.action.POWER_USAGE_SUMMARY</a> intent and display a settings menu that shows this power usage.
    </li>
   </ul>
   <h2 id="8_5_consistent_performance">
    8.5. Consistent Performance
   </h2>
   <p>
    Performance can fluctuate dramatically for high-performance long-running apps,
either because of the other apps running in the background or the CPU throttling
due to temperature limits. Android includes programmatic interfaces so that when
the device is capable, the top foreground application can request that the system
optimize the allocation of the resources to address such fluctuations.
   </p>
   <p>
    Device implementations SHOULD support Sustained Performance Mode which can
provide the top foreground application a consistent level of performance for a
prolonged amount of time when requested through the
    <a href="https://developer.android.com/reference/android/view/Window.html#setSustainedPerformanceMode%28boolean%29">
     <code> Window.setSustainedPerformanceMode()</code></a>
    API method. A Device implementation MUST report the support of Sustained
Performance Mode accurately through the
    <a href="https://developer.android.com/reference/android/os/PowerManager.html#isSustainedPerformanceModeSupported%28%29">
     <code> PowerManager.isSustainedPerformanceModeSupported()</code></a> API method.
   </p>
   <p>
    Device implementations with two or more CPU cores SHOULD provide at least one exclusive core that
can be reserved by the top foreground application. If provided, implementations MUST meet the
following requirements:
   </p>
   <ul>
    <li>
     Implementations MUST report through the
     <a href="https://developer.android.com/reference/android/os/Process.html#getExclusiveCores()">
      <code> Process.getExclusiveCores()</code></a>
     API method the id numbers of the exclusive cores that can be reserved by the top foreground
     application.
    </li>
    <li>
     Device implementations MUST not allow any user space processes except the device drivers used
     by the application to run on the exclusive cores, but MAY allow some kernel processes to run
     as necessary.
    </li>
   </ul>
   <p>
    If a device implementation does not support an exclusive core, it MUST return an
empty list through the
    <a href="https://developer.android.com/reference/android/os/Process.html#getExclusiveCores()">
     <code> Process.getExclusiveCores()</code></a> API method.
   </p>
   <h1 id="9_security_model_compatibility">
    9. Security Model Compatibility
   </h1>
   <p>
    Device implementations MUST implement a security model consistent with the
Android platform security model as defined in
    <a href="http://developer.android.com/guide/topics/security/permissions.html">
     Security and Permissions
reference document
    </a>
    in the APIs in the Android developer documentation. Device implementations MUST
support installation of self-signed applications without requiring any
additional permissions/certificates from any third parties/authorities.
Specifically, compatible devices MUST support the security mechanisms described
in the follow subsections.
   </p>
   <h2 id="9_1_permissions">
    9.1. Permissions
   </h2>
   <p>
    Device implementations MUST support the
    <a href="http://developer.android.com/guide/topics/security/permissions.html">
     Android permissions model</a> as
defined in the Android developer documentation. Specifically, implementations
MUST enforce each permission defined as described in the SDK documentation; no
permissions may be omitted, altered, or ignored. Implementations MAY add
additional permissions, provided the new permission ID strings are not in the
android.* namespace.
   </p>
   <p>
    Permissions with a protection level of dangerous are runtime permissions.
Applications with targetSdkVersion &gt; 22 request them at runtime. Device
implementations:
   </p>
   <ul>
    <li>
     MUST show a dedicated interface for the user to decide whether to grant the
requested runtime permissions and also provide an interface for the user to
manage runtime permissions.
    </li>
    <li>
     MUST have one and only one implementation of both user interfaces.
    </li>
    <li>
     MUST NOT grant any runtime permissions to preinstalled apps unless:
     <ul>
      <li>
       the user's consent can be obtained before the application uses it
      </li>
      <li>
       the runtime permissions are associated with an intent pattern for which
the preinstalled application is set as the default handler
      </li>
     </ul>
    </li>
   </ul>
   <h2 id="9_2_uid_and_process_isolation">
    9.2. UID and Process Isolation
   </h2>
   <p>
    Device implementations MUST support the Android application sandbox model, in
which each application runs as a unique Unixstyle UID and in a separate
process. Device implementations MUST support running multiple applications as
the same Linux user ID, provided that the applications are properly signed and
constructed, as defined in the
    <a href="http://developer.android.com/guide/topics/security/permissions.html">
     Security and Permissions reference</a>.
   </p>
   <h2 id="9_3_filesystem_permissions">
    9.3. Filesystem Permissions
   </h2>
   <p>
    Device implementations MUST support the Android file access permissions model
as defined in the
    <a href="http://developer.android.com/guide/topics/security/permissions.html">
     Security and Permissions reference</a>.
   </p>
   <h2 id="9_4_alternate_execution_environments">
    9.4. Alternate Execution Environments
   </h2>
   <p>
    Device implementations MAY include runtime environments that execute
applications using some other software or technology than the Dalvik Executable
Format or native code. However, such alternate execution environments MUST NOT
compromise the Android security model or the security of installed Android
applications, as described in this section.
   </p>
   <p>
    Alternate runtimes MUST themselves be Android applications, and abide by the
standard Android security model, as described elsewhere in
    <a href="#9_security_model_compatibility">
     section 9</a>.
   </p>
   <p>
    Alternate runtimes MUST NOT be granted access to resources protected by
permissions not requested in the runtime&rsquo;s AndroidManifest.xml file via the
&lt;uses-permission&gt; mechanism.
   </p>
   <p>
    Alternate runtimes MUST NOT permit applications to make use of features
protected by Android permissions restricted to system applications.
   </p>
   <p>
    Alternate runtimes MUST abide by the Android sandbox model. Specifically,
alternate runtimes:
   </p>
   <ul>
    <li>
     SHOULD install apps via the PackageManager into separate Android sandboxes
(Linux user IDs, etc.).
    </li>
    <li>
     MAY provide a single Android sandbox shared by all applications using the
alternate runtime.
    </li>
    <li>
     Installed applications using an alternate runtime MUST NOT reuse the
sandbox of any other app installed on the device, except through the standard
Android mechanisms of shared user ID and signing certificate.
    </li>
    <li>
     MUST NOT launch with, grant, or be granted access to the sandboxes
corresponding to other Android applications.
    </li>
    <li>
     MUST NOT be launched with, be granted, or grant to other applications any
privileges of the superuser (root), or of any other user ID.
    </li>
   </ul>
   <p>
    The .apk files of alternate runtimes MAY be included in the system image of a
device implementation, but MUST be signed with a key distinct from the key used
to sign other applications included with the device implementation.
   </p>
   <p>
    When installing applications, alternate runtimes MUST obtain user consent for
the Android permissions used by the application. If an application needs to
make use of a device resource for which there is a corresponding Android
permission (such as Camera, GPS, etc.), the alternate runtime MUST inform the
user that the application will be able to access that resource. If the runtime
environment does not record application capabilities in this manner, the
runtime environment MUST list all permissions held by the runtime itself when
installing any application using that runtime.
   </p>
   <h2 id="9_5_multi-user_support">
    9.5. Multi-User Support
   </h2>
   <div class="note">
    This feature is optional for all device types.
   </div>
   <p>
    Android includes
    <a href="http://developer.android.com/reference/android/os/UserManager.html">
     support for multiple users</a> and
provides support for full user isolation. Device implementations MAY enable
multiple users, but when enabled MUST meet the following requirements related
to
    <a href="http://source.android.com/devices/storage/traditional.html">multi-user support</a>: 
   </p>
   <ul>
    <li>
     Android Automotive device implementations with multi-user support enabled
MUST include a guest account that allows all functions provided by the vehicle
system without requiring a user to log in.
    </li>
    <li>
     Device implementations that do not declare the android.hardware.telephony
feature flag MUST support restricted profiles, a feature that allows device
owners to manage additional users and their capabilities on the device. With
restricted profiles, device owners can quickly set up separate environments for
additional users to work in, with the ability to manage finer-grained
restrictions in the apps that are available in those environments.
    </li>
    <li>
     Conversely device implementations that declare the
android.hardware.telephony feature flag MUST NOT support restricted profiles
but MUST align with the AOSP implementation of controls to enable /disable
other users from accessing the voice calls and SMS.
    </li>
    <li>
     Device implementations MUST, for each user, implement a security model
consistent with the Android platform security model as defined in
     <a href="http://developer.android.com/guide/topics/security/permissions.html">
      Security and Permissions reference document</a> in the APIs.
    </li>
    <li>
     Each user instance on an Android device MUST have separate and isolated
external storage directories. Device implementations MAY store multiple users'
data on the same volume or filesystem. However, the device implementation MUST
ensure that applications owned by and running on behalf a given user cannot
list, read, or write to data owned by any other user. Note that removable
media, such as SD card slots, can allow one user to access another&rsquo;s data by
means of a host PC. For this reason, device implementations that use removable
media for the external storage APIs MUST encrypt the contents of the SD card if
multiuser is enabled using a key stored only on non-removable media accessible
only to the system. As this will make the media unreadable by a host PC, device
implementations will be required to switch to MTP or a similar system to
provide host PCs with access to the current user&rsquo;s data. Accordingly, device
implementations MAY but SHOULD NOT enable multi-user if they use
     <a href="http://developer.android.com/reference/android/os/Environment.html">
      removable media</a> for primary external storage.
    </li>
   </ul>
   <h2 id="9_6_premium_sms_warning">
    9.6. Premium SMS Warning
   </h2>
   <p>
    Android includes support for warning users of any outgoing
    <a href="http://en.wikipedia.org/wiki/Short_code">
     premium SMS message</a>. Premium SMS messages are
text messages sent to a service registered with a carrier that may incur a
charge to the user. Device implementations that declare support for
android.hardware.telephony MUST warn users before sending a SMS message to
numbers identified by regular expressions defined in /data/misc/sms/codes.xml
file in the device. The upstream Android Open Source Project provides an
implementation that satisfies this requirement.
   </p>
   <h2 id="9_7_kernel_security_features">
    9.7. Kernel Security Features
   </h2>
   <p>
    The Android Sandbox includes features that use the Security-Enhanced Linux
(SELinux) mandatory access control (MAC) system, seccomp sandboxing, and other
security features in the Linux kernel. SELinux or any other security features
implemented below the Android framework:
   </p>
   <ul>
    <li>
     MUST maintain compatibility with existing applications.
    </li>
    <li>
     MUST NOT have a visible user interface when a security violation is
detected and successfully blocked, but MAY have a visible user interface when
an unblocked security violation occurs resulting in a successful exploit.
    </li>
    <li>
     SHOULD NOT be user or developer configurable.
    </li>
   </ul>
   <p>
    If any API for configuration of policy is exposed to an application that can
affect another application (such as a Device Administration API), the API MUST
NOT allow configurations that break compatibility.
   </p>
   <p>
    Devices MUST implement SELinux or, if using a kernel other than Linux, an
equivalent mandatory access control system. Devices MUST also meet the
following requirements, which are satisfied by the reference implementation in
the upstream Android Open Source Project.
   </p>
   <p>
    Device implementations:
   </p>
   <ul>
    <li>
     MUST set SELinux to global enforcing mode.
    </li>
    <li>
     MUST configure all domains in enforcing mode. No permissive mode domains
are allowed, including domains specific to a device/vendor.
    </li>
    <li>
     MUST NOT modify, omit, or replace the neverallow rules present within the
system/sepolicy folder provided in the upstream Android Open Source Project
(AOSP) and the policy MUST compile with all neverallow rules present, for both
AOSP SELinux domains as well as device/vendor specific domains.
    </li>
    <li>
     MUST split the media framework into multiple processes so that it
is possible to more narrowly grant access for each process as
     <a href="https://source.android.com/devices/media/framework-hardening.html#arch_changes">described</a> in the Android Open Source Project site.
    </li>
   </ul>
   <p>
    Device implementations SHOULD retain the default SELinux policy provided in the
system/sepolicy folder of the upstream Android Open Source Project and only
further add to this policy for their own device-specific configuration. Device
implementations MUST be compatible with the upstream Android Open Source
Project.
   </p>
   <p>
    Devices MUST implement a kernel application sandboxing mechanism which allows
filtering of system calls using a configurable policy from multithreaded
programs. The upstream Android Open Source Project meets this requirement
through enabling the seccomp-BPF with threadgroup synchronization (TSYNC) as
described
    <a href="http://source.android.com/devices/tech/config/kernel.html#Seccomp-BPF-TSYNC">in the Kernel Configuration section of source.android.com</a>. 
   </p>
   <h2 id="9_8_privacy">
    9.8. Privacy
   </h2>
   <p>
    If the device implements functionality in the system that captures the contents
displayed on the screen and/or records the audio stream played on the device,
it MUST continuously notify the user whenever this functionality is enabled and
actively capturing/recording.
   </p>
   <p>
    If a device implementation has a mechanism that routes network data traffic
through a proxy server or VPN gateway by default (for example, preloading a VPN
service with android.permission.CONTROL_VPN granted), the device implementation
MUST ask for the user's consent before enabling that mechanism, unless that
VPN is enabled by the Device Policy Controller via the
    <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setAlwaysOnVpnPackage(android.content.ComponentName, java.lang.String, boolean)">
     <code> DevicePolicyManager.setAlwaysOnVpnPackage()</code></a>, in which case
     the user does not need to provide a separate consent, but MUST
only be notified.
   </p>
   <p>
    Device implementations MUST ship with an empty user-added Certificate Authority
(CA) store, and MUST preinstall the same root certificates for the system-trusted
CA store as
    <a href="https://source.android.com/security/overview/app-security.html#certificate-authorities">provided</a> in the upstream Android Open Source Project.
   </p>
   <p>
    When devices are routed through a VPN, or a user root CA is installed, the
implementation MUST display a warning indicating the network traffic may be
monitored to the user.
   </p>
   <p>
    If a device implementation has a USB port with USB peripheral mode support, it
MUST present a user interface asking for the user's consent before allowing
access to the contents of the shared storage over the USB port.
   </p>
   <h2 id="9_9_data_storage_encryption">
    9.9. Data Storage Encryption
   </h2>
   <div class="note">
    Optional for Android device implementations without a secure lock screen.
   </div>
   <p>
    If the device implementation supports a secure lock screen as described in section 9.11.1,
then the device MUST support data storage encryption of the application private data (/data partition), as well as the
application shared storage partition (/sdcard partition) if it is a permanent,
non-removable part of the device.
   </p>
   <p>
    For device implementations supporting data storage encryption and with Advanced
Encryption Standard (AES) crypto performance above 50MiB/sec, the data storage
encryption MUST be enabled by default at the time the user has completed the
out-of-box setup experience. If a device implementation is already launched on
an earlier Android version with encryption disabled by default, such
a device cannot meet the requirement through a system software update and thus
MAY be exempted.
   </p>
   <p>
    Device implementations SHOULD meet the above data storage encryption requirement
via implementing
    <a href="https://source.android.com/security/encryption/file-based.html">File Based Encryption</a>( FBE).
   </p>
   <h3 id="9_9_1_direct_boot">
    9.9.1. Direct Boot
   </h3>
   <p>
    All devices MUST implement the
    <a href="http://developer.android.com/preview/features/direct-boot.html">
     Direct Boot
mode
    </a>
    APIs even
if they do not support Storage Encryption. In particular, the
LOCKED_BOOT_COMPLETED(https://developer.android.com/reference/android/content/Intent.html#LOCKED_BOOT_COMPLETED)
and
    <a href="https://developer.android.com/reference/android/content/Intent.html#ACTION_USER_UNLOCKED">ACTION_USER_UNLOCKED</a> Intents must still be broadcast to signal Direct Boot aware applications that
Device Encrypted (DE) and Credential Encrypted (CE) storage locations are
available for user.
   </p>
   <h3 id="9_9_2_file_based_encryption">
    9.9.2. File Based Encryption
   </h3>
   <p>
    Device implementations supporting FBE:
   </p>
   <ul>
    <li>
     MUST boot up without challenging the user for credentials and allow Direct
  Boot aware apps to access to the Device Encrypted (DE) storage after the
  LOCKED_BOOT_COMPLETED message is broadcasted.
    </li>
    <li>
     MUST only allow access to Credential Encrypted (CE) storage after the user
  has unlocked the device by supplying their credentials (eg. passcode, pin,
  pattern or fingerprint) and the ACTION_USER_UNLOCKED message is broadcasted.
  Device implementations MUST NOT offer any
  method to unlock the CE protected storage without the user supplied
  credentials.
    </li>
    <li>
     MUST support Verified Boot and ensure that DE keys are cryptographically
  bound to the device's hardware root of trust.
    </li>
    <li>
     MUST support encrypting file contents using AES with a key length of 256-bits
  in XTS mode.
    </li>
    <li>
     MUST support encrypting file name using AES with a key length of 256-bits in
  CBC-CTS mode.
    </li>
    <li>
     MAY support alternative ciphers, key lengths and modes for file content and
  file name encryption, but MUST use the mandatorily supported ciphers,
  key lengths and modes by default.
    </li>
    <li>
     SHOULD make preloaded essential apps (e.g. Alarm, Phone, Messenger)
  Direct Boot aware.
    </li>
   </ul>
   <p>
    The keys protecting CE and DE storage areas:
   </p>
   <ul>
    <li>
     MUST be cryptographically bound to a hardware-backed Keystore. CE keys
  must be bound to a user's lock screen credentials. If the user has
  specified no lock screen credentials then the CE keys MUST be bound to
  a default passcode.
    </li>
    <li>
     MUST be unique and distinct, in other words no user's CE or DE key
  may match any other user's CE or DE keys.
    </li>
   </ul>
   <p>
    The upstream Android Open Source project provides a preferred implementation of
this feature based on the Linux kernel ext4 encryption feature.
   </p>
   <h3 id="9_9_3_full_disk_encryption">
    9.9.3. Full Disk Encryption
   </h3>
   <p>
    Device implementations supporting
    <a href="http://source.android.com/devices/tech/security/encryption/index.html">full disk encryption</a> (FDE). MUST use AES with a key of 128-bits
  (or greater) and a mode designed for storage (for example, AES-XTS,
  AES-CBC-ESSIV). The encryption key MUST NOT be written to storage at any time
  without being encrypted. Other than when in active use, the encryption key
  SHOULD be AES encrypted with the lock screen credentials stretched using a slow
  stretching algorithm (e.g. PBKDF2 or scrypt). If the user has not specified
  a lock screen credentials or has disabled use of the passcode for encryption, the
  system SHOULD use a default passcode to wrap the encryption key. If the
  device provides a hardware-backed keystore, the password stretching algorithm
  MUST be cryptographically bound to that keystore. The encryption key MUST NOT
  be sent off the device (even when wrapped with the user passcode and/or
  hardware bound key). The upstream Android Open Source project provides a
  preferred implementation of this feature based on the Linux kernel feature
  dm-crypt.
   </p>
   <h2 id="9_10_device_integrity">
    9.10. Device Integrity
   </h2>
   <p>
    The following requirements ensures there is transparancy to the status of the
device integrity.
   </p>
   <p>
    Device implementations MUST correctly report through the System API method
PersistentDataBlockManager.getFlashLockState() whether their bootloader state
permits flashing of the system image. The
    <code>
     FLASH_LOCK_UNKNOWN
    </code>
    state is reserved
for device implementations upgrading from an earlier version of Android where this
new system API method did not exist.
   </p>
   <p>
    Verified boot is a feature that guarantees the integrity of the device
software. If a device implementation supports the feature, it MUST:
   </p>
   <ul>
    <li>
     Declare the platform feature flag android.software.verified_boot.
    </li>
    <li>
     Perform verification on every boot sequence.
    </li>
    <li>
     Start verification from an immutable hardware key that is the root of trust
and go all the way up to the system partition.
    </li>
    <li>
     Implement each stage of verification to check the integrity and
authenticity of all the bytes in the next stage before executing the code in
the next stage.
    </li>
    <li>
     Use verification algorithms as strong as current recommendations from NIST
for hashing algorithms (SHA-256) and public key sizes (RSA-2048).
    </li>
    <li>
     MUST NOT allow boot to complete when system verification fails, unless the
user consents to attempt booting anyway, in which case the data from any
non-verified storage blocks MUST not be used.
    </li>
    <li>
     MUST NOT allow verified partitions on the device to be modified unless the
user has explicitly unlocked the boot loader.
    </li>
   </ul>
   <p>
    The upstream Android Open Source Project provides a preferred implementation of
this feature based on the Linux kernel feature dm-verity.
   </p>
   <p>
    Starting from Android 6.0, device implementations with Advanced Encryption
Standard (AES) crypto performance above 50 MiB/seconds MUST support verified boot
for device integrity.
   </p>
   <p>
    If a device implementation is already launched without supporting verified boot
on an earlier version of Android, such a device can not add support for this feature
with a system software update and thus are exempted from the requirement.
   </p>
   <h2 id="9_11_keys_and_credentials">
    9.11. Keys and Credentials
   </h2>
   <p>
    The
    <a href="https://developer.android.com/training/articles/keystore.html">
     Android Keystore System</a> allows
app developers to store cryptographic keys in a container and use them in
cryptographic operations through the
    <a href="https://developer.android.com/reference/android/security/KeyChain.html">
     KeyChain API</a> or the
    <a href="https://developer.android.com/reference/java/security/KeyStore.html">Keystore API</a>. 
   </p>
   <p>
    All Android device implementations MUST meet the following requirements:
   </p>
   <ul>
    <li>
     SHOULD not limit the number of keys that can be generated, and MUST at
    least allow more than 8,192 keys to be imported.
    </li>
    <li>
     The lock screen authentication MUST rate limit attempts and MUST have an
    exponential backoff algorithm. Beyond 150 failed attempts, the delay MUST be
    at least 24 hours per attempt.
    </li>
    <li>
     When the device implementation supports a secure lock screen it MUST back up the
    keystore implementation with secure hardware and meet following requirements:
     <ul>
      <li>
       MUST have hardware backed implementations of RSA, AES, ECDSA and HMAC cryptographic
algorithms and MD5, SHA1, SHA-2 Family hash functions to properly support the
       <a href="https://developer.android.com/training/articles/keystore.html#SupportedAlgorithms">Android Keystore system's supported algorithms</a>. 
      </li>
      <li>
       MUST perform the lock screen authentication in the secure hardware and only when
successful allow the authentication-bound keys to be used. The upstream Android
Open Source Project provides the
       <a href="http://source.android.com/devices/tech/security/authentication/gatekeeper.html">
        Gatekeeper Hardware Abstraction Layer (HAL)</a> that can be used to satisfy this requirement.
      </li>
     </ul>
    </li>
   </ul>
   <p>
    Note that if a device implementation is already launched on an earlier Android version, and does
not have a fingerprint scanner, such a device is exempted from the requirement to have a
hardware-backed keystore.
   </p>
   <h3 id="9_11_1_secure_lock_screen">
    9.11.1. Secure Lock Screen
   </h3>
   <p>
    Device implementations MAY add or modify the authentication methods to unlock
the lock screen, but MUST still meet the following requirements:
   </p>
   <ul>
    <li>
     The authentication method, if based on a known secret, MUST NOT be treated
    as a secure lock screen unless it meets all following requirements:
     <ul>
      <li>
       The entropy of the shortest allowed length of inputs MUST be greater
     than 10 bits.
      </li>
      <li>
       The maximum entropy of all possible inputs MUST be greater than 18 bits.
      </li>
      <li>
       MUST not replace any of the existing authentication methods (PIN,
     pattern, password) implemented and provided in AOSP.
      </li>
      <li>
       MUST be disabled when the Device Policy Controller (DPC) application
     has set the password quality policy via the
       <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setPasswordQuality(android.content.ComponentName,%20int)">
        <code> DevicePolicyManager.setPasswordQuality()</code></a> method with a more restrictive quality constant than
       <code> PASSWORD_QUALITY_SOMETHING</code>.
      </li>
     </ul>
    </li>
    <li>
     The authenticaion method, if based on a physical token or the location,
    MUST NOT be treated as a secure lock screen unless it meets all following
    requirements:
     <ul>
      <li>
       It MUST have a fall-back mechanism to use one of the primary
     authentication methods which is based on a known secret and meets
     the requirements to be treated as a secure lock screen.
      </li>
      <li>
       It MUST be disabled and only allow the primary authentication to
     unlock the screen when the Device Policy Controller (DPC) application
     has set the policy with either the
       <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setKeyguardDisabledFeatures(android.content.ComponentName,%20int)">
        <code> DevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_TRUST_AGENTS)</code></a> method or the
       <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setPasswordQuality(android.content.ComponentName,%20int)">
        <code> DevicePolicyManager.setPasswordQuality()</code></a> method with a more restrictive quality constant than
       <code> PASSWORD_QUALITY_UNSPECIFIED</code>.
      </li>
     </ul>
    </li>
    <li>
     The authentication method, if based on biometrics, MUST NOT be treated as a
     secure lock screen unless it meets all following requirements:
     <ul>
      <li>
       It MUST have a fall-back mechanism to use one of the primary
      authentication methods which is based on a known secret and meets
      the requirements to be treated as a secure lock screen.
      </li>
      <li>
       It MUST be disabled and only allow the primary authentication to
      unlock the screen when the Device Policy Controller (DPC) application
      has set the keguard feature policy by calling the method
       <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setKeyguardDisabledFeatures(android.content.ComponentName,%20int)">
        <code> DevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_FINGERPRINT)</code></a>.
      </li>
      <li>
       It MUST have a false acceptance rate that is equal or stronger than
      what is required for a fingerprint sensor as described in
      section 7.3.10, or otherwise MUST be disabled and only allow the
      primary authentication to unlock the screen when the Device Policy
      Controller (DPC) application has set the password quality policy
      via the
       <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setPasswordQuality(android.content.ComponentName,%20int)">
        <code> DevicePolicyManager.setPasswordQuality()</code></a> method with a more restrictive quality constant than
       <code> PASSWORD_QUALITY_BIOMETRIC_WEAK</code>.
      </li>
     </ul>
    </li>
    <li>
     If the authentication method can not be treated as a secure lock screen,
     it:
     <ul>
      <li>
       MUST return
       <code>
        false
       </code>
       for both the
       <a href="http://developer.android.com/reference/android/app/KeyguardManager.html#isKeyguardSecure()">
        <code> KeyguardManager.isKeyguardSecure()</code></a> and the
       <a href="https://developer.android.com/reference/android/app/KeyguardManager.html#isDeviceSecure()">
        <code> KeyguardManager.isDeviceSecure()</code></a> methods.
      </li>
      <li>
       MUST be disabled when the Device Policy Controller (DPC) application
      has set the password quality policy via the
       <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setPasswordQuality(android.content.ComponentName,%20int)">
        <code> DevicePolicyManager.setPasswordQuality()</code></a> method with a more restrictive quality constant than
       <code> PASSWORD_QUALITY_UNSPECIFIED</code>.
      </li>
      <li>
       MUST NOT reset the password expiration timers set by
       <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setPasswordExpirationTimeout(android.content.ComponentName,%20long)">
        <code> DevicePolicyManager.setPasswordExpirationTimeout()</code></a>.
      </li>
      <li>
       MUST NOT authenticate access to keystores if the application has called
       <a href="https://developer.android.com/reference/android/security/keystore/KeyGenParameterSpec.Builder.html#setUserAuthenticationRequired(boolean)">
        <code> KeyGenParameterSpec.Builder.setUserAuthenticationRequired(true)</code></a>.
      </li>
     </ul>
    </li>
    <li>
     If the authentication method is based on a physical token, the location,
     or biometrics that has higher false acceptance rate than what is required
     for fingerprint sensors as described in section 7.3.10, then it:
     <ul>
      <li>
       MUST NOT reset the password expiration timers set by
       <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setPasswordExpirationTimeout(android.content.ComponentName,%20long)">
        <code> DevicePolicyManager.setPasswordExpirationTimeout()</code></a>.
      </li>
      <li>
       MUST NOT authenticate access to keystores if the application has called
       <a href="https://developer.android.com/reference/android/security/keystore/KeyGenParameterSpec.Builder.html#setUserAuthenticationRequired(boolean)">
        <code> KeyGenParameterSpec.Builder.setUserAuthenticationRequired(true)</code></a>.
      </li>
     </ul>
    </li>
   </ul>
   <h2 id="9_12_data_deletion">
    9.12. Data Deletion
   </h2>
   <p>
    Devices MUST provide users with a mechanism to perform a "Factory Data Reset"
that allows logical and physical deletion of all data except for the following:
   </p>
   <ul>
    <li>
     The system image
    </li>
    <li>
     Any operating system files required by the system image
    </li>
   </ul>
   <p>
    All user-generated data MUST be deleted. This MUST satisfy relevant industry
standards for data deletion such as NIST SP800-88. This MUST be used for the
implementation of the wipeData() API (part of the Android Device Administration
API) described in
    <a href="#3_9_device_administration">
     section 3.9 Device Administration</a>.
   </p>
   <p>
    Devices MAY provide a fast data wipe that conducts a logical data erase.
   </p>
   <h2 id="9_13_safe_boot_mode">
    9.13. Safe Boot Mode
   </h2>
   <p>
    Android provides a mode enabling users to boot up into a mode where only
preinstalled system apps are allowed to run and all third-party apps are
disabled. This mode, known as "Safe Boot Mode", provides the user the
capability to uninstall potentially harmful third-party apps.
   </p>
   <p>
    Android device implementations are STRONGLY RECOMENDED to implement Safe Boot
Mode and meet following requirements:
   </p>
   <ul>
    <li>
     <p>
      Device implementations SHOULD provide the user an option to enter Safe Boot
   Mode from the boot menu which is reachable through a workflow that is different
   from that of normal boot.
     </p>
    </li>
    <li>
     <p>
      Device implementations MUST provide the user an option to enter Safe Boot Mode
   in such a way that is uninterruptible from third-party apps installed on
   the device, except for when the third party app is a Device Policy Controller
   and has set the
      <a href="https://developer.android.com/reference/android/os/UserManager.html#DISALLOW_SAFE_BOOT">
       <code> UserManager.DISALLOW_SAFE_BOOT</code></a> flag as true.
     </p>
    </li>
    <li>
     <p>
      Device implementations MUST provide the user the capability to uninstall
   any third-party apps within Safe Mode.
     </p>
    </li>
   </ul>
   <h2 id="9_14_automotive_vehicle_system_isolation">
    9.14. Automotive Vehicle System Isolation
   </h2>
   <p>
    Android Automotive devices are expected to exchange data with critical vehicle
subsystems, e.g., by using the
    <a href="http://source.android.com/devices/automotive.html">vehicle HAL</a> to send and receive
messages over vehicle networks such as CAN bus. Android Automotive device
implementations MUST implement security features below the Android framework
layers to prevent malicious or unintentional interaction between the Android
framework or third-party apps and vehicle subsystems. These security features
are as follows:
   </p>
   <ul>
    <li>
     Gatekeeping messages from Android framework vehicle subsystems, e.g.,
  whitelisting permitted message types and message sources.
    </li>
    <li>
     Watchdog against denial of service attacks from the Android framework or
  third-party apps. This guards against malicious software flooding the vehicle
  network with traffic, which may lead to malfunctioning vehicle subsystems.
    </li>
   </ul>
   <h1 id="10_software_compatibility_testing">
    10. Software Compatibility Testing
   </h1>
   <p>
    Device implementations MUST pass all tests described in this section.
   </p>
   <p>
    However, note that no software test package is fully comprehensive. For this
reason, device implementers are
    <strong>
     STRONGLY RECOMMENDED
    </strong>
    to make the minimum
number of changes as possible to the reference and preferred implementation of
Android available from the Android Open Source Project. This will minimize the
risk of introducing bugs that create incompatibilities requiring rework and
potential device updates.
   </p>
   <h2 id="10_1_compatibility_test_suite">
    10.1. Compatibility Test Suite
   </h2>
   <p>
    Device implementations MUST pass the
    <a href="http://source.android.com/compatibility/index.html">
     Android Compatibility Test Suite (CTS)</a> available from the
Android Open Source Project, using the final shipping software on the device.
Additionally, device implementers SHOULD use the reference implementation in
the Android Open Source tree as much as possible, and MUST ensure compatibility
in cases of ambiguity in CTS and for any reimplementations of parts of the
reference source code.
   </p>
   <p>
    The CTS is designed to be run on an actual device. Like any software, the CTS
may itself contain bugs. The CTS will be versioned independently of this
Compatibility Definition, and multiple revisions of the CTS may be released for
Android 7.0. Device implementations MUST pass the latest CTS
version available at the time the device software is completed.
   </p>
   <h2 id="10_2_cts_verifier">
    10.2. CTS Verifier
   </h2>
   <p>
    Device implementations MUST correctly execute all applicable cases in the CTS
Verifier. The CTS Verifier is included with the Compatibility Test Suite, and
is intended to be run by a human operator to test functionality that cannot be
tested by an automated system, such as correct functioning of a camera and
sensors.
   </p>
   <p>
    The CTS Verifier has tests for many kinds of hardware, including some hardware
that is optional. Device implementations MUST pass all tests for hardware that
they possess; for instance, if a device possesses an accelerometer, it MUST
correctly execute the Accelerometer test case in the CTS Verifier. Test cases
for features noted as optional by this Compatibility Definition Document MAY be
skipped or omitted.
   </p>
   <p>
    Every device and every build MUST correctly run the CTS Verifier, as noted
above. However, since many builds are very similar, device implementers are not
expected to explicitly run the CTS Verifier on builds that differ only in
trivial ways. Specifically, device implementations that differ from an
implementation that has passed the CTS Verifier only by the set of included
locales, branding, etc. MAY omit the CTS Verifier test.
   </p>
   <h1 id="11_updatable_software">
    11. Updatable Software
   </h1>
   <p>
    Device implementations MUST include a mechanism to replace the entirety of the
system software. The mechanism need not perform &ldquo;live&rdquo; upgrades&mdash;that is, a
device restart MAY be required.
   </p>
   <p>
    Any method can be used, provided that it can replace the entirety of the
software preinstalled on the device. For instance, any of the following
approaches will satisfy this requirement:
   </p>
   <ul>
    <li>
     &ldquo;Over-the-air (OTA)&rdquo; downloads with offline update via reboot.
    </li>
    <li>
     &ldquo;Tethered&rdquo; updates over USB from a host PC.
    </li>
    <li>
     &ldquo;Offline&rdquo; updates via a reboot and update from a file on removable storage.
    </li>
   </ul>
   <p>
    However, if the device implementation includes support for an unmetered data
connection such as 802.11 or Bluetooth PAN (Personal Area Network) profile, it
MUST support OTA downloads with offline update via reboot.
   </p>
   <p>
    The update mechanism used MUST support updates without wiping user data. That
is, the update mechanism MUST preserve application private data and application
shared data. Note that the upstream Android software includes an update
mechanism that satisfies this requirement.
   </p>
   <p>
    For device implementations that are launching with Android 7.0 and
later, the update mechanism SHOULD support verifying that the system image is
binary identical to expected result following an OTA. The block-based OTA
implementation in the upstream Android Open Source Project, added since Android
5.1, satisfies this requirement.
   </p>
   <p>
    If an error is found in a device implementation after it has been released but
within its reasonable product lifetime that is determined in consultation with
the Android Compatibility Team to affect the compatibility of third-party
applications, the device implementer MUST correct the error via a software
update available that can be applied per the mechanism just described.
   </p>
   <p>
    Android includes features that allow the Device Owner app (if present) to
control the installation of system updates. To facilitate this, the system
update subsystem for devices that report android.software.device_admin MUST
implement the behavior described in the
    <a href="http://developer.android.com/reference/android/app/admin/SystemUpdatePolicy.html">SystemUpdatePolicy</a> class.
   </p>
   <h1 id="12_document_changelog">
    12. Document Changelog
   </h1>
   <p>
    For a summary of changes to the Compatibility Definition in this release:
   </p>
   <ul>
    <li>
     <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-dev/?pretty=full&amp;no-merges">Document changelog</a> </li>
   </ul>
   <p>
    For a summary of changes to individuals sections:
   </p>
   <ol>
    <li>
     <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-dev/1_introduction?pretty=full&amp;no-merges">Introduction</a> </li>
    <li>
     <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-dev/2_device_types?pretty=full&amp;no-merges">Device Types</a> </li>
    <li>
     <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-dev/3_software?pretty=full&amp;no-merges">Software</a> </li>
    <li>
     <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-dev/4_application-packaging?pretty=full&amp;no-merges">Application Packaging</a> </li>
    <li>
     <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-dev/5_multimedia?pretty=full&amp;no-merges">Multimedia</a> </li>
    <li>
     <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-dev/6_dev-tools-and-options?pretty=full&amp;no-merges">Developer Tools and Options</a> </li>
    <li>
     <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-dev/7_hardware-compatibility?pretty=full&amp;no-merges">Hardware Compatibility</a> </li>
    <li>
     <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-dev/8_performance-and-power?pretty=full&amp;no-merges">Performance and Power</a> </li>
    <li>
     <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-dev/9_security-model?pretty=full&amp;no-merges">Security Model</a> </li>
    <li>
     <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-dev/10_software-compatibility-testing?pretty=full&amp;no-merges">Software Compatibility Testing</a> </li>
    <li>
     <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-dev/11_updatable-software?pretty=full&amp;no-merges">Updatable Software</a> </li>
    <li>
     <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-dev/12_document-changelog?pretty=full&amp;no-merges">Document Changelog</a> </li>
    <li>
     <a href="https://android.googlesource.com/platform/compatibility/cdd/+log/nougat-dev/13_contact-us?pretty=full&amp;no-merges">Contact Us</a> </li>
   </ol>
   <h2 id="12_1_changelog_viewing_tips">
    12.1. Changelog Viewing Tips
   </h2>
   <p>
    Changes are marked as follows:
   </p>
   <ul>
    <li>
     <p>
      <strong>
       CDD
      </strong>
      <br/>
      Substantive changes to the compatibility requirements.
     </p>
    </li>
    <li>
     <p>
      <strong>
       Docs
      </strong>
      <br/>
      Cosmetic or build related changes.
     </p>
    </li>
   </ul>
   <p>
    For best viewing, append the
    <code>
     pretty=full
    </code>
    and
    <code>
     no-merges
    </code>
    URL parameters to your
changelog URLs.
   </p>
   <h1 id="13_contact_us">
    13. Contact Us
   </h1>
   <p>
    You can join the
    <a href="https://groups.google.com/forum/#!forum/android-compatibility">
     android-compatibility forum</a> and ask
for clarifications or bring up any issues that you think the document does not
cover.
   </p>
  </div>
 </body>
</html>