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ßem Display und auf Klapp-Smartphones, die jedoch eine suboptimale Nutzerfreundlichkeit bieten.

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 seiner natürlichen Ausrichtung, wenn Display#getRotation() Surface.ROTATION_0 zurückgibt. Wenn Apps davon ausgehen, dass ROTATION_0 im Hochformat ist, können App-Layouts und die Kameravorschau nicht mit dem Display des Geräts übereinstimmen.
  • 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 Displayausrichtungen erkennen und berücksichtigen.

Häufige Kompatibilitätsprobleme

Kompatibilitätsprobleme bei Apps treten am häufigsten aufgrund von Einschränkungen bei der App-Ausrichtung, Einschränkungen bei der Größe und dem Seitenverhältnis, falscher Handhabung der Ausrichtung der Kameravorschau und missbrauchter APIs auf.

Letterboxing

Bei Letterboxing wird die App in der Mitte des Displays oder auf großen Bildschirmen auf einer Seite platziert, damit Sie sie bequem erreichen können. Mattes (einfarbige Balken oder unscharfer Hintergrund) füllen den nicht verwendeten Displaybereich an den Seiten oder oben und unten in 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, ein festes Seitenverhältnis oder keine skalierbare Größe hat.

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 Apps so skalieren 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. Unter Android 12 (API-Level 31) und höher gibt an, ob Apps den Multifenstermodus auf kleinen Bildschirmen unterstützen (kompakte Fenstergrößenklasse). Unter Android 12 und höher unterstützen Apps den Multifenstermodus auf großen Bildschirmen (Mittel- oder erweiterte Fenstergröße) unabhängig von dieser Einstellung.

  • maxAspectRatio: Gibt das maximale Seitenverhältnis an, das von der App unterstützt wird. maxAspectRatio kann nur von Apps festgelegt werden, bei denen resizeableActivity auf false gesetzt 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. Entfernen Sie alle Einschränkungen für die Ausrichtung und das feste Seitenverhältnis aus Ihren App-Layouts und der App-Manifestdatei.

Problemumgehung für Kompatibilität

Wenn eine App mit fester Ausrichtung oder festem Seitenverhältnis in einem Fenster ausgeführt wird, dessen Größe oder Ausrichtung von der App nicht direkt unterstützt wird, 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) werden auf der Plattform verschiedene Verbesserungen für Apps mit Letterbox-Format angewendet. Die Verbesserungen der Benutzeroberfläche werden von Geräteherstellern implementiert. 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 wirken jetzt eleganter.
  • Transparenz der Systemleiste:Status- und Navigationsleisten, die die App überlagern, sind halbtransparent, sodass Symbole in den Leisten immer über dem Letterbox-Hintergrund sichtbar sind.
  • Konfigurationsfähiges Seitenverhältnis:Das Seitenverhältnis der App kann angepasst werden, um die Darstellung zu verbessern.

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

12L (API-Ebene 32) bietet die folgenden funktionalen Verbesserungen:

  • Konfigurationsfähige Positionierung:Auf großen Displays können Gerätehersteller die App links oder rechts auf dem Display platzieren, um die Interaktion zu erleichtern.

  • Neu gestaltete Neustartschaltfläche:Gerätehersteller können der Neustartschaltfläche für den Größenkompatibilitätsmodus ein neues Design geben, damit sie von 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.

Modus für die Größenkompatibilität

Der Modus für die Größenkompatibilität ist ein Letterbox-Modus mit einer Schaltfläche zum Neustarten. Mit diesem Steuerelement können Nutzer die App neu starten und das Display 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 Displaydimension des Geräts ausfüllt.

Änderungen an der Gerätekonfiguration, die den Modus für die Größenkompatibilität auslösen können:

  • Bildschirm drehen
  • Faltbares Gerät wird zusammengeklappt oder aufgeklappt
  • Zwischen Vollbild- und Splitscreen-Modus wechseln

Problem

Der Modus für die Größenkompatibilität gilt in der Regel für Aktivitäten, die in Bezug auf Ausrichtung oder Seitenverhältnis eingeschränkt sind und so konfiguriert (oder vom System festgelegt) sind, dass sie nicht skaliert werden können.

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 der Bedingungen erfüllt, wird sie als nicht skalierbar eingestuft und kann in den Modus für die Größenkompatibilität versetzt werden.

Optimierung

Die App sollte alle Bildschirmgrößen unterstützen. Sie können Ihre App so einstellen, dass sie skalierbar ist. Legen Sie dazu im App-Manifest das Attribut android:resizeableActivity des Elements <activity> oder <application> auf true fest. 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 Anzeigefenster 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. Weitere Informationen finden Sie unter Prozesse und Threads – Übersicht.

Flackernde Schleifen

Wenn eine App nicht alle Displayausrichtungen unterstützt, fordert sie bei einer Konfigurationsänderung möglicherweise wiederholt neue Ausrichtungen an. Dies führt zu einem endlosen Loop, der das Display flackern oder die App endlos rotieren lässt.

Problem

Unter Android 12 (API-Level 31) und höher können Gerätehersteller ihre Geräte so konfigurieren, dass von Apps angegebene Einschränkungen der Ausrichtung 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.

Ein weiteres mögliches Szenario ist, wenn die natürliche Ausrichtung (die übliche Ausrichtung, wie von Android bestimmt) des Bildschirms eines Geräts im Querformat ist. Das heißt, wenn Display#getRotation() Surface.ROTATION_0 zurückgibt, 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 Hochformat ist, und setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ) aufrufen, um das App-Layout neu zu konfigurieren. Nach dem Neustart der App (im Querformat) wird möglicherweise noch einmal die Bildschirmdrehung geprüft, der Wert ROTATION_0 empfangen, setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) aufgerufen und der Endlos-Loop fortgesetzt.

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.
  • Die Ausrichtung wird anhand von Signalen festgelegt, die nicht mit der aktuellen Fenstergröße zusammenhängen, z. B. Display#getRotation(), das Vorhandensein einer FoldingFeature oder veralteten APIs.

Problemumgehung für Kompatibilität

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

Kameravorschau

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

Problem

Gemäß dem Android Compatibility Definition Document muss ein Kamerabildsensor so ausgerichtet sein, dass die lange Dimension der Kamera mit der langen Dimension des Bildschirms übereinstimmt.

Apps gehen oft 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 und deren Kamerasensoren kann jedoch im Querformat sein. Außerdem können neue Formfaktoren wie faltbare Geräte mehrere natürliche Ausrichtungen und mehrere Kamerasensoren in unterschiedlichen Ausrichtungen 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 erkennen und verwalten, um eine korrekt ausgerichtete und skalierte Kameravorschau zu präsentieren. Apps müssen die Gerätedrehung, die Sensordrehung und das Seitenverhältnis des Bildschirms oder Fensters berechnen und die Ergebnisse dann auf die Kameravorschau anwenden. Weitere Informationen finden Sie unter Kameravorschau und Der Kamera-Sucher.

Problemumgehung für Kompatibilität

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 Bild des Kamerasensors 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, die nur im Hochformat verwendet werden kann, mit der Kamera verbunden ist, dreht Android die App, um das Hochformatfenster der App an die natürliche Ausrichtung des Geräts anzupassen.

    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 im Querformat von faltbaren Geräten (siehe Referenzgeräte) werden nur im Hochformat verfügbare Aktivitäten ins Querformat gedreht, um der natürlichen Ausrichtung im aufgeklappten Zustand zu entsprechen. Nach der erzwungenen Drehung wird die App in einem Letterbox angezeigt.

  • Zuschneiden der inneren Frontkamera:Der Sensor der inneren Frontkamera ist bei einigen faltbaren Smartphones im Querformat. Android dreht nicht nur die Kameravorschau auf dem faltbaren Innendisplay, sondern schneidet auch das Sichtfeld der inneren Frontkamera (Querformat) zu, damit der Sensor ein Bild aufnimmt, das der Geräteausrichtung entgegengesetzt ist.

  • Kameravorschau erzwingen:Nach der erzwungenen Drehung wechselt das System zwischen den Aktivitätsmethoden onStop() und onStart() (standardmäßig) oder onPause() und onResume() (über die App-spezifische Überschreibung OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE), um sicherzustellen, dass die Kameravorschau korrekt 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 jetzt Funktionen wie den Multifenstermodus und Geräte wie faltbare Smartphones unterstützt, wurden ältere APIs eingestellt und durch aktuelle APIs ersetzt, die für alle Bildschirmgrößen und Geräteformfaktoren funktionieren. Die eingestellten APIs sind jedoch weiterhin zur Abwärtskompatibilität 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-Ränder anstelle der Ränder des Displaybereichs des Geräts zurückgeben. Oder Entwickler verwenden fälschlicherweise APIs für spezielle Ansichten, um allgemeine Displaymesswerte zu erhalten. Das führt zu Fehlberechnungen beim Neupositionieren von UI-Elementen nach Ereignissen zum Ändern der Größe des App-Fensters, was zu Layoutproblemen führt.

Eingestellte und häufig missbrauchte Display-APIs:

Weitere Informationen finden Sie unter Unterstützung des Multifenstermodus.

Missbräuchliche Verwendung von APIs für Datenansichten:

Optimierung

Orientieren Sie sich bei der Platzierung von UI-Elementen nicht an der physischen Displaygröße. Migrieren Sie Ihre App zu APIs, die auf WindowMetrics basieren, einschließlich der folgenden WindowManager APIs:

Problemumgehung für Kompatibilität

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 auch standardmäßig auf Apps angewendet, die für den Modus zur Größenkompatibilität 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>

Themen im Zusammenhang mit Dialogen, z. B. Theme.MaterialComponents.Dialog, können Stile enthalten, die Aktivitäten transparent machen.

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 unter der transparenten Aktivität im Aktivitätsstapel der Aufgabe entsprechen. Eine undurchsichtige Aktivität, die ein Berechtigungsdialogfeld öffnet, kann jedoch eine Trampolinaktivität sein (eine Aktivität, die eine andere Aktivität startet und dann verschwindet). Das System kann daher die Grenzen der Trampolinaktivität nicht bestimmen, die das transparente Berechtigungsdialogfeld gestartet hat.

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, vom Erstellen 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 Berechtigungsanfragen immer über Aktivitäten starten, die sichtbar bleiben, bis der Nutzer eine Entscheidung zu Berechtigungen getroffen hat.

Abgerundete Ecken

Eine Aktivität kann transparent sein, weil ein Stil die Hintergrundtransparenz angibt oder weil der Inhalt der Aktivität den verfügbaren Anzeigebereich nicht ausfüllt. Wenn eine transparente Aktivität den verfügbaren Displaybereich ausfüllt, wendet das System automatisch abgerundete Ecken auf die Aktivität an, wenn dies vom Gerätehersteller so konfiguriert wurde. Wenn eine transparente Aktivität (z. B. ein Berechtigungsdialogfeld) jedoch nicht den verfügbaren Bereich ausfüllt, können Sie selbst entscheiden, ob Sie abgerundete Ecken anwenden möchten.

Die Berechtigungsdialogfelder füllen nicht den verfügbaren Bildschirmbereich 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 undurchsichtigen 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. Bei vielen Unity-Spielen wird der Fokus jedoch aufgehoben und die Inhalte werden nicht mehr dargestellt, wenn die App im Multifenstermodus ausgeführt wird.

Problem

In Unity 2019.4 wurde die Option Resizable Window hinzugefügt, um den Multifenstermodus auf Android-Geräten zu unterstützen. Die ursprüngliche Implementierung reagierte jedoch nicht richtig auf den Aktivitätszyklus im Multifenstermodus, wodurch die Wiedergabe vom UnityPlayer pausiert wurde, 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 Apps, die die Unity-Engine verwenden, sind von diesem Problem betroffen und werden im Multifenstermodus 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. Lassen Sie die Option Resizable Window in den Einstellungen des Android-Players aktiviert. Andernfalls wird das Spiel pausiert, wenn es nicht im Fokus ist, auch wenn es im Multifenstermodus vollständig sichtbar ist.

Problemumgehung für Kompatibilität

Gerätehersteller können die OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS-Überschreibung pro App anwenden, um einer App im Multifenstermodus ein gefälschtes Fokusereignis zu senden. 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 App zu testen und zu erfahren, wie sie sich auf verschiedenen Geräten 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 durch, um das Verhalten zu prüfen und sicherzustellen, dass die Zielaktivität nicht zugeschnitten wird:

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 so lange aus, 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.

App-spezifische Überschreibungen

Android bietet Überschreibungen, mit denen das konfigurierte Verhalten von Apps geändert werden kann. So weist beispielsweise das FORCE_RESIZE_APP-Überschreiben das System an, den Modus für die Größenkompatibilität zu umgehen und die App an die Displayabmessungen anzupassen, auch wenn resizeableActivity="false" im App-Manifest angegeben ist.

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

Nutzerüberschreibungen pro App

Unter Android 14 und höher können Nutzer über ein Einstellungsmenü das Seitenverhältnis von Apps ändern. Das Menü wird auf Geräten mit großem Display wie den Referenzgeräten implementiert.

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.

Entwickler 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 Seitenverhältniskompatibilität 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 für die Nutzeraspektverhältniskompatibilität 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 Option „Vollbild“ wird aus der Liste der Seitenverhältnisoptionen in den Geräteeinstellungen entfernt. Nutzer können die Vollbildansicht nicht auf Ihre App anwenden.

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

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

App-spezifische Überschreibungen des Geräteherstellers

Gerätehersteller wenden auf ausgewählten Geräten pro App Überschreibungen 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 App-spezifische Überschreibungen unten).

Sie können Ihre App mit aktivierten oder deaktivierten Überschreibungen mithilfe des Compatibility Framework testen (siehe Tools für das Compatibility Framework). Wenn diese Option aktiviert ist, gelten die Ü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 Flags für Properties hinzufügen, um einige Überschreibungen zu deaktivieren.

App-spezifische Überschreibungen
Eingeben Name ID Beschreibung
Größe kann geändert werden FORCE_RESIZE_APP 174042936 Der Modus für die Größenkompatibilität für die App wird bei Konfigurationsänderungen umgangen.
FORCE_NON_RESIZE_APP 181136395 Erzwingt bei Konfigurationsänderungen den Kompatibilitätsmodus für die Größe der App.
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 Das Mindestseitenverhältnis wird auf 3:2 geändert.
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 Deaktiviert die Überschreibung des Mindestseitenverhältnisses, sodass Apps im Vollbildmodus angezeigt werden, wenn das Gerät im Hochformat gehalten wird.
Ausrichtung OVERRIDE_ANY_ORIENTATION 265464455 Ermöglicht das Überschreiben beliebiger Ausrichtungen.
OVERRIDE_ANY_ORIENTATION_TO_USER 310816437 Überschreibt Einschränkungen für Ausrichtung, Größe und Seitenverhältnis.
OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT 265452344 Wenn für eine Aktivität keine Ausrichtung festgelegt ist, wird die Ausrichtung auf „Hochformat“ umgestellt.
OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR 265451093 Überschreibt die Ausrichtung mit nosensor (natürliche Ausrichtung des Geräts verwenden), 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 Die Ignorierung der Kameraausrichtung ist nur möglich, wenn die App mit der Kamera verbunden ist.
OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION 255940284 Das Display wird im Querformat (natürliche Ausrichtung) fixiert, wenn eine Aufgabe im Vollbildmodus angezeigt wird (auch bei Letterbox-Format).
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION 254631730 Ignoriert Ausrichtungsanfragen von der App, um Endlosschleifen bei der Ausrichtung zu vermeiden.
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED 273509367 Ignoriert wiederholte Anfragen zur Ausrichtung, 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 eine unendliche Rotationsschleife und wendet die Override-Funktion an.
OVERRIDE_RESPECT_REQUESTED_ORIENTATION 236283604 Verhindert Letterboxing, indem die Einstellung „A ignorieren“ des Geräteherstellers 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-Grenzwerte 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-Grenzwerte zurückgeben. View APIs geben logische Begrenzungen des Anzeigebereichs zurück. Manchmal geht die App jedoch davon aus, dass View APIs App-Begrenzungen zurückgeben, was zu Problemen mit der Benutzeroberfläche führt.
Kamerakompatibilität OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION 263959004 Die erzwungene Bildschirmrotation wird deaktiviert. Standardmäßig werden alle Kamera-Apps mit fester Ausrichtung erzwungen gedreht, wenn die Kameravorschau geöffnet ist.
OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH 264304459 Entfernt die standardmäßige harte Aktualisierung, die angewendet wird, wenn eine Kameravorschau erzwungen wird.
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 zu Problemen kommen, bei denen Apps ihren Status verlieren oder schwarz werden.
OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT 250678880 Beschneidet den Bildpuffer der Frontkamera auf der Vorderseite. Wenn die Überschreibung deaktiviert ist, wird die Bildausschnittsfunktion der Frontkamera auf der Vorderseite entfernt und das Sichtfeld der Kameravorschau wird vergrößert. Bei einigen faltbaren Geräten (siehe Referenzgeräte) schneidet das System standardmäßig die Kameravorschau aller Kamera-Apps zu, 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 die App-Inhalte dargestellt werden. Dies kann dazu führen, dass die App einfriert oder ausgeblendet wird. Durch die Überschreibung kann Android ein gefälschtes Fokusereignis an die App senden, das der App signalisiert, wieder mit dem Zeichnen von Inhalten zu beginnen.

FORCE_RESIZE_APP

Die Größe der Pakete, auf die die Überschreibung angewendet wird, kann nicht mehr angepasst werden. Dies ändert nichts daran, ob die App in den Multifenstermodus versetzt werden kann. Die App kann jedoch bei einer Änderung der Displaygröße ohne den Modus für die Größenkompatibilität neu skaliert werden.

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

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. Weitere Informationen finden Sie unter Unterstützung verschiedener Bildschirmgrößen.

Überschreibung deaktivieren

Legen Sie das Property-Flag PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES auf false fest.

Überschreiben von Property-Flags

<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:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

FORCE_NON_RESIZE_APP

Die Pakete, auf die die Überschreibung angewendet wird, können nicht mehr skaliert werden und wechseln bei Konfigurationsänderungen in den Modus für die Größenkompatibilität.

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

Legen Sie im App-Manifest sowohl das Attribut android:resizeableActivity als auch das Metadaten-Flag android.supports_size_changes auf false fest und deklarieren Sie entweder eine Ausrichtungs- oder ein Seitenverhältniseinschränkung.

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 so optimiert werden, dass sie sich bei einer Größenänderung nicht verlangsamen. Weitere Informationen finden Sie unter android:resizeableActivity.

Überschreibung deaktivieren

Legen Sie das Property-Flag PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES auf false fest.

Überschreiben von Property-Flags

<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:Mit den Befehlen wird die Überschreibung 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 ein Überschreiben erzielen

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

Apps optimieren

Legen Sie in Ihrer App keine Einschränkungen für das Seitenverhältnis fest. Ihre App muss verschiedene Displaygrößen unterstützen. Verwenden Sie Klassen für die Fenstergröße, um je nach Platzangebot 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.

Überschreiben von Property-Flags

<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:Mit den Befehlen wird die Überschreibung 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 Standardmäßig aktiviert und wird nur wirksam, wenn auch OVERRIDE_MIN_ASPECT_RATIO aktiviert ist.

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.

Ü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:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

OVERRIDE_MIN_ASPECT_RATIO_MEDIUM

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

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.

Ü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_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

Das Mindestseitenverhältnis der Aktivität wird auf einen großen Wert (16:9) 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.

Ü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:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_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 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.

Ü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_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:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN

Deaktiviert die Überschreibung des Mindestseitenverhältnisses im Hochformat-Vollbildmodus, um den gesamten verfügbaren Bildschirmbereich zu nutzen.

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_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.

OVERRIDE_ANY_ORIENTATION

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

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

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 verarbeitet werden kann: Sie können das System die App löschen und neu erstellen lassen oder die Konfigurationsänderungen selbst verwalten. Wenn Sie Konfigurationsänderungen selbst verwalten, kann der App-Status mithilfe von 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.

Überschreibung 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:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

OVERRIDE_ANY_ORIENTATION_TO_USER

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

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

Apps optimieren

Aktivieren Sie die Unterstützung aller Ausrichtungen für Ihre App. Legen Sie keine screenOrientation-Spezifikation im Manifest Ihrer App fest. 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 Unterstützung verschiedener Bildschirmgrößen.

Ü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_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 die Porträtausrichtung für alle Aktivitäten im Paket. Sofern OVERRIDE_ANY_ORIENTATION nicht aktiviert ist, wird die Überschreibung nur verwendet, wenn für die Aktivität keine andere feste Ausrichtung angegeben wurde.

Wie Apps das gleiche Ergebnis wie eine Überschreibung 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_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 für die Aktivität keine andere feste Ausrichtung angegeben wurde.

Wie Apps das gleiche Ergebnis wie eine Überschreibung 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_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.

OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE

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

Wie Apps das gleiche Ergebnis wie eine Überschreibung 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_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.

OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA

Die Überschreibungen für OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT, OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR und OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE werden nur angewendet, 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

Die Displayausrichtung wird auf das natürliche Querformat beschränkt, wenn die folgenden Bedingungen erfüllt sind:

  • Aktivität wird im Vollbildmodus angezeigt
  • Die Komponenteneigenschaft „Opt-out“ für PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE ist nicht aktiviert
  • Die Einstellung „Ausrichtungsanfrage ignorieren“ des Geräteherstellers ist für das Display aktiviert.
  • Die natürliche Ausrichtung des Displays ist das Querformat.

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 Property-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:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

OVERRIDE_ENABLE_COMPAT_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.

Überschreibung deaktivieren

Legen Sie das Property-Flag PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION auf false fest.

Überschreiben von Property-Flags

<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.

OVERRIDE_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 eine feste Ausrichtung letterboxed ist.

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 Property-Flag PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED auf false fest.

Überschreiben von Property-Flags

<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:Mit den Befehlen wird die Überschreibung 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 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

Deaktivierung nicht möglich. 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.

Überschreiben von Property-Flags

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:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

NEVER_SANDBOX_DISPLAY_APIS

Erzwingt, dass für Pakete mit Aktivitäten im Letterbox- oder Kompatibilitätsmodus für die Seitengröße niemals die Display API-Sandbox angewendet wird. Die Display APIs liefern weiterhin Begrenzungen für den Anzeigebereich.

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

Sie können festlegen, dass Aktivitäten skalierbar sind, indem Sie entweder das Manifestattribut android:resizeableActivity auf true oder das Metadatenflag 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

Deaktivierung nicht möglich. Migrieren Sie von veralteten APIs.

Überschreiben von Property-Flags

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:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

ALWAYS_SANDBOX_DISPLAY_APIS

Erzwingt unabhängig vom Fenstermodus immer die Anwendung der Display API-Sandbox für Pakete. Die Display APIs geben immer die App-Begrenzungen an.

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

Sie können festlegen, dass Aktivitäten nicht skaliert werden können, indem Sie entweder das Attribut android:resizeableActivity auf false oder das Metadaten-Flag android.supports_size_changes auf false setzen.

Apps optimieren

Bei Apps, die als vollständig skalierbar deklariert sind, sollten die Benutzeroberflächenelemente niemals anhand der Displaygröße positioniert werden. Migrieren Sie Ihre App von veralteten APIs zu aktuellen APIs, die WindowMetrics bereitstellen. Siehe WindowMetricsCalculator.

Überschreibung deaktivieren

Deaktivierung nicht möglich. Migrieren Sie von veralteten APIs.

Überschreiben von Property-Flags

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:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS

Erzwingt, dass Pakete die folgenden View APIs in einer Sandbox mit Aktivitätsgrenzwerten ausführen:

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

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

Apps optimieren

Apps sollten View APIs verwenden und dabei die Möglichkeit berücksichtigen, dass die App im Letterbox- und Mehrfenstermodus angezeigt wird. Weitere Informationen finden Sie unter WindowMetricsCalculator.

Überschreibung deaktivieren

Legen Sie das Property-Flag PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS auf false fest.

Überschreiben von Property-Flags

<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:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION

Deaktiviert die erzwungene Bildschirmausrichtung. Verbesserte Nutzerfreundlichkeit bei einigen Apps.

Wie Apps das gleiche Ergebnis wie ein Überschreiben erzielen

Legen Sie das Property-Flag PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION auf false fest.

Apps optimieren

Verlass dich 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 Property-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, wodurch die erzwungene Drehung aufgehoben wird:

adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>

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

adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>

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

OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH

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.

Überschreibung deaktivieren

Legen Sie das Property-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.

OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_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 das gleiche Ergebnis wie ein Überschreiben erzielen

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 Property-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:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT

Die Kameraausgabe wird in die entgegengesetzte Ausrichtung zugeschnitten, wenn die Ausrichtung der Kamera im Hochformat nicht mit der natürlichen Ausrichtung des Geräts übereinstimmt. Viele Apps können diese Situation nicht verarbeiten und zeigen sonst gestreckte Bilder an.

Wie Apps das gleiche Ergebnis wie eine Überschreibung erzielen

Legen Sie das Property-Flag PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT auf true fest.

Apps optimieren

Weitere Informationen finden Sie unter OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.

Überschreibung deaktivieren

Legen Sie das Property-Flag PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT auf false fest.

Überschreiben von Property-Flags

<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, die den Zuschnitt der Frontkamera innen anwendet:

adb shell am compat enable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>

So entfernen Sie die Überschreibung, wodurch die Bildausschnitte der Frontkamera innen entfernt werden:

adb shell am compat disable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>

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

OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION

Verhindert, dass Apps die Bildschirmfreigabe deaktivieren (siehe Medienprojektion). Wird implementiert, wenn Apps die createConfigForDefaultDisplay() API missbrauchen, um die Vollbildaufnahme zu erzwingen und den Datenschutz der Nutzer zu gefährden, indem sie den Inhalt von Benachrichtigungen offenlegen, die im Vollbildmodus, aber nicht beim Teilen des App-Bildschirms erfasst werden, und zwar in allen Apps unabhängig vom Fenstermodus.

Wie Apps das gleiche Ergebnis wie eine Überschreibung erzielen

Das standardmäßige Verhalten der Medienprojektion zulassen (implementiert in Android 14, API-Ebene 34, mit createScreenCaptureIntent()). Nutzer können dann unabhängig vom Fenstermodus entscheiden, ob sie den Vollbildschirm oder ein einzelnes App-Fenster freigeben möchten. Alternativ kannst du 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 freigeben möchten. Das ist seit Android 14 das Standardverhalten.

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

Überschreibung deaktivieren

Da der Datenschutz für Nutzer sehr wichtig ist, kann diese Vorgabe in Ihrer App nicht deaktiviert oder aufgehoben werden.

Überschreiben von Property-Flags

Keine.

ADB-Befehle zum Testen der Überschreibung

So wenden Sie die Überschreibung an, wodurch die Deaktivierung der Teilfreigabe des Bildschirms für die App aufgehoben wird (d. h. die Teilfreigabe des Bildschirms wird 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:Mit den Befehlen wird die Überschreibung nur vorübergehend angewendet oder entfernt.

OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS

Ermöglicht das Senden eines falschen Fokus für nicht fokussierte Apps 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 eine Überschreibung erzielen

Legen Sie das Property-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 Sie die Unity-Spiel-Engine verwenden, führen Sie ein Upgrade auf Version 2019.4.40 oder höher durch und exportieren Sie Ihr Spiel noch einmal. Lass die Option Resizable Window in den Einstellungen des Android-Players aktiviert.

Überschreibung deaktivieren

Legen Sie das Property-Flag PROPERTY_COMPAT_ENABLE_FAKE_FOCUS auf false fest.

Überschreiben von Property-Flags

<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