resolve merge conflicts of 45bcfaf7a1b208ad21c8ba0c9cc8a75c6feeb6f6 to master
Test: I solemnly swear I tested this conflict resolution.
Change-Id: Ic969c832c2c6aa86e36ea9dcd155aa7f42a7e34d
diff --git a/2_device-types/2_1_device-configurations.md b/2_device-types/2_1_device-configurations.md
index 6b04ddd..883d049 100644
--- a/2_device-types/2_1_device-configurations.md
+++ b/2_device-types/2_1_device-configurations.md
@@ -1,4 +1,132 @@
## 2.1 Device Configurations
-For the major differences in hardware configuration by device
-type, see the device-specific requirements that follow in this section.
+This is a summary of major differences in hardware configuration by device
+type. (Empty cells denote a “MAY”). Not all configurations are covered in this
+table; see relevant hardware sections for more detail.
+
+<table>
+ <tr>
+ <th>Category</th>
+ <th>Feature</th>
+ <th>Section</th>
+ <th>Handheld</th>
+ <th>Television</th>
+ <th>Watch</th>
+ <th>Automotive</th>
+ <th>Other</th>
+ </tr>
+ <tr>
+ <td rowspan="3">Input</td>
+ <td>D-pad</td>
+ <td><a href="#7_2_2_non-touch-navigation">7.2.2. Non-touch Navigation</a></td>
+ <td></td>
+ <td>MUST</td>
+ <td></td>
+ <td></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>Touchscreen </td>
+ <td><a href="#7_2_4_touchscreen_input">7.2.4. Touchscreen input</a></td>
+ <td>MUST</td>
+ <td></td>
+ <td>MUST</td>
+ <td></td>
+ <td>SHOULD</td>
+ </tr>
+ <tr>
+ <td>Microphone </td>
+ <td><a href="#7_8_1_microphone">7.8.1. Microphone</a></td>
+ <td>MUST</td>
+ <td>SHOULD </td>
+ <td>MUST</td>
+ <td>MUST</td>
+ <td>SHOULD</td>
+ </tr>
+ <tr>
+ <td rowspan="2">Sensors</td>
+ <td>Accelerometer </td>
+ <td><a href="#7_3_1_accelerometer">7.3.1 Accelerometer</a></td>
+ <td>SHOULD</td>
+ <td></td>
+ <td>SHOULD</td>
+ <td></td>
+ <td>SHOULD</td>
+ </tr>
+ <tr>
+ <td>GPS</td>
+ <td><a href="#7_3_3_gps">7.3.3. GPS</a></td>
+ <td>SHOULD</td>
+ <td></td>
+ <td></td>
+ <td>SHOULD</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td rowspan="5">Connectivity</td>
+ <td>Wi-Fi</td>
+ <td><a href="#7_4_2_ieee_802.11">7.4.2. IEEE 802.11</a></td>
+ <td>SHOULD</td>
+ <td>SHOULD</td>
+ <td></td>
+ <td>SHOULD</td>
+ <td>SHOULD</td>
+ </tr>
+ <tr>
+ <td>Wi-Fi Direct</td>
+ <td><a href="#7_4_2_1_wi-fi-direct">7.4.2.1. Wi-Fi Direct</a></td>
+ <td>SHOULD</td>
+ <td>SHOULD</td>
+ <td></td>
+ <td></td>
+ <td>SHOULD</td>
+ </tr>
+ <tr>
+ <td>Bluetooth</td>
+ <td><a href="#7_4_3_bluetooth">7.4.3. Bluetooth</a></td>
+ <td>SHOULD</td>
+ <td>MUST</td>
+ <td>MUST</td>
+ <td>MUST</td>
+ <td>SHOULD</td>
+ </tr>
+ <tr>
+ <td>Bluetooth Low Energy</td>
+ <td><a href="#7_4_3_bluetooth">7.4.3. Bluetooth</a></td>
+ <td>SHOULD</td>
+ <td>MUST</td>
+ <td>SHOULD</td>
+ <td>SHOULD</td>
+ <td>SHOULD</td>
+ </tr>
+ <tr>
+ <td>Cellular radio</td>
+ <td><a href="#7_4_5_minimum_network_capability">
+ 7.4.5. Minimum Network Capability</a></td>
+ <td></td>
+ <td></td>
+ <td></td>
+ <td>SHOULD</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>USB</td>
+ <td>USB peripheral/host mode</td>
+ <td><a href="#7_7_usb">7.7. USB</a></td>
+ <td>SHOULD</td>
+ <td></td>
+ <td></td>
+ <td>SHOULD</td>
+ <td>SHOULD</td>
+ </tr>
+ <tr>
+ <td>Output</td>
+ <td>Speaker and/or Audio output ports</td>
+ <td><a href="#7_8_2_audio_output">7.8.2. Audio Output</a></td>
+ <td>MUST</td>
+ <td>MUST</td>
+ <td></td>
+ <td>MUST</td>
+ <td>MUST</td>
+ </tr>
+</table>
diff --git a/2_device-types/2_2_handheld-reqs.md b/2_device-types/2_2_handheld-reqs.md
index f747724..1aad3f2 100644
--- a/2_device-types/2_2_handheld-reqs.md
+++ b/2_device-types/2_2_handheld-reqs.md
@@ -452,4 +452,3 @@
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 2cdceab..9cc44cd 100644
--- a/2_device-types/2_3_television-reqs.md
+++ b/2_device-types/2_3_television-reqs.md
@@ -327,4 +327,4 @@
* [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.
+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 2200f03..35b5610 100644
--- a/2_device-types/2_4_watch-reqs.md
+++ b/2_device-types/2_4_watch-reqs.md
@@ -71,11 +71,11 @@
### 2.4.2\. Multimedia
-No additional requirements.
+To be added.
### 2.4.3\. Software
-Watch device implementations:
+Android Watch device implementations:
* [W-0-1] MUST declare the feature android.hardware.type.watch.
* [W-0-2] MUST support uiMode =
@@ -84,20 +84,19 @@
**Search (Section 3.8.4)**
-Watch device implementations:
-
-* [W-SR] Are STRONGLY RECOMMENDED to implement an assistant on the device to
- handle the [Assist action](
+* [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).
**Accessibility (Section 3.10)**
-Watch device implementations that declare the `android.hardware.audio.output` feature flag:
+* [W-1-1] Android Watch device implementations that declare the
+ `android.hardware.audio.output` feature flag MUST support third-party
+ accessibility services.
-* [W-1-1] MUST support third-party accessibility services.
-
-* [W-SR] Are STRONGLY RECOMMENDED to preload accessibility services on
+* [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
@@ -105,10 +104,10 @@
**Text-to-Speech (Section 3.11)**
-If Watch device implementations report the feature android.hardware.audio.output,
+If device implementations report the feature android.hardware.audio.output,
they:
-* [W-SR] Are STRONGLY RECOMMENDED to include a TTS engine supporting the
+* [W-SR] 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.
diff --git a/2_device-types/2_5_automotive-reqs.md b/2_device-types/2_5_automotive-reqs.md
index c267992..2c2de18 100644
--- a/2_device-types/2_5_automotive-reqs.md
+++ b/2_device-types/2_5_automotive-reqs.md
@@ -321,4 +321,4 @@
* [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.
+subsystems.
\ No newline at end of file
diff --git a/2_device-types/2_6_tablet-reqs.md b/2_device-types/2_6_tablet-reqs.md
deleted file mode 100644
index 387d53b..0000000
--- a/2_device-types/2_6_tablet-reqs.md
+++ /dev/null
@@ -1,45 +0,0 @@
-## 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 (Section 7.1.1.1)**
-
-Tablet device implementations:
-
-* [Ta-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 handheld device implementations include a USB port supporting peripheral
-mode, they:
-
-* 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.
-
-
-
-
-
diff --git a/3_software/3_12_tv-input-framework.md b/3_software/3_12_tv-input-framework.md
index 971e726..7fc167d 100644
--- a/3_software/3_12_tv-input-framework.md
+++ b/3_software/3_12_tv-input-framework.md
@@ -5,13 +5,15 @@
content to Android Television devices. TIF provides a standard API to create
input modules that control Android Television devices.
+* [T-0-1] Android Television device implementations MUST support TV Input
+Framework.
+
If device implementations support TIF, they:
* [C-1-1] MUST declare the platform feature `android.software.live_tv`.
* [C-1-2] MUST preload a TV application (TV App) and meet all requirements
described in [section 3.12.1](#3_12_tv-input-framework).
-
### 3.12.1\. TV App
If device implementations support TIF:
@@ -68,7 +70,7 @@
* Changing TV channels
* Opening EPG
- * Configuring and tuning to third-party TIF-based inputs
+ * Configuring and tuning to third-party TIF-based inputs (if those inputs are supported)
* Opening Settings menu
* SHOULD pass key events to HDMI inputs through CEC.
@@ -81,8 +83,8 @@
[TV input app linking](
http://developer.android.com/reference/android/media/tv/TvContract.Channels.html#COLUMN_APP_LINK_INTENT_URI),
which allows all inputs to provide activity links from the current activity to
-another activity (i.e. a link from live programming to related content).
-* [C-1-2] The TV App MUST show TV input app linking when it is provided.
+another activity (i.e. a link from live programming to related content). The TV
+App SHOULD show TV input app linking when it is provided.
#### 3.12.1.4\. Time shifting
diff --git a/3_software/3_2_soft-api-compatibility.md b/3_software/3_2_soft-api-compatibility.md
index 50c8fbe..fd0f1a2 100644
--- a/3_software/3_2_soft-api-compatibility.md
+++ b/3_software/3_2_soft-api-compatibility.md
@@ -252,15 +252,15 @@
components, or at least a handler, for all the public intent filter patterns
defined by the following core Android applications in AOSP:
- * Desk Clock
- * Browser
- * Calendar
- * Contacts
- * Gallery
- * GlobalSearch
- * Launcher
- * Music
- * Settings
+ * Desk Clock
+ * Browser
+ * Calendar
+ * Contacts
+ * Gallery
+ * GlobalSearch
+ * Launcher
+ * Music
+ * Settings
#### 3.2.3.2\. Intent Resolution
@@ -433,4 +433,4 @@
* [C-3-1] Only the owner of that display, system, and activities that are
already on that display MUST be able to launch to it. Everyone can launch to
a display that has [android.view.Display.FLAG_PUBLIC](https://developer.android.com/reference/android/view/Display.html#FLAG_PUBLIC)
- flag.
+ flag.
\ No newline at end of file
diff --git a/5_multimedia/5_1_media-codecs.md b/5_multimedia/5_1_media-codecs.md
index 3b61db4..1ad3158 100644
--- a/5_multimedia/5_1_media-codecs.md
+++ b/5_multimedia/5_1_media-codecs.md
@@ -4,6 +4,27 @@
See more details in [5.1.3. Audio Codecs Details](#5_1_3_audio_codecs_details).
+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)
+
+
+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)
+
+Automotive device implementations MUST support the following audio encoding:
+
+* [A-1-1] MPEG-4 AAC Profile (AAC LC)
+* [A-1-2] MPEG-4 HE AAC Profile (AAC+)
+* [A-1-3] AAC ELD (enhanced low delay AAC)
+
If device implementations declare `android.hardware.microphone`,
they MUST support the following audio encoding:
@@ -14,6 +35,10 @@
See more details in [5.1.3. Audio Codecs Details](#5_1_3_audio_codecs_details).
+Handheld device implementations MUST support the following decoding.
+
+* [H-0-1] AMR-NB
+* [H-0-2] AMR-WB
If device implementations declare support for the
`android.hardware.audio.output` feature, they must support the following audio
diff --git a/5_multimedia/5_2_video-encoding.md b/5_multimedia/5_2_video-encoding.md
index 3bc9d79..4f97c1e 100644
--- a/5_multimedia/5_2_video-encoding.md
+++ b/5_multimedia/5_2_video-encoding.md
@@ -1,5 +1,22 @@
## 5.2\. Video Encoding
+Handheld device implementations MUST support the following encoding and make it
+available to third-party applications.
+
+* [H-0-1] H.264 AVC
+* [H-0-2] VP8
+
+Television device implementations MUST support the following encoding.
+
+* [T-0-1] H.264 AVC
+* [T-0-2] VP8
+
+Automotive device implementations MUST support the following encoding:
+
+* [A-0-1] H.264 AVC
+* [A-0-2] VP8
+
+
If device implementations support any video encoder and make it available
to third-party apps, they:
@@ -43,6 +60,14 @@
### 5.2.2\. H-264
+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).
+
+
If device implementations support H.264 codec, they:
* [C-1-1] MUST support Baseline Profile Level 3.
diff --git a/5_multimedia/5_3_video-decoding.md b/5_multimedia/5_3_video-decoding.md
index 30adfe2..b376275 100644
--- a/5_multimedia/5_3_video-decoding.md
+++ b/5_multimedia/5_3_video-decoding.md
@@ -1,5 +1,32 @@
## 5.3\. Video Decoding
+Handheld device implementations:
+
+* [H-0-1] MUST support decoding of H.264 AVC.
+* [H-0-2] MUST support decoding of H.265 HEVC.
+* [H-0-3] MUST support decoding of MPEG-4 SP.
+* [H-0-4] MUST support decoding of VP8.
+* [H-0-5] MUST support decoding of VP9.
+
+Television device implementations:
+
+* [T-0-1] MUST support decoding of H.264 AVC.
+* [T-0-2] MUST support decoding of H.265 HEVC.
+* [T-0-3] MUST support decoding of MPEG-4 SP.
+* [T-0-4] MUST support decoding of VP8.
+* [T-0-5] MUST support decoding of VP9.
+* [T-SR] Are Strongly Recommended to support MPEG-2 decoding.
+
+
+Automotive device implementations:
+
+* [A-0-1] MUST support decoding of H.264 AVC.
+* [A-0-2] MUST support decoding of MPEG-4 SP.
+* [A-0-3] MUST support decoding of VP8.
+* [A-0-4] MUST support decoding of VP9.
+* [A-SR] Are Strongly Recommended to support H.265 HEVC decoding.
+
+
If device implementations support VP8, VP9, H.264, or H.265 codecs, they:
* [C-1-1] MUST support dynamic video resolution and frame rate switching
@@ -56,6 +83,13 @@
* [C-2-2] MUST support the HD 1080p video decoding profiles in the following
table.
+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
<table>
<tr>
@@ -90,7 +124,6 @@
### 5.3.5\. H.265 (HEVC)
-
If device implementations support H.265 codec, they:
* [C-1-1] MUST support the Main Profile Level 3 Main tier and the SD video
@@ -105,6 +138,18 @@
* [C-2-1] Device implementations MUST support at least one of H.265 or VP9
decoding of 720, 1080 and UHD profiles.
+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] 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.
+
<table>
<tr>
<th></th>
@@ -159,6 +204,15 @@
* [C-2-2] Device implementations MUST support 1080p profiles in the
following table.
+If Television device implementations support VP8 codec, they:
+
+* [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.
+
+
<table>
<tr>
@@ -211,6 +265,17 @@
* [C-3-1] Device implementations MUST support at least one of VP9 or H.265
decoding of the 720, 1080 and UHD profiles.
+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
+(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.
+
<table>
<tr>
<th></th>
@@ -244,4 +309,4 @@
<td>5 Mbps</td>
<td>20 Mbps</td>
</tr>
-</table>
+</table>
\ No newline at end of file
diff --git a/5_multimedia/5_5_audio-playback.md b/5_multimedia/5_5_audio-playback.md
index b0e6d45..363197e 100644
--- a/5_multimedia/5_5_audio-playback.md
+++ b/5_multimedia/5_5_audio-playback.md
@@ -10,14 +10,14 @@
* [C-1-1] MUST allow playback of raw audio content with the following
characteristics:
- * **Format**: Linear PCM, 16-bit
- * **Sampling rates**: 8000, 11025, 16000, 22050, 32000, 44100
- * **Channels**: Mono, Stereo
+ * **Format**: Linear PCM, 16-bit
+ * **Sampling rates**: 8000, 11025, 16000, 22050, 32000, 44100
+ * **Channels**: Mono, Stereo
* SHOULD allow playback of raw audio content with the following
characteristics:
- * **Sampling rates**: 24000, 48000
+ * **Sampling rates**: 24000, 48000
### 5.5.2\. Audio Effects
@@ -40,6 +40,13 @@
### 5.5.3\. Audio Output Volume
+Television device implementations:
+
+* [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).
+
Automotive device implementations:
* SHOULD allow adjusting audio volume
diff --git a/5_multimedia/5_8_secure-media.md b/5_multimedia/5_8_secure-media.md
index e75a775..5df157e 100644
--- a/5_multimedia/5_8_secure-media.md
+++ b/5_multimedia/5_8_secure-media.md
@@ -17,3 +17,15 @@
* [C-3-1] MUST support HDCP 1.2 or higher for all wired external displays.
+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.
+
+If Television device implementations don't support 4K resolution, they:
+
+* [T-2-1] MUST support HDCP 1.4 for all wired external displays.
+
+* [T-SR] Television device implementations are STRONGLY RECOMMENDED to
+support simulataneous decoding of secure streams. At minimum, simultaneous
+decoding of two steams is STRONGLY RECOMMENDED.
\ No newline at end of file
diff --git a/7_hardware-compatibility/7_1_display-and-graphics.md b/7_hardware-compatibility/7_1_display-and-graphics.md
index 853ba1b..13da399 100644
--- a/7_hardware-compatibility/7_1_display-and-graphics.md
+++ b/7_hardware-compatibility/7_1_display-and-graphics.md
@@ -23,6 +23,18 @@
#### 7.1.1.1\. Screen Size
+* [H-0-1] Handheld device implementations MUST have a screen at least 2.5
+ inches in physical diagonal size.
+
+* [A-0-1] Android Automotive devices MUST have a screen at least 6 inches
+ in physical diagonal size.
+
+* [A-0-2] Android Automotive devices MUST have a screen size layout of
+at least 750 dp x 480 dp.
+
+* [W-0-1] Android Watch device implementations MUST have a screen with the
+ physical diagonal size in the range from 1.1 to 2.5 inches.
+
The Android UI framework supports a variety of different logical screen layout
sizes, and allows applications to query the current configuration's screen
layout size via `Configuration.screenLayout` with the `SCREENLAYOUT_SIZE_MASK`
@@ -118,6 +130,8 @@
supported compatible screen size (320 dp width), device implementations SHOULD
report the next lowest standard Android framework density.
+* [H-SR] Device implementations are STRONGLY RECOMMENDED to provide users an
+ affordance to change the display size.
If there is an affordance to change the display size of the device:
@@ -343,6 +357,12 @@
applications not developed for old versions of Android that pre-date
screen-size independence.
+* [H-0-1] Handheld device implementations MUST include support
+ for legacy application compatibility mode as implemented by the upstream
+ Android open source code. That is, device implementations MUST NOT alter the
+ triggers or thresholds at which compatibility mode is activated, and MUST
+ NOT alter the behavior of the compatibility mode itself.
+
### 7.1.6\. Screen Technology
The Android platform includes APIs that allow applications to render rich
@@ -368,4 +388,4 @@
* [C-1-1] MUST implement the [`DisplayManager`](
https://developer.android.com/reference/android/hardware/display/DisplayManager.html)
- system service and API as described in the Android SDK documentation.
+ system service and API as described in the Android SDK documentation.
\ No newline at end of file
diff --git a/7_hardware-compatibility/7_2_input-devices.md b/7_hardware-compatibility/7_2_input-devices.md
index 993db39..66fda1d 100644
--- a/7_hardware-compatibility/7_2_input-devices.md
+++ b/7_hardware-compatibility/7_2_input-devices.md
@@ -8,6 +8,11 @@
### 7.2.1\. Keyboard
+* [H-0-1] Handheld device implementations MUST include support for
+third-party Input Method Editor (IME) applications.
+* [T-0-1] Television device implementations MUST include support for
+third-party Input Method Editor (IME) applications.
+
If device implementations include support for third-party
Input Method Editor (IME) applications, they:
@@ -29,6 +34,10 @@
Android includes support for d-pad, trackball, and wheel as mechanisms for
non-touch navigation.
+Television device implementations:
+
+* [T-0-1] MUST support [D-pad](https://developer.android.com/reference/android/content/res/Configuration.html#NAVIGATION_DPAD).
+
Device implementations:
* [C-0-1] MUST report the correct value for
@@ -52,6 +61,25 @@
or a distinct portion of the touch screen, are essential to the Android
navigation paradigm and therefore:
+* [H-0-1] Android Handheld device implementations MUST provide the Home,
+ Recents, and Back functions.
+* [H-0-2] Android Handheld device implementations MUST send both the normal
+ and long press event of the the Back function ([`KEYCODE_BACK`](http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK))
+ to the foreground application.
+* [T-0-1] Android Television device implementations MUST provide the Home
+ and Back functions.
+* [T-0-2] Android Television device implementations MUST send both the normal
+ and long press event of the the Back function ([`KEYCODE_BACK`](http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK))
+ to the foreground application.
+* [W-0-1] Android Watch device implementations MUST have the Home function
+ available to the user, and the Back function except for when it is in
+ `UI_MODE_TYPE_WATCH`.
+* [A-0-1] Automotive device implementations MUST provide the Home function
+ and MAY provide Back and Recent functions.
+* [A-0-2] Automotive device implementations MUST send both the normal
+ and long press event of the the Back function ([`KEYCODE_BACK`](http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_BACK))
+ to the foreground application.
+
* [C-0-1] MUST provide the Home function.
* SHOULD provide buttons for the Recents and Back function.
@@ -117,6 +145,9 @@
the system does not require any additional affordances to indicate the objects
being manipulated.
+* [H-0-1] Handheld device implementations MUST support touchscreen input.
+* [W-0-2] Watch device implementations MUST support touchscreen input.
+
Device implementations:
* SHOULD have a pointer input system of some kind
@@ -205,6 +236,10 @@
#### 7.2.6.1\. Button Mappings
+Television device implementations:
+* [T-0-1] MUST include support for game controllers and declare the
+`android.hardware.gamepad` feature flag.
+
If device implementations declare the `android.hardware.gamepad` feature flag,
they:
* [C-1-1] MUST have embed a controller or ship with a separate controller
@@ -346,5 +381,8 @@
### 7.2.7\. Remote Control
-See [Section 2.3.1](#2_3_1_hardware) for device-specific requirements.
+Television device implementations:
+* 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.
\ No newline at end of file
diff --git a/7_hardware-compatibility/7_3_sensors.md b/7_hardware-compatibility/7_3_sensors.md
index f768af7..0553ac6 100644
--- a/7_hardware-compatibility/7_3_sensors.md
+++ b/7_hardware-compatibility/7_3_sensors.md
@@ -82,6 +82,25 @@
### 7.3.1\. Accelerometer
* Device implementations SHOULD include a 3-axis accelerometer.
+* [H-SR] Handheld device implementations are STRONGLY RECOMMENDED to
+ include a 3-axis accelerometer.
+* [A-SR] Automotive device implementations are STRONGLY RECOMMENDED to
+ include a 3-axis accelerometer.
+* [W-SR] Watch device implementations 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.
+
+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).
If device implementations include a 3-axis accelerometer, they:
@@ -234,6 +253,12 @@
additional mandatory requirements for devices reporting the year "2016" or
"2017" through the Test API `LocationManager.getGnssYearOfHardware()`.
+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.
+
If device implementations include a GPS/GNSS receiver and report the capability
to applications through the `android.hardware.location.gps` feature flag and the
`LocationManager.getGnssYearOfHardware()` Test API reports the year "2016" or
@@ -293,6 +318,19 @@
when device is stationary at room temperature.
* SHOULD report events up to at least 200 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.
+
+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.
+
+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.
+
+
If device implementations include a gyroscope, an accelerometer sensor and a
magnetometer sensor, they:
@@ -347,6 +385,9 @@
### 7.3.8\. Proximity Sensor
* Device implementations MAY include a proximity sensor.
+* 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.
If device implementations include a proximity sensor, they:
@@ -542,22 +583,40 @@
Automotive-specific sensors are defined in the
`android.car.CarSensorManager API`.
+
#### 7.3.11.1\. Current Gear
-See [Section 2.5.1](#2_5_1_hardware) for device-specific requirements.
+* Android Automotive implementations SHOULD provide current gear as
+`SENSOR_TYPE_GEAR`.
#### 7.3.11.2\. Day Night Mode
-See [Section 2.5.1](#2_5_1_hardware) for device-specific requirements.
+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.
+
+* The underlying ambient light sensor MAY be the same as
+[Photometer](#7_3_7_photometer).
#### 7.3.11.3\. Driving Status
-See [Section 2.5.1](#2_5_1_hardware) for device-specific requirements.
+Automotive device implementations:
+
+* [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.
#### 7.3.11.4\. Wheel Speed
-See [Section 2.5.1](#2_5_1_hardware) for device-specific requirements.
+Automotive device implementations:
+* [A-0-1] MUST provide vehicle speed defined as `SENSOR_TYPE_CAR_SPEED`.
## 7.3.12\. Pose Sensor
@@ -565,6 +624,10 @@
* MAY support pose sensor with 6 degrees of freedom.
+Handheld device implementations are:
+
+* RECOMMENDED to support this sensor.
+
If device implementations support pose sensor with 6 degrees of freedom, they:
* [C-1-1] MUST implement and report [`TYPE_POSE_6DOF`](
diff --git a/7_hardware-compatibility/7_4_data-connectivity.md b/7_hardware-compatibility/7_4_data-connectivity.md
index 1ee8792..d85d0de 100644
--- a/7_hardware-compatibility/7_4_data-connectivity.md
+++ b/7_hardware-compatibility/7_4_data-connectivity.md
@@ -162,6 +162,10 @@
### 7.4.3\. Bluetooth
+* [W-0-1] Watch device implementations MUST support Bluetooth.
+* [T-0-1] Television device implementations MUST support Bluetooth and
+Bluetooth LE.
+
If device implementations support Bluetooth Audio profile, they:
* SHOULD support Advanced Audio Codecs and Bluetooth Audio Codecs
@@ -184,6 +188,17 @@
* SHOULD implement relevant Bluetooth profiles such as
A2DP, AVCP, OBEX, etc. as appropriate for the device.
+Automotive device implementations:
+* [A-0-1] Automotive device implementations MUST support Bluetooth and
+SHOULD support Bluetooth LE.
+* [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).
If device implementations include support for Bluetooth Low Energy, they:
@@ -398,6 +413,10 @@
* [SR] STRONGLY RECOMMENDED to provide the data saver mode.
+If Handheld device implementations include a metered connection, they:
+
+* [H-1-1] MUST provide the data saver mode.
+
If device implementations provide the data saver mode, they:
* [C-1-1] MUST support all the APIs in the `ConnectivityManager`
diff --git a/7_hardware-compatibility/7_5_cameras.md b/7_hardware-compatibility/7_5_cameras.md
index 112d6b2..570a8ae 100644
--- a/7_hardware-compatibility/7_5_cameras.md
+++ b/7_hardware-compatibility/7_5_cameras.md
@@ -138,7 +138,11 @@
implementation MUST support conversion to YV12.)
* [C-0-4] MUST support the `android.hardware.ImageFormat.YUV_420_888` and
`android.hardware.ImageFormat.JPEG` formats as outputs through the
-`android.media.ImageReader` API for `android.hardware.camera2`.
+`android.media.ImageReader` API for `android.hardware.camera2` devices that
+advertise [`REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE`](
+https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE)
+ capability in [`android.request.availableCapabilities`](
+ https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES).
* [C-0-5] MUST still implement the full [Camera API](
http://developer.android.com/reference/android/hardware/Camera.html)
included in the Android SDK documentation, regardless of whether the device
diff --git a/7_hardware-compatibility/7_6_memory-and-storage.md b/7_hardware-compatibility/7_6_memory-and-storage.md
index fa5998d..8af504f 100644
--- a/7_hardware-compatibility/7_6_memory-and-storage.md
+++ b/7_hardware-compatibility/7_6_memory-and-storage.md
@@ -10,6 +10,97 @@
downloading individual files of at least 100MB in size to the default
“cache” location.
+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)
+
+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)
+
+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.
+
+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.
+
+
+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
+ * ldpi or lower on extra large screens
+ * mdpi or lower on large screens
+
+* [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
+ * hdpi or higher on large screens
+ * mdpi or higher on extra large screens
+
+* [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
+ * xhdpi or higher on large screens
+ * tvdpi or higher on extra large screens
+
+* [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
+ * 400dpi or higher on large screens
+ * xhdpi or higher on extra large screens
+
+If Handheld device implementations are 64-bit:
+
+* [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
+ * ldpi or lower on extra large screens
+ * mdpi or lower on large screens
+
+
+* [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
+ * hdpi or higher on large screens
+ * mdpi or higher on extra large screens
+
+* [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
+ * xhdpi or higher on large screens
+ * tvdpi or higher on extra large screens
+
+* [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
+ * 400dpi or higher on large screens
+ * xhdpi or higher on extra large screens
+
+Note that the "memory available to the kernel and userspace" above refers to the
+memory space provided in addition to any memory already dedicated to hardware
+components such as radio, video, and so on that are not under the kernel’s
+control on device implementations.
+
### 7.6.2\. Application Shared Storage
Device implementations:
diff --git a/7_hardware-compatibility/7_7_usb.md b/7_hardware-compatibility/7_7_usb.md
index 20c1be6..27d10ef 100644
--- a/7_hardware-compatibility/7_7_usb.md
+++ b/7_hardware-compatibility/7_7_usb.md
@@ -6,6 +6,11 @@
### 7.7.1\. USB 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.
+
If device implementations include a USB port supporting peripheral mode:
* [C-1-1] The port MUST be connectable to a USB host that has a standard
@@ -63,12 +68,12 @@
[`android.hardware.usb.host`](http://developer.android.com/guide/topics/connectivity/usb/host.html).
* [C-1-2] MUST implement support to connect standard USB peripherals,
in other words, they MUST either:
- * Have an on-device type C port or ship with cable(s) adapting an on-device
- proprietary port to a standard USB type-C port (USB Type-C device).
- * Have an on-device type A or ship with cable(s) adapting an on-device
- proprietary port to a standard USB type-A port.
- * Have an on-device micro-AB port, which SHOULD ship with a cable adapting
- to a standard type-A port.
+ * Have an on-device type C port or ship with cable(s) adapting an on-device
+ proprietary port to a standard USB type-C port (USB Type-C device).
+ * Have an on-device type A or ship with cable(s) adapting an on-device
+ proprietary port to a standard USB type-A port.
+ * Have an on-device micro-AB port, which SHOULD ship with a cable adapting
+ to a standard type-A port.
* [C-1-3] MUST NOT ship with an adapter converting from USB type A or
micro-AB ports to a type-C port (receptacle).
* [SR] STRONGLY RECOMMENDED to implement the [USB audio class](
@@ -94,10 +99,10 @@
and the [Voice Command Usage Request](http://www.usb.org/developers/hidpage/Voice_Command_Usage.pdf)
to the [`KeyEvent`](https://developer.android.com/reference/android/view/KeyEvent.html)
constants as below:
- * Usage Page (0xC) Usage ID (0x0CD): `KEYCODE_MEDIA_PLAY_PAUSE`
- * Usage Page (0xC) Usage ID (0x0E9): `KEYCODE_VOLUME_UP`
- * Usage Page (0xC) Usage ID (0x0EA): `KEYCODE_VOLUME_DOWN`
- * Usage Page (0xC) Usage ID (0x0CF): `KEYCODE_VOICE_ASSIST`
+ * Usage Page (0xC) Usage ID (0x0CD): `KEYCODE_MEDIA_PLAY_PAUSE`
+ * Usage Page (0xC) Usage ID (0x0E9): `KEYCODE_VOLUME_UP`
+ * Usage Page (0xC) Usage ID (0x0EA): `KEYCODE_VOLUME_DOWN`
+ * Usage Page (0xC) Usage ID (0x0CF): `KEYCODE_VOICE_ASSIST`
If device implementations include a USB port supporting host mode and
@@ -121,4 +126,4 @@
http://www.usb.org/developers/docs/).
* SHOULD implement the Try.\* model that is most appropriate for the
device form factor. For example a handheld device SHOULD implement the
-Try.SNK model.
+Try.SNK model.
\ No newline at end of file
diff --git a/7_hardware-compatibility/7_8_audio.md b/7_hardware-compatibility/7_8_audio.md
index 44b2e39..c9944f7 100644
--- a/7_hardware-compatibility/7_8_audio.md
+++ b/7_hardware-compatibility/7_8_audio.md
@@ -2,6 +2,11 @@
### 7.8.1\. Microphone
+
+* [H-0-1] Handheld device implementations MUST include a microphone.
+* [W-0-1] Watch device implementations MUST include a microphone.
+* [A-0-1] Automotive device implementations MUST include a microphone.
+
If device implementations include a microphone, they:
* [C-1-1] MUST report the `android.hardware.microphone` feature constant.
@@ -39,6 +44,13 @@
* [C-2-1] MUST NOT report the `android.hardware.audio output` feature.
* [C-2-2] MUST implement the Audio Output related APIs as no-ops at least.
+* [H-0-1] Handheld device implementations MUST have an audio output and
+declare `android.hardware.audio.output`.
+* [T-0-1] Television device implementations MUST have an audio output and
+declare `android.hardware.audio.output`.
+* [A-0-1] Automotive device implementations MUST have an audio output and
+declare `android.hardware.audio.output`.
+* Watch device implementations MAY but SHOULD NOT have audio output.
For the purposes of this section, an "output port" is a
[physical interface](https://en.wikipedia.org/wiki/Computer_port_%28hardware%29)
diff --git a/7_hardware-compatibility/7_9_virtual-reality.md b/7_hardware-compatibility/7_9_virtual-reality.md
index e51cdba..44df56a 100644
--- a/7_hardware-compatibility/7_9_virtual-reality.md
+++ b/7_hardware-compatibility/7_9_virtual-reality.md
@@ -12,8 +12,26 @@
a feature which handles stereoscopic rendering of notifications and disables
monocular system UI components while a VR application has user focus.
+If Handheld device implementations include support for the VR mode, they:
+
+* [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`
+that can be enabled by VR applications via
+`android.app.Activity#setVrModeEnabled`.
+
### 7.9.2\. Virtual Reality High Performance
+
+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.
+
If device implementations identify the support of high performance VR
for longer user periods through the `android.hardware.vr.high_performance`
feature flag, they:
diff --git a/8_performance-and-power/8_1_user-experience-consistency.md b/8_performance-and-power/8_1_user-experience-consistency.md
index 85f8a14..9728f44 100644
--- a/8_performance-and-power/8_1_user-experience-consistency.md
+++ b/8_performance-and-power/8_1_user-experience-consistency.md
@@ -6,3 +6,15 @@
MAY have measurable requirements for the user interface latency and task
switching as described in [section 2](#2_device-types).
+ * [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.
+ * [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.
diff --git a/8_performance-and-power/8_2_file-io-access-performance.md b/8_performance-and-power/8_2_file-io-access-performance.md
index c667ec5..7508aff 100644
--- a/8_performance-and-power/8_2_file-io-access-performance.md
+++ b/8_performance-and-power/8_2_file-io-access-performance.md
@@ -7,6 +7,7 @@
described in [section 2](#2_device-type) for the following read
and write operations:
+
* **Sequential write performance**. Measured by writing a 256MB file using
10MB write buffer.
* **Random write performance**. Measured by writing a 256MB file using 4KB
@@ -16,3 +17,16 @@
* **Random read performance**. Measured by reading a 256MB file using 4KB
write buffer.
+Handheld device implementations:
+
+ * [H-0-1] MUST ensure a sequential write performance of at least 5MB/s.
+ * [H-0-2] MUST ensure a random write performance of at least 0.5MB/s.
+ * [H-0-3] MUST ensure a sequential read performance of at least 15MB/s.
+ * [H-0-4] MUST ensure a random read performance of at least 3.5MB/s.
+
+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.
\ No newline at end of file
diff --git a/8_performance-and-power/8_3_power-saving-modes.md b/8_performance-and-power/8_3_power-saving-modes.md
index 6268303..a6a5bf3 100644
--- a/8_performance-and-power/8_3_power-saving-modes.md
+++ b/8_performance-and-power/8_3_power-saving-modes.md
@@ -2,6 +2,25 @@
Android includes App Standby and Doze power-saving modes to optimize battery
usage.
+
+* [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.
+
+* [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.
+
+* [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.
+
* [SR] All Apps exempted from these modes are STRONGLY RECOMMENDED to be made
visible to the end user.
* [SR] The triggering, maintenance, wakeup algorithms and the use of
diff --git a/8_performance-and-power/8_4_power-consumption-accounting.md b/8_performance-and-power/8_4_power-consumption-accounting.md
index 0e688fe..0628b10 100644
--- a/8_performance-and-power/8_4_power-consumption-accounting.md
+++ b/8_performance-and-power/8_4_power-consumption-accounting.md
@@ -4,6 +4,62 @@
app developer both the incentives and the tools to optimize the power usage
pattern of the application.
+Handheld device implementations:
+
+* [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.
+* SHOULD be attributed to the hardware component itself if unable to
+attribute hardware component power usage to an application.
+* [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.
+
+Television device implementations:
+
+* [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`](
+http://source.android.com/devices/tech/power/batterystats.html)
+shell command to the app developer.
+
+Automotive device implementations:
+
+* [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`](
+http://source.android.com/devices/tech/power/batterystats.html)
+shell command to the app developer.
Device implementations:
@@ -25,4 +81,9 @@
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`](
+http://developer.android.com/reference/android/content/Intent.html#ACTION_POWER_USAGE_SUMMARY)
+intent and display a settings menu that shows this power usage.
diff --git a/9_security-model/9_14_automotive-system-isolation.md b/9_security-model/9_14_automotive-system-isolation.md
index 046ebd4..a1d5276 100644
--- a/9_security-model/9_14_automotive-system-isolation.md
+++ b/9_security-model/9_14_automotive-system-isolation.md
@@ -6,5 +6,11 @@
The data exchange can be secured by implementing security features below the
Android framework layers to prevent malicious or unintentional interaction with
-these subsystems.
+these subsystems. 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
diff --git a/9_security-model/9_1_permissions.md b/9_security-model/9_1_permissions.md
index 525e9d5..c46365b 100644
--- a/9_security-model/9_1_permissions.md
+++ b/9_security-model/9_1_permissions.md
@@ -38,6 +38,14 @@
* the runtime permissions are associated with an intent pattern
for which the preinstalled application is set as the default handler
+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.
If device implementations include a pre-installed app or wish to allow
third-party apps to access the usage statistics, they:
@@ -56,4 +64,4 @@
[`android.settings.ACTION_USAGE_ACCESS_SETTINGS`](
https://developer.android.com/reference/android/provider/Settings.html#ACTION_USAGE_ACCESS_SETTINGS)
intent pattern but MUST implement it as a no-op, that is to have an
- equivalent behavior as when the user is declined for access.
+ equivalent behavior as when the user is declined for access.
\ No newline at end of file
diff --git a/9_security-model/9_5_multi-user-support.md b/9_security-model/9_5_multi-user-support.md
index d266b0c..4f201e5 100644
--- a/9_security-model/9_5_multi-user-support.md
+++ b/9_security-model/9_5_multi-user-support.md
@@ -9,6 +9,11 @@
http://developer.android.com/reference/android/os/Environment.html)
for primary external storage.
+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.
+
If device implementations include multiple users, they:
* [C-1-1] MUST meet the following requirements related to
diff --git a/OWNERS b/OWNERS
new file mode 100644
index 0000000..751e37c
--- /dev/null
+++ b/OWNERS
@@ -0,0 +1,5 @@
+gdimino@google.com
+vikasmarwaha@google.com
+unsuk@google.com
+claym@google.com
+sachiyo@google.com
diff --git a/source/android-cdd-cover.html b/source/android-cdd-cover.html
index fbc7256..946cda0 100644
--- a/source/android-cdd-cover.html
+++ b/source/android-cdd-cover.html
@@ -1,6 +1,6 @@
<!DOCTYPE html>
<head>
-<title>Android 7.0 Compatibility Definition</title>
+<title>Android 8.0 Compatibility Definition</title>
<link rel="stylesheet" type="text/css" href="android-cdd-cover.css"/>
</head>
@@ -27,7 +27,6 @@
<p class="subtitle">Android 8.0</p>
<p class="cover-text">Last updated: September 1, 2017</p>
<p class="cover-text">Copyright © 2017, Google Inc. All rights reserved.</p>
-<p class="cover-text"><a href="mailto:compatibility@android.com">compatibility@android.com</a></p>
</td>
</tr>