Merge "Docs: NEW CHANGE#21 for Android automotive changes to cdd OTA download requirement is allowed but not mandatory for Android Automotive implementations." into lmp-mr1-dev
diff --git a/src/compatibility/5.1/android-5.1-cdd.html b/src/compatibility/5.1/android-5.1-cdd.html
index cc7cc8d..4ed3a61 100644
--- a/src/compatibility/5.1/android-5.1-cdd.html
+++ b/src/compatibility/5.1/android-5.1-cdd.html
@@ -420,6 +420,7 @@
<th>Handheld</th>
<th>Television</th>
<th>Watch</th>
+ <th>Automotive</th>
<th>Other</th>
</tr>
<tr>
@@ -430,6 +431,7 @@
<td>MUST</td>
<td></td>
<td></td>
+ <td></td>
</tr>
<tr>
<td>Touchscreen </td>
@@ -437,6 +439,7 @@
<td>MUST</td>
<td></td>
<td>MUST</td>
+ <td></td>
<td>SHOULD</td>
</tr>
<tr>
@@ -445,6 +448,7 @@
<td>MUST</td>
<td>SHOULD </td>
<td>MUST</td>
+ <td>MUST</td>
<td>SHOULD</td>
</tr>
<tr>
@@ -454,6 +458,7 @@
<td>SHOULD</td>
<td></td>
<td>SHOULD</td>
+ <td></td>
<td>SHOULD</td>
</tr>
<tr>
@@ -462,6 +467,7 @@
<td>SHOULD</td>
<td></td>
<td></td>
+ <td>SHOULD</td>
<td></td>
</tr>
<tr>
@@ -472,6 +478,7 @@
<td> MUST</td>
<td></td>
<td>SHOULD</td>
+ <td>SHOULD</td>
</tr>
<tr>
<td>Wi-Fi Direct</td>
@@ -479,6 +486,7 @@
<td>SHOULD</td>
<td>SHOULD</td>
<td></td>
+ <td></td>
<td>SHOULD</td>
</tr>
<tr>
@@ -487,6 +495,7 @@
<td>SHOULD</td>
<td>MUST</td>
<td>MUST</td>
+ <td>MUST</td>
<td>SHOULD</td>
</tr>
<tr>
@@ -496,14 +505,16 @@
<td>MUST</td>
<td>SHOULD</td>
<td>SHOULD</td>
+ <td>SHOULD</td>
</tr>
<tr>
- <td>USB peripheral/ host mode</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>
@@ -513,6 +524,7 @@
<td>MUST</td>
<td></td>
<td>MUST</td>
+ <td>MUST</td>
</tr>
</table>
@@ -973,9 +985,11 @@
<h3 id="3_4_2_browser_compatibility">3.4.2. Browser Compatibility</h3>
<div class="note">
-<p>Android Television and Watch Devices MAY omit a browser application, but MUST
-support the public intent patterns as described in <a href="#3_2_3_1_core_application_intents">section 3.2.3.1</a>. All other types of device implementations MUST include a standalone Browser
-application for general user web browsing.</p>
+<p>Android Television, Watch, and Android Automotive implementations MAY omit a
+browser application, but MUST support the public intent patterns as described in
+<a href="#3_2_3_1_core_application_intents">section 3.2.3.1</a>. All other types
+of device implementations MUST include a standalone Browser application for
+general user web browsing.</p>
</div>
<p>The standalone Browser MAY be based on a browser technology other than WebKit.
@@ -1103,27 +1117,24 @@
<tr>
<td rowspan="10">small/normal</td>
<td>120 dpi (ldpi)</td>
- <td>16MB</td>
+ <td rowspan="2">32MB</td>
</tr>
<tr>
<td>160 dpi (mdpi)</td>
- <td></td>
</tr>
<tr>
<td>213 dpi (tvdpi)</td>
- <td>32MB</td>
+ <td rowspan="3">48MB</td>
</tr>
<tr>
<td>240 dpi (hdpi)</td>
- <td></td>
</tr>
<tr>
<td>280 dpi (280dpi)</td>
- <td>48MB</td>
</tr>
<tr>
<td>320 dpi (xhdpi)</td>
- <td>64MB</td>
+ <td>80MB</td>
</tr>
<tr>
<td>400 dpi (400dpi)</td>
@@ -1144,19 +1155,18 @@
<tr>
<td rowspan="10">large</td>
<td>120 dpi (ldpi)</td>
- <td>16MB</td>
- </tr>
- <tr>
- <td>160 dpi (mdpi)</td>
<td>32MB</td>
</tr>
<tr>
+ <td>160 dpi (mdpi)</td>
+ <td>48MB</td>
+ </tr>
+ <tr>
<td>213 dpi (tvdpi)</td>
- <td>64MB</td>
+ <td rowspan="2">80MB</td>
</tr>
<tr>
<td>240 dpi (hdpi)</td>
- <td></td>
</tr>
<tr>
<td>280 dpi (280dpi)</td>
@@ -1183,17 +1193,20 @@
<td>512MB</td>
</tr>
<tr>
- <td rowspan="9">xlarge</td>
+ <td rowspan="10">xlarge</td>
+ <td>120 dpi (ldpi)</td>
+ <td>48MB</td>
+ </tr>
+ <tr>
<td>160 dpi (mdpi)</td>
- <td>64MB</td>
+ <td>80MB</td>
</tr>
<tr>
<td>213 dpi (tvdpi)</td>
- <td>96MB</td>
+ <td rowspan="2">96MB</td>
</tr>
<tr>
<td>240 dpi (hdpi)</td>
- <td></td>
</tr>
<tr>
<td>280 dpi (280dpi)</td>
@@ -1462,10 +1475,14 @@
<p>Android includes features that allow security-aware applications to perform
device administration functions at the system level, such as enforcing password
policies or performing remote wipe, through the Android Device Administration
-API [<a href="http://developer.android.com/guide/topics/admin/device-admin.html">Resources, 39</a>]. Device implementations MUST provide an implementation of the
-DevicePolicyManager class [<a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html">Resources, 40</a>]. Device implementations that include support for lock screen MUST support the
-full range of device administration policies defined in the Android SDK
-documentation [<a href="http://developer.android.com/guide/topics/admin/device-admin.html">Resources, 39</a>] and report the platform feature android.software.device_admin.</p>
+API [<a href="http://developer.android.com/guide/topics/admin/device-admin.html">Resources, 39</a>].
+Device implementations MUST provide an implementation of the DevicePolicyManager class
+[<a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html">Resources, 40</a>].
+Device implementations that include support for PIN (numeric) or PASSWORD
+(alphanumeric) based lock screens MUST support the full range of device
+administration policies defined in the Android SDK documentation
+[<a href="http://developer.android.com/guide/topics/admin/device-admin.html">Resources, 39</a>]
+and report the platform feature android.software.device_admin.</p>
<p>Device implementations MAY have a preinstalled application performing device
administration functions but this application MUST NOT be set out-of-the box as
@@ -2655,8 +2672,8 @@
<h3 id="7_2_1_keyboard">7.2.1. Keyboard</h3>
<div class="note">
-<p>Android Watch devices MAY but other type of device implementations MUST
-implement a soft keyboard.</p>
+<p>Android Watch and Android Automotive implementations MAY implement a soft
+keyboard. All other device implementations MUST implement a soft keyboard and:</p>
</div>
@@ -2703,7 +2720,7 @@
<p>The Home, Recents, and Back functions (mapped to the key events KEYCODE_HOME,
KEYCODE_APP_SWITCH, KEYCODE_BACK, respectively) are essential to the Android
-navigation paradigm and therefore;</p>
+navigation paradigm and therefore:</p>
<ul>
<li>Android Handheld device implementations MUST provide the Home, Recents, and
@@ -2712,6 +2729,8 @@
functions.</li>
<li>Android Watch device implementations MUST have the Home function available to
the user, and the Back function except for when it is in UI_MODE_TYPE_WATCH.</li>
+ <li>Android Automotive implementations MUST provide the Home function and MAY
+provide Back and Recent functions.</li>
<li>All other types of device implementations MUST provide the Home and Back
functions.</li>
</ul>
@@ -3071,8 +3090,10 @@
<ul>
<li>MUST implement and report TYPE_ACCELEROMETER sensor [<a href="http://developer.android.com/reference/android/hardware/Sensor.html#TYPE_ACCELEROMETER">Resources, 78</a>].</li>
- <li>MUST be able to report events up to a frequency of at least 100 Hz and SHOULD
-report events up to at least 200 Hz.</li>
+ <li>MUST be able to report events up to a frequency of at least 50 Hz for
+ Android Watch devices as such devices have a stricter power constraint and
+ 100 Hz for all other device types.</li>
+ <li>SHOULD report events up to at least 200 Hz.</li>
<li>MUST comply with the Android sensor coordinate system as detailed in the
Android APIs [<a href="http://developer.android.com/reference/android/hardware/SensorEvent.html">Resources, 74</a>].</li>
<li>MUST be capable of measuring from freefall up to four times the gravity (4g) or
@@ -3155,8 +3176,10 @@
TYPE_GYROSCOPE_UNCALIBRATED sensor. Existing and new Android devices are
strongly encouraged to implement the SENSOR_TYPE_GYROSCOPE_UNCALIBRATED sensor.</li>
<li>MUST be capable of measuring orientation changes up to 1,000 degrees per second.</li>
- <li>MUST be able to report events up to a frequency of at least 100 Hz and SHOULD
-report events up to at least 200 Hz.</li>
+ <li>MUST be able to report events up to a frequency of at least 50 Hz for
+ Android Watch devices as such devices have a stricter power constraint and
+ 100 Hz for all other device types.</li>
+ <li>SHOULD report events up to at least 200 Hz.</li>
<li>MUST have a resolution of 12-bits or more and SHOULD have a resolution of
16-bits or more.</li>
<li>MUST be temperature compensated.</li>
@@ -3776,11 +3799,12 @@
expose content from both storage paths transparently through Android’s media
scanner service and android.provider.MediaStore.</p>
-<p>Regardless of the form of shared storage used, device implementations MUST
-provide some mechanism to access the contents of shared storage from a host
-computer, such as USB mass storage (UMS) or Media Transfer Protocol (MTP).
-Device implementations MAY use USB mass storage, but SHOULD use Media Transfer
-Protocol. If the device implementation supports Media Transfer Protocol, it:</p>
+<p>Regardless of the form of shared storage used, if the device implementation
+has a USB port with USB peripheral mode support, it MUST provide some mechanism
+to access the contents of shared storage from a host computer. Device
+implementations MAY use USB mass storage, but SHOULD use Media Transfer Protocol
+to satisfy this requirement. If the device implementation supports Media
+Transfer Protocol, it:</p>
<ul>
<li>SHOULD be compatible with the reference Android MTP host, Android File Transfer
@@ -3789,10 +3813,6 @@
<li>SHOULD report a USB interface name of 'MTP'.</li>
</ul>
-<p>If the device implementation lacks USB ports, it MUST provide a host computer
-with access to the contents of shared storage by some other means, such as a
-network file system.</p>
-
<h2 id="7_7_usb">7.7. USB</h2>
@@ -3812,8 +3832,8 @@
screen), so that the display draws correctly when the device is oriented with
the port at bottom. Existing and new Android devices are <strong>very strongly encouraged to meet these requirements</strong> so they will be able to upgrade to future platform releases.</li>
<li>It MUST allow a USB host connected with the Android device to access the
-contents of the shared storage volume using either USB mass storage or Media
-Transfer Protocol, if the device reports the android.hardware.feature.output
+contents of the shared storage volume using standard protocols such as USB mass
+storage or Media Transfer Protocol, if the device reports the android.hardware.feature.output
feature or the android.hardware.camera feature.</li>
<li>It SHOULD implement the Android Open Accessory (AOA) API and specification as
documented in the Android SDK documentation, and if it is an Android Handheld
@@ -3852,7 +3872,8 @@
<h3 id="7_8_1_microphone">7.8.1. Microphone</h3>
<div class="note">
-<p>Android Handheld and Watch devices MUST include a microphone.</p>
+<p>Android Handheld, Watch, and Automotive implementations MUST include a
+microphone.</p>
</div>
@@ -4178,8 +4199,9 @@
</div>
-<p>If the device implementation has a lock screen, the device MUST support
-full-disk encryption of the application private data, (/data partition) as well
+<p>If the device implementation supports a lock screen with PIN (numeric) or
+PASSWORD (alphanumeric), the device MUST support full-disk encryption of the
+application private data (/data partition), as well
as the SD card partition if it is a permanent, non-removable part of the device
[<a href="http://source.android.com/devices/tech/security/encryption/index.html">Resources, 107</a>]. For devices supporting full-disk encryption, the full-disk encryption SHOULD
be enabled all the time after the user has completed the out-of-box experience.
@@ -4358,8 +4380,9 @@
</tr>
<tr>
<td>3.4.2. Browser compatibility</td>
- <td>Android Television and Watch Devices MAY omit a browser application, but all
-other types of device implementations MUST include one.</td>
+ <td>Android Television, Watch, and Android Automotive implementations MAY
+ omit a browser application, but all other types of device implementations
+ MUST include one.</td>
</tr>
<tr>
<td>3.7. Runtime compatibility</td>
@@ -4485,6 +4508,10 @@
<td>7.1.7. External Displays</td>
<td>Moved part of section to section 5.8. Secure Media.</td>
</tr>
+ <tr>
+ <td>7.2.1. Keyboard</td>
+ <td>Added Android Automotive requirements.</td>
+ </tr>
<tr>
<td>7.2 Input Devices</td>
<td>Added general intro statement.</td>
@@ -4494,11 +4521,12 @@
<td>Android Television devices MUST support D-pad. </td>
</tr>
<tr>
- <td>7.2.3. Navigation keys</td>
- <td>Included language for support across different device types. </td>
+ <td>7.2.3. Navigation Keys</td>
+ <td>Included language for support across different device types. Added
+ Android Automotive requirements.</td>
</tr>
<tr>
- <td>7.2.4. Touchscreen input</td>
+ <td>7.2.4. Touchscreen Input</td>
<td>Android Watch devices MUST support touchscreen input. </td>
</tr>
<tr>
@@ -4588,9 +4616,13 @@
micro-USB port. Updated requirements for Host and Peripheral mode. </td>
</tr>
<tr>
- <td>7.8.1. Audio</td>
+ <td>7.8. Audio</td>
<td>Moved microphone section here. Added requirements for Audio Output and Audio
-Analog ports. </td>
+Analog ports.</td>
+ </tr>
+ <tr>
+ <td>7.8.1. Microphone</td>
+ <td>Added Android Automotive requirements.</td>
</tr>
<tr>
<td>8. Performance Compatibility</td>