resolve merge conflicts of 9cfab69e071c9cf9896a3ffb0a72b0e76363b44b to master
Test: I solemnly swear I tested this conflict resolution.
Change-Id: Ib6bc0d09ff30084ec491e77a5e8c0077d8420998
diff --git a/1_introduction/1_1_structure.md b/1_introduction/1_1_structure.md
index e92205f..b6dfc73 100644
--- a/1_introduction/1_1_structure.md
+++ b/1_introduction/1_1_structure.md
@@ -2,9 +2,9 @@
### 1.1.1\. Requirements by Device Type
-[Section 2](#2_device_types) contains all the MUST and STRONGLY RECOMMENDED
-requirements that apply to a specific device type. Each subsection of
-[Section 2](#2_device_types) is dedicated to a specific device type.
+[Section 2](#2_device_types) contains all of the requirements that apply to a
+specific device type. Each subsection of [Section 2](#2_device_types) is
+dedicated to a specific device type.
All the other requirements, that universally apply to any Android device
implementations, are listed in the sections after [Section 2](#2_device_types).
@@ -26,6 +26,7 @@
* H: Android Handheld device
* T: Android Television device
* A: Android Automotive implementation
+ * Tab: Android Tablet implementation
* Condition ID
* When the requirement is unconditional, this ID is set as 0.
* When the requirement is conditional, 1 is assinged for the 1st
@@ -33,4 +34,12 @@
the same device type.
* Requirement ID
* This ID starts from 1 and increments by 1 within the same section and
- the same condition.
\ No newline at end of file
+ the same condition.
+
+### 1.1.3\. Requirement ID in Section 2
+
+The Requirement ID in [Section 2](#2_device_types) starts with the corresponding
+section ID that is followed by the Requirement ID described above.
+
+* The ID in [Section 2](#2_device_types) consists of :
+Section ID / Device Type ID - Condition ID - Requirement ID (e.g. 7.4.3/A-0-1).
diff --git a/2_device-types/2_2_handheld-reqs.md b/2_device-types/2_2_handheld-reqs.md
index 1aad3f2..e61222c 100644
--- a/2_device-types/2_2_handheld-reqs.md
+++ b/2_device-types/2_2_handheld-reqs.md
@@ -20,152 +20,114 @@
### 2.2.1\. Hardware
-**Screen Size (Section 7.1.1.1)**
-
Handheld device implementations:
-* [H-0-1] MUST have a screen at least 2.5 inches in physical diagonal size.<sup>*</sup>
-
-**Screen Density (Section 7.1.1.3)**
-
-Handheld device implementations:
-
-* [H-SR] Are STRONGLY RECOMMENDED to provide users an affordance to change
- the display size.
-
-**Legacy Application Compatibility Mode (Section 7.1.5)**
-
-Handheld device implementations:
-
-* [H-0-1] 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.
-
-**Keyboard (Section 7.2.1)**
-
-Handheld device implementations:
-
-* [H-0-1] MUST include support for third-party Input Method Editor (IME)
- applications.
-
-**Navigation Keys (Section 7.2.3)**
-
-Handheld device implementations:
-
-* [H-0-1] MUST provide the Home, Recents, and Back functions.
-
-* [H-0-2] MUST send both the normal and long press event of the Back
- function ([`KEYCODE_BACK`](http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK))
- to the foreground application.
-
-**Touchscreen Input (Section 7.2.4)**
-
-Handheld device implementations:
-
-* [H-0-1] MUST support touchscreen input.
-
-**Accelerometer (Section 7.3.1)**
-
-Handheld device implementations:
-
-* [H-SR] Are STRONGLY RECOMMENDED to include a 3-axis accelerometer.
+* [[7.1](#7_1_display-and-graphics).1.1/H-0-1] MUST have a screen at least
+2.5 inches in physical diagonal size.
+* [[7.1](#7_1_display-and-graphics).1.3/H-SR] Are STRONGLY RECOMMENDED to
+provide users an affordance to change the display size.(Screen Density)
+* [[7.1](#7_1_display-and-graphics).5/H-0-1] 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.
+* [[7.2](#7_2_input-devices).1/H-0-1] MUST include support for third-party
+Input Method Editor (IME) applications.
+* [[7.2](#7_2_input-devices).3/H-0-1] MUST provide the Home, Recents, and Back
+functions.
+* [[7.2](#7_2_input-devices).3/H-0-2] MUST send both the normal and long press
+event of the Back function ([`KEYCODE_BACK`](
+http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK))
+to the foreground application.
+* [[7.2](#7_2_input-devices).4/H-0-1] MUST support touchscreen input.
+* [[7.3](#7_3_sensors).1/H-SR] Are STRONGLY RECOMMENDED to include a 3-axis
+accelerometer.
If Handheld device implementations include a 3-axis accelerometer, they:
-* [H-1-1] MUST be able to report events up to a frequency of at least 100 Hz.
-
-**Gyroscope (Section 7.3.4)**
+* [[7.3](#7_3_sensors).1/H-1-1] MUST be able to report events up to a frequency
+of at least 100 Hz.
If Handheld device implementations include a gyroscope, they:
-* [H-1-1] MUST be able to report events up to a frequency of at least 100 Hz.
-
-**Proximity Sensor (Section 7.3.8 )**
+* [[7.3](#7_3_sensors).4/H-1-1] MUST be able to report events up to a frequency
+of at least 100 Hz.
Handheld device implementations that can make a voice call and indicate
any value other than `PHONE_TYPE_NONE` in `getPhoneType`:
-* SHOULD include a proximity sensor.
-
-**Pose Sensor (Section 7.3.12)**
+* [[7.3](#7_3_sensors).8/H] SHOULD include a proximity sensor.
Handheld device implementations:
-* Are RECOMMENDED to support pose sensor with 6 degrees of freedom.
-
-**Bluetooth (Section 7.4.3)**
-
-Handheld device implementations:
-
- * SHOULD include support for Bluetooth and Bluetooth LE.
-
-**Data Saver (Section 7.4.7)**
+* [[7.3](#7_3_sensors).12/H-SR] Are RECOMMENDED to support pose sensor with 6
+degrees of freedom.
+* [[7.4](#7_4_data-connectivity).3/H]SHOULD include support for Bluetooth and
+Bluetooth LE.
If Handheld device implementations include a metered connection, they:
-* [H-1-1] MUST provide the data saver mode.
-
-**Minimum Memory and Storage (Section 7.6.1)**
+* [[7.4](#7_4_data-connectivity).7/H-1-1] MUST provide the data saver mode.
Handheld device implementations:
-* [H-0-1] MUST have at least 4GB of non-volatile storage available for
- application private data (a.k.a. "/data" partition)
-* [H-0-2] MUST return “true” for `ActivityManager.isLowRamDevice()` when there
- is less than 1GB of memory available to the kernel and userspace.
+* [[7.6](#7_6_memory-and-storage).1/H-0-1] MUST have at least 4GB of
+non-volatile storage available for application private data
+(a.k.a. "/data" partition).
+* [[7.6](#7_6_memory-and-storage).1/H-0-2] MUST return “true” for
+`ActivityManager.isLowRamDevice()` when there is less than 1GB of memory
+available to the kernel and userspace.
If Handheld device implementations are 32-bit:
-* [H-1-1] The memory available to the kernel and userspace MUST
-be at least 512MB if any of the following densities are used:
- * 280dpi or lower on small/normal screens
+* [[7.6](#7_6_memory-and-storage).1/H-1-1] The memory available to the kernel
+and userspace MUST be at least 512MB if any of the following densities are used:
+ * 280dpi or lower on small/normal screens<sup>*</sup>
* ldpi or lower on extra large screens
* mdpi or lower on large screens
-* [H-1-2] The memory available to the kernel and userspace MUST
-be at least 608MB if any of the following densities are used:
- * xhdpi or higher on small/normal screens
+* [[7.6](#7_6_memory-and-storage).1/H-2-1] The memory available to the kernel
+and userspace MUST be at least 608MB if any of the following densities are used:
+ * xhdpi or higher on small/normal screens<sup>*</sup>
* hdpi or higher on large screens
* mdpi or higher on extra large screens
-* [H-1-3] The memory available to the kernel and userspace MUST
-be at least 896MB if any of the following densities are used:
- * 400dpi or higher on small/normal screens
+* [[7.6](#7_6_memory-and-storage).1/H-3-1] The memory available to the kernel
+and userspace MUST be at least 896MB if any of the following densities are used:
+ * 400dpi or higher on small/normal screens<sup>*</sup>
* xhdpi or higher on large screens
* tvdpi or higher on extra large screens
-* [H-1-4] The memory available to the kernel and userspace MUST
-be at least 1344MB if any of the following densities are used:
- * 560dpi or higher on small/normal screens
+* [[7.6](#7_6_memory-and-storage).1/H-4-1] The memory available to the kernel
+and userspace MUST be at least 1344MB if any of the following densities are used:
+ * 560dpi or higher on small/normal screens<sup>*</sup>
* 400dpi or higher on large screens
* xhdpi or higher on extra large screens
If Handheld device implementations are 64-bit:
-* [H-2-1] The memory available to the kernel and userspace MUST
-be at least 816MB if any of the following densities are used:
- * 280dpi or lower on small/normal screens
+* [[7.6](#7_6_memory-and-storage).1/H-5-1] The memory available to the kernel
+and userspace MUST be at least 816MB if any of the following densities are used:
+ * 280dpi or lower on small/normal screens<sup>*</sup>
* ldpi or lower on extra large screens
* mdpi or lower on large screens
-* [H-2-2] The memory available to the kernel and userspace MUST
-be at least 944MB if any of the following densities are used:
- * xhdpi or higher on small/normal screens
+* [[7.6](#7_6_memory-and-storage).1/H-6-1] The memory available to the kernel
+and userspace MUST be at least 944MB if any of the following densities are used:
+ * xhdpi or higher on small/normal screens<sup>*</sup>
* hdpi or higher on large screens
* mdpi or higher on extra large screens
-* [H-2-3] The memory available to the kernel and userspace MUST
-be at least 1280MB if any of the following densities are used:
- * 400dpi or higher on small/normal screens
+* [[7.6](#7_6_memory-and-storage).1/H-7-1] The memory available to the kernel
+and userspace MUST be at least 1280MB if any of the following densities are used:
+ * 400dpi or higher on small/normal screens<sup>*</sup>
* xhdpi or higher on large screens
* tvdpi or higher on extra large screens
-* [H-2-4] The memory available to the kernel and userspace MUST
-be at least 1824MB if any of the following densities are used:
- * 560dpi or higher on small/normal screens
+* [[7.6](#7_6_memory-and-storage).1/H-8-1] The memory available to the kernel
+and userspace MUST be at least 1824MB if any of the following densities are used:
+ * 560dpi or higher on small/normal screens<sup>*</sup>
* 400dpi or higher on large screens
* xhdpi or higher on extra large screens
@@ -174,281 +136,209 @@
components such as radio, video, and so on that are not under the kernel’s
control on device implementations.
-**Application Shared Storage (Section 7.6.2)**
Handheld device implementations:
-* [H-0-1] MUST NOT provide an application shared storage smaller than 1 GiB.
-
-**USB peripheral mode (Section 7.7.1)**
-
-Handheld device implementations:
-
-* SHOULD include a USB port supporting peripheral mode.
+* [[7.6](#7_6_memory-and-storage).2/H-0-1] MUST NOT provide an application
+shared storage smaller than 1 GiB.
+* [[7.7](#7_7_usb).1/H] SHOULD include a USB port supporting peripheral mode.
If handheld device implementations include a USB port supporting peripheral
mode, they:
-* [H-1-1] MUST implement the Android Open Accessory (AOA) API.<sup>*</sup>
-
-**Microphone (Section 7.8.1)**
+* [[7.7](#7_7_usb).1/H-1-1] MUST implement the Android Open Accessory (AOA)
+API.
Handheld device implementations:
-* [H-0-1] MUST include a microphone.
-
-**Audio Output (Section 7.8.2)**
-
-Handheld device implementations:
-
-* [H-0-1] MUST have an audio output and declare
- `android.hardware.audio.output`.
-
-**Virtual Reality Mode (Section 7.9.1)**
+* [[7.8](#7_8_audio).1/H-0-1] MUST include a microphone.
+* [[7.8](#7_8_audio).2/H-0-1] MUST have an audio output and declare
+`android.hardware.audio.output`.
If Handheld device implementations include support for the VR mode, they:
-* [H-1-1] MUST declare the `android.software.vr.mode` feature.<sup>*</sup>
+* [[7.9](#7_9_virtual-reality).1/H-1-1] MUST declare the
+`android.software.vr.mode` feature.
If device implementations declare `android.software.vr.mode` feature, they:
-* [H-2-1] MUST include an application implementing
-`android.service.vr.VrListenerService`
+* [[7.9](#7_9_virtual-reality).1/H-2-1] MUST include an application
+implementing `android.service.vr.VrListenerService`
that can be enabled by VR applications via
-`android.app.Activity#setVrModeEnabled`.<sup>*</sup>
-
-
-**Virtual Reality High Performance (Section 7.9.2)**
+`android.app.Activity#setVrModeEnabled`.
If Handheld device implementations are capable of meeting all the requirements
to declare the `android.hardware.vr.high_performance` feature flag, they:
-* [H-1-1] MUST declare the `android.hardware.vr.high_performance`
-feature flag.<sup>*</sup>
-
+* [[7.9](#7_9_virtual-reality).2/-1-1] MUST declare the
+`android.hardware.vr.high_performance` feature flag.
### 2.2.2\. Multimedia
-**Audio Encoding (Section 5.1.1)**
-
Handheld device implementations MUST support the following audio encoding:
-* [H-0-1] AMR-NB
-* [H-0-2] AMR-WB
-* [H-0-3] MPEG-4 AAC Profile (AAC LC)
-* [H-0-4] MPEG-4 HE AAC Profile (AAC+)
-* [H-0-5] AAC ELD (enhanced low delay AAC)
-
-
-**Audio Decoding (Section 5.1.2)**
+* [[5.1](#5_1_media-codecs).1/H-0-1] AMR-NB
+* [[5.1](#5_1_media-codecs).1/H-0-2] AMR-WB
+* [[5.1](#5_1_media-codecs).1/H-0-3] MPEG-4 AAC Profile (AAC LC)
+* [[5.1](#5_1_media-codecs).1/H-0-4] MPEG-4 HE AAC Profile (AAC+)
+* [[5.1](#5_1_media-codecs).1/H-0-5] AAC ELD (enhanced low delay AAC)
Handheld device implementations MUST support the following audio decoding:
-* [H-0-1] AMR-NB
-* [H-0-2] AMR-WB
-
-**Video Encoding (Section 5.2)**
+* [[5.1](#5_1_media-codecs).2/H-0-1] AMR-NB
+* [[5.1](#5_1_media-codecs).2/H-0-2] AMR-WB
Handheld device implementations MUST support the following video encoding and
make it available to third-party applications:
-* [H-0-1] H.264 AVC
-* [H-0-2] VP8
-
-**Video Decoding (Section 5.3)**
+* [[5.2](#5_2_video-encoding)/H-0-1] H.264 AVC
+* [[5.2](#5_2_video-encoding)/H-0-2] VP8
Handheld device implementations MUST support the following video decoding:
-* [H-0-1] H.264 AVC
-* [H-0-2] H.265 HEVC
-* [H-0-3] MPEG-4 SP
-* [H-0-4] VP8
-* [H-0-5] VP9
+* [[5.3](#5_3_video-decoding)/H-0-1] H.264 AVC
+* [[5.3](#5_3_video-decoding)/H-0-2] H.265 HEVC
+* [[5.3](#5_3_video-decoding)/H-0-3] MPEG-4 SP
+* [[5.3](#5_3_video-decoding)/H-0-4] VP8
+* [[5.3](#5_3_video-decoding)/H-0-5] VP9
### 2.2.3\. Software
-**WebView Compatibility (Section 3.4.1)**
-
Handheld device implementations:
-* [H-0-1] MUST provide a complete implementation of the
- `android.webkit.Webview` API.
-
-**Browser Compatibility (Section 3.4.2)**
-
-Handheld device implementations:
-
-* [H-0-1] MUST include a standalone Browser application for general
-user web browsing.
-
-**Launcher (Section 3.8.1)**
-
-Handheld device implementations:
-
-* [H-SR] Are STRONGLY RECOMMENDED to implement a default launcher
- that supports in-app pinning of shortcuts and widgets.
-
-* [H-SR] Are STRONGLY RECOMMENDED to implement a default launcher that
- provides quick access to the additional shortcuts provided by third-party apps through the
- [ShortcutManager](
- https://developer.android.com/reference/android/content/pm/ShortcutManager.html) API.
-
-* [H-SR] Are STRONGLY RECOMMENDED to include a default
- launcher app that shows badges for the app icons.
-
-**Widgets (Section 3.8.2)**
-
-Handheld device implementations:
-
-* [H-SR] Are STRONGLY RECOMMENDED to support
- third-party app widgets.
-
-
-**Notifications (Section 3.8.3)**
-
-Handheld device implementations:
-
-* [H-0-1] MUST allow third-party apps to notify users
- of notable events through the [`Notification`](
- https://developer.android.com/reference/android/app/Notification.html) and
- [`NotificationManager`](
- https://developer.android.com/reference/android/app/NotificationManager.html)
- API classes.
-* [H-0-2] MUST support rich notifications.
-* [H-0-3] MUST support heads-up notifications.
-* [H-0-4] MUST include a notification shade, providing the user the ability
- to directly control (e.g. reply, snooze, dismiss, block) the notifications
- through user affordance such as action buttons or the control panel as
- implemented in the AOSP.
-
-**Search (Section 3.8.4)**
-
-Handheld device implementations:
-
-* [H-SR] Are STRONGLY RECOMMENDED to implement an assistant on the device to
- handle the [Assist action](
- http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST).
-
-**Lock Screen Media Control (Section 3.8.10)**
+* [[3.4](#3_4_web-compatibility).1/H-0-1] MUST provide a complete
+implementation of the `android.webkit.Webview` API.
+* [[3.4](#3_4_web-compatibility).2/H-0-1] MUST include a standalone Browser
+application for general user web browsing.
+* [[3.8](#3_8_user-interface-compatibility).1/H-SR] Are STRONGLY RECOMMENDED
+to implement a default launcher that supports in-app pinning of shortcuts and
+widgets.
+* [[3.8](#3_8_user-interface-compatibility).1/H-SR] Are STRONGLY RECOMMENDED
+to implement a default launcher that provides quick access to the additional
+shortcuts provided by third-party apps through the [ShortcutManager](
+https://developer.android.com/reference/android/content/pm/ShortcutManager.html)
+API.
+* [[3.8](#3_8_user-interface-compatibility).1/H-SR] Are STRONGLY RECOMMENDED
+to include a default launcher app that shows badges for the app icons.
+* [[3.8](#3_8_user-interface-compatibility).2/H-SR] Are STRONGLY RECOMMENDED
+to support third-party app widgets.
+* [[3.8](#3_8_user-interface-compatibility).3/H-0-1] MUST allow third-party
+apps to notify users of notable events through the [`Notification`](
+https://developer.android.com/reference/android/app/Notification.html) and
+[`NotificationManager`](
+https://developer.android.com/reference/android/app/NotificationManager.html)
+API classes.
+* [[3.8](#3_8_user-interface-compatibility).3/H-0-2] MUST support rich
+notifications.
+* [[3.8](#3_8_user-interface-compatibility).3/H-0-3] MUST support heads-up
+notifications.
+* [[3.8](#3_8_user-interface-compatibility).3/H-0-4] MUST include a
+notification shade, providing the user the ability to directly control (e.g.
+reply, snooze, dismiss, block) the notifications through user affordance such as
+action buttons or the control panel as implemented in the AOSP.
+* [[3.8](#3_8_user-interface-compatibility).4/H-SR] Are STRONGLY RECOMMENDED
+to implement an assistant on the device to handle the [Assist action](
+http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST).
If Android Handheld device implementations support a lock screen, they:
-* [H-1-1] MUST display the Lock screen Notifications including the Media Notification Template.
-
-**Device administration (Section 3.9)**
+* [[3.8](#3_8_user-interface-compatibility).10/H-1-1] MUST display the Lock
+screen Notifications including the Media Notification Template.
If Handheld device implementations support a secure lock screen, they:
-* [H-1-1] MUST implement the full range of [device administration](
-http://developer.android.com/guide/topics/admin/device-admin.html)
+* [[3.9](#3_9_device-administration)/H-1-1] MUST implement the full range of
+[device administration](
+http://developer.android.com/guide/topics/admin/device-admin.html)
policies defined in the Android SDK documentation.
-**Accessibility (Section 3.10)**
-
Handheld device implementations:
-* [H-0-1] MUST support third-party accessibility services.
+* [[3.10](#3_10_accessibility)/H-0-1] MUST support third-party accessibility
+services.
+* [[3.10](#3_10_accessibility)/H-SR] Are STRONGLY RECOMMENDED to preload
+accessibility services on the device comparable with or exceeding functionality
+of the Switch Access and TalkBack (for languages supported by the preloaded
+Text-to-speech engine) accessibility services as provided in the [talkback open
+source project](https://github.com/google/talkback).
+* [[3.11](#3_11_text-to-speech)/H-0-1] MUST support installation of
+third-party TTS engines.
+* [[3.11](#3_11_text-to-speech)/H-SR] Are STRONGLY RECOMMENDED to include a
+TTS engine supporting the languages available on the device.
+* [[3.13](#3_13_quick_settings)/H-SR] Are STRONGLY RECOMMENDED to include a
+Quick Settings UI component.
-* [H-SR] Are STRONGLY RECOMMENDED to preload accessibility services on the
- device comparable with or exceeding functionality of the Switch Access and
- TalkBack (for languages supported by the preloaded Text-to-speech engine)
- accessibility services as provided in the [talkback open source
- project](https://github.com/google/talkback).
+If Android handheld device implementations declare `FEATURE_BLUETOOTH` or
+`FEATURE_WIFI` support, they:
-**Text-to-Speech (Section 3.11)**
-
-Handheld device implementations:
-
-* [H-0-1] MUST support installation of third-party TTS engines.
-
-* [H-SR] Are STRONGLY RECOMMENDED to include a TTS engine supporting the
- languages available on the device.
-
-
-**Quick Settings (Section 3.13)**
-
-Handheld device implementations:
-
-* [H-SR] Are STRONGLY RECOMMENDED to include a Quick Settings UI component.
-
-**Companion Device Pairing (Section 3.15)**
-
-If Android handheld device implementations declare `FEATURE_BLUETOOTH` or `FEATURE_WIFI` support, they:
-
-* [H-1-1] MUST support the companion device pairing feature.
+* [[3.15](#3_15_instant_apps)/H-1-1] MUST support the companion device pairing
+feature.
### 2.2.4\. Performance and Power
-**User Experience Consistency (Section 8.1)**
-
-For handheld device implementations:
-
- * [H-0-1] **Consistent frame latency**. 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.
- * [H-0-2] **User interface latency**. 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.
- * [H-0-3] **Task switching**. When multiple applications have been
-launched, re-launching an already-running application after it has been
-launched MUST take less than 1 second.
-
-**File I/O Access Performance (Section 8.2)**
+* [[8.1](#8_1_user-experience-consistency)/H-0-1] **Consistent frame latency**.
+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.
+* [[8.1](#8_1_user-experience-consistency)/H-0-2] **User interface latency**.
+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.
+* [[8.1](#8_1_user-experience-consistency)/H-0-3] **Task switching**. When
+multiple applications have been launched, re-launching an already-running
+application after it has been launched MUST take less than 1 second.
Handheld device implementations:
- * [H-0-1] MUST ensure a sequential write performance of at least 5 MB/s.
- * [H-0-2] MUST ensure a random write performance of at least 0.5 MB/s.
- * [H-0-3] MUST ensure a sequential read performance of at least 15 MB/s.
- * [H-0-4] MUST ensure a random read performance of at least 3.5 MB/s.
-
-**Power-Saving Modes (Section 8.3)**
-
-For handheld device implementations:
-
-* [H-0-1] All Apps exempted from App Standby and Doze power-saving modes
-MUST be made visible to the end user.
-* [H-0-2] The triggering, maintenance, wakeup algorithms and the use of
-global system settings of App Standby and Doze power-saving modes MUST not
-deviate from the Android Open Source Project.
-
-**Power Consumption Accounting (Sections 8.4)**
+* [[8.2](#8_2_file-io-access-performance)/H-0-1] MUST ensure a sequential
+write performance of at least 5 MB/s.
+* [[8.2](#8_2_file-io-access-performance)/H-0-2] MUST ensure a random write
+performance of at least 0.5 MB/s.
+* [[8.2](#8_2_file-io-access-performance)/H-0-3] MUST ensure a sequential read
+performance of at least 15 MB/s.
+* [[8.2](#8_2_file-io-access-performance)/H-0-4] MUST ensure a random read
+performance of at least 3.5 MB/s.
+* [[8.3](#8_3_power-saving-modes)/H-0-1] All Apps exempted from App Standby
+and Doze power-saving modes MUST be made visible to the end user.
+* [[8.3](#8_3_power-saving-modes)/H-0-2] The triggering, maintenance, wakeup
+algorithms and the use of global system settings of App Standby and Doze
+power-saving modes MUST not deviate from the Android Open Source Project.
Handheld device implementations:
-* [H-0-1] MUST provide a per-component power profile that defines the
-[current consumption value](
+* [[8.4](#8_4_power-consumption-accounting)/H-0-1] MUST provide a
+per-component power profile that defines the [current consumption value](
http://source.android.com/devices/tech/power/values.html)
for each hardware component and the approximate battery drain caused by the
components over time as documented in the Android Open Source Project site.
-* [H-0-2] MUST report all power consumption values in milliampere
-hours (mAh).
-* [H-0-3] MUST report CPU power consumption per each process's UID.
-The Android Open Source Project meets the requirement through the
-`uid_cputime` kernel module implementation.
-* [H-0-4] MUST make this power usage available via the
-[`adb shell dumpsys batterystats`](
+* [[8.4](#8_4_power-consumption-accounting)/H-0-2] MUST report all power
+consumption values in milliampere hours (mAh).
+* [[8.4](#8_4_power-consumption-accounting)/H-0-3] MUST report CPU power
+consumption per each process's UID. The Android Open Source Project meets the
+requirement through the `uid_cputime` kernel module implementation.
+* [[8.4](#8_4_power-consumption-accounting)/H-0-4] MUST make this power usage
+available via the [`adb shell dumpsys batterystats`](
http://source.android.com/devices/tech/power/batterystats.html)
shell command to the app developer.
-* SHOULD be attributed to the hardware component itself if unable to
-attribute hardware component power usage to an application.
+* [[8.4](#8_4_power-consumption-accounting)/H] SHOULD be attributed to the
+hardware component itself if unable to attribute hardware component power usage
+to an application.
If Handheld device implementations include a screen or video output, they:
-* [H-1-1] MUST honor the [`android.intent.action.POWER_USAGE_SUMMARY`](
+* [[8.4](#8_4_power-consumption-accounting)/H-1-1] MUST honor the
+[`android.intent.action.POWER_USAGE_SUMMARY`](
http://developer.android.com/reference/android/content/Intent.html#ACTION_POWER_USAGE_SUMMARY)
intent and display a settings menu that shows this power usage.
### 2.2.5\. Security Model
-**Permissions (Sections 9.1)**
-
Handheld device implementations:
-* [H-0-1] MUST allow third-party apps to access the usage statistics via the
- `android.permission.PACKAGE_USAGE_STATS` permission and provide a
- user-accessible mechanism to grant or revoke access to such apps in response
- to the [`android.settings.ACTION_USAGE_ACCESS_SETTINGS`](
- https://developer.android.com/reference/android/provider/Settings.html#ACTION_USAGE_ACCESS_SETTINGS)
- intent.
+* [[9.1](#9_1_permissions)/H-0-1] MUST allow third-party apps to access the
+usage statistics via the `android.permission.PACKAGE_USAGE_STATS` permission and
+provide a user-accessible mechanism to grant or revoke access to such apps in
+response to the [`android.settings.ACTION_USAGE_ACCESS_SETTINGS`](
+https://developer.android.com/reference/android/provider/Settings.html#ACTION_USAGE_ACCESS_SETTINGS)
+intent.
+
diff --git a/2_device-types/2_3_television-reqs.md b/2_device-types/2_3_television-reqs.md
index 9cc44cd..ddb7a9e 100644
--- a/2_device-types/2_3_television-reqs.md
+++ b/2_device-types/2_3_television-reqs.md
@@ -19,68 +19,52 @@
### 2.3.1\. Hardware
-**Non-touch Navigation (Section 7.2.2)**
-
Television device implementations:
-* [T-0-1] MUST support [D-pad](https://developer.android.com/reference/android/content/res/Configuration.html#NAVIGATION_DPAD).
-
-**Navigation Keys (Section 7.2.3)**
-
-Television device implementations:
-
-* [T-0-1] MUST provide the Home and Back functions.
-* [T-0-2] MUST send both the normal and long press event of the Back
- function
- ([`KEYCODE_BACK`](http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK))
- to the foreground application.
-
-**Button Mappings (Section 7.2.6.1)**
-
-Television device implementations:
-
-* [T-0-1] MUST include support for game controllers and declare the
-`android.hardware.gamepad` feature flag.
-
-**Remote Control (Section 7.2.7)**
-
-Television device implementations:
-
-* SHOULD provide a remote control from which users can access
-[non-touch navigation](#7_2_2_non-touch_navigation) and
+* [[7.2](#7_2_input-devices).2/T-0-1] MUST support [D-pad](
+https://developer.android.com/reference/android/content/res/Configuration.html#NAVIGATION_DPAD).
+* [[7.2](#7_2_input-devices).3/T-0-1] MUST provide the Home and Back
+functions.
+* [[7.2](#7_2_input-devices).3/T-0-2] MUST send both the normal and long press
+event of the Back function ([`KEYCODE_BACK`](
+http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK))
+to the foreground application.
+* [[7.2](#7_2_input-devices).6.1/T-0-1] MUST include support for game
+controllers and declare the `android.hardware.gamepad` feature flag.
+* [[7.2](#7_2_input-devices).7/T] SHOULD provide a remote control from which
+users can access [non-touch navigation](#7_2_2_non-touch_navigation) and
[core navigation keys](#7_2_3_navigation_keys) inputs.
-**Gyroscope (Section 7.3.4)**
If Television device implementations include a gyroscope, they:
-* [T-1-1] MUST be able to report events up to a frequency of at least 100 Hz.
+* [[7.3](#7_3_sensors).4/T-1-1] MUST be able to report events up to a
+frequency of at least 100 Hz.
-**Bluetooth (Section 7.4.3)**
Television device implementations:
-* [T-0-1] MUST support Bluetooth and Bluetooth LE.
-
-**Minimum Memory and Storage (Section 7.6.1)**
-
-Television device implementations:
-
-* [T-0-1] MUST have at least 4GB of non-volatile storage available for
- application private data (a.k.a. "/data" partition)
+* [[7.4](#7_4_data-connectivity).3/T-0-1] MUST support Bluetooth and
+Bluetooth LE.
+* [[7.6](#7_6_memory-and-storage).1/T-0-1] MUST have at least 4GB of
+non-volatile storage available for application private data
+(a.k.a. "/data" partition).
If TV device implementations are 32-bit:
-* [T-1-1] The memory available to the kernel and userspace MUST be at least
-896MB if any of the following densities are used:
+* [[7.6](#7_6_memory-and-storage).1/T-1-1] The memory available to the kernel
+and userspace MUST be at least 896MB if any of the following densities are used:
+
* 400dpi or higher on small/normal screens
* xhdpi or higher on large screens
* tvdpi or higher on extra large screens
If TV device implementations are 64-bit:
-* [T-2-1] The memory available to the kernel and userspace MUST be at least
-1280MB if any of the following densities are used:
+* [[7.6](#7_6_memory-and-storage).1/T-2-1] The memory available to the kernel
+and userspace MUST be at least 1280MB if any of the following densities are
+used:
+
* 400dpi or higher on small/normal screens
* xhdpi or higher on large screens
* tvdpi or higher on extra large screens
@@ -90,132 +74,113 @@
dedicated to hardware components such as radio, video, and so on that are not
under the kernel’s control on device implementations.
-**Microphone (Section 7.8.1)**
-
Television device implementations:
-* SHOULD include a microphone.
-
-**Audio Output (Section 7.8.2)**
-
-Television device implementations:
-
-* [T-0-1] MUST have an audio output and declare
+* [[7.8](#7_8_audio).1/T] SHOULD include a microphone.
+* [[7.8](#7_8_audio).2/T-0-1] MUST have an audio output and declare
`android.hardware.audio.output`.
### 2.3.2\. Multimedia
-**Audio Encoding (Section 5.1)**
-
Television device implementations MUST support the following audio encoding:
-* [T-0-1] MPEG-4 AAC Profile (AAC LC)
-* [T-0-2] MPEG-4 HE AAC Profile (AAC+)
-* [T-0-3] AAC ELD (enhanced low delay AAC)
+* [[5.1](#5_1_media-codecs)/T-0-1] MPEG-4 AAC Profile (AAC LC)
+* [[5.1](#5_1_media-codecs)/T-0-2] MPEG-4 HE AAC Profile (AAC+)
+* [[5.1](#5_1_media-codecs)/T-0-3] AAC ELD (enhanced low delay AAC)
-**Video Encoding (Section 5.2)**
-
Television device implementations MUST support the following video encoding:
-* [T-0-1] H.264 AVC
-* [T-0-2] VP8
+* [[5.2](#5_2_video-encoding)/T-0-1] H.264 AVC
+* [[5.2](#5_2_video-encoding)/T-0-2] VP8
-**H-264 (Section 5.2.2)**
+Television device implementations:
-Television device implementations are:
-
-* [T-SR] STRONGLY RECOMMENDED to support H.264 encoding of 720p and 1080p
-resolution videos.
-* [T-SR] STRONGLY RECOMMENDED to support H.264 encoding of 1080p resolution
-video at 30 frame-per-second (fps).
-
-**Video Decoding (Section 5.3)**
+* [[5.2](#5_2_video-encoding).2/T-SR] Are STRONGLY RECOMMENDED to support
+H.264 encoding of 720p and 1080p resolution videos.
+* [[5.2](#5_2_video-encoding)2/T-SR] Are STRONGLY RECOMMENDED to support H.264
+encoding of 1080p resolution video at 30 frame-per-second (fps).
Television device implementations MUST support the following video decoding:
-* [T-0-1] H.264 AVC
-* [T-0-2] H.265 HEVC
-* [T-0-3] MPEG-4 SP
-* [T-0-4] VP8
-* [T-0-5] VP9
+* [[5.3](#5_3_video-decoding)/T-0-1] H.264 AVC
+* [[5.3](#5_3_video-decoding)/T-0-2] H.265 HEVC
+* [[5.3](#5_3_video-decoding)/T-0-3] MPEG-4 SP
+* [[5.3](#5_3_video-decoding)/T-0-4] VP8
+* [[5.3](#5_3_video-decoding)/T-0-5] VP9
Television device implementations are STRONGLY RECOMMENDED to support the
following video decoding:
-* [T-SR] MPEG-2
+* [[5.3](#5_3_video-decoding)/T-SR] MPEG-2
-**H.264 (Section 5.3.4)**
If Television device implementations support H.264 decoders, they:
-* [T-1-1] MUST support High Profile Level 4.2 and the HD 1080p (at 60 fps)
-decoding profile.
-* [T-1-2] 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
-
-**H.265 (HEVC) (Section 5.3.5)**
+* [[5.3](#5_3_video-decoding).4/T-1-1] MUST support High Profile Level 4.2 and
+the HD 1080p (at 60 fps) decoding profile.
+* [[5.3](#5_3_video-decoding).4/T-1-2] 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
If Television device implementations support H.265 codec and the HD 1080p
decoding profile, they:
-* [T-1-1] MUST support the Main Profile Level 4.1 Main tier.
-* [T-SR] Are STRONGLY RECOMMENDED to support 60 fps video frame rate
-for HD 1080p.
+* [[5.3](#5_3_video-decoding).5/T-1-1] MUST support the Main Profile Level 4.1
+Main tier.
+* [[5.3](#5_3_video-decoding).5/T-SR] Are STRONGLY RECOMMENDED to support 60
+fps video frame rate for HD 1080p.
If Television device implementations support H.265 codec and the UHD decoding
profile, then:
-* [T-2-1] The codec MUST support Main10 Level 5 Main Tier profile.
-
-**VP8 (Section 5.3.6)**
+* [[5.3](#5_3_video-decoding).5/T-2-1] The codec MUST support Main10 Level 5
+Main Tier profile.
If Television device implementations support VP8 codec, they:
-* [T-1-1] MUST support the HD 1080p60 decoding profile.
+* [[5.3](#5_3_video-decoding).6/T-1-1] MUST support the HD 1080p60 decoding
+profile.
If Television device implementations support VP8 codec and support 720p, they:
-* [T-2-1] MUST support the HD 720p60 decoding profile.
+* [[5.3](#5_3_video-decoding).6/T-2-1] MUST support the HD 720p60 decoding
+profile.
-**VP9 (Section 5.3.7)**
-
If Television device implementations support VP9 codec and the UHD video
decoding, they:
-* [T-1-1] MUST support 8-bit color depth and SHOULD support VP9 Profile 2
+* [[5.3](#5_3_video-decoding).7/T-1-1] MUST support 8-bit color depth and
+SHOULD support VP9 Profile 2
(10-bit).
If Television device implementations support VP9 codec, the 1080p profile and
VP9 hardware decoding, they:
-* [T-2-1] MUST support 60 fps for 1080p.
+* [[5.3](#5_3_video-decoding).7/T-2-1] MUST support 60 fps for 1080p.
-**Secure Media (Section 5.8)**
+Television device implementations:
+
+* [[5.8](#5_8_secure-media)/T-SR] Are STRONGLY RECOMMENDED to support
+simultaneous decoding of secure streams. At minimum, simultaneous decoding of
+two steams is STRONGLY RECOMMENDED.
If device implementations are Android Television devices and support 4K
resolution, they:
-* [T-1-1] MUST support HDCP 2.2 for all wired external displays.
+* [[5.8](#5_8_secure-media)/T-1-1] MUST support HDCP 2.2 for all wired
+external displays.
If Television device implementations don't support 4K resolution, they:
-* [T-2-1] MUST support HDCP 1.4 for all wired external displays.
+* [[5.8](#5_8_secure-media)/T-2-1] MUST support HDCP 1.4 for all wired
+external displays.
Television device implementations:
-* [T-SR] Are STRONGLY RECOMMENDED to support simulataneous decoding of secure
- streams. At minimum, simultaneous decoding of two steams is STRONGLY
- RECOMMENDED.
-
-**Audio Output Volume (Section 5.5.3)**
-
-Television device implementations:
-
-* [T-0-1] MUST include support for system Master Volume and digital audio
-output volume attenuation on supported outputs,
+* [[5.5](#5_5_audio-playback).3/T-0-1] 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).
@@ -224,107 +189,82 @@
Television device implementations:
-* [T-0-1] MUST declare the features
- [`android.software.leanback`](http://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_LEANBACK)
- and `android.hardware.type.television`.
-
-**WebView compatibility (Section 3.4.1)**
-
-Television device implementations:
-
-* [T-0-1] MUST provide a complete implementation of the `android.webkit.Webview` API.
-
-
-**Lock Screen Media Control (Section 3.8.10)**
+* [[3](#3_0_intro)/T-0-1] MUST declare the features
+[`android.software.leanback`](
+http://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_LEANBACK)
+and `android.hardware.type.television`.
+* [[3.4](#3_4_web-compatibility).1/T-0-1] MUST provide a complete
+implementation of the `android.webkit.Webview` API.
If Android Television device implementations support a lock screen,they:
-* [T-1-1] MUST display the Lock screen Notifications including the Media Notification Template.
-
-**Multi-windows (Section 3.8.14)**
+* [[3.8](#3_8_user-interface-compatibility).10/T-1-1] MUST display the Lock
+screen Notifications including the Media Notification Template.
Television device implementations:
-* [T-SR] Are STRONGLY RECOMMENDED to support picture-in-picture (PIP) mode
- multi-window.
-
-**Accessibility (Section 3.10)**
-
-Television device implementations:
-
-* [T-0-1] MUST support third-party accessibility services.
-
-* [T-SR] Are STRONGLY RECOMMENDED to
+* [[3.8](#3_8_user-interface-compatibility).14/T-SR] Are STRONGLY RECOMMENDED
+to support picture-in-picture (PIP) mode multi-window.
+* [[3.10](#3_10_accessibility)/T-0-1] MUST support third-party accessibility
+services.
+* [[3.10](#3_10_accessibility)/T-SR] Are STRONGLY RECOMMENDED to
preload accessibility services on the device comparable with or exceeding
functionality of the Switch Access and TalkBack (for languages supported by
the preloaded Text-to-speech engine) accessibility services as provided in
the [talkback open source project](https://github.com/google/talkback).
-**Text-to-Speech (Section 3.11)**
-If device implementations report the feature android.hardware.audio.output,
-they:
+If Television device implementations report the feature
+`android.hardware.audio.output`, they:
-* [T-SR] Are STRONGLY RECOMMENDED to include a TTS engine supporting the
- languages available on the device.
+* [[3.11](#3_11_text-to-speech)/T-SR] Are STRONGLY RECOMMENDED to include a
+TTS engine supporting the languages available on the device.
+* [[3.11](#3_11_text-to-speech)/T-1-1] MUST support installation of
+third-party TTS engines.
-* [T-0-1] MUST support installation of third-party TTS engines.
-
-
-**TV Input Framework (Section 3.12)**
Television device implementations:
-* [T-0-1] MUST support TV Input Framework.
+* [[3.12](#3_12_tv-input-framework)/T-0-1] MUST support TV Input Framework.
### 2.2.4\. Performance and Power
+* [[8.1](#8_1_user-experience-consistency)/T-0-1] **Consistent frame latency**.
+ 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.
+* [[8.2](#8_2_file-io-access-performance)/T-0-1] MUST ensure a sequential
+ write performance of at least 5MB/s.
+* [[8.2](#8_2_file-io-access-performance)/T-0-2] MUST ensure a random write
+ performance of at least 0.5MB/s.
+* [[8.2](#8_2_file-io-access-performance)/T-0-3] MUST ensure a sequential
+ read performance of at least 15MB/s.
+* [[8.2](#8_2_file-io-access-performance)/T-0-4] MUST ensure a random read
+ performance of at least 3.5MB/s.
-**User Experience Consistency (Section 8.1)**
-For Television device implementations:
-
- * [T-0-1] **Consistent frame latency**. 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.
-
-**File I/O Access Performance (Section 8.2)**
+* [[8.3](#8_3_power-saving-modes)/T-0-1] All apps exempted from App Standby
+and Doze power-saving modes MUST be made visible to the end user.
+* [[8.3](#8_3_power-saving-modes)/T-0-2] The triggering, maintenance, wakeup
+algorithms and use of global system settings of App Standby and Doze
+power-saving modes MUST not deviate from the Android Open Source Project.
Television device implementations:
- * [T-0-1] MUST ensure a sequential write performance of at least 5MB/s.
- * [T-0-2] MUST ensure a random write performance of at least 0.5MB/s.
- * [T-0-3] MUST ensure a sequential read performance of at least 15MB/s.
- * [T-0-4] MUST ensure a random read performance of at least 3.5MB/s.
-
-**Power-Saving Modes (Section 8.3)**
-
-For Television device implementations:
-
-* [T-0-1] All Apps exempted from App Standby and Doze power-saving modes
-MUST be made visible to the end user.
-* [T-0-2] The triggering, maintenance, wakeup algorithms and the use of
-global system settings of App Standby and Doze power-saving modes MUST not
-deviate from the Android Open Source Project.
-
-**Power Consumption Accounting (Sections 8.4)**
-
-Television device implementations:
-
-* [T-0-1] MUST provide a per-component power profile that defines the
-[current consumption value](
+* [[8.4](#8_4_power-consumption-accounting)/T-0-1] MUST provide a
+per-component power profile that defines the [current consumption value](
http://source.android.com/devices/tech/power/values.html)
for each hardware component and the approximate battery drain caused by the
components over time as documented in the Android Open Source Project site.
-* [T-0-2] MUST report all power consumption values in milliampere
-hours (mAh).
-* [T-0-3] MUST report CPU power consumption per each process's UID.
-The Android Open Source Project meets the requirement through the
-`uid_cputime` kernel module implementation.
-* SHOULD be attributed to the hardware component itself if unable to
-attribute hardware component power usage to an application.
-* [T-0-4] MUST make this power usage available via the
-[`adb shell dumpsys batterystats`](
+* [[8.4](#8_4_power-consumption-accounting)/T-0-2] MUST report all power
+consumption values in milliampere hours (mAh).
+* [[8.4](#8_4_power-consumption-accounting)/T-0-3] MUST report CPU power
+consumption per each process's UID. The Android Open Source Project meets the
+requirement through the `uid_cputime` kernel module implementation.
+* [[8.4](#8_4_power-consumption-accounting)/T] SHOULD be attributed to the
+hardware component itself if unable to attribute hardware component power usage
+to an application.
+* [[8.4](#8_4_power-consumption-accounting)/T-0-4] MUST make this power usage
+available via the [`adb shell dumpsys batterystats`](
http://source.android.com/devices/tech/power/batterystats.html)
shell command to the app developer.
\ No newline at end of file
diff --git a/2_device-types/2_4_watch-reqs.md b/2_device-types/2_4_watch-reqs.md
index 35b5610..8c9b588 100644
--- a/2_device-types/2_4_watch-reqs.md
+++ b/2_device-types/2_4_watch-reqs.md
@@ -15,59 +15,29 @@
### 2.4.1\. Hardware
-**Screen Size (Section 7.1.1.1)**
-
Watch device implementations:
-* [W-0-1] MUST have a screen with the physical diagonal size in the range from
- 1.1 to 2.5 inches.
+* [[7.1](#7_1_display-and-graphics).1.1/W-0-1] MUST have a screen with the
+physical diagonal size in the range from 1.1 to 2.5 inches.
-**Navigation Keys (Section 7.2.3)**
+* [[7.2](#7_2_input-devices).3/W-0-1] MUST have the Home function available
+to the user, and the Back function except for when it is in `UI_MODE_TYPE_WATCH`.
-Watch device implementations:
+* [[7.2](#7_2_input-devices).4/W-0-1] MUST support touchscreen input.
-* [W-0-1] MUST have the Home function available to the user, and the Back
- function except for when it is in `UI_MODE_TYPE_WATCH`.
+* [[7.3](#7_3_sensors).1/W-SR] Are STRONGLY RECOMMENDED to include a 3-axis
+accelerometer.
-**Touchscreen Input (Section 7.2.4)**
+* [[7.4](#7_4_data-connectivity).3/W-0-1] MUST support Bluetooth.
-Watch device implementations:
+* [[7.6](#7_6_memory-and-storage).1/W-0-1] MUST have at least 1GB of
+non-volatile storage available for application private data (a.k.a. "/data" partition)
+* [[7.6](#7_6_memory-and-storage).1/W-0-2] MUST have at least 416MB memory
+available to the kernel and userspace.
-* [W-0-1] MUST support touchscreen input.
+* [[7.8](#7_8_audio).1/W-0-1] MUST include a microphone.
-**Accelerometer (Section 7.3.1)**
-
-Watch device implementations:
-
-* [W-SR] Are STRONGLY RECOMMENDED to include a 3-axis accelerometer.
-
-**Bluetooth (Section 7.4.3)**
-
-Watch device implementations:
-
-* [W-0-1] MUST support Bluetooth.
-
-
-**Minimum Memory and Storage (Section 7.6.1)**
-
-Watch device implementations:
-
-* [W-0-1] MUST have at least 1GB of non-volatile storage available for
- application private data (a.k.a. "/data" partition)
-* [W-0-2] MUST have at least 416MB memory available to the kernel and
- userspace.
-
-**Microphone (Section 7.8.1)**
-
-Watch device implementations:
-
-* [W-0-1] MUST include a microphone.
-
-**Audio Output (Section 7.8.1)**
-
-Watch device implementations:
-
-* MAY but SHOULD NOT have audio output.
+* [[7.8](#7_8_audio).2/W] MAY but SHOULD NOT have audio output.
### 2.4.2\. Multimedia
@@ -77,37 +47,34 @@
Android Watch device implementations:
-* [W-0-1] MUST declare the feature android.hardware.type.watch.
-* [W-0-2] MUST support uiMode =
- [UI_MODE_TYPE_WATCH](http://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_WATCH).
+* [[3](#3_0_intro)/W-0-1] MUST declare the feature
+`android.hardware.type.watch`.
+* [[3](#3_0_intro)/W-0-2] MUST support uiMode =
+ [UI_MODE_TYPE_WATCH](
+ http://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_WATCH).
+Watch device implementations:
-**Search (Section 3.8.4)**
+* [[3.8](#3_8_user-interface-compatibility).4/W-SR] Are STRONGLY RECOMMENDED
+to implement an assistant on the device to handle the [Assist action](
+http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST).
-* [W-SR] Watch device implementations are STRONGLY RECOMMENDED to implement
- an assistant on the device to handle the [Assist action](
- http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST).
+Watch device implementations that declare the `android.hardware.audio.output`
+feature flag:
-
-**Accessibility (Section 3.10)**
-
-* [W-1-1] Android Watch device implementations that declare the
- `android.hardware.audio.output` feature flag MUST support third-party
- accessibility services.
-
-* [W-SR] Android Watch device implementations that declare `android.hardware.
- audio.output` are STRONGLY RECOMMENDED to preload accessibility services on
- the device comparable with or exceeding functionality of the Switch Access
- and TalkBack (for languages supported by the preloaded Text-to-speech
- engine) accessibility services as provided in the [talkback open source
- project]( https://github.com/google/talkback).
-
-**Text-to-Speech (Section 3.11)**
+* [[3.10](#3_10_accessibility)/W-1-1] MUST support third-party accessibility
+services.
+* [[3.10](#3_10_accessibility)/W-SR] Are STRONGLY RECOMMENDED to preload
+accessibility services on the device comparable with or exceeding functionality
+of the Switch Access and TalkBack (for languages supported by the preloaded
+Text-to-speech engine) accessibility services as provided in the
+[talkback open source project]( https://github.com/google/talkback).
If device implementations report the feature android.hardware.audio.output,
they:
-* [W-SR] STRONGLY RECOMMENDED to include a TTS engine supporting the
- languages available on the device.
+* [[3.11](#3_11_text-to-speech)/W-SR] Are STRONGLY RECOMMENDED to include a
+TTS engine supporting the languages available on the device.
-* [W-0-1] MUST support installation of third-party TTS engines.
+* [[3.11](#3_11_text-to-speech)/W-0-1] MUST support installation of
+third-party TTS engines.
diff --git a/2_device-types/2_5_automotive-reqs.md b/2_device-types/2_5_automotive-reqs.md
index 2c2de18..d529946 100644
--- a/2_device-types/2_5_automotive-reqs.md
+++ b/2_device-types/2_5_automotive-reqs.md
@@ -16,160 +16,135 @@
### 2.5.1\. Hardware
-**Screen Size (Section 7.1.1.1)**
-
Automotive device implementations:
-* [A-0-1] MUST have a screen at least 6 inches in physical diagonal size.
-* [A-0-2] MUST have a screen size layout of at least 750 dp x 480 dp.
+* [[7.1](#7_1_display-and-graphics).1.1/A-0-1] MUST have a screen at least 6
+inches in physical diagonal size.
+* [[7.1](#7_1_display-and-graphics).1.1/A-0-2] MUST have a screen size layout
+of at least 750 dp x 480 dp.
-**Navigation Keys (Section 7.2.3)**
+* [[7.2](#7_2_input-devices).3/A-0-1] MUST provide the Home function and MAY
+provide Back and Recent functions.
+* [[7.2](#7_2_input-devices).3/A-0-2] MUST send both the normal and long press
+event of the Back function ([`KEYCODE_BACK`](
+http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK))
+to the foreground application.
-Automotive device implementations:
-
-* [A-0-1] MUST provide the Home function and MAY provide Back and Recent
- functions.
-* [A-0-2] MUST send both the normal and long press event of the Back
- function
- ([`KEYCODE_BACK`](http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK))
- to the foreground application.
-
-**Accelerometer (Section 7.3.1)**
-
-Automotive device implementations:
-
-* [A-SR] Are STRONGLY RECOMMENDED to include a 3-axis accelerometer.
+* [[7.3](#7_3_sensors).1/A-SR] Are STRONGLY RECOMMENDED to include a 3-axis
+accelerometer.
If Automotive device implementations include a 3-axis accelerometer, they:
-* [A-1-1] MUST be able to report events up to a frequency of at least 100 Hz.
-* [A-1-2] MUST comply with the Android
- [car sensor coordinate system](
- http://source.android.com/devices/sensors/sensor-types.html#auto_axes).
-
-**GPS (Section 7.3.3)**
+* [[7.3](#7_3_sensors).1/A-1-1] MUST be able to report events up to a
+frequency of at least 100 Hz.
+* [[7.3](#7_3_sensors).1/A-1-2] MUST comply with the Android
+[car sensor coordinate system](
+http://source.android.com/devices/sensors/sensor-types.html#auto_axes).
If Automotive device implementations include a GPS/GNSS receiver and report
the capability to applications through the `android.hardware.location.gps`
feature flag:
-* [A-1-1] GNSS technology generation MUST be the year "2017" or newer.
-
-**Gyroscope (Section 7.3.4)**
+* [[7.3](#7_3_sensors).3/A-1-1] GNSS technology generation MUST be the year
+"2017" or newer.
If Automotive device implementations include a gyroscope, they:
-* [A-1-1] MUST be able to report events up to a frequency of at least 100 Hz.
-
-**Android Automotive-only sensors (Section 7.3.11)**
-**Current Gear (Section 7.3.11.1)**
+* [[7.3](#7_3_sensors).4/A-1-1] MUST be able to report events up to a
+frequency of at least 100 Hz.
Automotive device implementations:
-* SHOULD provide current gear as `SENSOR_TYPE_GEAR`.
-
-**Day Night Mode (Section 7.3.11.2)**
+* [[7.3](#7_3_sensors).11/A] SHOULD provide current gear as
+`SENSOR_TYPE_GEAR`.
Automotive device implementations:
-* [A-0-1] MUST support day/night mode defined as `SENSOR_TYPE_NIGHT`.
-* [A-0-2] The value of the `SENSOR_TYPE_NIGHT` flag MUST be consistent with
- dashboard day/night mode and SHOULD be based on ambient light sensor input.
+* [[7.3](#7_3_sensors).11.2/A-0-1] MUST support day/night mode defined as
+`SENSOR_TYPE_NIGHT`.
+* [[7.3](#7_3_sensors).11.2/A-0-2] The value of the `SENSOR_TYPE_NIGHT` 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
[Photometer](#7_3_7_photometer).
-**Driving Status (Section 7.3.11.3)**
-
-Automotive device implementations:
-
-* [A-0-1] MUST support driving status defined as
+* [[7.3](#7_3_sensors).11.3/A-0-1] 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.
-**Wheel Speed (Section 7.3.11.4)**
+* [[7.3](#7_3_sensors).11.4/A-0-1] MUST provide vehicle speed defined as
+`SENSOR_TYPE_CAR_SPEED`.
-Automotive device implementations:
-
-* [A-0-1] MUST provide vehicle speed defined as `SENSOR_TYPE_CAR_SPEED`.
-
-**Bluetooth (Section 7.4.3)**
-
-Automotive device implementations:
-
-* [A-0-1] MUST support Bluetooth and SHOULD support Bluetooth LE.
-
-* [A-0-2] Android Automotive implementations MUST support the following
- Bluetooth profiles:
+* [[7.4](#7_4_data-connectivity).3/A-0-1] MUST support Bluetooth and SHOULD
+support Bluetooth LE.
+* [[7.4](#7_4_data-connectivity).3/A-0-2] Android Automotive implementations
+MUST support the following Bluetooth profiles:
* Phone calling over Hands-Free Profile (HFP).
* Media playback over Audio Distribution Profile (A2DP).
* Media playback control over Remote Control Profile (AVRCP).
* Contact sharing using the Phone Book Access Profile (PBAP).
-* SHOULD support Message Access Profile (MAP).
+* [[7.4](#7_4_data-connectivity).3/A] SHOULD support Message Access Profile
+(MAP).
-**Minimum Network Capability (Section 7.4.5)**
+* [[7.4](#7_4_data-connectivity).5/A] SHOULD include support for cellular
+network based data connectivity.
-Automotive device implementations:
-
-* SHOULD include support for cellular network based data connectivity.
-
-**Minimum Memory and Storage (Section 7.6.1)**
-
-Automotive device implementations:
-
-* [A-0-1] MUST have at least 4GB of non-volatile storage available for
- application private data (a.k.a. "/data" partition)
+* [[7.6](#7_6_memory-and-storage).1/A-0-1] MUST have at least 4GB of
+non-volatile storage available for application private data
+(a.k.a. "/data" partition).
If Automotive device implementations are 32-bit:
-* [A-1-1] The memory available to the kernel and userspace MUST
-be at least 512MB if any of the following densities are used:
+* [[7.6](#7_6_memory-and-storage).1/A-1-1] The memory available to the kernel
+and userspace MUST be at least 512MB if any of the following densities are used:
* 280dpi or lower on small/normal screens
* ldpi or lower on extra large screens
* mdpi or lower on large screens
-* [A-1-2] The memory available to the kernel and userspace MUST
-be at least 608MB if any of the following densities are used:
+* [[7.6](#7_6_memory-and-storage).1/A-1-2] The memory available to the kernel
+and userspace MUST be at least 608MB if any of the following densities are used:
* xhdpi or higher on small/normal screens
* hdpi or higher on large screens
* mdpi or higher on extra large screens
-* [A-1-3] The memory available to the kernel and userspace MUST
-be at least 896MB if any of the following densities are used:
+* [[7.6](#7_6_memory-and-storage).1/A-1-3] The memory available to the kernel
+and userspace MUST be at least 896MB if any of the following densities are used:
* 400dpi or higher on small/normal screens
* xhdpi or higher on large screens
* tvdpi or higher on extra large screens
-* [A-1-4] The memory available to the kernel and userspace MUST
-be at least 1344MB if any of the following densities are used:
+* [[7.6](#7_6_memory-and-storage).1/A-1-4] The memory available to the kernel
+and userspace MUST be at least 1344MB if any of the following densities are
+used:
* 560dpi or higher on small/normal screens
* 400dpi or higher on large screens
* xhdpi or higher on extra large screens
-If Handheld device implementations are 64-bit:
+If Automotive device implementations are 64-bit:
-* [H-2-1] The memory available to the kernel and userspace MUST
-be at least 816MB if any of the following densities are used:
+* [[7.6](#7_6_memory-and-storage).1/A-2-1] The memory available to the kernel
+and userspace MUST be at least 816MB if any of the following densities are used:
* 280dpi or lower on small/normal screens
* ldpi or lower on extra large screens
* mdpi or lower on large screens
-* [H-2-2] The memory available to the kernel and userspace MUST
-be at least 944MB if any of the following densities are used:
+* [[7.6](#7_6_memory-and-storage).1/A-2-2] The memory available to the kernel
+and userspace MUST be at least 944MB if any of the following densities are used:
* xhdpi or higher on small/normal screens
* hdpi or higher on large screens
* mdpi or higher on extra large screens
-* [H-2-3] The memory available to the kernel and userspace MUST
-be at least 1280MB if any of the following densities are used:
+* [[7.6](#7_6_memory-and-storage).1/A-2-3] The memory available to the kernel
+and userspace MUST be at least 1280MB if any of the following densities are used:
* 400dpi or higher on small/normal screens
* xhdpi or higher on large screens
* tvdpi or higher on extra large screens
-* [H-2-4] The memory available to the kernel and userspace MUST
-be at least 1824MB if any of the following densities are used:
+* [[7.6](#7_6_memory-and-storage).1/A-2-4] The memory available to the kernel
+and userspace MUST be at least 1824MB if any of the following densities are used:
* 560dpi or higher on small/normal screens
* 400dpi or higher on large screens
* xhdpi or higher on extra large screens
@@ -179,146 +154,115 @@
components such as radio, video, and so on that are not under the kernel’s
control on device implementations.
-**USB peripheral mode (Section 7.7.1)**
+Automotive device implementations:
+
+* [[7.7](#7_7_usb).1/A] SHOULD include a USB port supporting peripheral mode.
Automotive device implementations:
-* SHOULD include a USB port supporting peripheral mode.
-
-**Microphone (Section 7.8.1)**
+* [[7.8](#7_8_audio).1/A-0-1] MUST include a microphone.
Automotive device implementations:
-* [A-0-1] MUST include a microphone.
-
-**Audio Output (Section 7.8.2)**
-
-Automotive device implementations:
-
-* [A-0-1] MUST have an audio output and declare
+* [[7.8](#7_8_audio).2/A-0-1] MUST have an audio output and declare
`android.hardware.audio.output`.
### 2.5.2\. Multimedia
-**Audio Encoding (Section 5.1)**
-
Automotive device implementations MUST support the following audio encoding:
-* [A-0-1] MPEG-4 AAC Profile (AAC LC)
-* [A-0-2] MPEG-4 HE AAC Profile (AAC+)
-* [A-0-3] AAC ELD (enhanced low delay AAC)
-
-**Video Encoding (Section 5.2)**
+* [[5.1](#5_1_media-codecs)/A-0-1] MPEG-4 AAC Profile (AAC LC)
+* [[5.1](#5_1_media-codecs)/A-0-2] MPEG-4 HE AAC Profile (AAC+)
+* [[5.1](#5_1_media-codecs)/A-0-3] AAC ELD (enhanced low delay AAC)
Automotive device implementations MUST support the following video encoding:
-* [A-0-1] H.264 AVC
-* [A-0-2] VP8
-
-**Video Decoding (Section 5.3)**
+* [[5.2](#5_2_video-encoding)/A-0-1] H.264 AVC
+* [[5.2](#5_2_video-encoding)/A-0-2] VP8
Automotive device implementations MUST support the following video decoding:
-* [A-0-1] H.264 AVC
-* [A-0-2] MPEG-4 SP
-* [A-0-3] VP8
-* [A-0-4] VP9
+* [[5.3](#5_3_video-decoding)/A-0-1] H.264 AVC
+* [[5.3](#5_3_video-decoding)/A-0-2] MPEG-4 SP
+* [[5.3](#5_3_video-decoding)/A-0-3] VP8
+* [[5.3](#5_3_video-decoding)/A-0-4] VP9
Automotive device implementations are STRONGLY RECOMMENDED to support the
following video decoding:
-* [A-SR] H.265 HEVC
+* [[5.3](#5_3_video-decoding)/A-SR] H.265 HEVC
### 2.5.3\. Software
Automotive device implementations:
-* [A-0-1] MUST declare the feature android.hardware.type.automotive.
-* [A-0-2] MUST support uiMode =
- [UI_MODE_TYPE_CAR](http://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_CAR).
-* [A-0-3] Android Automotive implementations MUST support all public APIs in the
-`android.car.*` namespace.
+* [[3](#3_0_intro)/A-0-1] MUST declare the feature
+`android.hardware.type.automotive`.
+* [[3](#3_0_intro)/A-0-2] MUST support uiMode = [UI_MODE_TYPE_CAR](
+http://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_CAR).
+* [[3](#3_0_intro)/A-0-3] Android Automotive implementations MUST support all
+public APIs in the `android.car.*` namespace.
-**WebView Compatibility (Section 3.4.1)**
+* [[3.4](#3_4_web-compatibility).1/A-0-1] MUST provide a complete
+implementation of the `android.webkit.Webview` API.
-Automotive device implementations:
+* [[3.8](#3_8_user-interface-compatibility).3/A-0-1] MUST display
+notifications that use the [`Notification.CarExtender`](
+https://developer.android.com/reference/android/app/Notification.CarExtender.html)
+API when requested by third-party applications.
-* [A-0-1] MUST provide a complete implementation of the `android.webkit.Webview API`.
+* [[3.8](#3_8_user-interface-compatibility).4/A-0-1] MUST implement an
+assistant on the device to handle the [Assist action](
+http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST).
-**Notifications (Section 3.8.3)**
-
-Android Automotive device implementations:
-
-* [A-0-1] MUST display notifications that use the [`Notification.CarExtender`](
- https://developer.android.com/reference/android/app/Notification.CarExtender.html) API when
- requested by third-party applications.
-
-**Search (Section 3.8.4)**
-
-Automotive device implementations:
-
-* [A-0-1] MUST implement an assistant on the device to handle the
- [Assist action](
- http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST).
-
-
-**Media UI (Section 3.14)**
-
-Automotive device implementations:
-
-* [A-0-1] MUST include a UI framework to support third-party apps using the
- media APIs as described in section 3.14.
+* [[3.14](#3_14_media_ui)/A-0-1] MUST include a UI framework to support
+third-party apps using the media APIs as described in section 3.14.
### 2.2.4\. Performance and Power
-**Power-Saving Modes (Section 8.3)**
-
-For Automotive device implementations:
-
-* [A-0-1] All Apps exempted from App Standby and Doze power-saving modes
-MUST be made visible to the end user.
-* [A-0-2] The triggering, maintenance, wakeup algorithms and the use of
-global system settings of App Standby and Doze power-saving modes MUST not
-deviate from the Android Open Source Project.
-
-**Power Consumption Accounting (Sections 8.4)**
-
Automotive device implementations:
-* [A-0-1] MUST provide a per-component power profile that defines the
-[current consumption value](
+* [[8.3](#8_3_power-saving-modes)/A-0-1] All Apps exempted from App Standby
+and Doze power-saving modes MUST be made visible to the end user.
+* [[8.3](#8_3_power-saving-modes)/A-0-2] The triggering, maintenance, wakeup
+algorithms and the use of global system settings of App Standby and Doze
+power-saving modes MUST not deviate from the Android Open Source Project.
+
+
+* [[8.4](#8_4_power-consumption-accounting)/A-0-1] MUST provide a
+per-component power profile that defines the [current consumption value](
http://source.android.com/devices/tech/power/values.html)
for each hardware component and the approximate battery drain caused by the
components over time as documented in the Android Open Source Project site.
-* [A-0-2] MUST report all power consumption values in milliampere
-hours (mAh).
-* [A-0-3] MUST report CPU power consumption per each process's UID.
-The Android Open Source Project meets the requirement through the
-`uid_cputime` kernel module implementation.
-* SHOULD be attributed to the hardware component itself if unable to
-attribute hardware component power usage to an application.
-* [A-0-4] MUST make this power usage available via the
-[`adb shell dumpsys batterystats`](
+* [[8.4](#8_4_power-consumption-accounting)/A-0-2] MUST report all power
+consumption values in milliampere hours (mAh).
+* [[8.4](#8_4_power-consumption-accounting)/A-0-3] MUST report CPU power
+consumption per each process's UID. The Android Open Source Project meets the
+requirement through the `uid_cputime` kernel module implementation.
+* [[8.4](#8_4_power-consumption-accounting)/A] SHOULD be attributed to the
+hardware component itself if unable to attribute hardware component power usage
+to an application.
+* [[8.4](#8_4_power-consumption-accounting)/A-0-4] MUST make this power usage
+available via the [`adb shell dumpsys batterystats`](
http://source.android.com/devices/tech/power/batterystats.html)
shell command to the app developer.
### 2.2.5\. Security Model
-**Multi-User Support (Section 9.5)**
If Automotive device implementations include multiple users, they:
-* [A-1-1] MUST include a guest account that allows all functions provided
-by the vehicle system without requiring a user to log in.
-
-**Automotive Vehicle System Isolation (Section 9.14)**
+* [[9.5](#9_5_multi-user-support)/A-1-1] MUST include a guest account that
+allows all functions provided by the vehicle system without requiring a user to
+log in.
Automotive device implementations:
-* [A-0-1] MUST gatekeep messages from Android framework vehicle subsystems,
-e.g., whitelisting permitted message types and message sources.
-* [A-0-2] MUST 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.
\ No newline at end of file
+* [[9.14](#9_14_automotive-system-isolation)/A-0-1] MUST gatekeep messages
+from Android framework vehicle subsystems, e.g., whitelisting permitted message
+types and message sources.
+* [[9.14](#9_14_automotive-system-isolation)/A-0-2] MUST 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.
diff --git a/2_device-types/2_6_tablet-reqs.md b/2_device-types/2_6_tablet-reqs.md
new file mode 100644
index 0000000..b132ced
--- /dev/null
+++ b/2_device-types/2_6_tablet-reqs.md
@@ -0,0 +1,50 @@
+## 2.6\. Tablet Requirements
+
+An **Android Tablet device** refers to an Android device implementation that is
+typically used by holding in both hands and not in a clamshell form-factor.
+
+Android device implementations are classified as a Tablet if they meet all the
+following criteria:
+
+* Have a power source that provides mobility, such as a battery.
+* Have a physical diagonal screen size in the range of 7 to 18 inches.
+
+Tablet device implementations have similar requirements to handheld device
+implementations. The exceptions are in indicated by and \* in that section
+and noted for reference in this section.
+
+### 2.4.1\. Hardware
+
+**Screen Size**
+
+* [[7.1](#7_1_display-and-graphics).1.1/Tab-0-1] MUST have a screen in the range
+of 7 to 18 inches.
+
+**Minimum Memory and Storage (Section 7.6.1)**
+
+The screen densities listed for small/normal screens in the handheld
+requirements are not applicable to tablets.
+
+**USB peripheral mode (Section 7.7.1)**
+
+If tablet device implementations include a USB port supporting peripheral
+mode, they:
+
+* [[7.7.1](#7_7_usb)/Tab]MAY implement the Android Open Accessory (AOA) API.
+
+**Virtual Reality Mode (Section 7.9.1)**
+
+**Virtual Reality High Performance (Section 7.9.2)**
+
+Virtual reality requirements are not applicable to tablets.
+
+
+
+
+
+
+
+
+
+
+