Material You-Design

Ab Android 12 liegt der Fokus von Material You auf Ausdruck und Fluidität im Android-Betriebssystem. Ziel ist es, Nutzern zu helfen, eine einheitliche, auf ihre Bedürfnisse zugeschnittene Umgebung zu schaffen und zu nutzen. Als Android-Partner empfehlen wir Ihnen, das Material You-Design in den folgenden Bereichen in Ihre Android-Geräte zu integrieren:

  • Dynamische Farben
  • Bewegung
  • Widgets

Dynamische Farben

Dynamische Farben sind das Herzstück des Material You-Designs und ein wichtiger Bestandteil der mehrjährigen Strategie von Android, Nutzern eine einfachere und umfassendere Anpassung zu ermöglichen, wie es auf keinem anderen Gerät möglich ist. Material You bietet:

  • Nutzern und Entwicklern eine einheitliche, umfassende Geschichte der Personalisierung auf jedem Android-Gerät zu bieten.

  • Android-OEMs haben die Möglichkeit, weiterhin Innovationen bei der System-UI und den eigenen Apps zu entwickeln, die mit ihrer Hardware und den Farben, der Marke und dem Formfaktor übereinstimmen.

Wenn Sie dynamische Farben nutzen möchten, müssen Sie die Android 12-Funktion zum Extrahieren von Material You-Farben als wichtigen Bestandteil Ihres Softwareangebots für Nutzer verwenden. Verwenden Sie auf dem Gerät die in AOSP enthaltene Logik zur Farbauswahl, insbesondere die Logik, die eine einzelne Hintergrund- oder Design-Quellfarbe als Eingabe verwendet und sie über 65 Farb-APIs ausgibt. Informationen zu den Anforderungen an dynamische Farben finden Sie unter Dynamische Farben verwenden.

Der vollständige dynamische Farbablauf umfasst vier Schritte, wie unten dargestellt:

Material You-Farbverlauf

Abbildung 1: Dynamischer Farbfluss von Material You

  1. Der Nutzer ändert das Hintergrundbild oder das Design über die OEM-Auswahl.

  2. Der Nutzer wählt eine der folgenden Optionen aus:

    • Gerätedesign Wenn diese Option ausgewählt ist, wählt Android automatisch eine einzelne Quellfarbe aus, die den Anforderungen entspricht.

    • Neuer Hintergrund + neues Design Wenn diese Option ausgewählt ist, wählt die AOSP-Logik automatisch eine einzelne Quellfarbe aus dem ausgewählten Hintergrund aus.

  3. AOSP erweitert die Einzelfarbenquelle gemäß der AOSP-Logik in fünf Tonwertpaletten mit jeweils 13 Tonwertfarbvarianten, die dann die 65 Farbattribute füllen.

  4. Die Benutzeroberfläche der App verwendet die 65 Farbattribute auf eine Weise, die im gesamten Android-App-Ökosystem einheitlich ist. Wir empfehlen, für die System-UI des Geräts und OEM-spezifische Apps dieselbe Farbpalette zu verwenden.

Android 12-Patches

Um die End-to-End-Logik für die Extraktion von Hintergrundbildfarben zu erhalten und das Gerät so zu konfigurieren, dass die 65-Farben-APIs auf eine Weise ausgefüllt werden, die mit dem Ökosystem konsistent ist, fügen Sie die folgenden Patches in Ihre Android 12-Implementierung ein:

Benutzerdefinierte Farben in der Designauswahl angeben

Wenn Sie die AOSP ThemePicker App verwenden, wird der Farbbereich in der WallpaperPicker App angezeigt, wenn beide der folgenden Bedingungen erfüllt sind:

  • flag_monet am frameworks/base/packages/SystemUI/res/values/flags.xml ist true.
  • Eine Stub-APK des Systems mit dem Paketnamen wird in themes_stub_package in der Datei packages/apps/ThemePicker/res/values/override.xml definiert.

Stub-APK-Format

Eine Beispielversion dieses APKs finden Sie unter packages/apps/ThemePicker/themes.

Dieses APK sollte nur Ressourcen mit den verfügbaren Grundfarben und ihren Namen enthalten.

Der Stub sollte eine XML-Datei unter res/xml im folgenden Format enthalten:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="color_bundles">
        <item>color1</item>
        <item>color2</item>
        <item>color3</item>
        <item>color4</item>
    </array>

    <string name="bundle_name_color1">Blue</string>
    <string name="bundle_name_color2">Red</string>
    <string name="bundle_name_color3">Yellow</string>
    <string name="bundle_name_color4">Green</string>

</resources>

In dieser Datei hat jedes item innerhalb von color_bundles einen eindeutigen Namen, sofern die Strings unten bundle_name_item heißen.

Für jede Farbe sollte ein bundle_name_item-String mit einem beschreibenden Namen vorhanden sein. Sie können übersetzt werden, indem Sie die entsprechenden übersetzten Strings in die res/values-language code-Verzeichnisse einfügen.

Die tatsächlichen Farbwerte können entweder in derselben XML-Datei oder in einer separaten XML-Datei für Ressourcen im folgenden Format angegeben werden:

<resources>
    <color name="color_primary_color1">#0000FF</color>
    <color name="color_secondary_color1">#0000FF</color>

    <color name="color_primary_color2">#ff0000</color>
    <color name="color_secondary_color2">#ff0000</color>

    <color name="color_primary_color3">#ffff00</color>
    <color name="color_secondary_color3">#ffff00</color>

    <color name="color_primary_color4">#00ff00</color>
    <color name="color_secondary_color4">#00ff00</color>
</resources>

Für jeden Artikel im Array mit Farbpaketen muss es einen Eintrag für color_primary_item und color_secondary_item geben. Beide Farben sollten dieselbe Farbe sein. Die Werte für diese color-Einträge sind die tatsächlichen Farbcodes für jede Farbe, die im Bereich Grundfarbe angezeigt werden soll.

Schritt 1: Nutzer-Theming erstellen

In der Designauswahl können Nutzer die neuen Material You-Personalisierungsfunktionen nutzen und möglicherweise zwischen Farboptionen oder Voreinstellungen wählen. Je nach Produkt und Nutzerdemografie können Sie Nutzern mit einer Designauswahl oder einer Hintergrundauswahl mehr Personalisierungs- und Farboptionen bieten.

  • Wenn Sie eine Hintergrundauswahl verwenden, ist die Extraktion der Hintergrundfarbe standardmäßig aktiviert. Sie können die Auswahl jedoch anpassen, um dem Nutzer mehr Optionen zu bieten.

Schritt 2: Hintergrundfarbe in eine Quellfarbe extrahieren

Um die Farbauswahl für das Hintergrundbild zu aktivieren, müssen Sie die oben aufgeführten Android 12-Patches cherrypicken. In einer zukünftigen AOSP-Version wird diese Funktion standardmäßig aktiviert sein. Die AOSP-Logik, die die Hintergrundbild-Extraktion auslöst, beginnt bei frameworks/base/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java auf ThemeOverlayController#mOnColorsChangedListener über WallpaperManager#onWallpaperColorsChanged. Wir empfehlen, die unveränderte AOSP-Logik zu verwenden, um eine einheitliche Entwicklung zu gewährleisten.

Standardmäßig wird die Farbe mit der höchsten Häufigkeit ausgewählt, die sich für die Verwendung eignet. Wenn Sie andere vom Algorithmus zurückgegebene Quellfarben nutzen und Nutzern diese Farben in der Designauswahl präsentieren möchten, verwenden Sie ColorScheme#getSeedColors(wallpaperColors: WallpaperColors).

Damit eine Quellfarbe verwendet werden kann (unabhängig davon, ob sie aus dem Hintergrundbild oder einer vom Nutzer ausgewählten Voreinstellung extrahiert wurde), muss sie einen minimalen CAM16-Chroma-Wert von 5 haben. So wird sichergestellt, dass die Quellfarbe bei der Umwandlung von einer einzelnen Farbe in 65 Tonfarben nicht durch subtile dunkle Töne beeinflusst wird und weiterhin repräsentativ für die Nutzerauswahl ist. Verwenden Sie Cam#fromInt oder Cam#getInt, um Farben in CAM16 zu lesen und zu ändern.

Nicht dynamische Farbpalette verwenden Auf Geräten, die das Extrahieren von Hintergrundfarben nicht unterstützen, können Sie trotzdem dafür sorgen, dass Google-Apps und Drittanbieter-Apps, die dynamische Farben unterstützen, gut aussehen. Gehen Sie dazu so vor:

  • Verwenden Sie die Standard-Material-Palette, indem Sie flag_monet auf frameworks/base/packages/SystemUI/res/values/flags.xml deaktivieren.
  • Achten Sie darauf, dass Nutzer ihr Betriebssystem weiterhin mit einer voreingestellten Designauswahl personalisieren können.

Schritt 3: Quellfarbe in Farb-APIs erweitern

Anhand der im vorherigen Schritt abgeleiteten Einzelfarbenquelle generiert Android fünf einzigartige Tonwertpaletten (Akzent 1–3, Neutral 1–2). Jede Palette enthält 13 Farben und jede Farbe enthält unterschiedliche Luminanzwerte (0 bis 1.000), insgesamt also 65 Farben. Die in den Android 12-Patches bereitgestellte Logik implementiert diese Farberweiterung korrekt. Die unten angegebenen Details beschreiben die Implementierung.

Aus Gründen der Einheitlichkeit für Entwickler müssen die fünf Tonpaletten (accent1, accent2, accent3, neutral1, neutral2) und die entsprechenden 13 Farben auf der einzelnen Quellfarbe mit den entsprechenden Änderungen an den CAM16-Chroma- und ‑Farbtonwerten basieren, wie unten beschrieben:

  • system_accent1

    • Chroma: Verwenden Sie „40“ für Farbvarianten, die mit 0, 10, 50 und 100 enden, andernfalls „48“.
    • Farbton: wie Quelle
  • system_accent2

    • Chroma: „16“ verwenden
    • Farbton: wie Quelle
  • system_accent3

    • Chroma: „32“ verwenden
    • Farbton: um 60 Grad im Uhrzeigersinn drehen
  • system_neutral1

    • Chroma: Verwenden Sie „4“.
    • Farbton: wie Quelle
  • system_neutral2

    • Chroma: Verwenden Sie „8“.
    • Farbton: wie Quelle

Das CTS enthält Tests zum Validieren von API-Aufrufen für Luminanz und Farbton. Verwenden Sie zum Ausführen atest SystemPalette.

Schritt 4: Dynamische Farben in Apps und der System-UI verwenden

Nachdem dynamische Farben auf einem Gerät festgelegt wurden, halten sich Apps an die Material-Richtlinien, um die Farben zu verwenden. Die Material-Richtlinien werden bis zum 26. Oktober 2021 auf material.io veröffentlicht, damit sie in Drittanbieter-Apps verwendet werden können. Für die System-UI und eigene Apps empfehlen wir dringend, dynamische Farben in die gesamte Benutzeroberfläche zu integrieren. Das sollte so geschehen, dass es zu Ihrer Hardware und Marke passt und Ihnen hilft, Ihre Geräte zu differenzieren.

Allgemeine Informationen zu dynamischen Farben finden Sie hier:

  • Verwenden Sie Akzentfarben für Vordergrundelemente in Apps und der System-UI:

    @android:color/system_accent1_0  1000 // most-used foreground color group
    @android:color/system_accent2_0  1000 // alternate accent, used for surfaces
    @android:color/system_accent3_0  1000 // playful, analogous color
    
  • Verwende neutrale Farben für Hintergrundelemente in Apps und der System-UI:

    @android:color/system_neutral1_0  1000 // most-used background color group
    @android:color/system_neutral2_0  1000 // used for higher-elevation surfaces
    

Weitere Informationen dazu, wie Material You Farben zuordnet und wie APIs in SysUI verwendet werden, finden Sie unter Zusätzliche Ressourcen.

Schritt 5: Dynamische Farboptionen in Ihre AOSP-Implementierung von „Hintergrundbild auswählen“ einfügen

Für Android 13 und höher entwickeln

Ab Android 13 ist android.theme.customization.accent_color nicht mehr verfügbar. Ein neues Attribut android.theme.customization.theme_style wurde hinzugefügt, um verschiedene Farbvarianten zu unterstützen. Derzeit gibt es in der Codebasis vier Varianten:

TONAL_SPOT = Default Material You theme since Android S.
VIBRANT = Theme where accent 2 and 3 are analogous to accent 1.
EXPRESSIVE = Highly chromatic theme.
SPRITZ = Desaturated theme, almost grayscale.

Diese werden an Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES gesendet, wie im folgenden JSON-Code zu sehen ist:

{
    "android.theme.customization.system_palette":"B1611C",
    "android.theme.customization.theme_style":"EXPRESSIVE"
}

Für Android 12 und niedriger entwickeln

Wenn Sie eine benutzerdefinierte Themenauswahl verwenden, muss das Gerät eine gültige Quellfarbe an Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES senden. Dazu muss eine JSON-Datei im folgenden Format bereitgestellt werden (wobei 746BC1 eine Beispiel-Quellfarbe ist):

{
      "android.theme.customization.system_palette":"746BC1",
      "android.theme.customization.accent_color":"746BC1"
}

Dadurch wird die Extraktion der Hintergrundfarbe (Schritt 2) übersprungen und die angegebene Quellfarbe wird direkt in 65 Farbattribute erweitert (Schritt 3).

Schritt 6: Supportticket einreichen

Neben der Systemintegration müssen Sie ein Ticket einreichen und uns Ihren Markennamen (Build.MANUFACTURER) mitteilen. Da die meisten Drittanbieter-Apps die Material Components for Android verwenden, um dynamische Farben anzuzeigen, verwenden wir eine fest codierte Zulassungsliste, um zu ermitteln, auf welchen Geräten die Funktion Dynamische Farbtonpaletten integriert ist.

Bewegung

Flüssige Bewegungen lassen Geräte modern und hochwertig wirken. Um das Vertrauen und die Zufriedenheit von Entwicklern zu stärken und aufrechtzuerhalten, sind Overscroll und Ripple zwei wichtige Aspekte von flüssigen Bewegungen, die konsistent aussehen und sich konsistent anfühlen müssen.

Overscroll im Betriebssystem verwenden

Android 12 bietet eine reaktionsschnellere, dynamische Overscroll-Bewegung in Form einer Ansichtsstreckung, die angezeigt wird, wenn der Nutzer versucht, über den Rand einer Liste hinaus zu scrollen. Ein Beispiel ist unten aufgeführt:

„Material You“-Overscroll

Abbildung 2: Overscroll-Effekt in Android 12, wie in den Einstellungen zu sehen

Damit Entwickler einheitlich arbeiten können, sollte der Overscroll-Effekt auf Ihren Geräten in etwa so aussehen:

  • Auf Geräten, die „true“ für ActivityManager.isHighEndGfx() zurückgeben, ist der Overscroll-Effekt eine nicht lineare Dehnung des Bildschirms (siehe oben).

  • Auf Geräten mit geringerer Leistung wird der Dehnungseffekt auf eine lineare Dehnung vereinfacht, um die Systemlast zu reduzieren.

Overscroll in Google-Apps verwenden

Wenn Sie benutzerdefinierte Ansichten verwenden, müssen Sie möglicherweise einige Apps und die System-UI anpassen, die den Dehnungseffekt nutzen.

  • Wenn Sie Stretch-Overscroll unterstützen möchten, führen Sie ein Upgrade auf die neuesten Bibliotheken durch:

    • androidx.recyclerview:recyclerview:1.3.0-alpha01 für RecyclerView
    • androidx.core:core:1.7.0-alpha01 für NestedScrollView und EdgeEffectCompat
    • androidx.viewpager:viewpager:1.1-alpha01 für ViewPager
  • Bei benutzerdefinierten Layouts, die EdgeEffect verwenden, sollten Sie die folgenden UX-Änderungen berücksichtigen:

    • Bei Stretch-Overscroll sollten Nutzer nicht mit den Inhalten des Layouts interagieren, während es gedehnt wird. Nutzer sollten nur die Dehnung selbst bearbeiten können und beispielsweise nicht in der Lage sein, eine Schaltfläche im Inhalt zu drücken.

    • Wenn Nutzer den Inhalt während der EdgeEffect-Animation berühren, sollten sie die Animation „einfangen“ und die Möglichkeit haben, die Dehnung zu manipulieren. Der aktuelle Pull-Wert ist unter EdgeEffectCompat.getDistance() verfügbar.

    • Wenn Sie den Pull-Wert bearbeiten und den verbrauchten Betrag zurückgeben möchten, verwenden Sie onPullDistance(). So können Entwickler den Übergang vom Dehnen zum Scrollen reibungslos gestalten, wenn der Finger den Inhalt über die Startposition hinaus dehnt.

    • Wenn Sie mit verschachteltem Scrollen arbeiten und der Inhalt gedehnt wird, sollte die Dehnung die Touch-Bewegung vor dem verschachtelten Inhalt verarbeiten. Andernfalls wird möglicherweise gescrollt, wenn der Finger die Richtung ändert, anstatt die Dehnung aufzuheben.

Weitere Informationen zum Overscroll finden Sie unter Scrollgeste animieren.

Ripple (haptisches Feedback) im Betriebssystem verwenden

Android 12 enthält einen weicheren, subtileren Touch-Ripple-Effekt, um Nutzern Feedback zu geben, wenn sie auf das Display tippen.

„Material You“-Welle

Abbildung 3: Welle-Effekt in Android 12 mit einer sanfteren Füllanimation

Damit Entwickler die Auswirkungen besser vorhersagen können und eine gute Nutzererfahrung gewährleistet ist, sollte der Welleneffekt auf Ihren Geräten dem oben gezeigten Beispiel ähneln. Sie müssen keine bestimmten Integrationsschritte ausführen, um Ripple-Effekte zu unterstützen. Sie sollten jedoch den Effekt auf Ihren Geräten testen, um zu prüfen, ob in Ihrer Implementierung unbeabsichtigte Regressionen eingeführt wurden.

Widgets

Widgets sind wichtige Komponenten eines Android-Geräts. Android 12 umfasst neue APIs und API-Funktionen, die alle OEMs unterstützen sollten.

Zusätzliche Ressourcen

Verwendung von Farben in der System‑UI

(accent1 = A1, accent2 = A2, accent3 = A3, neutral1 = N1, neutral2 = N2)

Verwendung von Material You-Farben

Abbildung 4: Dynamische Farben in der System-UI

Aktualisierungen des Farbattributs in der Materialbibliothek

Im nächsten Release werden die Designattribute von Material aktualisiert. Dazu werden Farbrollen erstellt, mit denen bestimmten Ansichten Farben zugewiesen werden.

Farbrolle Android-Themenattribut Helles Design
Dynamische Farben
Dunkles Design
Dynamische Farbe
Primär colorPrimary system_accent1_600 system_accent1_200
Auf dem primären Gerät colorOnPrimary system_accent1_0 system_accent1_800
Zweiter Track colorSecondary system_accent2_600 system_accent2_200
Sekundär colorOnSecondary system_accent2_0 system_accent2_800
Fehler colorError – (red_600) – (red_200)
Bei Fehler colorOnError – (weiß) – (red_900)
Hintergrund android:colorBackground system_neutral1_10 system_neutral1_900
Hintergrund colorOnBackground system_neutral1_900 system_neutral1_100
Surface colorSurface system_neutral1_10 system_neutral1_900
Auf der Oberfläche colorOnSurface system_neutral1_900 system_neutral1_100

Das Material aktualisiert seine Statusattribute mit den folgenden Zeigern:

Farbrolle Android-Themenattribut Helles Design
Dynamische Farben
Dunkles Design
Dynamische Farbe
Inhalte des primären Status colorPrimaryStateContent system_accent1_700 system_accent1_200
Primäre Status-Ebene colorPrimaryStateLayer system_accent1_600 system_accent1_300
Inhalte des sekundären Status colorSecondaryStateContent system_accent2_700 system_accent2_200
Sekundäre Status-Ebene colorSecondaryStateLayer system_accent2_600 system_accent2_300
Inhalte zum primären Status colorOnPrimaryStateContent system_accent1_0 system_accent1_800
Auf der Ebene des primären Status colorOnPrimaryStateLayer system_accent1_900 system_accent1_800
Inhalte für den sekundären Status colorOnSecondaryStateContent system_accent2_0 system_accent2_800
Auf der sekundären Status-Ebene colorOnSecondaryStateLayer system_accent2_900 system_accent2_800
Inhalte zum primären Containerstatus colorOnPrimaryContainerStateContent system_accent1_900 system_accent1_900
Auf der primären Container-Zustandsebene colorOnPrimaryContainerStateLayer system_accent1_900 system_accent1_900
Inhalte zum sekundären Containerstatus colorOnSecondaryContainerStateContent system_accent2_900 system_accent2_900
Auf der sekundären Containerstatus-Ebene colorOnSecondaryContainerStateLayer system_accent2_900 system_accent2_900
Inhalte zum tertiären Containerstatus colorOnTertiaryContainerStateContent system_accent3_900 system_accent3_900
Auf der tertiären Containerstatus-Ebene colorOnTertiaryContainerStateLayer system_accent3_900 system_accent3_900
Inhalte zum Surface-Status colorOnSurfaceStateContent system_neutral1_900 system_neutral1_100
Auf der Ebene „Oberflächenstatus“ colorOnSurfaceStateLayer system_neutral1_900 system_neutral1_100
Inhalte zum Status der Surface-Variante colorOnSurfaceVariantStateContent system_neutral2_700 system_neutral2_200
Ebene „Surface Variant State“ colorOnSurfaceVariantStateLayer system_neutral2_700 system_neutral2_200
Inhalte für den Fehlerstatus colorErrorStateContent red800 red200

Häufig gestellte Fragen

Farbextraktion

Wird die Farbauswahl automatisch durchgeführt, wenn ein Nutzer den Hintergrund ändert, oder muss sie irgendwo ausgelöst werden?

Mit den Android 12-Patches ist die Extraktion der Hintergrundfarbe standardmäßig aktiviert.

ThemeOverlayController.java löst die Logik mit ThemeOverlayController#mOnColorsChangedListener und WallpaperManager#onWallpaperColorsChanged aus.

Bei Live-Hintergründen oder Video-Hintergründen: Wann wird die Farbe für die Farbextraktion vom Bildschirm übernommen? Einige Nutzer möchten möglicherweise die Farben des letzten Frames, da er am längsten angezeigt wird.

Die Farbauswahl wird ausgelöst, wenn der Nutzer das Hintergrundbild festlegt oder nach einem Neustart des Displays (als Reaktion auf WallpaperEngine#notifyColorsChanged). Das letzte WallpaperColors-Ereignis (vom Live-Hintergrundbild) wird angewendet, nachdem der Nutzer das Display aus- und wieder eingeschaltet hat.

Design-/Hintergrundauswahl

Wie aktiviere ich die Designauswahl, damit Nutzern mehrere Quellfarben zur Auswahl angezeigt werden und nicht nur die Farbe mit der höchsten Häufigkeit? Gibt es eine Möglichkeit, diese Farben aus der Extraktionslogik zu erhalten?

Ja. In der Designauswahl können Sie ColorScheme#getSeedColors(wallpaperColors: WallpaperColors) verwenden.

Auf Pixel gibt es eine Funktion namens Themensymbol. Ist es in den drei Patches enthalten, die du geteilt hast? Wie können OEMs das implementieren?

Nein. Symboldesigns sind in der Betaphase und nicht in Android 12 verfügbar.

Kann ich die Google-Hintergrundbild-App mit aktivierter Farbextraktion und ‑auswahl verwenden?

Ja. Die Funktionen können in der neuesten Version der Google Hintergrundbild App implementiert werden, indem Sie die oben auf dieser Seite beschriebenen Integrationsschritte ausführen.

Weitere Informationen erhalten Sie von Ihrem TAM.

Kann Google die App oder den Quellcode freigeben, damit OEMs eine eigene Version der Vorschau für dynamische Farben in ihrem Einstellungsmenü implementieren können, die der Vorschau in der Google-App zur Auswahl von Hintergrundbildern ähnelt?

Die Hauptklassen, die die Vorschau rendern, sind WallpaperPicker2 und Launcher3.

Der Vorschaubildschirm für den Hintergrund ist WallpaperSectionController.

Wie implementiere ich die Vorschau nach dem Ändern der Farbe, wie in der Google Hintergrundbild App gezeigt?

Die App zur Auswahl von Hintergründen erwartet, dass ein ContentProvider über den Launcher verfügbar ist (ein Launcher3-basierter Launcher hat es). Die Vorschau wird von GridCustomizationsProvider im Launcher bereitgestellt. Sie muss in den Metadaten der Hauptaktivität des Launchers referenziert werden, damit die Hintergrund- und Stil-App sie lesen kann. All das ist in Launcher3 von AOSP implementiert und für die OEMs verfügbar.