Merge "Docs: Fix the broken link for Direct Boot Aware." into oreo-dev am: 144ce4d86f am: 027d7f02af
am: 4be0b9f900
Change-Id: I64b7ffe1aa27511e341afa66fb394f9961e7f2d1
diff --git a/2_device-types/2_1_device-configurations.md b/2_device-types/2_1_device-configurations.md
index 883d049..6b04ddd 100644
--- a/2_device-types/2_1_device-configurations.md
+++ b/2_device-types/2_1_device-configurations.md
@@ -1,132 +1,4 @@
## 2.1 Device Configurations
-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>
+For the major differences in hardware configuration by device
+type, see the device-specific requirements that follow in this section.
diff --git a/2_device-types/2_3_television-reqs.md b/2_device-types/2_3_television-reqs.md
index ddb7a9e..1ce2d6b 100644
--- a/2_device-types/2_3_television-reqs.md
+++ b/2_device-types/2_3_television-reqs.md
@@ -267,4 +267,4 @@
* [[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
+shell command to the app developer.
diff --git a/2_device-types/2_4_watch-reqs.md b/2_device-types/2_4_watch-reqs.md
index 8c9b588..6bfacc8 100644
--- a/2_device-types/2_4_watch-reqs.md
+++ b/2_device-types/2_4_watch-reqs.md
@@ -41,11 +41,11 @@
### 2.4.2\. Multimedia
-To be added.
+No additional requirements.
### 2.4.3\. Software
-Android Watch device implementations:
+Watch device implementations:
* [[3](#3_0_intro)/W-0-1] MUST declare the feature
`android.hardware.type.watch`.
@@ -70,7 +70,7 @@
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,
+If Watch device implementations report the feature android.hardware.audio.output,
they:
* [[3.11](#3_11_text-to-speech)/W-SR] Are STRONGLY RECOMMENDED to include a
diff --git a/2_device-types/2_6_tablet-reqs.md b/2_device-types/2_6_tablet-reqs.md
index b132ced..ce910d1 100644
--- a/2_device-types/2_6_tablet-reqs.md
+++ b/2_device-types/2_6_tablet-reqs.md
@@ -39,12 +39,3 @@
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 7fc167d..2e055f5 100644
--- a/3_software/3_12_tv-input-framework.md
+++ b/3_software/3_12_tv-input-framework.md
@@ -5,9 +5,6 @@
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`.
diff --git a/3_software/3_14_media-ui.md b/3_software/3_14_media-ui.md
new file mode 100644
index 0000000..18d0f14
--- /dev/null
+++ b/3_software/3_14_media-ui.md
@@ -0,0 +1,27 @@
+## 3.14\. Media UI
+
+
+If device implementations include the UI framework that supports third-party
+apps that depend on [`MediaBrowser`](
+http://developer.android.com/reference/android/media/browse/MediaBrowser.html)
+and [`MediaSession`](
+http://developer.android.com/reference/android/media/session/MediaSession.html)
+, they:
+
+* [C-1-1] MUST display [MediaItem](
+ http://developer.android.com/reference/android/media/browse/MediaBrowser.MediaItem.html)
+ icons and notification icons unaltered.
+* [C-1-2] MUST display those items as described by MediaSession, e.g.,
+ metadata, icons, imagery.
+* [C-1-3] MUST show app title.
+* [C-1-4] MUST have drawer to present [MediaBrowser](
+ http://developer.android.com/reference/android/media/browse/MediaBrowser.html)
+ hierarchy.
+* [C-1-5] MUST consider double tap of [`KEYCODE_HEADSETHOOK`](
+ https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_HEADSETHOOK)
+ or [`KEYCODE_MEDIA_PLAY_PAUSE`](
+ https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_MEDIA_PLAY_PAUSE)
+ as [`KEYCODE_MEDIA_NEXT`](
+ https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_MEDIA_NEXT)
+ for [`MediaSession.Callback#onMediaButtonEvent`](
+ https://developer.android.com/reference/android/media/session/MediaSession.Callback.html#onMediaButtonEvent%28android.content.Intent%29).
\ No newline at end of file
diff --git a/3_software/3_14_vehicle-ui-apis.md b/3_software/3_14_vehicle-ui-apis.md
deleted file mode 100644
index b576593..0000000
--- a/3_software/3_14_vehicle-ui-apis.md
+++ /dev/null
@@ -1,19 +0,0 @@
-## 3.14\. Media UI
-
-
-If device implementations include the UI framework that supports third-party
-apps that depend on [`MediaBrowser`](
-http://developer.android.com/reference/android/media/browse/MediaBrowser.html)
-and [`MediaSession`](
-http://developer.android.com/reference/android/media/session/MediaSession.html)
-, they:
-
-* [C-1-1] MUST display [MediaItem](
- http://developer.android.com/reference/android/media/browse/MediaBrowser.MediaItem.html)
- icons and notification icons unaltered.
-* [C-1-2] MUST display those items as described by MediaSession, e.g.,
- metadata, icons, imagery.
-* [C-1-3] MUST show app title.
-* [C-1-4] MUST have drawer to present [MediaBrowser](
- http://developer.android.com/reference/android/media/browse/MediaBrowser.html)
- hierarchy.
diff --git a/3_software/3_2_soft-api-compatibility.md b/3_software/3_2_soft-api-compatibility.md
index fd0f1a2..0d4a3ce 100644
--- a/3_software/3_2_soft-api-compatibility.md
+++ b/3_software/3_2_soft-api-compatibility.md
@@ -248,9 +248,9 @@
applications considered core Android applications, which implements several
intent patterns to perform common actions.
-* [C-0-1] Device implementations MUST include these application, service
-components, or at least a handler, for all the public intent filter patterns
-defined by the following core Android applications in AOSP:
+* [C-0-1] Device implementations MUST preload one or more applications or
+service components with an intent handler, for all the public intent filter
+patterns defined by the following core android applications in AOSP:
* Desk Clock
* Browser
@@ -352,17 +352,31 @@
If device implementations report `android.software.home_screen`, they:
-* [C-1-1] MUST honor the [android.settings.HOME_SETTINGS](
+* [C-1-1] MUST honor the [`android.settings.HOME_SETTINGS`](
http://developer.android.com/reference/android/provider/Settings.html#ACTION_HOME_SETTINGS)
intent to show a default app settings menu for Home Screen.
If device implementations report `android.hardware.telephony`, they:
* [C-2-1] MUST provide a settings menu that will call the
-[android.provider.Telephony.ACTION_CHANGE_DEFAULT](
+[`android.provider.Telephony.ACTION_CHANGE_DEFAULT`](
http://developer.android.com/reference/android/provider/Telephony.Sms.Intents.html)
intent to show a dialog to change the default SMS application.
+* [C-2-2] MUST honor the [`android.telecom.action.CHANGE_DEFAULT_DIALER`](
+https://developer.android.com/reference/android/telecom/TelecomManager.html#ACTION_CHANGE_DEFAULT_DIALER)
+intent to show a dialog to allow the user to change the default Phone
+application.
+
+* [C-2-3] MUST honor the [android.telecom.action.CHANGE_PHONE_ACCOUNTS](
+https://developer.android.com/reference/android/telecom/TelecomManager.html#ACTION_CHANGE_PHONE_ACCOUNTS)
+intent to provide user affordance to configure the [`ConnectionServices`](
+https://developer.android.com/reference/android/telecom/ConnectionService.html)
+associated with the [`PhoneAccounts`](
+https://developer.android.com/reference/android/telecom/PhoneAccount.html), as
+well as a default PhoneAccount that the telecommunications service provider will
+use to place outgoing calls. The AOSP implementation meets this requirement by
+including a "Calling Accounts option" menu within the "Calls" settings menu.
If device implementations report `android.hardware.nfc.hce`, they:
@@ -370,16 +384,10 @@
http://developer.android.com/reference/android/provider/Settings.html#ACTION_NFC_PAYMENT_SETTINGS)
intent to show a default app settings menu for Tap and Pay.
-If device implementations report `android.hardware.telephony`, they:
+If device implementations support the `VoiceInteractionService` and have more
+than one application using this API installed at a time, they:
-* [C-4-1] MUST honor the [android.telecom.action.CHANGE_DEFAULT_DIALER](
-https://developer.android.com/reference/android/telecom/TelecomManager.html#ACTION_CHANGE_DEFAULT_DIALER)
-intent to show a dialog to allow the user to change the default Phone
-application.
-
-If device implementations support the VoiceInteractionService, they:
-
-* [C-5-1] MUST honor the [android.settings.ACTION_VOICE_INPUT_SETTINGS](
+* [C-4-1] MUST honor the [`android.settings.ACTION_VOICE_INPUT_SETTINGS`](
https://developer.android.com/reference/android/provider/Settings.html#ACTION_VOICE_INPUT_SETTINGS)
intent to show a default app settings menu for voice input and assist.
@@ -433,4 +441,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.
\ No newline at end of file
+ flag.
diff --git a/3_software/3_8_user-interface-compatibility.md b/3_software/3_8_user-interface-compatibility.md
index 4dee802..9d0a5a1 100644
--- a/3_software/3_8_user-interface-compatibility.md
+++ b/3_software/3_8_user-interface-compatibility.md
@@ -5,7 +5,8 @@
Android includes a launcher application (home screen) and support for
third-party applications to replace the device launcher (home screen).
-If device implementations allow third-party applications to replace the device home screen, they:
+If device implementations allow third-party applications to replace the device
+home screen, they:
* [C-1-1] MUST declare the platform feature `android.software.home_screen`.
* [C-1-2] MUST return the [`AdaptiveIconDrawable`](
@@ -25,18 +26,22 @@
by apps via the [`ShortcutManager.requestPinShortcut()`](
https://developer.android.com/reference/android/content/pm/ShortcutManager.html#requestPinShortcut%28android.content.pm.ShortcutInfo, android.content.IntentSender%29)
API method.
+* [C-2-3] MUST support pinned shortcuts and dynamic and static
+ shortcuts as documented on the [App Shortcuts page](
+ https://developer.android.com/guide/topics/ui/shortcuts.html).
-Conversely, if device implementations do not support in-app pinning, they:
+Conversely, if device implementations do not support in-app pinning of
+shortcuts, they:
* [C-3-1] MUST report `false` for
[`ShortcutManager.isRequestPinShortcutSupported()`](
- https://developer.android.com/reference/android/content/pm/ShortcutManager.html#isRequestPinShortcutSupported%28%29)
- and [`AppWidgetManager.html#isRequestPinAppWidgetSupported()`](
- https://developer.android.com/reference/android/appwidget/AppWidgetManager.html#isRequestPinAppWidgetSupported%28%29).
+ https://developer.android.com/reference/android/content/pm/ShortcutManager.html#isRequestPinShortcutSupported%28%29).
-If device implementations 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, they:
+If device implementations 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, they:
* [C-4-1] MUST support all documented shortcut features (e.g. static and
dynamic shortcuts, pinning shortcuts) and fully implement the APIs of the
@@ -71,16 +76,16 @@
[“AppWidget”](http://developer.android.com/guide/practices/ui_guidelines/widget_design.html)
to the end user.
-
If device implementations support third-party app widgets, they:
-* [C-1-1] MUST declare support for platform feature android.software.app_widgets.
+* [C-1-1] MUST declare support for platform feature
+ `android.software.app_widgets`.
* [C-1-2] MUST include built-in support for AppWidgets and expose
user interface affordances to add, configure, view, and remove AppWidgets
directly within the Launcher.
* [C-1-3] MUST be capable of rendering widgets that are 4 x 4
- in the standard grid size. See the [App Widget Design
- Guidelines](http://developer.android.com/guide/practices/ui_guidelines/widget_design.html)
+ in the standard grid size. See the [App Widget DesignGuidelines](
+ http://developer.android.com/guide/practices/ui_guidelines/widget_design.html)
in the Android SDK documentation for details.
* MAY support application widgets on the lock screen.
@@ -137,7 +142,7 @@
channels.
* SHOULD support rich notifications.
* SHOULD present some higher priority notifications as heads-up notifications.
-* SHOULD have user affordance to snooze notifications.
+* SHOULD have a user affordance to snooze notifications.
* MAY only manage the visibility and timing of when third-party apps can notify
users of notable events to mitigate safety issues such as driver distraction.
@@ -166,23 +171,24 @@
APIs that allow apps (once explicitly enabled by the user) to receive a copy of
all notifications as they are posted or updated.
-Device implementations:
+If device implementations report the feature flag [`android.hardware.ram.normal`](https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_RAM_NORMAL),
+they:
-* [C-0-1] MUST correctly and promptly update notifications in their entirety to all
+* [C-1-1] MUST correctly and promptly update notifications in their entirety to all
such installed and user-enabled listener services, including any and all
metadata attached to the Notification object.
-* [C-0-2] MUST respect the [`snoozeNotification()`](
+* [C-1-2] MUST respect the [`snoozeNotification()`](
https://developer.android.com/reference/android/service/notification/NotificationListenerService.html#snoozeNotification%28java.lang.String, long%29)
API call, and dismiss the notification and make a callback after the snooze
duration that is set in the API call.
If device implementations have a user affordance to snooze notifications, they:
-* [C-1-1] MUST reflect the snoozed notification status properly
+* [C-2-1] MUST reflect the snoozed notification status properly
through the standard APIs such as
[`NotificationListenerService.getSnoozedNotifications()`](
https://developer.android.com/reference/android/service/notification/NotificationListenerService.html#getSnoozedNotifications%28%29).
-* [C-1-2] MUST make this user affordance available to snooze notifications
+* [C-2-2] MUST make this user affordance available to snooze notifications
from each installed third-party app's, unless they are from
persistent/foreground services.
@@ -362,7 +368,7 @@
If device implementations including the recents function navigation key as detailed in
[section 7.2.3](#7_2_3_navigation_keys) alter the interface, they:
-* [C-1-1] MUST support at least up to 20 displayed activities.
+* [C-1-1] MUST support at least up to 7 displayed activities.
* SHOULD at least display the title of 4 activities at a time.
* [C-1-2] MUST implement the [screen pinning behavior](http://developer.android.com/about/versions/android-5.0.html#ScreenPinning)
and provide the user with a settings menu to toggle the feature.
@@ -374,8 +380,7 @@
* SHOULD trigger the split-screen multiwindow-mode, if supported, when the
recents functions key is long pressed.
* MAY display affiliated recents as a group that moves together.
-
-* [C-SR] Device implementations are STRONGLY RECOMMENDED to use the upstream Android user
+* [SR] Are STRONGLY RECOMMENDED to use the upstream Android user
interface (or a similar thumbnail-based interface) for the overview screen.
### 3.8.9\. Input Management
diff --git a/5_multimedia/5_10_professional-audio.md b/5_multimedia/5_10_professional-audio.md
index e90d000..607bd8c 100644
--- a/5_multimedia/5_10_professional-audio.md
+++ b/5_multimedia/5_10_professional-audio.md
@@ -17,10 +17,20 @@
* [C-1-5] MUST meet latencies and USB audio requirements using the
[OpenSL ES](https://developer.android.com/ndk/guides/audio/opensl-for-android.html)
PCM buffer queue API.
-* SHOULD provide a sustainable level of CPU performance while audio is active.
+* [SR] Are STRONGLY RECOMMENDED to provide a consistent level of CPU
+performance while audio is active and CPU load is varying. This should be tested
+using [SimpleSynth](https://github.com/googlesamples/android-audio-high-performance/tree/master/SimpleSynth)
+commit [1bd6391](https://github.com/googlesamples/android-audio-high-performance/commit/1bd6391f8ba9512f9f8798e979bc55b899f856d1).
+The SimpleSynth app needs to be run with below parameters and achieve zero
+underruns after 10 minutes:
+ * Work cycles: 200,000
+ * Variable load: ON (this will switch between 100% and 10% of the work
+ cycles value every 2 seconds and is designed to test CPU governor
+ behavior)
+ * Stabilized load: OFF
* SHOULD minimize audio clock inaccuracy and drift relative to standard time.
-* SHOULD minimize audio clock drift relative to the CPU `CLOCK_MONOTONIC` when both
-are active.
+* SHOULD minimize audio clock drift relative to the CPU `CLOCK_MONOTONIC`
+when both are active.
* SHOULD minimize audio latency over on-device transducers.
* SHOULD minimize audio latency over USB digital audio.
* SHOULD document audio latency measurements over all paths.
@@ -74,20 +84,16 @@
* The continuous round-trip audio latency SHOULD be 10 milliseconds
or less over the audio jack path.
-If device implementations omit a 4 conductor 3.5mm audio jack, they:
+If device implementations omit a 4 conductor 3.5mm audio jack and
+include a USB port(s) supporting USB host mode, they:
-* [C-3-1] MUST have a continuous round-trip audio latency of 20
-milliseconds or less.
+* [C-3-1] MUST implement the USB audio class.
+* [C-3-2] MUST have a continuous round-trip audio latency of 20
+milliseconds or less over the USB host mode port using USB audio class.
* The continuous round-trip audio latency SHOULD be 10 milliseconds
or less over the USB host mode port using USB audio class.
-
-If device implementations include a USB port(s) supporting USB host mode, they:
-
-* [C-4-1] MUST implement the USB audio class.
-
-
If device implementations include an HDMI port, they:
-* [C-5-1] MUST support output in stereo and eight channels at 20-bit or
-24-bit depth and 192 kHz without bit-depth loss or resampling.
+* [C-4-1] MUST support output in stereo and eight channels at 20-bit or
+24-bit depth and 192 kHz without bit-depth loss or resampling.
\ 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 1ad3158..3b61db4 100644
--- a/5_multimedia/5_1_media-codecs.md
+++ b/5_multimedia/5_1_media-codecs.md
@@ -4,27 +4,6 @@
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:
@@ -35,10 +14,6 @@
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 4f97c1e..3bc9d79 100644
--- a/5_multimedia/5_2_video-encoding.md
+++ b/5_multimedia/5_2_video-encoding.md
@@ -1,22 +1,5 @@
## 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:
@@ -60,14 +43,6 @@
### 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 b376275..30adfe2 100644
--- a/5_multimedia/5_3_video-decoding.md
+++ b/5_multimedia/5_3_video-decoding.md
@@ -1,32 +1,5 @@
## 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
@@ -83,13 +56,6 @@
* [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>
@@ -124,6 +90,7 @@
### 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
@@ -138,18 +105,6 @@
* [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>
@@ -204,15 +159,6 @@
* [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>
@@ -265,17 +211,6 @@
* [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>
@@ -309,4 +244,4 @@
<td>5 Mbps</td>
<td>20 Mbps</td>
</tr>
-</table>
\ No newline at end of file
+</table>
diff --git a/5_multimedia/5_5_audio-playback.md b/5_multimedia/5_5_audio-playback.md
index 363197e..b0e6d45 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,13 +40,6 @@
### 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 5df157e..e75a775 100644
--- a/5_multimedia/5_8_secure-media.md
+++ b/5_multimedia/5_8_secure-media.md
@@ -17,15 +17,3 @@
* [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/5_multimedia/5_9_midi.md b/5_multimedia/5_9_midi.md
index 6dacb59..205d074 100644
--- a/5_multimedia/5_9_midi.md
+++ b/5_multimedia/5_9_midi.md
@@ -1,22 +1,16 @@
## 5.9\. Musical Instrument Digital Interface (MIDI)
-If a device implementation supports the inter-app MIDI software transport
-(virtual MIDI devices), and it supports MIDI over _all_ of the following
-MIDI-capable hardware transports for which it provides generic non-MIDI
-connectivity, it is:
+If device implementations report support for feature `android.software.midi`
+via the [`android.content.pm.PackageManager`](
+http://developer.android.com/reference/android/content/pm/PackageManager.html)
+class, they:
-* [SR] STRONGLY RECOMMENDED to report support for feature
-android.software.midi via the [android.content.pm.PackageManager](http://developer.android.com/reference/android/content/pm/PackageManager.html)
-class.
+* [C-1-1] MUST support MIDI over _all_ MIDI-capable hardware transports for
+which they provide generic non-MIDI connectivity, where such transports are:
-The MIDI-capable hardware transports are:
+ * USB host mode, [section 7.7](#7_7_USB)
+ * USB peripheral mode, [section 7.7](#7_7_USB)
+ * MIDI over Bluetooth LE acting in central role, [section 7.4.3](#7_4_3_bluetooth)
-* USB host mode (section 7.7 USB)
-* USB peripheral mode (section 7.7 USB)
-* MIDI over Bluetooth LE acting in central role (section 7.4.3 Bluetooth)
-
-If the device implementation provides generic non-MIDI connectivity over a
-particular MIDI-capable hardware transport listed above, but does not support
-MIDI over that hardware transport, it:
-
-* [C-1-1] MUST NOT report support for feature android.software.midi.
+* [C-1-2] MUST support the inter-app MIDI software transport
+(virtual MIDI devices)
diff --git a/7_hardware-compatibility/7_1_display-and-graphics.md b/7_hardware-compatibility/7_1_display-and-graphics.md
index 13da399..853ba1b 100644
--- a/7_hardware-compatibility/7_1_display-and-graphics.md
+++ b/7_hardware-compatibility/7_1_display-and-graphics.md
@@ -23,18 +23,6 @@
#### 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`
@@ -130,8 +118,6 @@
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:
@@ -357,12 +343,6 @@
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
@@ -388,4 +368,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.
\ No newline at end of file
+ system service and API as described in the Android SDK documentation.
diff --git a/7_hardware-compatibility/7_2_input-devices.md b/7_hardware-compatibility/7_2_input-devices.md
index 66fda1d..3a415de 100644
--- a/7_hardware-compatibility/7_2_input-devices.md
+++ b/7_hardware-compatibility/7_2_input-devices.md
@@ -8,11 +8,6 @@
### 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:
@@ -34,10 +29,6 @@
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
@@ -59,28 +50,13 @@
and [Back](http://developer.android.com/reference/android/view/KeyEvent.html#`KEYCODE_BACK`)
functions typically provided via an interaction with a dedicated physical button
or a distinct portion of the touch screen, are essential to the Android
-navigation paradigm and therefore:
+navigation paradigm and therefore, device implementations:
-* [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.
+* [C-0-1] MUST provide a user affordance to launch installed applications
+ that have an activity with the `<intent-filter>` set with `ACTION=MAIN` and
+ `CATEGORY=LAUNCHER` or `CATEGORY=LEANBACK_LAUNCHER` for Television device
+ implementations.
+ The Home function SHOULD be the mechanism for this user affordance.
* SHOULD provide buttons for the Recents and Back function.
If the Home, Recents, or Back functions are provided, they:
@@ -145,9 +121,6 @@
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
@@ -236,10 +209,6 @@
#### 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
@@ -381,8 +350,5 @@
### 7.2.7\. Remote Control
-Television device implementations:
+See [Section 2.3.1](#2_3_1_hardware) for device-specific requirements.
-* 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 0553ac6..8da2e19 100644
--- a/7_hardware-compatibility/7_3_sensors.md
+++ b/7_hardware-compatibility/7_3_sensors.md
@@ -82,25 +82,6 @@
### 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:
@@ -253,12 +234,6 @@
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
@@ -318,19 +293,6 @@
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:
@@ -385,9 +347,6 @@
### 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:
@@ -548,31 +507,36 @@
https://developer.android.com/reference/android/hardware/fingerprint/package-summary.html)
as described in the Android SDK documentation.
* [C-1-3] MUST have a false acceptance rate not higher than 0.002%.
-* [C-1-4] MUST rate limit attempts for at least 30 seconds after five false
+* [SR] Are STRONGLY RECOMMENDED to have a spoof and imposter acceptance rate
+not higher than 7%.
+* [C-1-4] MUST disclose that this mode may be less secure than a strong PIN,
+pattern, or password and clearly enumerate the risks of enabling it, if the
+spoof and imposter acceptance rates are higher than 7%.
+* [C-1-5] MUST rate limit attempts for at least 30 seconds after five false
trials for fingerprint verification.
-* [C-1-5] MUST have a hardware-backed keystore implementation, and perform the
+* [C-1-6] MUST have a hardware-backed keystore implementation, and perform the
fingerprint matching in a Trusted Execution Environment (TEE) or on a chip with
a secure channel to the TEE.
-* [C-1-6] MUST have all identifiable fingerprint data encrypted and
+* [C-1-7] MUST have all identifiable fingerprint data encrypted and
cryptographically authenticated such that they cannot be acquired, read or
altered outside of the Trusted Execution Environment (TEE) as documented in the
[implementation guidelines](
https://source.android.com/devices/tech/security/authentication/fingerprint-hal.html)
on the Android Open Source Project site.
-* [C-1-7] MUST prevent adding a fingerprint without first establishing a chain
+* [C-1-8] MUST prevent adding a fingerprint without first establishing a chain
of trust by having the user confirm existing or add a new device credential
(PIN/pattern/password) that's secured by TEE; the Android Open Source Project
implementation provides the mechanism in the framework to do so.
-* [C-1-8] MUST NOT enable 3rd-party applications to distinguish between
+* [C-1-9] MUST NOT enable 3rd-party applications to distinguish between
individual fingerprints.
-* [C-1-9] MUST honor the DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT
+* [C-1-10] MUST honor the DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT
flag.
-* [C-1-10] MUST, when upgraded from a version earlier than Android 6.0, have
+* [C-1-11] MUST, when upgraded from a version earlier than Android 6.0, have
the fingerprint data securely migrated to meet the above requirements or
removed.
-* [SR] STRONGLY RECOMMENDED to have a false rejection rate of less than 10%,
+* [SR] Are STRONGLY RECOMMENDED to have a false rejection rate of less than 10%,
as measured on the device.
-* [SR] STRONGLY RECOMMENDED to have a latency below 1 second, measured from
+* [SR] Are STRONGLY RECOMMENDED to have a latency below 1 second, measured from
when the fingerprint sensor is touched until the screen is unlocked, for one
enrolled finger.
* SHOULD use the Android Fingerprint icon provided in the Android Open Source
@@ -583,40 +547,22 @@
Automotive-specific sensors are defined in the
`android.car.CarSensorManager API`.
-
#### 7.3.11.1\. Current Gear
-* Android Automotive implementations SHOULD provide current gear as
-`SENSOR_TYPE_GEAR`.
+See [Section 2.5.1](#2_5_1_hardware) for device-specific requirements.
#### 7.3.11.2\. Day Night Mode
-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).
+See [Section 2.5.1](#2_5_1_hardware) for device-specific requirements.
#### 7.3.11.3\. Driving Status
-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.
+See [Section 2.5.1](#2_5_1_hardware) for device-specific requirements.
#### 7.3.11.4\. Wheel Speed
-Automotive device implementations:
+See [Section 2.5.1](#2_5_1_hardware) for device-specific requirements.
-* [A-0-1] MUST provide vehicle speed defined as `SENSOR_TYPE_CAR_SPEED`.
## 7.3.12\. Pose Sensor
@@ -624,10 +570,6 @@
* 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 d85d0de..080170d 100644
--- a/7_hardware-compatibility/7_4_data-connectivity.md
+++ b/7_hardware-compatibility/7_4_data-connectivity.md
@@ -54,6 +54,22 @@
* SHOULD migrate the blocked numbers into the provider when a device updates
to Android 7.0.
+#### 7.4.1.2\. Telecom API
+
+If device implementations report `android.hardware.telephony`, they:
+
+* [C-SR] Are STRONGLY RECOMMENDED to handle the the audio headset's
+ `KEYCODE_MEDIA_PLAY_PAUSE` and `KEYCODE_HEADSETHOOK` events for the
+ [`android.telecom`](https://developer.android.com/reference/android/telecom/package-summary.html)
+ APIs as below:
+ * Call [`Connection.onDisconnect()`](https://developer.android.com/reference/android/telecom/Connection.html#onDisconnect%28%29)
+ when a short press of the key event is detected during an ongoing call.
+ * Call [`Connection.onAnswer()`](https://developer.android.com/reference/android/telecom/Connection.html#onAnswer%28%29)
+ when a short press of the key event is detected during an incoming call.
+ * Call [`Connection.onReject()`](https://developer.android.com/reference/android/telecom/Connection.html#onReject%28%29)
+ when a long press of the key event is detected during an incoming call.
+ * Toggle the mute status of the [`CallAudioState`](https://developer.android.com/reference/android/telecom/CallAudioState.html)
+
### 7.4.2\. IEEE 802.11 (Wi-Fi)
Device implementations:
@@ -162,10 +178,6 @@
### 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
@@ -188,17 +200,6 @@
* 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:
@@ -413,10 +414,6 @@
* [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_6_memory-and-storage.md b/7_hardware-compatibility/7_6_memory-and-storage.md
index 8af504f..fa5998d 100644
--- a/7_hardware-compatibility/7_6_memory-and-storage.md
+++ b/7_hardware-compatibility/7_6_memory-and-storage.md
@@ -10,97 +10,6 @@
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 27d10ef..20c1be6 100644
--- a/7_hardware-compatibility/7_7_usb.md
+++ b/7_hardware-compatibility/7_7_usb.md
@@ -6,11 +6,6 @@
### 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
@@ -68,12 +63,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](
@@ -99,10 +94,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
@@ -126,4 +121,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.
\ No newline at end of file
+Try.SNK model.
diff --git a/7_hardware-compatibility/7_8_audio.md b/7_hardware-compatibility/7_8_audio.md
index c9944f7..84c08b7 100644
--- a/7_hardware-compatibility/7_8_audio.md
+++ b/7_hardware-compatibility/7_8_audio.md
@@ -2,11 +2,6 @@
### 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.
@@ -41,16 +36,9 @@
If device implementations do not include a speaker or audio output port, they:
-* [C-2-1] MUST NOT report the `android.hardware.audio output` feature.
+* [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 44df56a..1a8b632 100644
--- a/7_hardware-compatibility/7_9_virtual-reality.md
+++ b/7_hardware-compatibility/7_9_virtual-reality.md
@@ -12,26 +12,8 @@
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:
@@ -60,6 +42,8 @@
[`GL_OVR_multiview2`](https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview2.txt),
[`GL_OVR_multiview_multisampled_render_to_texture`](https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview_multisampled_render_to_texture.txt),
[`GL_EXT_protected_textures`](https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_protected_textures.txt),
+ [`GL_EXT_EGL_image_array`](https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_image_array.txt),
+ [`GL_EXT_external_buffer`](https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_external_buffer.txt),
and expose the extensions in the list of available GL extensions.
* [C-1-9] MUST implement support for [`AHardwareBuffer`](https://developer.android.com/ndk/reference/hardware__buffer_8h.html)
flags `AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER` and
@@ -79,14 +63,26 @@
* [C-1-14] MUST have an embedded screen, and its resolution MUST be at least be
FullHD(1080p) and STRONGLY RECOMMENDED TO BE be QuadHD (1440p) or higher.
* [C-1-15] The display MUST update at least 60 Hz while in VR Mode.
-* [C-1-16] The display latency on Gray-to-Gray, White-to-Black, and
-Black-to-White switching time MUST be ≤ 3 ms.
-* [C-1-17] The display MUST support a low-persistence mode with ≤5 ms
+* [C-1-16] The display latency (as measured on Gray-to-Gray, White-to-Black, and
+Black-to-White switching time) MUST be ≤ 6 milliseconds.
+* [C-1-17] The display MUST support a low-persistence mode with ≤ 5 milliseconds
persistence, persistence being defined as the amount of time for
which a pixel is emitting light.
* [C-1-18] MUST support Bluetooth 4.2 and Bluetooth LE Data Length Extension
[section 7.4.3](#7_4_3_bluetooth).
-* [SR] STRONGLY RECOMMENDED to support
+* [C-1-19] MUST support and properly report [Direct Channel Type](
+ https://developer.android.com/reference/android/hardware/Sensor.html#isDirectChannelTypeSupported%28int%29")
+ for all of the following default sensor types:
+ * `TYPE_ACCELEROMETER`
+ * `TYPE_ACCELEROMETER_UNCALIBRATED`
+ * `TYPE_GYROSCOPE`
+ * `TYPE_GYROSCOPE_UNCALIBRATED`
+ * `TYPE_MAGNETIC_FIELD`
+ * `TYPE_MAGNETIC_FIELD_UNCALIBRATED`
+* [C-1-20] MUST support the [`TYPE_HARDWARE_BUFFER`](
+https://developer.android.com/reference/android/hardware/SensorDirectChannel.html#TYPE_HARDWARE_BUFFER)
+ direct channel type for all Direct Channel Types listed above.
+* [SR] Are STRONGLY RECOMMENDED to support
`android.hardware.sensor.hifi_sensors` feature and MUST meet the gyroscope,
accelerometer, and magnetometer related requirements for
`android.hardware.hifi_sensors`.
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 9728f44..85f8a14 100644
--- a/8_performance-and-power/8_1_user-experience-consistency.md
+++ b/8_performance-and-power/8_1_user-experience-consistency.md
@@ -6,15 +6,3 @@
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 7508aff..c667ec5 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,7 +7,6 @@
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
@@ -17,16 +16,3 @@
* **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 a6a5bf3..6268303 100644
--- a/8_performance-and-power/8_3_power-saving-modes.md
+++ b/8_performance-and-power/8_3_power-saving-modes.md
@@ -2,25 +2,6 @@
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 0628b10..0e688fe 100644
--- a/8_performance-and-power/8_4_power-consumption-accounting.md
+++ b/8_performance-and-power/8_4_power-consumption-accounting.md
@@ -4,62 +4,6 @@
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:
@@ -81,9 +25,4 @@
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_10_device-integrity.md b/9_security-model/9_10_device-integrity.md
index 1b4557d..7ac86b0 100644
--- a/9_security-model/9_10_device-integrity.md
+++ b/9_security-model/9_10_device-integrity.md
@@ -50,8 +50,9 @@
repository, which can be integrated into the boot loader used for loading
Android.
-Device implementations with Advanced Encryption Standard (AES) crypto
-performance above 50 MiB/seconds:
+If device implementations report the feature flag [`android.hardware.ram.normal`](
+https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_RAM_NORMAL)
+, they:
* [C-2-1] MUST support verified boot for device integrity.
diff --git a/9_security-model/9_11_keys-and-credentials.md b/9_security-model/9_11_keys-and-credentials.md
index 503ed90..d409563 100644
--- a/9_security-model/9_11_keys-and-credentials.md
+++ b/9_security-model/9_11_keys-and-credentials.md
@@ -27,7 +27,9 @@
implementation of a proper hypervisor-based isolation are alternative options.
* [C-1-3] MUST perform the lock screen authentication in the isolated
execution environment and only when successful, allow the authentication-bound
-keys to be used. The upstream Android Open Source Project provides the
+keys to be used. Lock screen credentials MUST be stored in a
+way that allows only the isolated execution environment to perform lock screen
+authentication. The upstream Android Open Source Project provides the
[Gatekeeper Hardware Abstraction Layer (HAL)](http://source.android.com/devices/tech/security/authentication/gatekeeper.html)
and Trusty, which can be used to satisfy this requirement.
* [C-1-4] MUST support key attestation where the attestation signing key is
@@ -130,21 +132,35 @@
password quality policy via the [`DevicePolicyManager.setPasswordQuality()`](https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html\#setPasswordQuality%28android.content.ComponentName,%20int%29)
method with a more restrictive quality constant than
`PASSWORD_QUALITY_BIOMETRIC_WEAK`.
-* [C-5-4] The user MUST be challenged for the primary authentication
+* [SR] Are STRONGLY RECOMMENDED to have spoof and imposter acceptance rates
+that are equal to or stronger than what is required for a fingerprint sensor as
+described in section 7.3.10.
+
+If the spoof and imposter acceptance rates are not equal to or stronger than
+what is required for a fingerprint sensor as described in
+[section 7.3.10](#7_3_10_fingerprint_sensor) and the Device Policy
+Controller (DPC) application has set the password quality policy via the
+[`DevicePolicyManager.setPasswordQuality()`](https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html\#setPasswordQuality%28android.content.ComponentName,%20int%29)
+method with a more restrictive quality constant than
+`PASSWORD_QUALITY_BIOMETRIC_WEAK`, then:
+
+* [C-6-1] MUST disable these biometric methods and allow only the primary
+authentication to unlock the screen.
+* [C-6-2] MUST challenge the user for the primary authentication
(e.g.PIN, pattern, password) at least once every 72 hours or less.
If device implementations add or modify the authentication methods to unlock
the lock screen and if such an authentication method will be used to unlock
the keyguard, but will not be treated as a secure lock screen, then they:
-* [C-6-1] MUST return `false` for both the [`KeyguardManager.isKeyguardSecure()`](http://developer.android.com/reference/android/app/KeyguardManager.html#isKeyguardSecure%28%29)
+* [C-7-1] MUST return `false` for both the [`KeyguardManager.isKeyguardSecure()`](http://developer.android.com/reference/android/app/KeyguardManager.html#isKeyguardSecure%28%29)
and the [`KeyguardManager.isDeviceSecure()`](https://developer.android.com/reference/android/app/KeyguardManager.html#isDeviceSecure%28%29)
methods.
-* [C-6-2] MUST be disabled when the Device Policy Controller (DPC)
+* [C-7-2] MUST be disabled when the Device Policy Controller (DPC)
application has set the password quality policy via the [`DevicePolicyManager.setPasswordQuality()`](https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setPasswordQuality%28android.content.ComponentName,%20int%29)
method with a more restrictive quality constant than
`PASSWORD_QUALITY_UNSPECIFIED`.
-* [C-6-3] MUST NOT reset the password expiration timers set by
+* [C-7-3] MUST NOT reset the password expiration timers set by
[`DevicePolicyManager.setPasswordExpirationTimeout()`](http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setPasswordExpirationTimeout%28android.content.ComponentName,%20long%29).
-* [C-6-4] MUST NOT authenticate access to keystores if the application has
+* [C-7-4] MUST NOT authenticate access to keystores if the application has
called [`KeyGenParameterSpec.Builder.setUserAuthenticationRequired(true)`](https://developer.android.com/reference/android/security/keystore/KeyGenParameterSpec.Builder.html#setUserAuthenticationRequired%28boolean%29)).
diff --git a/9_security-model/9_14_automotive-system-isolation.md b/9_security-model/9_14_automotive-system-isolation.md
index a1d5276..046ebd4 100644
--- a/9_security-model/9_14_automotive-system-isolation.md
+++ b/9_security-model/9_14_automotive-system-isolation.md
@@ -6,11 +6,5 @@
The data exchange can be secured by implementing security features below the
Android framework layers to prevent malicious or unintentional interaction with
-these subsystems. Automotive device implementations:
+these subsystems.
-* [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 c46365b..525e9d5 100644
--- a/9_security-model/9_1_permissions.md
+++ b/9_security-model/9_1_permissions.md
@@ -38,14 +38,6 @@
* 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:
@@ -64,4 +56,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.
\ No newline at end of file
+ equivalent behavior as when the user is declined for access.
diff --git a/9_security-model/9_5_multi-user-support.md b/9_security-model/9_5_multi-user-support.md
index 4f201e5..d266b0c 100644
--- a/9_security-model/9_5_multi-user-support.md
+++ b/9_security-model/9_5_multi-user-support.md
@@ -9,11 +9,6 @@
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/9_security-model/9_8_privacy.md b/9_security-model/9_8_privacy.md
index 8c5c22e..a1799a4 100644
--- a/9_security-model/9_8_privacy.md
+++ b/9_security-model/9_8_privacy.md
@@ -66,3 +66,12 @@
https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setAlwaysOnVpnPackage%28android.content.ComponentName, java.lang.String, boolean%29)
, in which case the user does not need to provide a separate consent, but
MUST only be notified.
+
+If device implementations implement a user affordance to toggle on the
+"always-on VPN" function of a 3rd-party VPN app, they:
+
+* [C-3-1] MUST disable this user affordance for apps that do not support
+ always-on VPN service in the `AndroidManifest.xml` file via setting the
+ [`SERVICE_META_DATA_SUPPORTS_ALWAYS_ON`](
+ https://developer.android.com/reference/android/net/VpnService.html#SERVICE_META_DATA_SUPPORTS_ALWAYS_ON)
+ attribute to `false`.
\ No newline at end of file
diff --git a/9_security-model/9_9_full-disk-encryption.md b/9_security-model/9_9_full-disk-encryption.md
index 3506679..8a14713 100644
--- a/9_security-model/9_9_full-disk-encryption.md
+++ b/9_security-model/9_9_full-disk-encryption.md
@@ -88,8 +88,8 @@
* [C-1-2] MUST use a default passcode to wrap the encryption key and
MUST NOT write the encryption key to storage at any time
without being encrypted.
- * [C-1-3] MUST provide the user the possibility to AES encrypt the
- encryption key, except when it is in active use, with the lock screen
+ * [C-1-3] MUST AES encrypt the encryption key by default unless the user
+ explicitly opts out, except when it is in active use, with the lock screen
credentials stretched using a slow stretching algorithm
(e.g. PBKDF2 or scrypt).
* [C-1-4] The above default password stretching algorithm MUST be