Lines Matching full:must
309 <p>This document enumerates the requirements that must be met in order for devices
312 <p>The use of "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
321 <p>To be considered compatible with Android 5.0, device implementations MUST meet
359 <li> MUST have a touchscreen embedded in the device
360 <li> MUST have a power source that provides mobility, such as a battery
369 <li> MUST have an embedded screen OR include a video output port, such as VGA, HDMI,
371 <li> MUST declare the features android.software.leanback and
379 <li> MUST have a screen with the physical diagonal length in the range from 1.1 to
381 <li> MUST declare the feature android.hardware.type.watch
382 <li> MUST support uiMode = UI_MODE_TYPE_WATCH [<a href="http://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_WATCH">Resources, 4</a>]
386 types still MUST meet all requirements in this document to be Android 5.0
432 <p>MUST</p>
446 <p>MUST</p>
450 <p>MUST</p>
465 <p>MUST</p>
471 <p>MUST</p>
527 <p> MUST</p>
565 <p>MUST</p>
568 <p>MUST</p>
586 <p>MUST</p>
625 <p>MUST</p>
628 <p>MUST</p>
632 <p>MUST</p>
647 managed runtime environment. Device implementations MUST provide complete
652 <p>Device implementations MUST NOT omit any managed APIs, alter API interfaces or
658 MUST still be present and behave in a reasonable way. See <a href="#heading=h.5h5uvpadidzr">section 7</a> for specific requirements for this scenario.</p>
670 <p>Device implementers MUST support and enforce all permission constants as
679 implementations MUST conform.</p>
695 format. This field MUST have one of the string values defined in [<a href="http://source.android.com/compatibility/5.0/versions.html">Resources, 8]</a>.</p>
704 to third-party application code. For Android 5.0, this field MUST have the
714 to third-party application code. For Android 5.0, this field MUST have the
724 currently-executing Android system, in human-readable format. This value MUST
728 specific format of this field, except that it MUST NOT be null or the empty
740 The value of this field MUST be encodable as 7-bit ASCII and match the regular
750 end users. MUST be in human-readable format and SHOULD represent the
752 marketed. The value of this field MUST be encodable as 7-bit ASCII and match
805 design of the device. The value of this field MUST be encodable as 7-bit ASCII
815 human-readable. It MUST follow this template:</p>
823 <p>The fingerprint MUST NOT include whitespace characters. If other fields
824 included in the template above have whitespace characters, they MUST be
826 underscore ("_") character. The value of this field MUST be encodable as 7-bit
836 reasonably human-readable. The value of this field MUST be encodable as 7-bit
847 field, except that it MUST NOT be null or the empty string ("").</p>
859 this field MUST be encodable as 7-bit ASCII and match the regular expression
870 MUST NOT be null or the empty string ("").</p>
881 format of this field, except that it MUST NOT be null or the empty string ("").</p>
890 code name of the specific product (SKU) that MUST be unique within the same
891 brand. MUST be human-readable, but is not necessarily intended for view by end
892 users. The value of this field MUST be encodable as 7-bit ASCII and match the
901 <p>A hardware serial number, which MUST be available. The value of this field MUST
912 distinguishes the build. This field MUST have one of the values corresponding
931 of the build. This field MUST have one of the values corresponding to the three
942 MUST NOT be null or the empty string ("").</p>
951 <p>Device implementations MUST honor Android's loose-coupling intent system, as
953 implementer MUST provide an Android Activity or Service that specifies a
978 appropriate but MUST include a component implementing the same intent patterns
986 <p>As Android is an extensible platform, device implementations MUST allow each
988 implementation allows this by default; device implementers MUST NOT attach
999 "http://". Device implementations MUST provide a user interface for users to
1005 <p>Device implementations MUST NOT include any Android component that honors any
1007 string in the android.* or com.android.* namespace. Device implementers MUST
1010 space belonging to another organization. Device implementers MUST NOT alter or
1020 Android-compatible devices MUST broadcast the public broadcast intents in
1029 device implementations MUST provide a similar settings menu and be compatible
1036 <li> MUST honor the android.settings.HOME_SETTINGS intent to show a default app
1039 <li> MUST provide a settings menu that will call the
1043 <li> MUST honor the android.settings.NFC_PAYMENT_SETTINGS intent to show a default
1058 the Android NDK. Device implementations MUST be compatible with one or more
1059 defined ABIs, and MUST implement compatibility with the Android NDK, as below.</p>
1064 <li> MUST include support for code running in the managed environment to call into
1066 <li> MUST be source-compatible (i.e. header compatible) and binary-compatible (for
1068 <li> MUST support the equivalent 32-bit ABI if any 64-bit ABI is supported
1069 <li> MUST accurately report the native Application Binary Interface (ABI) supported
1074 <li> MUST report, via the above parameters, only those ABIs documented in the latest
1081 <p>The following native code APIs MUST be available to apps that include native
1106 predefined ABI, it MUST NOT report support for any ABIs at all.</p>
1108 <p>Note that device implementations MUST include libGLESv3.so and it MUST symlink
1109 (symbolic link) to libGLESv2.so. in turn, MUST export all the OpenGL ES 3.1 and
1111 symbols must be present, only the corresponding functions for OpenGL ES
1112 versions and extensions actually supported by the device must be fully
1129 on Android Watch devices but MUST be provided on all other types of device
1136 <p>The platform feature android.software.webview MUST be reported on any device
1138 MUST NOT be reported on devices without a complete implementation of the API.
1141 rendering system, device implementers MUST use the specific upstream build of
1145 <li> Device android.webkit.WebView implementations MUST be based on the Chromium
1148 <li> The user agent string reported by the WebView MUST be in this format:
1155 <li> The value of the $(VERSION) string MUST be the same as the value for
1157 <li> The value of the $(MODEL) string MUST be the same as the value for
1159 <li> The value of the $(BUILD) string MUST be the same as the value for
1161 <li> The value of the $(CHROMIUM_VER) string MUST be the version of Chromium in the
1176 <p>Android Television and Watch Devices MAY omit a browser application, but MUST
1177 support the public intent patterns as described in <a href="#heading=h.qiy4ddbiirgy">section 3.2.3.1</a>. All other types of device implementations MUST include a standalone Browser
1186 android.webkit.WebView component provided to third-party applications MUST be
1194 much of HTML5 [<a href="https://www.google.com/url?q=https%3A%2F%2Fhtml.spec.whatwg.org%2Fmultipage%2F&sa=D&sntz=1&usg=AFQjCNH7pPjEWho8n19H_n0ZXrQbI9RVlg">Resources, 14</a>] as possible. Minimally, device implementations MUST support each of these
1203 <p>Additionally, device implementations MUST support the HTML5/W3C webstorage API
1211 <p>The behaviors of each of the API types (managed, soft, native, and web) must be
1216 <li> Devices MUST NOT change the behavior or semantics of a standard intent.
1217 <li> Devices MUST NOT alter the lifecycle or lifecycle semantics of a particular
1219 <li> Devices MUST NOT change the semantics of a standard permission.
1234 device implementers MUST NOT make any prohibited modifications (see below) to
1248 <li> Device implementations MUST NOT modify the publicly exposed APIs on the Android
1252 such modifications MUST NOT impact the stated behavior and Java-language
1254 <li> Device implementers MUST NOT add any publicly exposed elements (such as classes
1261 device implementers MUST NOT expose new APIs or alter existing APIs in the
1263 modifications, but those modifications MUST NOT be advertised or otherwise
1266 <p>Device implementers MAY add custom APIs, but any such APIs MUST NOT be in a
1268 implementers MUST NOT add APIs to the com.google.* or similar namespace: only
1269 Google may do so. Similarly, Google MUST NOT add APIs to other companies'
1271 outside the standard Android namespace, those APIs MUST be packaged in an
1289 <p>Device implementations MUST support the full Dalvik Executable (DEX) format and
1294 <p>Device implementations MUST configure Dalvik runtimes to allocate memory in
1556 screen MUST declare the platform feature android.software.home_screen.</p>
1574 home screen MUST meet the following requirements and declare support for
1578 <li> Device launchers MUST include built-in support for AppWidgets, and expose user
1581 <li> Device implementations MUST be capable of rendering widgets that are 4 x 4 in
1595 MUST support notifications that use hardware features, as described in the SDK
1597 hardware. For instance, if a device implementation includes a vibrator, it MUST
1599 hardware, the corresponding APIs MUST be implemented as no-ops. This behavior
1602 <p>Additionally, the implementation MUST correctly render all resources (icons,
1605 implementation; however, such alternative notification systems MUST support
1616 <p>Device implementations MUST properly display and execute these notifications,
1621 are posted or updated. Device implementations MUST correctly and promptly send
1641 MUST implement the APIs that allow third-party applications to add suggestions
1650 end user, that disappear after a brief period of time [<a href="http://developer.android.com/reference/android/widget/Toast.html">Resources, 27</a>]. Device implementations MUST display Toasts from applications to end users in
1661 feel as defined by the Android SDK [<a href="http://developer.android.com/guide/topics/ui/themes.html">Resources, 28</a>]. Device implementations MUST NOT alter any of the Holo theme attributes
1667 implementations MUST support the ?Material? theme family and MUST NOT alter any
1681 MUST use white for system status icons (such as signal strength and battery
1704 above SHOULD implement live wallpapers, and when implemented MUST report the
1724 implementations including the recents function navigation key as detailed in <a href="#heading=h.dzfhwcjzm5z6">section 7.2.3</a>, MAY alter the interface but MUST meet the following requirements:</p>
1727 <li> MUST display affiliated recents as a group that moves together
1728 <li> MUST support at least up to 20 displayed activities
1729 <li> MUST at least display the title of 4 activities at a time
1731 <li> MUST implement the screen pinning behavior [<a href="https://developer.android.com/about/versions/android-5.0.html#ScreenPinning">Resources, 33</a>] and provide the user with a settings menu to toggle the feature
1744 the device MUST declare the platform feature android.software.input_methods and
1748 MUST provide a user-accessible mechanism to add and configure third-party input
1749 methods. Device implementations MUST display the settings interface in response
1757 playback controls that are displayed on the lock screen [<a href="https://developer.android.com/reference/android/app/Notification.MediaStyle.html">Resources, 35</a>]. Device implementations that support a lock screen in the device MUST support
1773 location coordinates, location modes MUST be displayed in the Location menu
1780 implementations include an IME, devices MUST provide an input method to the
1781 user for the Emoji characters defined in Unicode 6.1 [<a href="http://www.unicode.org/versions/Unicode6.1.0/">Resources, 38</a>]. All devices MUST be capable of rendering these emoji characters in color
1786 sans-serif-condensed, sans-serif-condensed-light?which MUST all be included for
1797 API [<a href="http://developer.android.com/guide/topics/admin/device-admin.html">Resources, 39</a>]. Device implementations MUST provide an implementation of the
1798 DevicePolicyManager class [<a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html">Resources, 40</a>]. Device implementations that include support for lock screen MUST support the
1803 administration functions but this application MUST NOT be set out-of-the box as
1813 text-to-speech, haptic feedback, and trackball/d-pad navigation [<a href="http://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html">Resources, 42</a>]. Device implementations MUST provide an implementation of the Android
1815 Device implementations MUST meet the following requirements:</p>
1818 <li> MUST support third-party accessibility service implementations through the
1820 <li> MUST generate AccessibilityEvents and deliver these events to all registered
1824 MUST provide a user-accessible mechanism to enable and disable accessibility
1825 services, and MUST display this interface in response to the
1841 MUST meet these requirements related to the Android TTS framework. </p>
1846 <li> MUST support the Android TTS framework APIs and SHOULD include a TTS engine
1850 <li> MUST support installation of third-party TTS engines
1851 <li> MUST provide a user-accessible interface that allows users to select a TTS
1861 device implementations MUST support Television Input Framework [<a href="https://source.android.com/devices/tv/index.html">Resources, 46</a>].</p>
1863 <p>Device implementations that support TIF MUST declare the platform feature
1869 <p>Device implementations MUST install and run Android ".apk" files as generated
1872 <p>Devices implementations MUST NOT extend either the .apk [<a href="http://developer.android.com/guide/components/fundamentals.html">Resources, 48</a>], Android Manifest [<a href="http://developer.android.com/guide/topics/manifest/manifest-intro.html">Resources, 49</a>], Dalvik bytecode [<a href="https://android.googlesource.com/platform/dalvik/+/lollipop-release/docs/">Resources, 20</a>], or RenderScript bytecode formats in such a way that would prevent those
1881 <p>Device implementations MUST support the core media formats specified in the
1883 implementations MUST support the media formats, encoders, decoders, file types,
2123 <p>16-bit linear PCM (rates up to limit of hardware). Devices MUST support
2437 <p>Android device implementations with H.264 codec support, MUST support Baseline
2515 <p>Android device implementations with VP8 codec support MUST support the SD video
2602 <p>Device implementations MUST support dynamic video resolution switching within
2605 <p>Android device implementations with H.264 decoders, MUST support Baseline
2607 the HD decoding profiles. Android Television devices MUST support High Profile
2691 <p>Android device implementations when supporting VP8 codec as described in <a href="#heading=h.hitn8abpwkj2">section 5.1.3</a>, MUST support the following SD decoding profiles and SHOULD support the HD
2692 decoding profiles. Android Television devices MUST support the HD 1080p
2776 <p>Android device implementations, when supporting VP9 codec as described in <a href="#heading=h.hitn8abpwkj2">section 5.1.3</a>, MUST support the following SD video decoding profiles and SHOULD support the
2779 profile. When the UHD video decoding profile is supported, it MUST support 8
2869 <p>Android device implementations, when supporting H.265 codec as described in <a href="#heading=h.hitn8abpwkj2">section 5.1.3</a>, MUST support the Main Profile Level 3 Main tier and the following SD video
2871 Television devices MUST support the Main Profile Level 4.1 Main tier and the HD
2967 to change these to MUST. Existing and new Android devices are <strong>very strongly encouraged</strong> to meet these requirements, or they will not be able to attain Android
2973 <p>Device implementations that declare android.hardware.microphone MUST allow
3007 <li> Noise reduction processing, if present, MUST be disabled.
3008 <li> Automatic gain control, if present, MUST be disabled
3012 recognition, the effect MUST be controllable from the
3014 noise suppressor's effect descriptor MUST uniquely identify each implementation
3021 audio source. Devices that declare android.hardware.audio.output MUST properly
3035 <p>Device implementations that declare android.hardware.audio.output MUST conform
3041 <p>The device MUST allow playback of raw audio content with the following
3064 <li> MUST support the EFFECT_TYPE_EQUALIZER and EFFECT_TYPE_LOUDNESS_ENHANCER
3067 <li> MUST support the visualizer API implementation, controllable through the
3078 <p>Android Television device implementations MUST include support for system
3127 MUST NOT report support for low-latency audio.</p>
3142 <p>Devices MUST support the media network protocols for audio and video playback
3143 as specified in the Android SDK documentation [<a href="http://developer.android.com/guide/appendix/media-formats.html">Resources, 50</a>]. Specifically, devices MUST support the following media network protocols:</p>
3155 supporting secure surfaces MUST declare support for Display.FLAG_SECURE. Device
3157 wireless display protocol, MUST secure the link with a cryptographically strong
3159 if they support a wired external display, the device implementations MUST
3160 support HDCP 1.2 or higher. Android Television device implementations MUST
3172 <p>Device implementations MUST support the Android Developer Tools provided in the
3173 Android SDK. Android compatible devices MUST be compatible with:</p>
3179 <p>Device implementations MUST support all adb functions as documented in the
3180 Android SDK including dumpsys [<a href="https://source.android.com/devices/tech/input/dumpsys.html">Resources, 56</a>]. The device-side adb daemon MUST be inactive by default and there MUST be a
3182 implementation omits USB peripheral mode, it MUST implement the Android Debug
3186 authenticated hosts. Device implementations MUST support secure adb.</p>
3192 <p>Device implementations MUST support all ddms features as documented in the
3194 but MUST be supported whenever the user has activated the Android Debug Bridge,
3201 <p>Device implementations MUST include the Monkey framework, and make it available
3208 <p>Device implementations MUST support systrace tool as documented in the Android
3209 SDK. Systrace must be inactive by default, and there MUST be a user-accessible
3217 adb tool as provided in the standard Android SDK, device implementers MUST
3219 adb protocol. These drivers MUST be provided for Windows XP, Windows Vista,
3226 development-related settings. Device implementations MUST honor the
3230 times on the <strong>Settings</strong> > <strong>About Device</strong> > <strong>Build Number</strong> menu item. Device implementations MUST provide a consistent experience for
3231 Developer Options. Specifically, device implementations MUST hide Developer
3232 Options by default and MUST provide a mechanism to enable Developer Options
3239 API for third-party developers, the device implementation MUST implement that
3246 MUST still be presented.
3247 <li> The API's behaviors MUST be implemented as no-ops in some reasonable fashion.
3248 <li> API methods MUST return null values where permitted by the SDK documentation.
3249 <li> API methods MUST return no-op implementations of classes where null values are
3251 <li> API methods MUST NOT throw exceptions not documented by the SDK documentation.
3255 API: even on non-phone devices, these APIs must be implemented as reasonable
3258 <p>Device implementations MUST consistently report accurate hardware configuration
3268 run well on a variety of hardware configurations [<a href="http://developer.android.com/guide/practices/screens_support.html">Resources, 61</a>]. Devices MUST properly implement these APIs and behaviors, as detailed in
3278 1". Where dpi values are listed, both horizontal and vertical dpi must fall
3305 Device implementations MUST report the correct screen size as defined in the
3307 implementations MUST report the correct screen size according to the following
3311 <li> Devices MUST have screen sizes of at least 426 dp x 320 dp ('small'), unless it
3313 <li> Devices that report screen size 'normal' MUST have screen sizes of at least 480
3315 <li> Devices that report screen size 'large' MUST have screen sizes of at least 640
3317 <li> Devices that report screen size 'xlarge' MUST have screen sizes of at least 960
3324 <li> Android Watch devices MUST have a screen with the physical diagonal size in the
3327 screen, MUST have a screen at least 2.5 inches in physical diagonal size.
3330 <p>Devices MUST NOT change their reported screen size at any time.</p>
3334 implementations MUST correctly honor applications' stated support for small,
3350 <p>The screen aspect ratio MUST be a value from 1.3333 (4:3) to 1.86 (roughly
3360 MUST report only one of the following logical Android framework densities
3361 through the android.util.DisplayMetrics APIs, and MUST execute applications at
3362 this standard density and MUST NOT change the value at at any time for the
3388 <p>Device implementations MUST report correct values for all display metrics
3389 defined in android.util.DisplayMetrics [<a href="http://developer.android.com/reference/android/util/DisplayMetrics.html">Resources, 62</a>] and MUST report the same values regardless of whether the embedded or
3395 <p>Devices MUST report which screen orientations they support
3397 MUST report at least one supported orientation. For example, a device with a
3401 <p>Devices that report both screen orientations MUST support dynamic orientation
3403 the device must respect the application's request for a specific screen
3407 <p>Devices MUST report the correct value for the device's current orientation,
3411 <p>Devices MUST NOT change the reported screen size or density when changing
3417 <p>Device implementations MUST support both OpenGL ES 1.0 and 2.0, as embodied and
3420 implementations MUST also support Android RenderScript, as detailed in the
3423 <p>Device implementations MUST also correctly identify themselves as supporting
3427 <li> The managed APIs (such as via the GLES10.getString()method MUST report support
3430 libGLES_v2.so, or libEGL.so) MUST report support for OpenGL ES 1.0 and OpenGL
3432 <li> Device implementations that declare support for OpenGL ES 3.0 or 3.1 MUST
3435 libGLESv2.so MUST export the corresponding function symbols in addition to the
3442 support this extension pack, and?only if fully implemented?MUST identify the
3446 However, device implementations MUST report via the OpenGL ES managed and
3447 native APIs all extension strings that they do support, and conversely MUST NOT
3462 <p>Device implementations MUST enable hardware acceleration by default, and MUST
3467 <p>In addition, device implementations MUST exhibit behavior consistent with the
3472 Device implementations MUST support the TextureView API, and MUST
3477 that records images to a video. Device implementations MUST support
3486 screen-size independence. Device implementations MUST include support for
3488 open source code. That is, device implementations MUST NOT alter the triggers
3489 or thresholds at which compatibility mode is activated, and MUST NOT alter the
3496 graphics to the display. Devices MUST support all of these APIs as defined by
3500 <li> Devices MUST support displays capable of rendering 16-bit color graphics and
3502 <li> Devices MUST support displays capable of rendering animations.
3503 <li> The display technology used MUST have a pixel aspect ratio (PAR) between 0.9
3504 and 1.15. That is, the pixel aspect ratio MUST be near square (1.0) with a 10 ~
3514 additional display connection then the device implementation MUST implement the
3526 <p>Android Watch devices MAY but other type of device implementations MUST
3536 <li> MUST include support for the Input Management Framework (which allows
3539 <li> MUST provide at least one soft keyboard implementation (regardless of whether a
3544 <li> MUST NOT include a hardware keyboard that does not match one of the formats
3554 <p>Android Television devices MUST support D-pad.</p>
3565 <li> MUST report the correct value for android.content.res.Configuration.navigation
3567 <li> MUST provide a reasonable alternative user interface mechanism for the
3591 <li> Android Handheld device implementations MUST provide the Home, Recents, and
3593 <li> Android Television device implementations MUST provide the Home and Back
3595 <li> Android Watch device implementations MUST have the Home function available to
3597 <li> All other types of device implementations MUST provide the Home and Back
3604 Android supports both implementations. All of these functions MUST be
3608 <p>Recents function, if provided, MUST have a visible button or icon unless hidden
3613 <p> The Home and Back functions, if provided, MUST each have a visible button or
3618 Therefore the new device implementations shipping with Android 5.0 MUST NOT
3625 <li> MUST display the action overflow button on the action bar when it is visible
3629 <li> MUST NOT modify the position of the action overflow popup displayed by
3635 <p>For backwards compatibility, device implementations MUST make the Menu function
3640 <p>Android supports Assist action [<a href="http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST">Resources, 69</a>]. Android device implementations except for Android Watch devices MUST make
3644 another physical button, software key, or gesture, but MUST be accessible with
3649 navigation keys, but if so, MUST meet these requirements:</p>
3652 <li> Device implementation navigation keys MUST use a distinct portion of the
3653 screen, not available to applications, and MUST NOT obscure or otherwise
3655 <li> Device implementations MUST make available a portion of the display to
3657 <li> Device implementations MUST display the navigation keys when applications do
3659 <li> Device implementations MUST present the navigation keys in an unobtrusive "low
3662 <li> Device implementations MUST hide the navigation keys when applications specify
3672 <p>Android Handhelds and Watch Devices MUST support touchscreen input.</p>
3680 pointer input system, it MUST NOT report the android.hardware.touchscreen or
3687 <li> MUST report the value of android.content.res.Configuration.touchscreen [<a href="http://developer.android.com/reference/android/content/res/Configuration.html">Resources, 68</a>] corresponding to the type of the specific touchscreen on the device
3705 functionality. Device implementations that declare the fake touch feature MUST
3708 <p>Device implementations MUST report the correct feature corresponding to the
3710 (single-touch or better) MUST report the platform feature constant
3712 feature constant android.hardware.touchscreen MUST also report the platform
3714 include a touchscreen (and rely on a pointer device only) MUST NOT report any
3715 touchscreen feature, and MUST report only android.hardware.faketouch if they
3724 <li> MUST report the absolute X and Y screen positions of the pointer location and
3726 <li> MUST report touch event with the action code that specifies the state change
3728 <li> MUST support pointer down and up on an object on the screen, which allows users
3730 <li> MUST support pointer down, pointer up, pointer down then pointer up in the same
3733 <li> MUST support pointer down on an arbitrary point on the screen, pointer move to
3736 <li> MUST support pointer down then allow users to quickly move the object to a
3742 MUST meet the requirements for faketouch above, and MUST also support distinct
3748 <p>Android Television device implementations MUST support button mappings for game
3755 <p>Android Television device implementations MUST support the following key
3910 <p>2 The above HID usages must be declared within a Game pad CA (0x01 0x0005).</p>
3912 <p>3 This usage must have a Logical Minimum of 0, a Logical Maximum of 7, a
3995 or tablet. The remote control MUST meet the requirements defined below.</p>
3998 <li> <strong>Search affordance</strong>?Device implementations MUST fire KEYCODE_SEARCH when the user invokes voice
4000 <li> <strong>Navigation</strong>?All Android Television remotes MUST include Back, Home, and Select buttons and
4010 corresponding API for third-party developers, the device implementation MUST
4015 <li> MUST accurately report the presence or absence of sensors per the
4017 <li> MUST return an accurate list of supported sensors via the
4019 <li> MUST behave reasonably for all other sensor APIs (for example, by returning
4023 <li> MUST report all sensor measurements using the relevant International System of
4041 in [<a href="http://source.android.com/devices/sensors/composite_sensors.html">Resources, 76</a>]. If a device implementation includes a composite sensor it MUST implement the
4047 sensor, device implementations MUST continuously provide periodic data samples
4052 <p>Note that the device implementations MUST ensure that the sensor event stream
4053 MUST NOT prevent the device CPU from entering a suspend state or waking up from
4067 <li> MUST implement and report TYPE_ACCELEROMETER sensor [<a href="http://developer.android.com/reference/android/hardware/Sensor.html#TYPE_ACCELEROMETER">Resources, 78</a>]
4068 <li> MUST be able to report events up to a frequency of at least 100 Hz and SHOULD
4070 <li> MUST comply with the Android sensor coordinate system as detailed in the
4072 <li> MUST be capable of measuring from freefall up to four times the gravity (4g) or
4074 <li> MUST have a resolution of at least 8-bits and SHOULD have a resolution of at
4080 <li> MUST have a standard deviation no greater than 0.05 m/s^, where the standard
4086 sensors are implemented, the sum of their power consumption MUST always be less
4089 <li> If a gyroscope sensor is included, MUST implement the TYPE_GRAVITY and
4104 <li> MUST implement the TYPE_MAGNETIC_FIELD sensor and SHOULD also implement
4107 <li> MUST be able to report events up to a frequency of at least 10 Hz and SHOULD
4109 <li> MUST comply with the Android sensor coordinate system as detailed in the
4111 <li> MUST be capable of measuring between -900 ?T and +900 ?T on each axis before
4113 <li> MUST have a hard iron offset value less than 700 ?T and SHOULD have a value
4116 <li> MUST have a resolution equal or denser than 0.6 ?T and SHOULD have a resolution
4119 <li> MUST support online calibration and compensation of the hard iron bias, and
4121 <li> MUST have the soft iron compensation applied?the calibration can be done either
4129 sensor is also implemented. However if implemented, it MUST consume less than
4149 <li> MUST implement the TYPE_GYROSCOPE sensor and SHOULD also implement
4152 <li> MUST be capable of measuring orientation changes up to 1,000 degrees per second
4153 <li> MUST be able to report events up to a frequency of at least 100 Hz and SHOULD
4155 <li> MUST have a resolution of 12-bits or more and SHOULD have a resolution of
4157 <li> MUST be temperature compensated
4158 <li> MUST be calibrated and compensated while in use, and preserve the compensation
4160 <li> MUST have a variance no greater than 1e-7 rad^2 / s^2 per Hz (variance per Hz,
4161 or rad^2 / s). The variance is allowed to vary with the sampling rate, but must
4166 <li> If an accelerometer sensor is included, MUST implement the TYPE_GRAVITY and
4179 <li> MUST implement and report TYPE_PRESSURE sensor
4180 <li> MUST be able to deliver events at 5 Hz or greater
4181 <li> MUST have adequate precision to enable estimating altitude
4182 <li> MUST be temperature compensated
4189 If present, it MUST be defined as SENSOR_TYPE_AMBIENT_TEMPERATURE and it MUST
4193 present, it MUST be defined as SENSOR_TYPE_TEMPERATURE, it MUST measure the
4194 temperature of the device CPU, and it MUST NOT measure any other temperature.
4211 <li> MUST measure the proximity of an object in the same direction as the screen.
4212 That is, the proximity sensor MUST be oriented to detect objects close to the
4215 other orientation, it MUST NOT be accessible through this API.
4216 <li> MUST have 1-bit of accuracy or more
4232 send/receive SMS messages MUST NOT report the android.hardware.telephony
4238 implementation does include GSM or CDMA telephony, it MUST implement full
4240 include telephony hardware MUST implement the full APIs as no-ops.</p>
4248 <p>Android Television device implementations MUST include Wi-Fi support. </p>
4254 <p>Android Television device implementations MUST include support for one or more
4258 functionality to a third-party application, it MUST implement the corresponding
4262 <li> MUST report the hardware feature flag android.hardware.wifi
4263 <li> MUST implement the multicast API as described in the SDK documentation [<a href="http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html">Resources, 79</a>]
4264 <li> MUST support multicast DNS (mDNS) and MUST NOT filter mDNS packets
4274 Direct, it MUST implement the corresponding Android API as described in the SDK
4278 <li> MUST report the hardware feature android.hardware.wifi.direct
4279 <li> MUST support regular Wi-Fi operation
4289 <p>Android Television device implementations MUST include support for Wi-Fi
4296 <p>Android Television device implementations MUST include support for Wi-Fi
4314 <p>Android Television device implementations MUST support Bluetooth and Bluetooth
4315 LE and Android Watch device implementations MUST support Bluetooth.</p>
4322 Energy MUST declare the relevant platform features (android.hardware.bluetooth
4326 device implementations MUST support Bluetooth and Bluetooth LE. </p>
4331 <li> MUST declare the hardware feature android.hardware.bluetooth_le
4332 <li> MUST enable the GATT (generic attribute profile) based Bluetooth APIs as
4335 implementing the ScanFilter API [<a href="https://developer.android.com/reference/android/bluetooth/le/ScanFilter.html">Resources, 83</a>], and MUST report the correct value of where the filtering logic is
4339 if not supported, MUST report ?false? whenever queried via the
4342 MUST report ?false? whenever queried via the
4354 <li> MUST report the android.hardware.nfc feature from the
4356 <li> MUST be capable of reading and writing NDEF messages via the following NFC
4359 <li> MUST be capable of acting as an NFC Forum reader/writer (as defined by the NFC
4372 MUST. These standards are optional in this version but will be required in
4378 <li> MUST be capable of transmitting and receiving data via the following
4387 <li> MUST include support for Android Beam [<a href="http://developer.android.com/guide/topics/connectivity/nfc/nfc.html">Resources, 85</a>]:
4389 <li> MUST implement the SNEP default server. Valid NDEF messages received by the
4390 default SNEP server MUST be dispatched to applications using the
4392 MUST NOT disable dispatch of incoming NDEF message.
4393 <li> MUST honor the android.settings.NFCSHARING_SETTINGS intent to show NFC sharing
4395 <li> MUST implement the NPP server. Messages received by the NPP server MUST be
4397 <li> MUST implement a SNEP client and attempt to send outbound P2P NDEF to the
4399 found then the client MUST attempt to send to an NPP server.
4400 <li> MUST allow foreground activities to set the outbound P2P NDEF message using
4406 <li> SHOULD enable Android Beam by default and MUST be able to send and receive
4408 <li> MUST support NFC Connection handover to Bluetooth when the device supports
4409 Bluetooth Object Push Profile. Device implementations MUST support connection
4411 implementing the "Connection Handover version 1.2" [<a href="http://www.nfc-forum.org/specs/spec_list/#conn_handover">Resources, 87</a>] and "Bluetooth Secure Simple Pairing Using NFC version 1.0" [<a href="http://members.nfc-forum.org/apps/group_public/download.php/18688/NFCForum-AD-BTSSP_1_1.pdf">Resources, 88</a>] specs from the NFC Forum. Such an implementation MUST implement the handover
4413 handover request/select records over NFC, and it MUST use the Bluetooth Object
4420 <li> MUST poll for all supported technologies while in NFC discovery mode
4434 <li> MUST report the android.hardware.nfc.hce feature constant
4435 <li> MUST support NFC HCE APIs as defined in the Android SDK [<a href="http://developer.android.com/guide/topics/connectivity/nfc/hce.html">Resources, 10</a>]
4451 <li> MUST implement the corresponding Android APIs as documented by the Android SDK
4452 <li> MUST report the feature com.nxp.mifare from the
4455 <li> MUST NOT implement the corresponding Android APIs nor report the com.nxp.mifare
4460 <p>If a device implementation does not include NFC hardware, it MUST NOT declare
4462 android.content.pm.PackageManager.hasSystemFeature() method [<a href="http://developer.android.com/reference/android/content/pm/PackageManager.html">Resources, 53]</a>, and MUST implement the Android NFC API as a no-op.</p>
4465 protocol-independent data representation format, device implementations MUST
4472 <p>Device implementations MUST include support for one or more forms of data
4473 networking. Specifically, device implementations MUST include support for at
4487 <p>Device implementations MUST have the master auto-sync setting on by default so
4512 <li> MUST report the feature flag android.hardware.camera and
4514 <li> MUST have a resolution of at least 2 megapixels
4518 <li> MAY include a flash. If the Camera includes a flash, the flash lamp MUST NOT be
4534 <li> MUST report the feature flag android.hardware.camera.any and
4536 <li> MUST have a resolution of at least VGA (640x480 pixels)
4537 <li> MUST NOT use a front-facing camera as the default for the Camera API. The
4539 implementations MUST NOT configure the API to to treat a front-facing camera as
4543 <li> MUST horizontally reflect (i.e. mirror) the stream displayed by an app in a
4548 preview MUST be mirrored horizontally relative to the device's current
4551 rotated via a call to the android.hardware.Camera.setDisplayOrientation()[<a href="http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation(int)">Resources, 90</a>] method, the camera preview MUST be mirrored horizontally relative to the
4553 <li> Otherwise, the preview MUST be mirrored along the device's default horizontal
4556 <li> MUST mirror the image displayed by the postview in the same manner as the
4559 <li> MUST NOT mirror the final captured still image or video streams returned to
4571 <li> MUST declare the platform feature android.hardware.camera.external and
4573 <li> MUST support USB Video Class (UVC 1.0 or higher)
4580 unencoded/ MJPEG stream (QVGA or greater resolution) MUST be accessible to the
4594 implementations MUST ensure the continued support of the API as described in
4597 <p>Device implementations MUST implement the following behaviors for the
4602 android.hardware.Camera.Parameters.setPreviewFormat(int), then the device MUST
4607 YCbCr_420_SP, the data in the byte[] passed into onPreviewFrame() must further
4608 be in the NV21 encoding format. That is, NV21 MUST be the default.
4609 <li> For android.hardware.Camera, device implementations MUST support the YV12
4613 implementation MUST support conversion to YV12.)
4614 <li> For android.hardware.camera2, device implementations must support the
4619 <p>Device implementations MUST still implement the full Camera API included in the
4621 capabilities. For instance, cameras that lack autofocus MUST still call any
4625 not support autofocus, the API callbacks must still be "faked" as described.</p>
4627 <p>Device implementations MUST recognize and honor each parameter name defined as
4630 feature, the API must behave as documented. Conversely, device implementations
4631 MUST NOT honor or recognize string constants passed to the
4634 implementations MUST support all standard Camera parameters if the hardware
4635 allows, and MUST NOT support custom Camera parameter types. For instance,
4637 (HDR) imaging techniques MUST support camera parameter Camera.SCENE_MODE_HDR [<a href="http://developer.android.com/reference/android/hardware/Camera.Parameters.html">Resources, 92</a>].</p>
4640 the android.hardware.camera2 API, device implementations MUST report the proper
4644 <p>Device implementations MUST also declare its Individual camera capabilities of
4646 and declare the appropriate feature flags [<a href="http://source.android.com/devices/camera/versioning.html">Resources, 94]</a>; a device must define the feature flag if any of its attached camera devices
4649 <p>Device implementations MUST broadcast the Camera.ACTION_NEW_PICTURE intent
4653 <p>Device implementations MUST broadcast the Camera.ACTION_NEW_VIDEO intent
4660 <p>Both front- and rear-facing cameras, if present, MUST be oriented so that the
4662 when the device is held in the landscape orientation, cameras MUST capture
4676 <p>Android Television devices MUST have at least 5GB of non-volatile storage
4683 <p>The memory available to the kernel and userspace on device implementations MUST
4757 <p>The minimum memory values MUST be in addition to any memory space already
4761 <p>Android Television devices MUST have at least 5GB and other device
4762 implementations MUST have at least 1.5GB of non-volatile storage available for
4763 application private data. That is, the /data partition MUST be at least 5GB for
4769 download data files [<a href="http://developer.android.com/reference/android/app/DownloadManager.html">Resources, 95</a>]. The device implementation of the Download Manager MUST be capable of
4776 <p>Device implementations MUST offer shared storage for applications also often
4779 <p>Device implementations MUST be configured with shared storage mounted by
4781 path /sdcard, then the device MUST include a Linux symbolic link from /sdcard
4789 <li> MUST implement a toast or pop-up user interface warning the user when there is
4791 <li> MUST include a FAT-formatted SD card 1GB in size or larger OR show on the box
4794 <li> MUST mount the SD card by default
4802 MUST be 1GB in size or larger and mounted on /sdcard (or /sdcard MUST be a
4805 <p>Device implementations MUST enforce as documented the
4807 Shared storage MUST otherwise be writable by any application that obtains that
4811 an SD card slot and shared internal storage) MUST NOT allow Android
4817 <p>Regardless of the form of shared storage used, device implementations MUST
4830 <p>If the device implementation lacks USB ports, it MUST provide a host computer
4843 <li> The port MUST be connectable to a USB host that has a standard type-A or type
4852 <li> It MUST allow a USB host connected with the Android device to access the
4858 device it MUST implement the AOA API. Device implementations implementing the
4861 <li> MUST declare support for the hardware feature android.hardware.usb.accessory [<a href="http://developer.android.com/guide/topics/connectivity/usb/accessory.html">Resources, 97</a>]
4862 <li> MUST implement the USB audio class as documented in the Android SDK
4867 <li> The value of iSerialNumber in USB standard device descriptor MUST be equal to
4875 <li> MAY use a non-standard port form factor, but if so MUST ship with a cable or
4881 <li> MUST implement the Android USB host API as documented in the Android SDK, and
4882 MUST declare support for the hardware feature android.hardware.usb.host [<a href="http://developer.android.com/guide/topics/connectivity/usb/host.html">Resources, 100</a>]
4896 <p>Android Handheld and Watch devices MUST include a microphone.</p>
4903 implementation omits a microphone, it MUST NOT report the
4904 android.hardware.microphone feature constant, and MUST implement the audio
4908 <li> MUST report the android.hardware.microphone feature constant
4909 <li> MUST meet the audio recording requirements in <a href="#heading=h.q24elivs4xtv">section 5.4</a>
4910 <li> MUST meet the audio latency requirements in <a href="#heading=h.1p55xhbym9l4">section 5.6</a>
4929 <li> MUST report the android.hardware.audio.output feature constant
4930 <li> MUST meet the audio playback requirements in <a href="#heading=h.1xocvxnwynnm">section 5.5</a>
4931 <li> MUST meet the audio latency requirements in <a href="#heading=h.1p55xhbym9l4">section 5.6</a>
4935 output port, it MUST NOT report the android.hardware.audio output feature, and
4936 MUST implement the Audio Output related APIs as no-ops at least. </p>
4939 other types of Android device implementations MUST have an audio output and
4951 <li> MUST support audio playback to stereo headphones and stereo headsets with a
4954 <li> MUST support TRRS audio plugs with the CTIA pin-out order, and SHOULD support
4956 <li> MUST support the detection of microphone on the plugged in audio accessory, if
4973 <li> MUST trigger ACTION_HEADSET_PLUG upon a plug insert, but only after all
4975 <li> MUST be capable of driving at least 150mV +/- 10% of output voltage on a 32 Ohm
4977 <li> MUST have a microphone bias voltage between 1.8V ~ 2.9V
4985 Android Watch devices SHOULD and other type of device implementations MUST meet
4991 <p>Device implementations MUST provide a smooth user interface by ensuring a
4993 implementations MUST meet the following requirements: </p>
4996 <li> <strong>Consistent frame latency</strong>?Inconsistent frame latency or a delay to render frames MUST NOT happen more
4998 <li> <strong>User interface latency</strong>?Device implementations MUST ensure low latency user experience by scrolling a
5002 application after it has been launched MUST take less than 1 second.
5008 <p>Device implementations MUST ensure file access performance consistency for read
5012 <li> <strong>Sequential write</strong>?Device implementations MUST ensure a sequential write performance of 10MB/s
5014 <li> <strong>Random write</strong>?Device implementations MUST ensure a random write performance of 0.5MB/s for a
5016 <li> <strong>Sequential read</strong>?Device implementations MUST ensure a sequential read performance of 15MB/s for
5018 <li> <strong>Random read</strong>?Device implementations MUST ensure a random read performance of 3.5MB/s for a
5025 <p>Device implementations MUST implement a security model consistent with the
5027 reference document in the APIs [<a href="http://developer.android.com/guide/topics/security/permissions.html">Resources, 102</a>] in the Android developer documentation. Device implementations MUST support
5030 compatible devices MUST support the security mechanisms described in the follow
5036 <p>Device implementations MUST support the Android permissions model as defined in
5037 the Android developer documentation [<a href="http://developer.android.com/guide/topics/security/permissions.html">Resources, 102</a>]. Specifically, implementations MUST enforce each permission defined as
5045 <p>Device implementations MUST support the Android application sandbox model, in
5047 process. Device implementations MUST support running multiple applications as
5054 <p>Device implementations MUST support the Android file access permissions model
5062 Format or native code. However, such alternate execution environments MUST NOT
5066 <p>Alternate runtimes MUST themselves be Android applications, and abide by the
5069 <p>Alternate runtimes MUST NOT be granted access to resources protected by
5073 <p>Alternate runtimes MUST NOT permit applications to make use of features
5076 <p>Alternate runtimes MUST abide by the Android sandbox model. Specifically,
5084 <li> and installed applications using an alternate runtime, MUST NOT reuse the
5087 <li> MUST NOT launch with, grant, or be granted access to the sandboxes
5089 <li> MUST NOT be launched with, be granted, or grant to other applications any
5094 device implementation, but MUST be signed with a key distinct from the key used
5097 <p>When installing applications, alternate runtimes MUST obtain user consent for
5100 permission (such as Camera, GPS, etc.), the alternate runtime MUST inform the
5103 runtime environment MUST list all permissions held by the runtime itself when
5119 isolation [<a href="http://developer.android.com/reference/android/os/UserManager.html">Resources, 103]</a>. Device implementations MAY enable multiple users, but when enabled MUST meet
5124 feature flag MUST support restricted profiles, a feature that allows device
5130 feature flag MUST NOT support restricted profiles but MUST align with the AOSP
5133 <li> Device implementations MUST, for each user, implement a security model
5137 android.app.admin.DevicePolicyManager APIs, and if supported, MUST declare the
5140 android.software.managed_users MUST use the upstream AOSP icon badge to
5143 <li> Each user instance on an Android device MUST have separate and isolated
5145 data on the same volume or filesystem. However, the device implementation MUST
5150 media for the external storage APIs MUST encrypt the contents of the SD card if
5165 declare support for android.hardware.telephony MUST warn users before sending a
5179 <li> MUST maintain compatibility with existing applications
5180 <li> MUST NOT have a visible user interface when a security violation is detected
5187 affect another application (such as a Device Administration API), the API MUST
5190 <p>Devices MUST implement SELinux or an equivalent mandatory access control system
5198 <li> MUST support a SELinux policy that allows the SELinux mode to be set on a
5199 per-domain basis, and MUST configure all domains in enforcing mode. No
5203 <li> MUST NOT modify, omit, or replace the neverallow rules present within the
5205 the policy MUST compile with all neverallow present, for both AOSP SELinux
5207 <li> MUST support dynamic updates of the SELinux policy file without requiring a
5213 additions to the SELinux policy. Device implementations MUST be compatible with
5221 it MUST continuously notify the user whenever this functionality is enabled and
5236 <p>If the device implementation has a lock screen, the device MUST support
5242 platform, it is <strong>very strongly RECOMMENDED</strong> as we expect this to change to MUST in the future versions of Android.
5243 Encryption MUST use AES with a key of 128-bits (or greater) and a mode designed
5244 for storage (for example, AES-XTS, AES-CBC-ESSIV). The encryption key MUST NOT
5251 stretching algorithm MUST be cryptographically bound to that keystore. The
5252 encryption key MUST NOT be sent off the device (even when wrapped with the user
5261 if the feature is supported it MUST declare the platform feature flag
5263 this version of the Android platform, it is <strong>very strongly RECOMMENDED</strong> as we expect this to change to MUST in the future versions of Android. The
5270 <p>Device implementations MUST pass all tests described in this section.</p>
5281 <p>Device implementations MUST pass the Android Compatibility Test Suite (CTS) [<a href="http://source.android.com/compatibility/index.html">Resources, 108</a>] available from the Android Open Source Project, using the final shipping
5284 and MUST ensure compatibility in cases of ambiguity in CTS and for any
5290 Android 5.0. Device implementations MUST pass the latest CTS version available
5296 <p>Device implementations MUST correctly execute all applicable cases in the CTS
5303 that is optional. Device implementations MUST pass all tests for hardware that
5304 they possess; for instance, if a device possesses an accelerometer, it MUST
5309 <p>Every device and every build MUST correctly run the CTS Verifier, as noted
5319 <p>Device implementations MUST include a mechanism to replace the entirety of the
5335 device MUST support Over-the-air download with offline update via reboot.</p>
5337 <p>The update mechanism used MUST support updates without wiping user data. That
5338 is, the update mechanism MUST preserve application private data and application
5351 applications, the device implementer MUST correct the error via a software
5399 <p>MUST also provide complete implementations of APIs with "@SystemApi" marker in
5454 other types of device implementations MUST include one.</p>
5487 <p>Android Television devices MUST include global search. All other device types
5496 <p>Devices MUST support material theme.</p>
5504 <p>Devices that include live wallpaper MUST report the platform feature flag
5538 <p>MUST support Roboto 2 in addition to existing requirements.</p>
5546 <p>Android Television device implementations MUST support Television Input
5623 <p>Updated to reflect that device implementations MUST consistently report
5690 <p>Android Television devices MUST support D-pad. </p>
5706 <p>Android Watch devices MUST support touchscreen input. </p>
5763 <p>Changed from MAY to SHOULD implement barometer. MUST implement and report
5790 <p>Android Television devices MUST include Wi-Fi support. Devices that DO support
5791 wifi must report android.hardware.wifi. </p>
5799 <p>MUST report the hardware feature android.hardware.wifi.direct.</p>
5807 <p>Android Television devices MUST include support for Wi-Fi TDLS.</p>
5843 removed. Devices MUST have at least 1.5GB of non-volatile storage</p>
5903 <p>Devices with a lock screen MUST support full-disk encryption. For new devices,
5904 full-disk encryption must be enabled out of box. </p>
5930 then it MUST support Over-the-air download with offline update via reboot.</p>