1## 3.8\. User Interface Compatibility 2 3### 3.8.1\. Launcher (Home Screen) 4 5Android includes a launcher application (home screen) and support for 6third-party applications to replace the device launcher (home screen). 7 8If device implementations allow third-party applications to replace the device 9home screen, they: 10 11* [C-1-1] MUST declare the platform feature `android.software.home_screen`. 12* [C-1-2] MUST return the [`AdaptiveIconDrawable`]( 13 https://developer.android.com/reference/android/graphics/drawable/AdaptiveIconDrawable.html) 14 object when the third-party application use `<adaptive-icon>` tag to provide 15 their icon, and the [`PackageManager`]( 16 https://developer.android.com/reference/android/content/pm/PackageManager.html) 17 methods to retrieve icons are called. 18 19If device implementations include a default launcher that supports in-app 20pinning of shortcuts, they: 21 22* [C-2-1] MUST report `true` for 23 [`ShortcutManager.isRequestPinShortcutSupported()`]( 24 https://developer.android.com/reference/android/content/pm/ShortcutManager.html#isRequestPinShortcutSupported%28%29). 25* [C-2-2] MUST have user affordance asking the user before adding a shortcut requested 26 by apps via the [`ShortcutManager.requestPinShortcut()`]( 27 https://developer.android.com/reference/android/content/pm/ShortcutManager.html#requestPinShortcut%28android.content.pm.ShortcutInfo, android.content.IntentSender%29) 28 API method. 29* [C-2-3] MUST support pinned shortcuts and dynamic and static 30 shortcuts as documented on the [App Shortcuts page]( 31 https://developer.android.com/guide/topics/ui/shortcuts.html). 32 33Conversely, if device implementations do not support in-app pinning of 34shortcuts, they: 35 36* [C-3-1] MUST report `false` for 37 [`ShortcutManager.isRequestPinShortcutSupported()`]( 38 https://developer.android.com/reference/android/content/pm/ShortcutManager.html#isRequestPinShortcutSupported%28%29). 39 40If device implementations implement a default launcher that provides quick 41access to the additional shortcuts provided by third-party apps through the 42[ShortcutManager]( 43https://developer.android.com/reference/android/content/pm/ShortcutManager.html) 44API, they: 45 46* [C-4-1] MUST support all documented shortcut features (e.g. static and 47 dynamic shortcuts, pinning shortcuts) and fully implement the APIs of the 48 [`ShortcutManager`]( 49 https://developer.android.com/reference/android/content/pm/ShortcutManager.html) 50 API class. 51 52If device implementations include a default launcher app that shows badges for 53the app icons, they: 54 55* [C-5-1] MUST respect the [`NotificationChannel.setShowBadge()`]( 56 https://developer.android.com/reference/android/app/NotificationChannel.html#setShowBadge%28boolean%29) 57 API method. 58 In other words, show a visual affordance associated with the app icon if the 59 value is set as `true`, and do not show any app icon badging scheme when all 60 of the app's notification channels have set the value as `false`. 61* MAY override the app icon badges with their proprietary badging scheme when 62 third-party applications indicate support of the proprietary badging scheme 63 through the use of proprietary APIs, but SHOULD use the resources and values 64 provided through the notification badges APIs described in [the SDK]( 65 https://developer.android.com/preview/features/notification-badges.html) 66 , such as the [`Notification.Builder.setNumber()`]( 67 http://developer.android.com/reference/android/app/Notification.Builder.html#setNumber%28int%29) 68 and the [`Notification.Builder.setBadgeIconType()`]( 69 http://developer.android.com/reference/android/app/Notification.Builder.html#setBadgeIconType%28int%29) 70 API. 71 72### 3.8.2\. Widgets 73 74Android supports third-party app widgets by defining a component type and 75corresponding API and lifecycle that allows applications to expose an 76[“AppWidget”](http://developer.android.com/guide/practices/ui_guidelines/widget_design.html) 77to the end user. 78 79If device implementations support third-party app widgets, they: 80 81* [C-1-1] MUST declare support for platform feature 82 `android.software.app_widgets`. 83* [C-1-2] MUST include built-in support for AppWidgets and expose 84 user interface affordances to add, configure, view, and remove AppWidgets 85 directly within the Launcher. 86* [C-1-3] MUST be capable of rendering widgets that are 4 x 4 87 in the standard grid size. See the [App Widget DesignGuidelines]( 88 http://developer.android.com/guide/practices/ui_guidelines/widget_design.html) 89 in the Android SDK documentation for details. 90* MAY support application widgets on the lock screen. 91 92If device implementations support third-party app widgets and in-app 93pinning of shortcuts, they: 94 95* [C-2-1] MUST report `true` for 96 [`AppWidgetManager.html.isRequestPinAppWidgetSupported()`]( 97 https://developer.android.com/reference/android/appwidget/AppWidgetManager.html#isRequestPinAppWidgetSupported%28%29). 98* [C-2-2] MUST have user affordance asking the user before adding a shortcut requested 99 by apps via the [`AppWidgetManager.requestPinAppWidget()`]( 100 https://developer.android.com/reference/android/appwidget/AppWidgetManager.html#requestPinAppWidget%28android.content.ComponentName,android.os.Bundle, android.app.PendingIntent%29) 101 API method. 102 103### 3.8.3\. Notifications 104 105Android includes [`Notification`]( 106https://developer.android.com/reference/android/app/Notification.html) and 107[`NotificationManager`]( 108https://developer.android.com/reference/android/app/NotificationManager.html) 109APIs that allow third-party app developers to notify users of notable events and 110attract users' attention using the hardware components (e.g. sound, vibration 111and light) and software features (e.g. notification shade, system bar) of the 112device. 113 114#### 3.8.3.1\. Presentation of Notifications 115 116If device implementations allow third-party apps to [notify users of notable events]( 117http://developer.android.com/guide/topics/ui/notifiers/notifications.html), they: 118 119* [C-1-1] MUST support notifications that use hardware features, as described in 120 the SDK documentation, and to the extent possible with the device implementation 121 hardware. For instance, if a device implementation includes a vibrator, it MUST 122 correctly implement the vibration APIs. If a device implementation lacks 123 hardware, the corresponding APIs MUST be implemented as no-ops. This behavior is 124 further detailed in [section 7](#7_hardware_compatibility). 125* [C-1-2] MUST correctly render all [resources]( 126 https://developer.android.com/guide/topics/resources/available-resources.html) 127 (icons, animation files, etc.) provided for in the APIs, or in the 128 Status/System Bar [icon style guide]( 129 http://developer.android.com/design/style/iconography.html), although they 130 MAY provide an alternative user experience for notifications than that 131 provided by the reference Android Open Source implementation. 132* [C-1-3] MUST honor and implement properly the behaviors described for 133 [the APIs]( 134 https://developer.android.com/guide/topics/ui/notifiers/notifications.html#Managing) 135 to update, remove and group notifications. 136* [C-1-4] MUST provide the full behavior of the [NotificationChannel]( 137 https://developer.android.com/reference/android/app/NotificationChannel.html) 138 API documented in the SDK. 139* [C-1-5] MUST provide a user affordance to block and modify a certain 140 third-party app's notification per each channel and app package level. 141* [C-1-6] MUST also provide a user affordance to display deleted notification 142 channels. 143* [C-1-7] MUST correctly render all resources (images, stickers, icons, etc.) 144 provided through [Notification.MessagingStyle]( 145 https://developer.android.com/reference/android/app/Notification.MessagingStyle) 146 alongside the notification text without additional user interaction. For 147 example, MUST show all resources including icons provided through 148 [android.app.Person](https://developer.android.com/reference/android/app/Person) 149 in a group conversation that is set through [setGroupConversation]( 150 https://developer.android.com/reference/android/app/Notification.MessagingStyle.html?hl=es-AR#setGroupConversation%28boolean%29). 151* [C-SR] Are STRONGLY RECOMMENDED to automatically surface a user affordance 152 to block a certain third-party app's notification per each channel and app 153 package level after the user dismisses that notification multiple times. 154* SHOULD support rich notifications. 155* SHOULD present some higher priority notifications as heads-up notifications. 156* SHOULD have a user affordance to snooze notifications. 157* MAY only manage the visibility and timing of when third-party apps can notify 158 users of notable events to mitigate safety issues such as driver distraction. 159 160If device implementations support rich notifications, they: 161 162* [C-2-1] MUST use the exact resources as 163 provided through the [`Notification.Style`]( 164 https://developer.android.com/reference/android/app/Notification.Style.html) 165 API class and its subclasses for the presented resource elements. 166* SHOULD present each and every resource element (e.g. 167 icon, title and summary text) defined in the [`Notification.Style`]( 168 https://developer.android.com/reference/android/app/Notification.Style.html) 169 API class and its subclasses. 170 171If device implementations support heads-up notifications: they: 172 173* [C-3-1] MUST use the heads-up notification view and resources 174 as described in the [`Notification.Builder`]( 175 https://developer.android.com/reference/android/app/Notification.Builder.html) 176 API class when heads-up notifications are presented. 177* [C-3-2] MUST display the actions provided through 178 [`Notification.Builder.addAction()`]( 179 https://developer.android.com/reference/android/app/Notification.Builder#addAction%28android.app.Notification.Action%29) 180 together with the notification content without additional user interaction 181 as described in [the SDK]( 182 https://developer.android.com/guide/topics/ui/notifiers/notifications.html#Heads-up). 183 184#### 3.8.3.2\. Notification Listener Service 185 186Android includes the [`NotificationListenerService`]( 187https://developer.android.com/reference/android/service/notification/NotificationListenerService.html) 188APIs that allow apps (once explicitly enabled by the user) to receive a copy of 189all notifications as they are posted or updated. 190 191If device implementations report the feature flag [`android.hardware.ram.normal`](https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_RAM_NORMAL), 192they: 193 194* [C-1-1] MUST correctly and promptly update notifications in their entirety to all 195 such installed and user-enabled listener services, including any and all 196 metadata attached to the Notification object. 197* [C-1-2] MUST respect the [`snoozeNotification()`]( 198 https://developer.android.com/reference/android/service/notification/NotificationListenerService.html#snoozeNotification%28java.lang.String, long%29) 199 API call, and dismiss the notification and make a callback after the snooze 200 duration that is set in the API call. 201 202If device implementations have a user affordance to snooze notifications, they: 203 204* [C-2-1] MUST reflect the snoozed notification status properly 205 through the standard APIs such as 206 [`NotificationListenerService.getSnoozedNotifications()`]( 207 https://developer.android.com/reference/android/service/notification/NotificationListenerService.html#getSnoozedNotifications%28%29). 208* [C-2-2] MUST make this user affordance available to snooze notifications 209 from each installed third-party app's, unless they are from 210 persistent/foreground services. 211 212#### 3.8.3.3\. DND (Do not Disturb) 213 214If device implementations support the DND feature, they: 215 216* [C-1-1] MUST implement an activity that would respond to the intent 217 [ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS]( 218 https://developer.android.com/reference/android/provider/Settings.html#ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS), 219 which for implementations with UI_MODE_TYPE_NORMAL it MUST be an activity 220 where the user can grant or deny the app access to DND policy 221 configurations. 222* [C-1-2] MUST, for when the device implementation has provided a means for the user 223 to grant or deny third-party apps to access the DND policy configuration, 224 display [Automatic DND rules]( 225 https://developer.android.com/reference/android/app/NotificationManager.html#addAutomaticZenRule%28android.app.AutomaticZenRule%29) 226 created by applications alongside the user-created and pre-defined rules. 227* [C-1-3] MUST honor the [`suppressedVisualEffects`](https://developer.android.com/reference/android/app/NotificationManager.Policy.html#suppressedVisualEffects) 228 values passed along the [`NotificationManager.Policy`](https://developer.android.com/reference/android/app/NotificationManager.Policy.html#NotificationManager.Policy%28int, int, int, int%29) 229 and if an app has set any of the SUPPRESSED_EFFECT_SCREEN_OFF or 230 SUPPRESSED_EFFECT_SCREEN_ON flags, it SHOULD indicate to the user that the 231 visual effects are suppressed in the DND settings menu. 232 233### 3.8.4\. Search 234 235Android includes APIs that allow developers to 236[incorporate search](http://developer.android.com/reference/android/app/SearchManager.html) 237into their applications and expose their application’s data into the global 238system search. Generally speaking, this functionality consists of a single, 239system-wide user interface that allows users to enter queries, displays 240suggestions as users type, and displays results. The Android APIs allow 241developers to reuse this interface to provide search within their own apps and 242allow developers to supply results to the common global search user interface. 243 244* Android device implementations SHOULD include global search, a single, shared, 245system-wide search user interface capable of real-time suggestions in response 246to user input. 247 248If device implementations implement the global search interface, they: 249 250* [C-1-1] MUST implement the APIs that allow third-party applications to add 251 suggestions to the search box when it is run in global search mode. 252 253If no third-party applications are installed that make use of the global search: 254 255* The default behavior SHOULD be to display web search engine results and 256 suggestions. 257 258Android also includes the [Assist APIs]( 259https://developer.android.com/reference/android/app/assist/package-summary.html) 260to allow applications to elect how much information of the current context is 261shared with the assistant on the device. 262 263If device implementations support the Assist action, they: 264 265* [C-2-1] MUST indicate clearly to the end user when the context is shared, by 266 either: 267 * Each time the assist app accesses the context, displaying a white 268 light around the edges of the screen that meet or exceed the duration and 269 brightness of the Android Open Source Project implementation. 270 * For the preinstalled assist app, providing a user affordance less 271 than two navigations away from 272 [the default voice input and assistant app settings menu](#3_2_3_5_default_app_settings), 273 and only sharing the context when the assist app is explicitly invoked by 274 the user through a hotword or assist navigation key input. 275* [C-2-2] The designated interaction to launch the assist app as described 276 in [section 7.2.3](#7_2_3_navigation_keys) MUST launch the user-selected 277 assist app, in other words the app that implements `VoiceInteractionService`, 278 or an activity handling the `ACTION_ASSIST` intent. 279 280### 3.8.5\. Alerts and Toasts 281 282Applications can use the [`Toast`]( 283http://developer.android.com/reference/android/widget/Toast.html) 284API to display short non-modal strings to the end user that disappear after a 285brief period of time, and use the [`TYPE_APPLICATION_OVERLAY`]( 286http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#TYPE_APPLICATION_OVERLAY) 287window type API to display alert windows as an overlay over other apps. 288 289If device implementations include a screen or video output, they: 290 291* [C-1-1] MUST provide a user affordance to block an app from displaying alert 292windows that use the [`TYPE_APPLICATION_OVERLAY`]( 293http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#TYPE_APPLICATION_OVERLAY) 294. The AOSP implementation meets this requirement by having controls in the notification shade. 295 296* [C-1-2] MUST honor the Toast API and display Toasts from applications to end users in some highly 297visible manner. 298 299### 3.8.6\. Themes 300 301Android provides “themes” as a mechanism for applications to apply styles across 302an entire Activity or application. 303 304Android includes a “Holo” and "Material" theme family as a set of defined styles 305for application developers to use if they want to match the 306[Holo theme look and feel](http://developer.android.com/guide/topics/ui/themes.html) 307as defined by the Android SDK. 308 309If device implementations include a screen or video output, they: 310 311* [C-1-1] MUST NOT alter any of the [Holo theme attributes]( 312 http://developer.android.com/reference/android/R.style.html) exposed to 313 applications. 314* [C-1-2] MUST support the “Material” theme family and MUST NOT alter any of 315 the [Material theme attributes]( 316 http://developer.android.com/reference/android/R.style.html#Theme_Material) 317 or their assets exposed to applications. 318 319Android also includes a “Device Default” theme family as a set of defined styles 320for application developers to use if they want to match the look and feel of the 321device theme as defined by the device implementer. 322 323* Device implementations MAY modify the [Device Default theme attributes]( 324 http://developer.android.com/reference/android/R.style.html) exposed to 325 applications. 326 327Android supports a variant theme with translucent system bars, which allows 328application developers to fill the area behind the status and navigation bar 329with their app content. To enable a consistent developer experience in this 330configuration, it is important the status bar icon style is maintained across 331different device implementations. 332 333If device implementations include a system status bar, they: 334 335* [C-2-1] MUST use white for system status icons (such as signal strength and 336 battery level) and notifications issued by the system, unless the icon is 337 indicating a problematic status or an app requests a light status bar using 338 the SYSTEM_UI_FLAG_LIGHT_STATUS_BAR flag. 339* [C-2-2] Android device implementations MUST change the color of the system 340 status icons to black (for details, refer to [R.style]( 341 http://developer.android.com/reference/android/R.style.html)) when an app 342 requests a light status bar. 343 344### 3.8.7\. Live Wallpapers 345 346Android defines a component type and corresponding API and lifecycle that allows 347applications to expose one or more 348[“Live Wallpapers”](http://developer.android.com/reference/android/service/wallpaper/WallpaperService.html) 349to the end user. Live wallpapers are animations, patterns, or similar images 350with limited input capabilities that display as a wallpaper, behind other 351applications. 352 353Hardware is considered capable of reliably running live wallpapers if it can run 354all live wallpapers, with no limitations on functionality, at a reasonable frame 355rate with no adverse effects on other applications. If limitations in the 356hardware cause wallpapers and/or applications to crash, malfunction, consume 357excessive CPU or battery power, or run at unacceptably low frame rates, the 358hardware is considered incapable of running live wallpaper. As an example, some 359live wallpapers may use an OpenGL 2.0 or 3.x context to render their content. 360Live wallpaper will not run reliably on hardware that does not support multiple 361OpenGL contexts because the live wallpaper use of an OpenGL context may conflict 362with other applications that also use an OpenGL context. 363 364* Device implementations capable of running live wallpapers reliably as described 365above SHOULD implement live wallpapers. 366 367If device implementations implement live wallpapers, they: 368 369* [C-1-1] MUST report the platform feature flag android.software.live_wallpaper. 370 371### 3.8.8\. Activity Switching 372 373The upstream Android source code includes the 374[overview screen](https://developer.android.com/guide/components/activities/recents.html), a 375system-level user interface for task switching and displaying recently accessed 376activities and tasks using a thumbnail image of the application’s graphical 377state at the moment the user last left the application. 378 379Device implementations 380including the recents function navigation key as detailed in 381[section 7.2.3](#7_2_3_navigation_keys) MAY alter the interface. 382 383If device implementations including the recents function navigation key as detailed in 384[section 7.2.3](#7_2_3_navigation_keys) alter the interface, they: 385 386* [C-1-1] MUST support at least up to 7 displayed activities. 387* SHOULD at least display the title of 4 activities at a time. 388* [C-1-2] MUST implement the [screen pinning behavior](http://developer.android.com/about/versions/android-5.0.html#ScreenPinning) 389 and provide the user with a settings menu to toggle the feature. 390* SHOULD display highlight color, icon, screen title in recents. 391* SHOULD display a closing affordance ("x") but MAY delay this until user interacts with screens. 392* SHOULD implement a shortcut to switch easily to the previous activity. 393* SHOULD trigger the fast-switch action between the two most recently used 394 apps, when the recents function key is tapped twice. 395* SHOULD trigger the split-screen multiwindow-mode, if supported, when the 396 recents functions key is long pressed. 397* MAY display affiliated recents as a group that moves together. 398* [SR] Are STRONGLY RECOMMENDED to use the upstream Android user 399interface (or a similar thumbnail-based interface) for the overview screen. 400 401### 3.8.9\. Input Management 402 403Android includes support for 404[Input Management](http://developer.android.com/guide/topics/text/creating-input-method.html) 405and support for third-party input method editors. 406 407If device implementations allow users to use third-party input methods on the 408device, they: 409 410* [C-1-1] MUST declare the platform feature android.software.input_methods and 411 support IME APIs as defined in the Android SDK documentation. 412* [C-1-2] MUST provide a user-accessible mechanism to add and configure 413 third-party input methods in response to the 414 android.settings.INPUT_METHOD_SETTINGS intent. 415 416If device implementations declare the [`android.software.autofill`]( 417https://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_AUTOFILL) 418feature flag, they: 419 420* [C-2-1] MUST fully implement the [`AutofillService`]( 421https://developer.android.com/reference/android/service/autofill/AutofillService.html) 422and [`AutofillManager`]( 423https://developer.android.com/reference/android/view/autofill/AutofillManager.html) 424APIs and honor the [`android.settings.REQUEST_SET_AUTOFILL_SERVICE`]( 425https://developer.android.com/reference/android/provider/Settings.html#ACTION_REQUEST_SET_AUTOFILL_SERVICE) 426intent to show a default app settings menu to enable and disable autofill and 427change the default autofill service for the user. 428 429 430### 3.8.10\. Lock Screen Media Control 431 432The Remote Control Client API is deprecated from Android 5.0 in favor of the 433[Media Notification Template](http://developer.android.com/reference/android/app/Notification.MediaStyle.html) 434that allows media applications to integrate with playback controls that are 435displayed on the lock screen. 436 437 438### 3.8.11\. Screen savers (previously Dreams) 439 440Android includes support for [interactive screen savers](http://developer.android.com/reference/android/service/dreams/DreamService.html), 441previously referred to as Dreams. Screen savers allow users to interact with 442applications when a device connected to a power source is idle or docked in a 443desk dock. Android Watch devices MAY implement screen savers, but other types 444of device implementations SHOULD include support for screen savers and provide 445a settings option for users to configure screen savers in response to the 446`android.settings.DREAM_SETTINGS` intent. 447 448### 3.8.12\. Location 449 450If device implementations include a hardware sensor (e.g. GPS) that is capable 451of providing the location coordinates, they 452 453* [C-1-2] MUST display the [current status of location]( 454 https://developer.android.com/reference/android/location/LocationManager.html#isLocationEnabled%28%29) 455 in the Location menu within Settings. 456* [C-1-3] MUST NOT display [location modes]( 457 https://developer.android.com/reference/android/provider/Settings.Secure.html#LOCATION_MODE) 458 in the Location menu within Settings. 459 460### 3.8.13\. Unicode and Font 461 462Android includes support for the emoji characters defined in 463[Unicode 10.0](http://www.unicode.org/versions/Unicode10.0.0/). 464 465If device implementations include a screen or video output, they: 466 467* [C-1-1] MUST be capable of rendering these emoji characters in color glyph. 468* [C-1-2] MUST include support for: 469 * Roboto 2 font with different weights—sans-serif-thin, sans-serif-light, 470 sans-serif-medium, sans-serif-black, sans-serif-condensed, 471 sans-serif-condensed-light for the languages available on the device. 472 * Full Unicode 7.0 coverage of Latin, Greek, and Cyrillic, including the 473 Latin Extended A, B, C, and D ranges, and all glyphs in the currency 474 symbols block of Unicode 7.0. 475* SHOULD support the skin tone and diverse family emojis as specified in the 476 [Unicode Technical Report #51](http://unicode.org/reports/tr51). 477 478 479If device implementations include an IME, they: 480 481* SHOULD provide an input method to the user for these emoji characters. 482 483Android includes support to render Myanmar fonts. Myanmar has several 484non-Unicode compliant fonts, commonly known as “Zawgyi,” for rendering Myanmar 485languages. 486 487If device implementations include support for Burmese, they: 488 489 * [C-2-1] MUST render text with Unicode compliant font as default; 490 non-Unicode compliant font MUST NOT be set as default font unless the user 491 chooses it in the language picker. 492 * [C-2-2] MUST support a Unicode font and a non-Unicode compliant font if a 493 non-Unicode compliant font is supported on the device. Non-Unicode 494 compliant font MUST NOT remove or overwrite the Unicode font. 495 * [C-2-3] MUST render text with non-Unicode compliant font ONLY IF a 496 language code with [script code Qaag]( 497 http://unicode.org/reports/tr35/#unicode_script_subtag_validity) is 498 specified (e.g. my-Qaag). No other ISO language or region codes (whether 499 assigned, unassigned, or reserved) can be used to refer to non-Unicode 500 compliant font for Myanmar. App developers and web page authors can 501 specify my-Qaag as the designated language code as they would for any 502 other language. 503 504### 3.8.14\. Multi-windows 505 506If device implementations have the capability to display multiple activities at 507the same time, they: 508 509* [C-1-1] MUST implement such multi-window mode(s) in accordance with the 510 application behaviors and APIs described in the Android SDK 511 [multi-window mode support documentation]( 512 https://developer.android.com/guide/topics/ui/multi-window.html) and meet 513 the following requirements: 514* [C-1-2] MUST honor [`android:resizeableActivity`]( 515 https://developer.android.com/reference/android/R.attr.html#resizeableActivity) 516 that is set by an app in the `AndroidManifest.xml` file as described in 517 [this SDK](https://developer.android.com/guide/topics/manifest/application-element#resizeableActivity). 518* [C-1-3] MUST NOT offer split-screen or freeform mode if 519 the screen height is less than 440 dp and the screen width is less than 440 520 dp. 521* [C-1-4] An activity MUST NOT be resized to a size smaller than 220dp in 522 multi-window modes other than Picture-in-Picture. 523* Device implementations with screen size `xlarge` SHOULD support freeform 524 mode. 525 526If device implementations support multi-window mode(s), and the split screen 527mode, they: 528 529* [C-2-1] MUST preload a [resizeable]( 530 https://developer.android.com/guide/topics/ui/multi-window.html#configuring) 531 launcher as the default. 532* [C-2-2] MUST crop the docked activity of a split-screen multi-window but 533 SHOULD show some content of it, if the Launcher app is the focused window. 534* [C-2-3] MUST honor the declared [`AndroidManifestLayout_minWidth`]( 535 https://developer.android.com/reference/android/R.styleable.html#AndroidManifestLayout_minWidth) 536 and [`AndroidManifestLayout_minHeight`]( 537 https://developer.android.com/reference/android/R.styleable.html#AndroidManifestLayout_minHeight) 538 values of the third-party launcher application and not override these values 539 in the course of showing some content of the docked activity. 540 541 542If device implementations support multi-window mode(s) and Picture-in-Picture 543multi-window mode, they: 544 545* [C-3-1] MUST launch activities in picture-in-picture multi-window mode 546 when the app is: 547 * Targeting API level 26 or higher and declares 548 [`android:supportsPictureInPicture`](https://developer.android.com/reference/android/R.attr.html#supportsPictureInPicture) 549 * Targeting API level 25 or lower and declares both [`android:resizeableActivity`](https://developer.android.com/reference/android/R.attr.html#resizeableActivity) 550 and [`android:supportsPictureInPicture`](https://developer.android.com/reference/android/R.attr.html#supportsPictureInPicture). 551* [C-3-2] MUST expose the actions in their SystemUI as 552 specified by the current PIP activity through the [`setActions()`]( 553 https://developer.android.com/reference/android/app/PictureInPictureParams.Builder.html#setActions%28java.util.List<android.app.RemoteAction>%29) 554 API. 555* [C-3-3] MUST support aspect ratios greater than or equal to 556 1:2.39 and less than or equal to 2.39:1, as specified by the PIP activity through 557 the [`setAspectRatio()`]( 558 https://developer.android.com/reference/android/app/PictureInPictureParams.Builder.html#setAspectRatio%28android.util.Rational%29) 559 API. 560* [C-3-4] MUST use [`KeyEvent.KEYCODE_WINDOW`]( 561 https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_WINDOW) 562 to control the PIP window; if PIP mode is not implemented, the key MUST be 563 available to the foreground activity. 564* [C-3-5] MUST provide a user affordance to block an app from displaying in 565 PIP mode; the AOSP implementation meets this requirement by having 566 controls in the notification shade. 567* [C-3-6] MUST allocate minimum width and height of 108 dp for the PIP window 568 and minimum width of 240 dp and height of 135 dp for the PIP window when the 569 `Configuration.uiMode` is configured as [`UI_MODE_TYPE_TELEVISION`]( 570 https://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_TELEVISION). 571 572 573### 3.8.15\. Display Cutout 574 575Android supports a Display Cutout as described 576in the SDK document. The [`DisplayCutout`]( 577https://developer.android.com/reference/android/view/DisplayCutout) API defines 578an area on the edge of the display that is not functional for displaying 579content. 580 581If device implementations include display cutout(s), they: 582 583* [C-1-1] MUST only have cutout(s) on the short edge(s) of the device. 584Conversely, if the device's aspect ratio is 1.0(1:1), they MUST NOT have 585cutout(s). 586* [C-1-2] MUST NOT have more than one cutout per edge. 587* [C-1-3] MUST honor the display cutout flags set by the app through the 588[`WindowManager.LayoutParams`]( 589https://developer.android.com/reference/android/view/WindowManager.LayoutParams) 590API as described in the SDK. 591* [C-1-4] MUST report correct values for all cutout metrics defined in the 592[`DisplayCutout`]( 593https://developer.android.com/reference/android/view/DisplayCutout) API. 594