Gerätekompatibilitätsmodus

Android aktiviert einen Kompatibilitätsmodus für Apps, die Einschränkungen für die Ausrichtung oder Größe angeben. Der Kompatibilitätsmodus sorgt für ein akzeptables App-Verhalten auf Geräten mit großen Bildschirmen und faltbaren Klapphandys, bei nicht optimaler Nutzerfreundlichkeit.

Mit App-spezifischen Überschreibungen können Gerätehersteller das App-Verhalten ändern, um die Nutzerfreundlichkeit zu verbessern oder zu verhindern, dass Apps auf bestimmten Geräten nicht funktionieren.

Referenzgeräte

Für die folgenden Geräte sind möglicherweise App-spezifische Überschreibungen erforderlich, da sie ungewöhnliche Konfigurationen haben oder Konfigurationen, die von Apps nicht gut unterstützt werden:

  • Tablets: Die Standardausrichtung einiger Tablets wie Pixel Tablet ist Querformat. Ein Gerät befindet sich in der natürlichen Ausrichtung, wenn Display#getRotation() den Wert Surface.ROTATION_0 zurückgibt. Wenn Apps voraussetzen, dass ROTATION_0 im Hochformat ist, können App-Layout und Kameravorschau nicht zum Gerätedisplay passen.
  • Im Querformat faltbare Geräte: Einige faltbare Geräte wie Pixel Fold sind im Hochformat, wenn sie zusammengeklappt sind, und im Querformat, wenn sie aufgeklappt sind. Wenn Apps davon ausgehen, dass das Tablet im aufgeklappten Zustand im Hochformat gehalten wird, sind flackernde Schleifen oder Layoutprobleme wahrscheinlich.
  • Klappbare Smartphones: Entfaltete Smartphones sind in der Regel im Hochformat. Wenn sie jedoch zusammengeklappt sind, haben sie in der Regel ein kleines Display im Querformat. Apps müssen die verschiedenen Ausrichtungen der Bildschirme identifizieren und berücksichtigen.

Häufige Kompatibilitätsprobleme

Kompatibilitätsprobleme bei Apps treten am häufigsten aufgrund von Einschränkungen bei der App-Ausrichtung, Größenänderungs- und Seitenverhältnissen, einer falschen Ausrichtung der Kameravorschau und falsch verwendeten APIs auf.

Letterboxing

Mit Letterboxing-Balken wird die App in der Mitte des Bildschirms oder bei großen Bildschirmen auf eine Seite oder die andere Seite positioniert, um einen bequemen Zugriff zu ermöglichen. Mattes (einfarbige Balken oder weichgezeichneter Hintergrund) füllen den nicht verwendeten Anzeigebereich an den Seiten oder am oberen und unteren Rand der App aus.

Letterboxing tritt häufig auf Geräten mit großen Bildschirmen auf, da sich die Abmessungen und das Seitenverhältnis des Displays des Geräts in der Regel von denen von Standard-Smartphones unterscheiden, für die die meisten Apps entwickelt wurden.

Abbildung 1. Eine App, die auf das Hochformat beschränkt ist, wird auf Tablets und faltbaren Geräten im Querformat letterboxed dargestellt.

Problem

Die App unterstützt nicht alle Displaykonfigurationen, da sie eine feste Ausrichtung und ein festes Seitenverhältnis aufweist oder ihre Größe nicht angepasst werden kann.

Zu den Konfigurationseinstellungen, die die Ausrichtung und Größe der App steuern, gehören:

  • screenOrientation: Gibt eine feste Ausrichtung für eine App an. Apps können die Ausrichtung auch zur Laufzeit mit Activity#setRequestedOrientation() festlegen.

  • resizeableActivity: Gibt an, ob das System die Größe von Apps so anpassen kann, dass sie in Fenster mit unterschiedlichen Abmessungen passen. Unter Android 11 (API-Level 30) und niedriger gibt an, ob Apps den Mehrfenstermodus unterstützen. Gibt ab Android 12 (API-Level 31) an, ob Apps den Mehrfenstermodus auf kleinen Bildschirmen unterstützen (kompakte Fenstergrößenklasse). Unter Android 12 und höher unterstützen Apps den Multifenstermodus auf großen Bildschirmen (mittlere oder erweiterte Fenstergröße) unabhängig von dieser Einstellung.

  • maxAspectRatio: Gibt das maximale von der App unterstützte Seitenverhältnis an. maxAspectRatio kann nur für Apps festgelegt werden, bei denen resizeableActivity auf false festgelegt ist.

  • minAspectRatio: Gibt das Mindestseitenverhältnis an, das von der App unterstützt wird. minAspectRatio kann nur für Apps festgelegt werden, bei denen resizeableActivity auf false gesetzt ist.

Optimierung

Die App sollte alle Displayausrichtungen und -größen von Geräten und den Multifenstermodus unterstützen. Entferne alle Einschränkungen in Bezug auf Ausrichtung und feste Seitenverhältnisse aus deinen App-Layouts und der App-Manifest-Datei.

Problemumgehung für Kompatibilität

Wenn eine App mit fester Ausrichtung oder festem Seitenverhältnis in einem Fenster ausgeführt wird, in dem die App die Fenstergröße oder -ausrichtung nicht direkt unterstützt, wird die App von Android in einem Letterbox-Format dargestellt, um die Kontinuität zu wahren.

Ab Android 12 (API-Level 31) und 12L (API-Level 32) wendet die Plattform eine Vielzahl von Verbesserungen an Apps im Letterbox-Format an. Gerätehersteller implementieren Verbesserungen der Benutzeroberfläche. Sie müssen keine zusätzlichen Entwicklungsarbeiten für Ihre App vornehmen, um von den Verbesserungen zu profitieren.

Mit Android 12 (API-Ebene 31) werden die folgenden optischen Verbesserungen eingeführt, die von Geräteherstellern konfiguriert werden können:

  • Abgerundete Ecken:Die Ecken des App-Fensters werden jetzt noch übersichtlicher.
  • Transparenz der Systemleiste:Status- und Navigationsleisten, die die App überlagern, sind halbtransparent. Symbole auf den Balken sind also immer über dem Letterbox-Hintergrund sichtbar.
  • Konfigurierbares Seitenverhältnis:Das Seitenverhältnis der App kann angepasst werden, um das Erscheinungsbild der App zu verbessern.

Abbildung 2: Letterbox-App mit Verbesserungen an der Benutzeroberfläche

12L (API-Level 32) bietet die folgenden Funktionsverbesserungen:

  • Konfigurierbare Positionierung:Auf großen Bildschirmen können Gerätehersteller die App links oder rechts vom Bildschirm positionieren, um die Interaktion zu erleichtern.

  • Neu gestaltete Neustart-Schaltfläche: Gerätehersteller können die Schaltfläche zum Neustart für den Größenkompatibilitätsmodus neu gestalten, damit sie von den Nutzern besser erkannt wird.

In Android 13 (API-Level 33) wird ein Dialogfeld zur Aufklärung von Nutzern zur Positionierung der App im Letterbox-Format auf dem Bildschirm oder zum Einfügen des Letterbox-Formats im Splitscreen-Modus angezeigt:

Abbildung 3: App im Letterbox-Format mit einem Dialogfeld zur Aufklärung der Nutzer.

Größenkompatibilitätsmodus

Der Modus für die Größenkompatibilität ist ein Letterbox-Modus mit einer Schaltfläche zum Neustarten. Über das Steuerelement können Nutzer die App neu starten und die Anzeige neu zeichnen. Android ruft den Kompatibilitätsmodus für die Größe für Apps auf, die nicht skalierbar sind. Wenn eine Aktivität in einen Displaycontainer verschoben wird, der nicht mit den Abmessungen der Aktivität kompatibel ist, kann das System die App so skalieren, dass sie mindestens eine Geräteanzeigedimension ausfüllt.

Zu den Änderungen an der Gerätekonfiguration, die den Größenkompatibilitätsmodus auslösen können, gehören:

  • Bildschirm drehen
  • Faltbares Gerät wird zusammengeklappt oder aufgeklappt
  • Zwischen Vollbildmodus und Splitscreen wechseln

Problem

Der Größenkompatibilitätsmodus gilt in der Regel für Aktivitäten, bei denen die Ausrichtung oder das Seitenverhältnis eingeschränkt und die Konfiguration (oder vom System) so konfiguriert ist, dass die Größe nicht geändert werden kann.

Ihre App gilt als skalierbar und wird nicht in den Größenkompatibilitätsmodus versetzt, wenn sie eines der folgenden Kriterien erfüllt:

Wenn Ihre App keine dieser Bedingungen erfüllt, kann die Größe nicht angepasst werden. In diesem Fall kann die App in den Größenkompatibilitätsmodus versetzt werden.

Optimierung

Die App sollte alle Bildschirmgrößen unterstützen. Du kannst die Größe der App anpassen, indem du das Attribut android:resizeableActivity des Elements <activity> oder <application> im App-Manifest auf true setzt. Entwerfen Sie responsive/adaptive Layouts für Ihre App. Weitere Informationen finden Sie unter Unterstützung verschiedener Bildschirmgrößen und Unterstützung des Multifenstermodus.

Problemumgehung für Kompatibilität

Android versetzt eine App in den Modus für die Größenkompatibilität, wenn das System feststellt, dass die Anzeige der App im Letterbox-Format verbessert werden kann, indem die App so skaliert wird, dass sie das Displayfenster in mindestens einer Dimension ausfüllt. Das System zeigt eine Schaltfläche zum Neustarten an, mit der der App-Prozess neu erstellt, die Aktivität neu erstellt und das Display neu gezeichnet wird. Siehe auch Übersicht über Prozesse und Threads.

Flackernde Schleifen

Wenn eine App nicht alle Bildschirmausrichtungen unterstützt, fordert sie bei einer Konfigurationsänderung möglicherweise wiederholt eine neue Ausrichtung an. Dadurch entsteht eine Endlosschleife, durch die das Display flackert oder die App endlos gedreht wird.

Problem

Unter Android 12 (API-Level 31) und höher können Gerätehersteller ihre Geräte so konfigurieren, dass von Apps angegebene Ausrichtungsbeschränkungen ignoriert und stattdessen Kompatibilitätsmodi erzwungen werden. So kann beispielsweise auf einem faltbaren Gerät die Einstellung android:screenOrientation="portrait" für eine Aktivität ignoriert werden, wenn die Aktivität auf dem inneren Bildschirm des Geräts in der Tablet-Größe im Querformat angezeigt wird.

Wenn die Ausrichtungseinschränkungen einer App ignoriert werden, kann die App ihre Ausrichtung programmatisch festlegen, indem Activity#setRequestedOrientation() aufgerufen wird. Der Aufruf löst einen App-Neustart aus, wenn die App Konfigurationsänderungen nicht verarbeitet (siehe Konfigurationsänderungen verarbeiten). Nach dem Neustart werden die Ausrichtungsbeschränkungen der App wieder ignoriert, die App wiederholt den Aufruf von setRequestedOrientation(), der Aufruf löst einen App-Neustart aus usw. in einer sich selbst erhaltenden Schleife aus.

Eine andere Möglichkeit ist, wenn die natürliche Ausrichtung (die von Android festgelegte normale Ausrichtung) eines Gerätebildschirms im Querformat ist (d. h. beim Aufrufen von Display#getRotation() wird Surface.ROTATION_0 zurückgegeben, während das Gerät ein Querformat hat). Bisher wurde in Apps davon ausgegangen, dass Display.getRotation() = Surface.ROTATION_0 bedeutet, dass sich das Gerät im Hochformat befindet. Das ist aber nicht immer der Fall, z. B. auf dem inneren Display einiger faltbarer Geräte und auf einigen Tablets.

Eine App im Querformat auf einem faltbaren inneren Display kann die Bildschirmdrehung prüfen, den Wert ROTATION_0 erhalten, davon ausgehen, dass die natürliche Ausrichtung des Geräts im Hochformat ist, und setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) aufrufen, um das App-Layout neu zu konfigurieren. Nach dem Neustart der Anwendung (im Querformat) kann sie die Bildschirmdrehung noch einmal prüfen, den Wert ROTATION_0 erhalten, setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) aufrufen und die Endlosschleife fortsetzen.

Optimierung

Apps dürfen Folgendes nicht tun:

  • Legen Sie in der Aktivitätsmethode onCreate() mit Activity#setRequestedOrientation() eine Standardausrichtung fest, da die Ausrichtungsanfrage durch nicht verarbeitete Konfigurationsänderungen unerwartet ausgelöst werden kann.
  • Angenommen, die natürliche Ausrichtung des Geräts (ROTATION_0) ist das Hochformat.
  • Legen Sie die Ausrichtung anhand von Signalen fest, die nicht mit der aktuellen Fenstergröße zusammenhängen, z. B. Display#getRotation(), das Vorhandensein einer FoldingFeature oder verworfene APIs.

Problemumgehung für Kompatibilität

Android ignoriert Activity#setRequestedOrientation()-Aufrufe in den folgenden Situationen:

  • Die Aktivität wurde bereits aus einem vorherigen Aufruf der Methode neu gestartet oder die kompatible Kamerarotationsbehandlung wurde aktiviert (siehe Kameravorschau unten).

    Gerätehersteller können dieses Verhalten auf eine App mit OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION anwenden.

  • Bei der Aktivität wurden in einer Sekunde mehr als zwei Anfragen zur Ausrichtung gesendet. Dies weist auf eine Schleife hin. Von den beiden Anfragen in der Schleife verwendet Android diejenige, die den Anzeigebereich der App maximiert.

    Gerätehersteller können dieses Verhalten auf eine App mit OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED anwenden.

Kameravorschau

Die Kameravorschau (oder der Sucher) von Kamera-Apps kann auf Tablets, Laptops und faltbaren Displays falsch ausgerichtet oder verzerrt sein.

Problem

Im Android Compatibility Definition Document ist festgelegt, dass ein Kamera-Bildsensor "MÜSSEN so ausgerichtet werden muss, dass die lange Seite der Kamera mit der des Bildschirms übereinstimmt".

Apps gehen häufig davon aus, dass die Geräteausrichtung und die Ausrichtung des Kamerasensors im Hochformat sind – eine vernünftige Annahme bei Standard-Smartphones. Die natürliche Ausrichtung von Tablets und Laptops sowie ihrer Kamerasensoren kann jedoch im Querformat sein. Außerdem können neue Formfaktoren wie faltbare Smartphones mehrere natürliche Ausrichtungen und mehrere Kamerasensoren mit unterschiedlicher Ausrichtung haben.

Wenn Sie eine Aktivität mit einer Kameraausrichtung starten, die von der App nicht erwartet wird, oder zwischen verschiedenen Kameras oder Gerätebildschirmen wechseln (bei Klappgeräten), kann dies zu einer nicht ausgerichteten oder verzerrten Kameravorschau führen.

Optimierung

Kamera-Apps müssen die Geräteausrichtung und die Ausrichtung des Kamerasensors korrekt identifizieren und verwalten, damit eine korrekt ausgerichtete und skalierte Kameravorschau angezeigt wird. Apps müssen die Gerätedrehung, die Sensordrehung und das Bildschirm- oder Fensterseitenverhältnis berechnen und dann die Ergebnisse auf die Kameravorschau anwenden. Detaillierte Informationen finden Sie unter Kameravorschau und Einführung in den Kamerasucher.

Kompatibilitäts-Problemumgehung

Ein Gerät befindet sich in der natürlichen Ausrichtung, wenn Display#getRotation() Surface.ROTATION_0 zurückgibt. Das System berechnet CameraCharacteristics.SENSOR_ORIENTATION anhand der natürlichen Ausrichtung des Geräts. Android richtet das Hochformatfenster von Apps, die nur im Hochformat ausgeführt werden können, an der natürlichen Ausrichtung des Geräts aus, was von den meisten Apps erwartet wird. Android schneidet das Kamerasensorbild auch zu, wenn die Sensorausrichtung im Querformat und die Kameravorschau im Hochformat ist. Zu den konkreten Problemumgehungen gehören:

  • Kameravorschau für Apps mit Hochformatbeschränkung erzwingen: Bei Apps, die nur im Hochformat verwendet werden können, wird davon ausgegangen, dass sich das Gerät und der Kamerasensor im Hochformat befinden. Unter Android 12 (API-Level 31) und höher können Apps jedoch in mehreren Geräteausrichtungen ausgeführt werden, wenn die Gerätehersteller die Ausrichtungsspezifikation ignorieren.

    Wenn eine App mit eingeschränktem Hochformat mit der Kamera verbunden ist, dreht Android die App, um das Fenster im Hochformat der App an die natürliche Ausrichtung des Geräts auszurichten.

    Auf einigen Tablets (siehe Referenzgeräte) wird das Hochformatfenster der App in den Vollbildmodus im Hochformat gedreht, um der natürlichen Ausrichtung des Geräts zu entsprechen. Die App nimmt nach der erzwungenen Drehung den gesamten Bildschirm ein.

    Auf dem inneren Display von faltbaren Geräten im Querformat (siehe Referenzgeräte) werden Aktivitäten im Hochformat in das Querformat gedreht, damit es der aufgeklappten natürlichen Ausrichtung entspricht. Die Anwendung wird nach der erzwungenen Drehung mit Letterbox-Balken versehen.

  • Innerer Frontkamera zuschneiden:Der Sensor der inneren Frontkamera befindet sich bei einigen faltbaren Smartphones im Querformat. Zusätzlich zur erzwungenen Drehung der Kameravorschau auf dem faltbaren inneren Display schneidet Android das Sichtfeld der inneren Frontkamera (Querformat) so ab, dass der Sensor das Sichtfeld der Geräteausrichtung entgegennimmt.

  • Aktualisierung der Kameravorschau erzwingen:Nach der erzwungenen Drehung durchläuft das System die Aktivitätsmethoden onStop() und onStart() (standardmäßig) oder onPause() und onResume() (durch die Überschreibung pro App OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE angewendet), um sicherzustellen, dass die Kameravorschau richtig angezeigt wird.

  • Bildseitenverhältnis skalieren: Das System ändert das Seitenverhältnis der erzwungenen Kameravorschau dynamisch in ein höheres Mindestseitenverhältnis, damit die Kameravorschau richtig skaliert wird.

App-Entwickler können diese Umgehungslösungen überschreiben, wenn die Apps die Kameravorschau richtig verarbeiten. Weitere Informationen finden Sie unter App-spezifische Überschreibungen.

Häufig missbrauchte APIs

Da Android Funktionen wie den Mehrfenstermodus und Geräte wie faltbare Geräte unterstützt, wurden Legacy-APIs eingestellt und durch aktuelle APIs ersetzt, die für alle Displaygrößen und Geräteformfaktoren funktionieren. Die verworfenen APIs sind jedoch aus Gründen der Abwärtskompatibilität weiterhin verfügbar.

Einige View APIs sind für spezielle Zwecke konzipiert, die Entwicklern nicht immer klar sind.

Problem

Entwickler verwenden weiterhin eingestellte Display APIs und gehen fälschlicherweise davon aus, dass die APIs die App-Grenzen anstelle der Grenzen des Anzeigebereichs der Geräte zurückgeben. Oder Entwickler verwenden fälschlicherweise APIs für spezielle Ansichten, um allgemeine Displaymesswerte zu erhalten. Dies führt zu Fehlberechnungen bei der Neupositionierung von UI-Elementen nach Größenänderungsereignissen des App-Fensters, was zu Layoutproblemen führt.

Eingestellte und häufig missbrauchte Display-APIs:

Weitere Informationen findest du unter Unterstützung des Mehrfenstermodus.

Falsch verwendete Ansichts-APIs:

Optimierung

Verlassen Sie sich bei der Positionierung von UI-Elementen niemals auf die physische Anzeigegröße. Migrieren Sie Ihre App zu APIs, die auf WindowMetrics basieren, einschließlich der folgenden WindowManager APIs:

Kompatibilitäts-Problemumgehung

Mit zwei Überschreibungen werden die eingestellten Display APIs und missbrauchten View APIs so angepasst, dass die App-Begrenzungen zurückgegeben werden: ALWAYS_SANDBOX_DISPLAY_APIS für Display APIs und OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS für View APIs. ALWAYS_SANDBOX_DISPLAY_APIS wird außerdem standardmäßig auf Apps angewendet, die für den Größenkompatibilitätsmodus infrage kommen.

Transparente Aktivitäten

Transparente Aktivitäten sind das Ergebnis von Stilen mit transparentem Hintergrund, z. B.:

<style name="Transparent" parent="AppTheme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
</style>

Designs für Dialogfelder, z. B. Theme.MaterialComponents.Dialog, können Stile enthalten, mit denen Aktivitäten transparent gemacht werden.

Transparente Aktivitäten bedecken nicht den gesamten verfügbaren Displaybereich. Das macht sie schwer zu verwalten, da sich der verfügbare Displaybereich je nach Konfigurationsänderungen wie Gerätedrehung, Zusammen- und Aufklappen des Geräts und Multifenstermodus ändern kann.

Problem

Eine transparente Aktivität sollte den Grenzen der ersten opaken Aktivität unterhalb der transparenten Aktivität im Aktivitätsstapel der Aufgabe entsprechen. Eine intransparente Aktivität, die einen Berechtigungsdialog startet, kann jedoch ein Trampolin sein (eine Aktivität, die eine andere Aktivität startet, dann verschwindet). Daher kann das System die Grenzen der Trampolinaktivität, durch die die transparente Berechtigungsdialogaktivität gestartet wurde, nicht bestimmen.

Optimierung

Transparente Aktivitäten übernehmen ihre Einschränkungen von der obersten opaken Aktivität unter ihnen im Aktivitätsstapel einer Aufgabe. Die opake Aktivität muss für den gesamten Lebenszyklus der transparenten Aktivität verfügbar sein, von der Erstellung bis zum Löschen der Aktivität. Daher sollten Sie keine Berechtigungsanfragen von Trampolinaktivitäten aus senden.

Wenn eine Trampolinaktivität eine Berechtigungsanfrage auslöst, kann der Nutzer das Berechtigungsdialogfeld möglicherweise nicht sehen, da die Trampolinaktivität bereits gelöscht wurde, bevor der Nutzer die Möglichkeit hatte, auf das Dialogfeld zu reagieren. Außerdem wurden die Abmessungen und die Position der Dialogaktivität möglicherweise falsch berechnet.

Apps sollten immer Berechtigungsanfragen von Aktivitäten starten, die sichtbar bleiben, bis der Nutzer eine Berechtigungsentscheidung getroffen hat.

Abgerundete Ecken

Eine Aktivität kann aufgrund eines Stils, der die Hintergrundtransparenz angibt, transparent sein. Es kann auch sein, dass der Inhalt der Aktivität den verfügbaren Anzeigebereich nicht füllt. Wenn eine transparente Aktivität den verfügbaren Platz ausfüllt, wendet das System automatisch abgerundete Ecken auf die Aktivität an, sofern vom Gerätehersteller entsprechend konfiguriert. Wenn jedoch eine transparente Aktivität (z. B. ein Berechtigungsdialog) den verfügbaren Platz nicht ausfüllt, müssen Sie entscheiden, ob Sie abgerundete Ecken verwenden möchten.

Die Berechtigungsdialogfelder füllen nicht den verfügbaren Displaybereich aus, da für das Dialogfeldlayout in der Regel LayoutParams.WRAP_CONTENT anstelle von LayoutParams.MATCH_PARENT verwendet wird.

Problemumgehung für Kompatibilität

Aktivitäten, die Dialogaktivitäten starten, bleiben sichtbar, bis der Nutzer auf den Dialog reagiert hat.

Das System sorgt dafür, dass eine transparente Aktivität alle Einschränkungen von der ersten opaken Aktivität unter der transparenten Aktivität im Aktivitätsstapel erbt, einschließlich Einschränkungen im Zusammenhang mit:

  • Modus für die Größenkompatibilität
  • Ausrichtung
  • Seitenverhältnis

Unity-Spiele

Unity-Spiele werden auf Android-Geräten im Vollbildmodus oder im Multifenstermodus ausgeführt. Viele Unity-Spiele verlieren jedoch den Fokus und beenden das Zeichnen von Inhalten, wenn sich die App im Mehrfenstermodus befindet.

Problem

Unity hat in Unity 2019.4 eine Resizable Window-Option hinzugefügt, um den Mehrfenstermodus unter Android zu unterstützen. Die ursprüngliche Implementierung hat jedoch nicht richtig auf den Aktivitätslebenszyklus im Mehrfenstermodus reagiert, was dazu führte, dass UnityPlayer die Wiedergabe anhält, wenn die App den Fokus verliert. Der Spieler hat einen schwarzen Bildschirm oder den letzten eingefrorenen Frame des Spiels gerendert. Das Gameplay wurde nur fortgesetzt, wenn der Nutzer auf den Bildschirm getippt hat. Viele Anwendungen, die die Unity-Engine verwenden, sind mit diesem Problem konfrontiert und werden im Mehrfenstermodus als schwarzes Fenster gerendert.

Optimierung

Führen Sie ein Upgrade auf Unity 2019.4.40 oder höher durch und exportieren Sie Ihr Spiel noch einmal. Lass die Option Resizable Window in den Android-Player-Einstellungen aktiviert. Andernfalls wird das Spiel pausiert, wenn es nicht im Fokus ist, auch wenn es im Multifenstermodus vollständig sichtbar ist.

Kompatibilitäts-Problemumgehung

Gerätehersteller können die Überschreibung OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS pro App anwenden, um einer App im Mehrfenstermodus ein fiktives Fokusereignis bereitzustellen. Durch die Überschreibung können Inhalte in der Aktivität neu gezeichnet werden und werden nicht ausgeblendet.

App auf Kompatibilitätsprobleme testen

Nutzen Sie die folgenden Ressourcen, um Ihre Anwendung zu testen und zu verstehen, wie sie sich bei verschiedenen Formfaktoren verhält:

Ist Letterbox-Bild

Prüfen Sie, ob jede Aktivität den gesamten für die App verfügbaren Displaybereich nutzen kann. deklarieren Sie zuerst den folgenden Code in Ihrem Testordner:

Kotlin

fun Activity.isLetterboxed() : Boolean {
    if (isInMultiWindowMode) return false

    val wmc = WindowMetricsCalculator.getOrCreate()
    val currentBounds = wmc.computeCurrentWindowMetrics(this).bounds
    val maxBounds = wmc.computeMaximumWindowMetrics(this).bounds

    val isScreenPortrait = maxBounds.height() > maxBounds.width()

    return if (isScreenPortrait) {
        currentBounds.height() < maxBounds.height()
    } else {
        currentBounds.width() < maxBounds.width()
    }
}

Java

public boolean isLetterboxed(Activity activity) {
    if (activity.isInMultiWindowMode()) {
        return false;
    }

    WindowMetricsCalculator wmc = WindowMetricsCalculator.getOrCreate();
    Rect currentBounds = wmc.computeCurrentWindowMetrics(activity).getBounds()
    Rect maxBounds = wmc.computeMaximumWindowMetrics(activity).getBounds();

    boolean isScreenPortrait = maxBounds.height() > maxBounds.width();

    return (isScreenPortrait)
        ? currentBounds.height() < maxBounds.height()
        : currentBounds.width() < maxBounds.width();
}

Führen Sie dann einen Test aus, um das Verhalten zu bestätigen, und achten Sie darauf, dass die Zielaktivität keine Letterbox-Daten enthält:

Kotlin

@get:Rule
val activityRule = ActivityScenarioRule(MainActivity::class.java)

@Test
fun activity_launched_notLetterBoxed() {
    activityRule.scenario.onActivity {
        assertThat(it.isLetterboxed()).isFalse()
    }
}

Java

@Rule
public ActivityScenarioRule<MainActivity> rule = new ActivityScenarioRule<>(MainActivity.class);

public void activity_launched_notLetterBoxed() {
    try (ActivityScenario<MainActivity> scenario = ActivityScenario.launch(MainActivity.class)) {
        scenario.onActivity(activity -> {
            assertThat(isLetterboxed(activity)).isFalse();
        });
    }
}

Führen Sie diese Art von Test idealerweise nur so lange durch, bis er bestanden ist und die Aktivitäten Ihrer App den gesamten für die App verfügbaren Bildschirmbereich einnehmen. Testen Sie Ihre App auf allen Gerätetypen, um ein einheitliches Verhalten zu gewährleisten.

Überschreibungen pro App

Android bietet Überschreibungen, die das konfigurierte Verhalten von Apps ändern. Die Überschreibung FORCE_RESIZE_APP weist das System beispielsweise an, den Größenkompatibilitätsmodus zu umgehen und die App an die Displayabmessungen anzupassen, auch wenn resizeableActivity="false" im App-Manifest angegeben ist.

Gerätehersteller wenden Überschreibungen auf bestimmte Apps – oder alle Apps – auf bestimmten Geräten mit großen Bildschirmen an. Unter Android 14 (API-Level 34) und höher können Nutzer über die Geräteeinstellungen Überschreibungen für Apps anwenden.

Überschreibungen für Nutzer pro App

Unter Android 14 und höher können Nutzer über ein Einstellungsmenü das Seitenverhältnis von Apps ändern. Geräte mit großen Bildschirmen wie die Referenzgeräte implementieren das Menü.

Das Menü enthält eine Liste aller auf dem Gerät installierten Apps. Nutzer wählen eine App aus und legen dann das Seitenverhältnis der App auf 3:4, 1:1, Vollbild oder einen anderen vom Gerätehersteller konfigurierten Wert fest. Nutzer können das Seitenverhältnis auch auf die Standardeinstellung der App zurücksetzen, die im App-Manifest angegeben ist.

Apps können die Kompatibilitätsüberschreibung deaktivieren, indem Sie die folgenden PackageManager.Property-Tags festlegen:

  • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE

    Wenn Sie die nutzerseitige Überschreibung der Kompatibilität mit dem Seitenverhältnis deaktivieren möchten, fügen Sie die Property Ihrem App-Manifest hinzu und legen Sie den Wert auf false fest:

    <application>
        <property
            android:name="android.window.
            PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE"
            android:value="false" />
    </application>
    

    Ihre App wird aus der Liste der Apps in den Geräteeinstellungen ausgeschlossen. Nutzer können das Seitenverhältnis der App nicht überschreiben.

    Wenn Sie die Property auf true festlegen, hat das keine Auswirkungen.

  • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE

    Wenn Sie die Vollbildoption der Überschreibung des Nutzer-Seitenverhältnisses deaktivieren möchten, fügen Sie die Property Ihrem App-Manifest hinzu und legen Sie den Wert auf false fest:

    <application>
        <property
            android:name="android.window.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE"
            android:value="false" />
    </application>
    

    Die Vollbildoption wird aus der Liste der Seitenverhältnisoptionen in den Geräteeinstellungen entfernt. Nutzer können die Vollbildüberschreibung nicht auf deine App anwenden.

    Das Festlegen dieses Attributs auf true hat keine Auswirkungen.

App für alle Bildschirme optimieren:Legen Sie in Ihrer App keine Seitenverhältnisbeschränkungen fest. Verwenden Sie Fenstergrößenklassen, um verschiedene Layouts je nach verfügbarem Anzeigebereich zu unterstützen.

Überschreibungen pro App des Geräteherstellers

Gerätehersteller wenden Überschreibungen für einzelne Apps auf ausgewählten Geräten an. Die Referenzgeräte können einige der Überschreibungen standardmäßig auf eine Vielzahl von Apps anwenden.

Für Apps können die meisten Überschreibungen deaktiviert werden (siehe Tabelle Überschreibungen pro App unten).

Sie können Ihre App mit aktivierten oder deaktivierten Überschreibungen testen. Verwenden Sie dazu das Kompatibilitäts-Framework (siehe Kompatibilitäts-Framework-Tools). Wenn diese Option aktiviert ist, gelten Überschreibungen für die gesamte App.

Sie können auch die Android Debug Bridge (adb) verwenden, um Überschreibungen zu aktivieren oder zu deaktivieren und festzulegen, welche Überschreibungen für Ihre App gelten.

So aktivieren oder deaktivieren Sie Überschreibungen:

adb shell am compat enable/disable <override name/id> <package>

Prüfen Sie für die Referenzgeräte, welche Überschreibungen für Ihre App gelten:

adb shell dumpsys platform_compat | grep <package name>

In der folgenden Tabelle sind die verfügbaren Überschreibungen aufgeführt. Außerdem finden Sie dort eine Anleitung dazu, wie Sie Ihre App so optimieren, dass keine Überschreibungen erforderlich sind. Sie können Ihrem App-Manifest Attribut-Flags hinzufügen, um einige Überschreibungen zu deaktivieren.

Überschreibungen pro App
Eingeben Name ID Beschreibung
Größenanpassung FORCE_RESIZE_APP 174042936 Umgeht den Größenkompatibilitätsmodus für die App bei Konfigurationsänderungen.
FORCE_NON_RESIZE_APP 181136395 Erzwingt die App bei Konfigurationsänderungen in den Größenkompatibilitätsmodus.
Seitenverhältnis OVERRIDE_MIN_ASPECT_RATIO 174042980 Gatekeeper-Überschreibung, die aktiviert werden muss, um andere Seitenverhältnisüberschreibungen anzuwenden.
OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY 203647190 Wenn diese Option aktiviert ist (Standardeinstellung), werden die Einschränkungen auf Aktivitäten im Hochformat beschränkt.
OVERRIDE_MIN_ASPECT_RATIO_MEDIUM 180326845 Ändert das Mindestseitenverhältnis in 3:2.
OVERRIDE_MIN_ASPECT_RATIO_LARGE 180326787 Das Mindestseitenverhältnis wird auf 16:9 geändert.
OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN 208648326 Das Mindestseitenverhältnis wird so geändert, dass es 50 % der Bildschirmgröße (oder das Seitenverhältnis des Splitscreens) entspricht.
OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN 218959984 Hiermit wird die Überschreibung des Mindestseitenverhältnisses deaktiviert, sodass Apps im Hochformat angezeigt werden.
Ausrichtung OVERRIDE_ANY_ORIENTATION 265464455 Ermöglicht das Überschreiben einer Ausrichtung.
OVERRIDE_ANY_ORIENTATION_TO_USER 310816437 Überschreibt die Einschränkungen für Ausrichtung, Größenänderung und Seitenverhältnis.
OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT 265452344 Überschreibt die Ausrichtung auf „Hochformat“, wenn eine Aktivität keine definierte Ausrichtung hat.
OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR 265451093 Überschreibt die Ausrichtung mit nosensor (natürliche Ausrichtung des Geräts), wenn eine Aktivität keine definierte Ausrichtung hat.
OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE 266124927 Apps, die nur im Querformat angezeigt werden, werden um 180 Grad gedreht.
OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA 265456536 Beschränkt den Bereich zum Überschreiben der Ausrichtung auf den Bereich, wenn die App mit der Kamera verbunden ist.
OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION 255940284 Setzt die Anzeige auf eine feste, natürliche Ausrichtung im Querformat, wenn eine Aufgabe im Vollbildmodus angezeigt wird (auch im Letterbox-Format).
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION 254631730 Ignoriert Ausrichtungsanfragen von der App, um Endlosschleifen für die Drehung zu vermeiden.
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED 273509367 Ignoriert wiederholte Ausrichtungsanfragen, während eine Aktivität neu gestartet wird. Wenn Android erkennt, dass eine App innerhalb einer Sekunde mindestens zwei neue Ausrichtungen anfordert, betrachtet das System dies als endlosen Rotations-Loop und wendet die Override-Funktion an.
OVERRIDE_RESPECT_REQUESTED_ORIENTATION 236283604 Verhindert Letterbox-Bild, indem die Einstellung zum Ignorieren der Ausrichtungsanfrage durch den Gerätehersteller deaktiviert wird.
Sandbox-APIs NEVER_SANDBOX_DISPLAY_APIS 184838306 Verhindert, dass das Verhalten von Display-APIs geändert wird.
ALWAYS_SANDBOX_DISPLAY_APIS 185004937 Erzwingt, dass die Display APIs in der App App-Grenzen zurückgeben. Display APIs geben logische Begrenzungen des Anzeigebereichs zurück. Manchmal geht die App jedoch davon aus, dass Display APIs App-Begrenzungen zurückgeben, was zu Problemen mit der Benutzeroberfläche führt.
OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS 237531167 Erzwingt, dass die in der App verwendeten View APIs App-Grenzen zurückgeben. View-APIs geben logische Darstellungsbereichgrenzen zurück, aber manchmal geht die App davon aus, dass View-APIs App-Grenzen zurückgeben, was zu Problemen mit der Benutzeroberfläche führt.
Kamerakompatibel OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION 263959004 Die erzwungene Bildschirmrotation wird deaktiviert. Standardmäßig werden alle Kamera-Apps mit fester Ausrichtung erzwungen, wenn die Kameravorschau geöffnet ist.
OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH 264304459 Die standardmäßige Hartaktualisierung, die angewendet wird, wenn eine Kameravorschau erzwungen wird, wird entfernt.
OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE 264301586 Hiermit wird die harte Aktualisierung in eine weiche Aktualisierung umgewandelt, wenn eine Kameravorschau erzwungen wird. Dadurch wird der Status während der erzwungenen Drehung beibehalten. Standardmäßig führt Android eine harte Aktualisierung durch, wenn die Kameravorschau erzwungen wird. Je nachdem, wie die Apps ihren vorherigen Status im Cache gespeichert haben, kann es durch das harte Aktualisieren zu Problemen kommen, bei denen der Status der Apps verloren geht oder die Apps schwarz werden.
OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT 250678880 Beschneidet den Bildpuffer der Frontkamera auf der Vorderseite. Ist das Überschreiben deaktiviert, wird der Zuschnitt der inneren Frontkamera entfernt und das Sichtfeld der Kameravorschau wird vergrößert. Auf einigen faltbaren Geräten (siehe Referenzgeräte) wird die Kameravorschau aller Kamera-Apps standardmäßig zugeschnitten, wenn die innere Frontkamera verwendet wird.
Sonstiges OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS 263259275 Verhindert, dass die App ausgeblendet wird, wenn sie im Splitscreen-Modus den Fokus verliert. Die App wartet auf den Fokus, bevor sie den App-Inhalt zeichnet. Dies kann dazu führen, dass die App einfriert oder geschwärzt wird. Die Überschreibung ermöglicht es Android, ein falsches Fokusereignis an die App zu senden, das der App signalisiert, wieder mit dem Zeichnen von Inhalten zu beginnen.

FORCE_RESIZE_APP

Erzwingt, dass die Größe der Pakete, auf die die Überschreibung angewendet wird, geändert werden kann. Dadurch wird nicht geändert, ob die App in den Mehrfenstermodus versetzt werden kann. Die App kann jedoch ihre Größe anpassen, ohne in den Größenkompatibilitätsmodus zu wechseln, wenn die Bildschirmgröße angepasst wird.

Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können

Legen Sie im App-Manifest entweder das Attribut android:resizeableActivity auf true fest oder setzen Sie das Metadaten-Flag android.supports_size_changes auf true, um die Größe ändern zu können und gleichzeitig den Modus „Mehrere Fenster“ mit android:resizeableActivity=false zu deaktivieren.

Apps optimieren

Verwenden Sie responsive/adaptive Layouts, damit sich Apps an alle Bildschirmgrößen und Seitenverhältnisse anpassen können. Siehe Unterstützung verschiedener Bildschirmgrößen.

Überschreiben deaktivieren oder deaktivieren

Legen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES auf false fest.

Property-Flags zum Anpassen der Überschreibung

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
  android:value="true|false"/>

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an und machen die App veränderbar:

adb shell am compat enable FORCE_RESIZE_APP <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable FORCE_RESIZE_APP <package>

Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.

FORCE_NON_RESIZE_APP

Erzwingt, dass die Pakete, auf die die Überschreibung angewendet wird, nicht in der Größe geändert werden kann, und wechseln bei Konfigurationsänderungen in den Größenkompatibilitätsmodus.

Wie Apps das gleiche Ergebnis wie eine Überschreibung erzielen

Lege im App-Manifest sowohl das Attribut android:resizeableActivity als auch das Metadaten-Flag android.supports_size_changes auf false fest und gib entweder eine Einschränkung der Ausrichtung oder des Seitenverhältnisses an.

Apps optimieren

Bei allen Apps, die sich bei einer Größenänderung fehlerfrei verhalten, sollte entweder android:resizeableActivity oder android.supports_size_changes auf true gesetzt sein. Andere Apps sollten verbessert werden, damit sie auch bei Größenänderung gut funktionieren. Weitere Informationen finden Sie unter android:resizeableActivity.

Überschreiben deaktivieren oder deaktivieren

Legen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES auf false fest.

Property-Flags zum Anpassen der Überschreibung

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
  android:value="true|false"/>

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an und machen die App nicht mehr skalierbar:

adb shell am compat enable FORCE_NON_RESIZE_APP <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable FORCE_NON_RESIZE_APP <package>

Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.

OVERRIDE_MIN_ASPECT_RATIO

Der Gatekeeper für alle Überschreibungen, die ein bestimmtes Mindestseitenverhältnis erzwingen.

Wie Apps das gleiche Ergebnis wie eine Überschreibung erzielen

Legen Sie android:minAspectRatio auf Aktivitäts- oder App-Ebene fest.

Apps optimieren

Lege in deiner App keine Einschränkungen des Seitenverhältnisses fest. Achte darauf, dass deine App unterschiedliche Bildschirmgrößen unterstützt. Verwenden Sie Fenstergrößenklassen, um je nach verfügbarem Platz auf dem Bildschirm unterschiedliche Layouts zu unterstützen. Weitere Informationen finden Sie unter WindowSizeClass API erstellen und WindowSizeClass API ansehen.

Überschreibung deaktivieren

Gib eine Einschränkung für das Seitenverhältnis an oder setze das Property-Flag PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE auf false.

Property-Flags zum Anpassen der Überschreibung

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE"
  android:value="false"/>

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO <package>

Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.

OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY

Einschränken von App-Einstellungen, die ein bestimmtes Mindestseitenverhältnis für Aktivitäten mit ausschließlich vertikaler Ausrichtung erzwingen Diese Option ist standardmäßig aktiviert und wird nur wirksam, wenn OVERRIDE_MIN_ASPECT_RATIO ebenfalls aktiviert ist.

Wie Apps das gleiche Ergebnis wie eine Überschreibung erzielen

Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.

Überschreibung deaktivieren

Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.

Überschreiben von Property-Flags

Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY <package>

Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.

ÜBERSCHREITUNG_MIN_ASPECT_RATIO_MITTEL

Das Mindestseitenverhältnis der Aktivität wird auf einen mittleren Wert (3:2) festgelegt.

Wie Apps das gleiche Ergebnis wie eine Überschreibung erzielen

Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.

Überschreibung deaktivieren

Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.

Property-Flags zum Anpassen der Überschreibung

Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>

Hinweis: Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

OVERRIDE_MIN_ASPECT_RATIO_LARGE

Legt das minimale Seitenverhältnis der Aktivität auf einen hohen Wert (16:9) fest

Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können

Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.

Überschreiben deaktivieren oder deaktivieren

Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.

Überschreiben von Property-Flags

Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_LARGE <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_LARGE <package>`

Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.

ÜBERSCHREIBEN_MIN_ASPECT_RATIO_TO_ALIGN_MIT_SPLIT_SCREEN

Ermöglicht die Verwendung des Seitenverhältnisses für Splitscreen. Ermöglicht es einer App, im Splitscreen-Modus den gesamten verfügbaren Platz zu nutzen und so Letterboxing zu vermeiden.

Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können

Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.

Überschreibung deaktivieren

Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.

Property-Flags zum Anpassen der Überschreibung

Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN <package>

Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.

OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN

Deaktiviert die Überschreibung des Mindestseitenverhältnisses im Hochformat im Vollbildmodus, um den gesamten verfügbaren Platz auf dem Bildschirm zu nutzen.

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.

Überschreibung deaktivieren

Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.

Property-Flags zum Anpassen der Überschreibung

Weitere Informationen finden Sie unter OVERRIDE_MIN_ASPECT_RATIO.

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN <package>

Hinweis: Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

ÜBERSCHREIBUNG_ANY_ORIENTATION

Hier können Sie die folgenden Überschreibungen aktivieren, um jede Ausrichtung zu überschreiben:

Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können

Legen Sie das Manifestattribut activity:screenOrientation fest oder verwenden Sie die Activity#setRequestedOrientation() API.

Apps optimieren

Ihre App sollte alle Ausrichtungen unterstützen. Eine Änderung der Ausrichtung ist eine Konfigurationsänderung, die auf zwei Arten durchgeführt werden kann: Sie lassen die Anwendung vom System löschen und neu erstellen oder Sie verwalten die Konfigurationsänderungen selbst. Wenn Sie Konfigurationsänderungen selbst verwalten, kann der App-Status mit ViewModel beibehalten werden. In sehr begrenzten Fällen können Sie die Ausrichtung nur auf kleinen Displays sperren. Dies ist jedoch möglicherweise nicht so skalierbar wie die Möglichkeit, die App nach Bedarf zu drehen. Unter Android 12L und höher kann die feste Ausrichtung durch die Gerätekonfiguration überschrieben werden. Weitere Informationen zum Umgang mit Konfigurationsänderungen und zur Unterstützung aller Ausrichtungen finden Sie unter Konfigurationsänderungen verarbeiten, ViewModel-Übersicht und App-Ausrichtung auf Smartphones, aber nicht auf Geräten mit großem Display eingeschränkt.

Überschreiben deaktivieren oder deaktivieren

Legen Sie das Property-Flag PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE auf false fest.

Überschreiben von Property-Flags

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE"
  android:value="true|false"/>

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable OVERRIDE_ANY_ORIENTATION <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_ANY_ORIENTATION <package>

Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.

OVERRIDE_ANY_ORIENTATION_TO_USER

Ermöglicht der App, den verfügbaren Anzeigebereich zu füllen. Hiermit werden alle im App-Manifest angegebenen Einschränkungen für Ausrichtung, Größe und Seitenverhältnis überschrieben. Außerdem werden alle Aufrufe von Activity#setRequestedOrientation() ignoriert.

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

  • Legen Sie das Manifestattribut android:screenOrientation nicht fest oder legen Sie es auf "user" fest.

  • Legen Sie das Manifestattribut android:resizeableActivity auf true fest.

  • Wenn Sie auf kleinen Bildschirmen die Größenanpassung von Anwendungen unterstützen und gleichzeitig den Mehrfenstermodus mit android:resizeableActivity=false deaktivieren möchten, setzen Sie das Metadaten-Flag android.supports_size_changes auf true. Legen Sie minAspectRatio und maxAspectRatio nicht fest.

Apps optimieren

Deine App muss alle Ausrichtungen unterstützen. Gib im Manifest deiner App keine screenOrientation-Spezifikation an. Unterstützen Sie die Größenänderung der App, den Multifenstermodus und alle Displayseitenverhältnisse, indem Sie das Attribut android:resizeableActivity im Manifest Ihrer App auf true festlegen. Weitere Informationen finden Sie unter Verschiedene Bildschirmgrößen unterstützen.

Überschreibung deaktivieren

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

Property-Flags zum Anpassen der Überschreibung

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable OVERRIDE_ANY_ORIENTATION_TO_USER <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_ANY_ORIENTATION_TO_USER <package>

Hinweis: Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT

Aktiviert das Hochformat für alle Aktivitäten im Paket. Sofern OVERRIDE_ANY_ORIENTATION nicht aktiviert ist, wird die Überschreibung nur verwendet, wenn von der Aktivität keine andere feste Ausrichtung angegeben wurde.

Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

Überschreibung deaktivieren

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

Property-Flags zum Anpassen der Überschreibung

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>

Hinweis: Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR

Aktiviert die Ausrichtung nosensor für alle Aktivitäten im Paket. Sofern OVERRIDE_ANY_ORIENTATION nicht aktiviert ist, wird die Überschreibung nur verwendet, wenn von der Aktivität keine andere feste Ausrichtung angegeben wurde.

Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

Überschreibung deaktivieren

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

Property-Flags zum Anpassen der Überschreibung

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>

Hinweis: Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

ÜBERSCHREIBUNG_LANDSCHAFT_ORIENTATION_ZU_REVERSE_LANDSCHAFT

Aktiviert die reverseLandscape-Ausrichtung für alle Aktivitäten im Paket. Sofern OVERRIDE_ANY_ORIENTATION nicht aktiviert ist, wird die Überschreibung nur verwendet, wenn von der Aktivität keine andere feste Ausrichtung angegeben wurde.

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

Überschreiben deaktivieren oder deaktivieren

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

Überschreiben von Property-Flags

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>

Hinweis: Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

ÜBERSCHREIBUNG_NUR_FÜR_KAMERA

Die Überschreibungen OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT, OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR und OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE werden nur wirksam, wenn die Kameraverbindung aktiv ist.

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

Überschreibung deaktivieren

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

Überschreiben von Property-Flags

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>

Hinweis: Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION

Beschränkt die Anzeigeausrichtung auf das Querformat, wenn die folgenden Bedingungen erfüllt sind:

  • Aktivität wird im Vollbildmodus angezeigt
  • Eigenschaft der Komponente „Deaktivieren“ PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE ist nicht aktiviert
  • Die Einstellung „Ausrichtungsanfrage ignorieren“ des Geräteherstellers ist für das Display aktiviert.
  • Natürliche Ausrichtung der Anzeige im Querformat

Wie Apps das gleiche Ergebnis wie eine Überschreibung erzielen

Nicht zutreffend Das Problem sollte in der Anwendungslogik gelöst werden.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

Überschreibung deaktivieren

Legen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE auf false fest.

Überschreiben von Property-Flags

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE"
  android:value="true|false"/>

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION <package>

Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.

ÜBERSCHREIBEN_ENABLE_KOMPAT_IGNORE_REQUESTED_ORIENTATION

Aktiviert die Kompatibilitätsrichtlinie, die das Aktualisieren der App-Ausrichtung bei einem Aufruf von Activity#setRequestedOrientation() durch die App überspringt, wenn die App neu gestartet wird oder eine aktive Kamerakompatibilitätsbehandlung hat.

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

Legen Sie das Property-Flag PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION auf true fest.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

Überschreiben deaktivieren oder deaktivieren

Legen Sie das Attribut-Flag PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION auf false fest.

Property-Flags zum Anpassen der Überschreibung

<property android:name="android.window.PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION"
  android:value="true|false"/>

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION <package>

Hinweis: Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

ÜBERSCHREIBUNG_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED

Aktiviert die Kompatibilitätsrichtlinie, die die angeforderte Ausrichtung einer App ignoriert, wenn die App Activity#setRequestedOrientation() mehr als zweimal in einer Sekunde aufruft, wenn eine Aktivität nicht für die feste Ausrichtung im Letterbox-Format gekennzeichnet ist.

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

Nicht zutreffend Das Problem sollte in der Anwendungslogik gelöst werden.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

Überschreibung deaktivieren

Legen Sie das Attribut-Flag PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED auf false fest.

Property-Flags zum Anpassen der Überschreibung

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED"
  android:value="false"/>

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED <package>

Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.

OVERRIDE_RESPECT_REQUESTED_ORIENTATION

Pakete werden vom Verhalten bei ignorierten Anfragen zur Ausrichtung ausgeschlossen, das von Geräteherstellern für einen Anzeigebereich oder das gesamte Display aktiviert werden kann.

Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können

Nicht zutreffend Das Problem sollte in der Anwendungslogik gelöst werden.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_ANY_ORIENTATION.

Überschreiben deaktivieren oder deaktivieren

Keine Deaktivierung. Das Deaktivieren der Override-Funktion kann gefährlich sein, wenn die App nicht mit einem Gerät kompatibel ist, auf dem die Einstellung „Ablehnung von Anfragen zur Geräteausrichtung“ des Geräteherstellers aktiviert ist. Wenden Sie sich an Android Developer Relations, um die Überschreibung zu deaktivieren.

Property-Flags zum Anpassen der Überschreibung

Keine Property-Flags für diese Überschreibung.

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>

Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.

NEVER_SANDBOX_DISPLAY_APIS

Erzwingt, dass für Pakete mit Aktivitäten im Letterbox- oder Größenkompatibilitätsmodus niemals die Display API-Sandbox angewendet wird. Die Display APIs stellen weiterhin Begrenzungen des Anzeigebereichs bereit.

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

Sie können Aktivitäten angeben, deren Größe angepasst werden kann, indem Sie entweder das Manifestattribut android:resizeableActivity auf true oder das Metadaten-Flag android.supports_size_changes auf true setzen.

Apps optimieren

Bei Apps, die als vollständig skalierbar deklariert sind, dürfen die Benutzeroberflächenelemente nicht anhand der Bildschirmgröße positioniert werden. Migrieren Sie Ihre App zu aktuellen APIs, die WindowMetrics bereitstellen. Wenn Sie Jetpack Compose verwenden, können Sie die WindowSizeClass API nutzen, um die Benutzeroberfläche basierend auf dem Bildschirmbereich der App auf dem aktuellen Display zu zeichnen. Weitere Informationen finden Sie unter Fenstergrößenklassen verwenden.

Überschreibung deaktivieren

Keine Deaktivierung. Migrieren Sie von veralteten APIs.

Property-Flags zum Anpassen der Überschreibung

Keine Property-Flags für diese Überschreibung.

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable NEVER_SANDBOX_DISPLAY_APIS <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable NEVER_SANDBOX_DISPLAY_APIS <package>

Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.

ALWAYS_SANDBOX_DISPLAY_APIS

Erzwingt, dass Pakete unabhängig vom Windowing-Modus immer die API-Sandbox von Display verwenden. Die Display APIs geben immer die App-Begrenzungen an.

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

Sie können Aktivitäten als nicht veränderbar deklarieren, indem Sie entweder das Attribut android:resizeableActivity auf false oder das Metadaten-Flag android.supports_size_changes auf false festlegen.

Apps optimieren

Apps, für die angegeben wird, dass ihre Größe vollständig angepasst werden kann, sollten sich beim Positionieren von UI-Elementen niemals auf die Anzeigegröße verlassen. Migrieren Sie Ihre Anwendung von verworfenen APIs zu aktuellen APIs, die WindowMetrics bereitstellen. Weitere Informationen finden Sie unter WindowMetricsCalculator.

Überschreibung deaktivieren

Keine Deaktivierung. Migrieren Sie von veralteten APIs.

Property-Flags zum Anpassen der Überschreibung

Keine Property-Flags für diese Überschreibung.

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable ALWAYS_SANDBOX_DISPLAY_APIS <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable ALWAYS_SANDBOX_DISPLAY_APIS <package>

Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.

OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS

Erzwingt, dass Pakete für die folgenden View APIs eine Sandbox mit Aktivitätsgrenzen ausführen:

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

Beheben Sie das Problem im Anwendungscode, indem Sie APIs verwenden, die die Ränder des App-Fensters und die Abweichungen relativ zum App-Fenster angeben, anstatt die Ränder des Displays und die Abweichungen relativ zum Display.

Apps optimieren

Apps sollten View APIs verwenden und dabei die Möglichkeit berücksichtigen, dass Letterbox- und Mehrfenstermodus auf die App angewendet werden können. Weitere Informationen finden Sie unter WindowMetricsCalculator.

Überschreibung deaktivieren

Legen Sie das Property-Flag PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS auf false fest.

Property-Flags zum Anpassen der Überschreibung

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS"
  android:value="false"/>

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS <package>

Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.

OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION

Deaktiviert die erzwungene Drehung. Verbessert die Nutzerfreundlichkeit einiger Apps.

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

Legen Sie das Attribut-Flag PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION auf false fest.

Apps optimieren

Verlassen Sie sich nicht auf die im Cache gespeicherte Ausrichtung des Kamerasensors oder auf Geräteinformationen. Informationen zur Kamerakompatibilität finden Sie unter Der Kamera-Sucher und Unterstützung für skalierbare Oberflächen in Ihrer Kamera-App.

Überschreibung deaktivieren

Legen Sie das Attribut-Flag PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION auf true fest.

Überschreiben von Property-Flags

<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION"
  android:value="true|false"/>

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an, mit der die erzwungene Drehung entfernt wird:

adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>

So entfernen Sie die Überschreibung, die eine erzwungene Drehung ermöglicht:

adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>

Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.

ÜBERSCHREIBEN_KAMERA_KOMPAT_DEAKTIVIERT_AKTUALISIEREN

Deaktiviert die Aktualisierung der Aktivitäten nach erzwungener Drehung. Verbesserte Nutzerfreundlichkeit, wenn das Aktualisieren den Status in Apps verliert.

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

Legen Sie das Property-Flag PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH auf false fest.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.

Überschreiben deaktivieren oder deaktivieren

Legen Sie das Attribut-Flag PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH auf true fest.

Überschreiben von Property-Flags

<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH"
  android:value="true|false"/>

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an, wodurch die Aktualisierung der Aktivitäten entfernt wird:

adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>

So entfernen Sie die Überschreibung, die das Aktualisieren von Aktivitäten ermöglicht:

adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>

Hinweis: Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

ÜBERSCHREIBEN_KAMERA_KOMPAT_AKTIVIERT_ÜBERARBEITEN_VIA_PAUSE

Die Pakete, auf die es angewendet wird, führen nach einer erzwungenen Rotation aufgrund der Kamerakompatibilität eine Aktivitätsaktualisierung mit dem Zyklus onResume() → onPause() → onResume() durch, anstatt onResume() → onStop() → onResume().

Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können

Legen Sie das Property-Flag PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE auf true fest.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.

Überschreibung deaktivieren

Legen Sie das Attribut-Flag PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE auf false fest.

Überschreiben von Property-Flags

<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE"
  android:value="true|false"/>

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE <package>

Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.

ÜBERSCHREIBUNG_KAMERA_LANDSCHAFT_ZU_PORTRAIT

Erzwingt, dass die Kameraausgabe in die entgegengesetzte Ausrichtung zugeschnitten wird, wenn die Ausrichtung der Kamera im Hochformat nicht mit der natürlichen Geräteausrichtung übereinstimmt. Viele Apps kommen mit dieser Situation nicht zurecht und zeigen ansonsten gestreckte Bilder an.

Wie Apps dasselbe Ergebnis wie beim Überschreiben erzielen können

Legen Sie das Attribut-Flag PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT auf true fest.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.

Überschreiben deaktivieren oder deaktivieren

Legen Sie das Attribut-Flag PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT auf false fest.

Property-Flags zum Anpassen der Überschreibung

<property android:name="android.camera.PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT"
  android:value="true|false"/>

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an, mit der das Zuschneiden der Frontkamera auf die innere Kamera angewendet wird:

adb shell am compat enable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>

So heben Sie die Überschreibung auf, mit der das Zuschneiden der Frontkamera entfernt wird:

adb shell am compat disable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>

Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.

OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION

Verhindert, dass Apps die App-Bildschirmfreigabe deaktivieren (siehe Medienprojektion). Wird implementiert, wenn Apps die createConfigForDefaultDisplay() API missbrauchen, um die Aufnahme des Vollbilds zu erzwingen und die Privatsphäre der Nutzer zu gefährden, indem der Inhalt von Benachrichtigungen, die im Vollbildmodus, aber nicht bei der App-Bildschirmfreigabe erfasst werden, und alle Apps unabhängig vom Fenstermodus offengelegt werden.

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

Standardverhalten für die Medienprojektion zulassen (implementiert in Android 14, API-Ebene 34 mit createScreenCaptureIntent()), sodass Nutzer unabhängig vom Fenstermodus entscheiden können, ob der Vollbildmodus oder ein einzelnes App-Fenster freigegeben werden soll. Alternativ können Sie createScreenCaptureIntent(MediaProjectionConfig) mit einem MediaProjectionConfig-Argument aufrufen, das von einem Aufruf von createConfigForUserChoice() zurückgegeben wurde.

Apps optimieren

Nutzer können auswählen, ob sie während der Medienprojektion das gesamte Display des Geräts oder ein App-Fenster teilen möchten. Dies ist ab Android 14 die Standardeinstellung.

Machen Sie Ihre App größenveränderbar (resizeableActivity="true"), um den Modus für mehrere Fenster zu unterstützen.

Überschreiben deaktivieren oder deaktivieren

Aufgrund der Schwere des Datenschutzes für Nutzer kann diese Überschreibung in Ihrer App nicht deaktiviert oder deaktiviert werden.

Überschreiben von Property-Flags

Keine.

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an, mit der das Deaktivieren der Teilfreigabe des Bildschirms durch die App abgebrochen wird (d. h. die Teilfreigabe aktiviert):

adb shell am compat enable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>

So entfernen Sie die Überschreibung, die es der App ermöglicht, die Teilbildschirmfreigabe zu deaktivieren:

adb shell am compat disable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>

Hinweis:Die Befehle werden nur vorübergehend angewendet oder entfernt.

OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS

Aktiviert das Senden eines gefälschten Fokus für Apps ohne Fokus im Splitscreen-Modus. Einige Spiele-Engines warten, bis sie den Fokus erhalten, bevor sie den Inhalt der App zeichnen. So wird verhindert, dass Apps dunkel bleiben, wenn sie fortgesetzt werden und noch keinen Fokus haben.

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

Legen Sie das Attribut-Flag PROPERTY_COMPAT_ENABLE_FAKE_FOCUS auf true fest.

Apps optimieren

Sie können dieses Problem vermeiden, wenn Ihre App mehrere Ausrichtungen und Konfigurationsänderungen gut handhabt. Sorgen Sie dafür, dass Ihre App für große Bildschirme geeignet ist. Folgen Sie dazu den Qualitätsrichtlinien für Apps auf großen Bildschirmen.

Wenn du die Unity-Spiel-Engine verwendest, führe ein Upgrade auf Version 2019.4.40 oder höher durch und exportiere dein Spiel noch einmal. Lass die Option Resizable Window in den Einstellungen des Android-Players aktiviert.

Überschreiben deaktivieren oder deaktivieren

Legen Sie das Attribut-Flag PROPERTY_COMPAT_ENABLE_FAKE_FOCUS auf false fest.

Property-Flags zum Anpassen der Überschreibung

<property android:name="android.window.PROPERTY_COMPAT_ENABLE_FAKE_FOCUS"
  android:value="true|false"/>

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an:

adb shell am compat enable OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS <package>

So entfernen Sie die Überschreibung:

adb shell am compat disable OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS <package>

Hinweis: Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

Weitere Informationen