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:
android.software.home_screen
.AdaptiveIconDrawable
object when the third-party application use <adaptive-icon>
tag to provide their icon, and the PackageManager
methods to retrieve icons are called.If device implementations include a default launcher that supports in-app pinning of shortcuts, they:
true
for ShortcutManager.isRequestPinShortcutSupported()
.ShortcutManager.requestPinShortcut()
]( https://developer.android.com/reference/android/content/pm/ShortcutManager.html#requestPinShortcut%28android.content.pm.ShortcutInfo, android.content.IntentSender%29) API method.Conversely, if device implementations do not support in-app pinning of shortcuts, they:
false
for ShortcutManager.isRequestPinShortcutSupported()
.If device implementations implement a default launcher that provides quick access to the additional shortcuts provided by third-party apps through the ShortcutManager API, they:
ShortcutManager
API class.If device implementations include a default launcher app that shows badges for the app icons, they:
NotificationChannel.setShowBadge()
API method. In other words, show a visual affordance associated with the app icon if the value is set as true
, and do not show any app icon badging scheme when all of the app's notification channels have set the value as false
.Notification.Builder.setNumber()
and the Notification.Builder.setBadgeIconType()
API.Android supports third-party app widgets by defining a component type and corresponding API and lifecycle that allows applications to expose an “AppWidget” to the end user.
If device implementations support third-party app widgets, they:
android.software.app_widgets
.If device implementations support third-party app widgets and in-app pinning of shortcuts, they:
true
for AppWidgetManager.html.isRequestPinAppWidgetSupported()
.AppWidgetManager.requestPinAppWidget()
]( https://developer.android.com/reference/android/appwidget/AppWidgetManager.html#requestPinAppWidget%28android.content.ComponentName,android.os.Bundle, android.app.PendingIntent%29) API method.Android includes Notification
and NotificationManager
APIs that allow third-party app developers to notify users of notable events and attract users' attention using the hardware components (e.g. sound, vibration and light) and software features (e.g. notification shade, system bar) of the device.
If device implementations allow third-party apps to notify users of notable events, they:
Android 11 introduces support for conversation notifications, which are notifications that use MessagingStyle and provides a published People Shortcut ID.
Device implementations:
conversation notifications
ahead of non conversation notifications with the exception of ongoing foreground service notifications and importance:high
notifications.If device implementations support conversation notifications
and the app provides the required data for bubbles
, they:
If device implementations support rich notifications, they:
Notification.Style
API class and its subclasses for the presented resource elements.Notification.Style
API class and its subclasses.If device implementations support heads-up notifications: they:
Notification.Builder
API class when heads-up notifications are presented.Notification.Builder.addAction()
together with the notification content without additional user interaction as described in the SDK.Android includes the NotificationListenerService
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:
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:
NotificationListenerService.getSnoozedNotifications()
.If device implementations support the DND feature, they:
suppressedVisualEffects
values passed along the [NotificationManager.Policy
](https://developer.android.com/reference/android/app/NotificationManager.Policy.html#NotificationManager.Policy%28int, int, int, int%29) and if an app has set any of the SUPPRESSED_EFFECT_SCREEN_OFF or SUPPRESSED_EFFECT_SCREEN_ON flags, it SHOULD indicate to the user that the visual effects are suppressed in the DND settings menu.Android includes APIs that allow developers to incorporate search into their applications and expose their application’s data into the global system search. Generally speaking, this functionality consists of a single, system-wide user interface that allows users to enter queries, displays suggestions as users type, and displays results. The Android APIs allow developers to reuse this interface to provide search within their own apps and allow developers to supply results to the common global search user interface.
If device implementations implement the global search interface, they:
If no third-party applications are installed that make use of the global search:
Android also includes the Assist APIs to allow applications to elect how much information of the current context is shared with the assistant on the device.
If device implementations support the Assist action, they:
VoiceInteractionService
, or an activity handling the ACTION_ASSIST
intent.Applications can use the Toast
API to display short non-modal strings to the end user that disappear after a brief period of time, and use the TYPE_APPLICATION_OVERLAY
window type API to display alert windows as an overlay over other apps.
If device implementations include a screen or video output, they:
[C-1-1] MUST provide a user affordance to block an app from displaying alert windows that use the TYPE_APPLICATION_OVERLAY
. The AOSP implementation meets this requirement by having controls in the notification shade.
[C-1-2] MUST honor the Toast API and display Toasts from applications to end users in some highly visible manner.
Android provides “themes” as a mechanism for applications to apply styles across an entire Activity or application.
Android includes a “Holo” and “Material” theme family as a set of defined styles for application developers to use if they want to match the Holo theme look and feel as defined by the Android SDK.
If device implementations include a screen or video output, they:
Android also includes a “Device Default” theme family as a set of defined styles for application developers to use if they want to match the look and feel of the device theme as defined by the device implementer.
Android supports a variant theme with translucent system bars, which allows application developers to fill the area behind the status and navigation bar with their app content. To enable a consistent developer experience in this configuration, it is important the status bar icon style is maintained across different device implementations.
If device implementations include a system status bar, they:
Android defines a component type and corresponding API and lifecycle that allows applications to expose one or more “Live Wallpapers” to the end user. Live wallpapers are animations, patterns, or similar images with limited input capabilities that display as a wallpaper, behind other applications.
Hardware is considered capable of reliably running live wallpapers if it can run all live wallpapers, with no limitations on functionality, at a reasonable frame rate with no adverse effects on other applications. If limitations in the hardware cause wallpapers and/or applications to crash, malfunction, consume excessive CPU or battery power, or run at unacceptably low frame rates, the hardware is considered incapable of running live wallpaper. As an example, some live wallpapers may use an OpenGL 2.0 or 3.x context to render their content. Live wallpaper will not run reliably on hardware that does not support multiple OpenGL contexts because the live wallpaper use of an OpenGL context may conflict with other applications that also use an OpenGL context.
If device implementations implement live wallpapers, they:
The upstream Android source code includes the overview screen, a system-level user interface for task switching and displaying recently accessed activities and tasks using a thumbnail image of the application’s graphical state at the moment the user last left the application.
Device implementations including the recents function navigation key as detailed in section 7.2.3 MAY alter the interface.
If device implementations including the recents function navigation key as detailed in section 7.2.3 alter the interface, they:
Android includes support for Input Management and support for third-party input method editors.
If device implementations allow users to use third-party input methods on the device, they:
The Remote Control Client API is deprecated from Android 5.0 in favor of the Media Notification Template that allows media applications to integrate with playback controls that are displayed on the lock screen.
See section 3.2.3.5 for settings intent to congfigure screen savers.
If device implementations include a hardware sensor (e.g. GPS) that is capable of providing the location coordinates, they
Android includes support for the emoji characters defined in Unicode 10.0.
If device implementations include a screen or video output, they:
If device implementations include an IME, they:
Android includes support to render Myanmar fonts. Myanmar has several non-Unicode compliant fonts, commonly known as “Zawgyi,” for rendering Myanmar languages.
If device implementations include support for Burmese, they:
* [C-2-1] MUST render text with Unicode compliant font as default; non-Unicode compliant font MUST NOT be set as default font unless the user chooses it in the language picker. * [C-2-2] MUST support a Unicode font and a non-Unicode compliant font if a non-Unicode compliant font is supported on the device. Non-Unicode compliant font MUST NOT remove or overwrite the Unicode font. * [C-2-3] MUST render text with non-Unicode compliant font ONLY IF a language code with [script code Qaag]( http://unicode.org/reports/tr35/#unicode_script_subtag_validity) is specified (e.g. my-Qaag). No other ISO language or region codes (whether assigned, unassigned, or reserved) can be used to refer to non-Unicode compliant font for Myanmar. App developers and web page authors can specify my-Qaag as the designated language code as they would for any other language.
If device implementations have the capability to display multiple activities at the same time, they:
android:resizeableActivity
that is set by an app in the AndroidManifest.xml
file as described in this SDK.xlarge
SHOULD support freeform mode.If device implementations support multi-window mode(s), and the split screen mode, they:
AndroidManifestLayout_minWidth
and AndroidManifestLayout_minHeight
values of the third-party launcher application and not override these values in the course of showing some content of the docked activity.If device implementations support multi-window mode(s) and Picture-in-Picture multi-window mode, they:
[C-3-1] MUST launch activities in picture-in-picture multi-window mode when the app is: * Targeting API level 26 or higher and declares android:supportsPictureInPicture
* Targeting API level 25 or lower and declares both android:resizeableActivity
and android:supportsPictureInPicture
.
[C-3-2] MUST expose the actions in their SystemUI as specified by the current PIP activity through the setActions()
API.
[C-3-3] MUST support aspect ratios greater than or equal to 1:2.39 and less than or equal to 2.39:1, as specified by the PIP activity through the setAspectRatio()
API.
[C-3-4] MUST use KeyEvent.KEYCODE_WINDOW
to control the PIP window; if PIP mode is not implemented, the key MUST be available to the foreground activity.
[C-3-5] MUST provide a user affordance to block an app from displaying in PIP mode; the AOSP implementation meets this requirement by having controls in the notification shade.
[C-3-6] MUST allocate the following minimum width and height for the PIP window when an application does not declare any value for AndroidManifestLayout_minWidth
and AndroidManifestLayout_minHeight
:
UI_MODE_TYPE_TELEVISION
MUST allocate a minimum width and height of 108 dp.UI_MODE_TYPE_TELEVISION
MUST allocate a minimum width of 240 dp and a minimum height of 135 dp.Android supports a Display Cutout as described in the SDK document. The DisplayCutout
API defines an area on the edge of the display that may not be functional for an application due to a display cutout or curved display on the edge(s).
If device implementations include display cutout(s), they:
WindowManager.LayoutParams
API as described in the SDK.DisplayCutout
API.Android includes ControlsProviderService
and Control
APIs to allow third-party applications to publish device controls for quick status and action for users.
See Section 2_2_3 for device-specific requirements.